#### [Abblix\.SharedSignals](https://www.abblix.com/en/docs/api/abblix-sharedsignals 'index')
### [Abblix\.SharedSignals\.Transmitter](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter 'Abblix\.SharedSignals\.Transmitter')

## StreamManagementService Class

The transmitter's half of the Event Stream Management API \(SSF 1\.0 Section 8\.1\): every
operation from an authenticated receiver identity and a typed request to the
[ManagementResult&lt;TBody&gt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>') a host adapter renders\. The store persists, the
adapter transports and authenticates \- the SSF semantics live here, once\.

```csharp
public sealed class StreamManagementService
```

Inheritance [System\.Object](https://learn.microsoft.com/en-us/dotnet/api/system.object 'System\.Object') → StreamManagementService

### Remarks
Echoed transmitter\-supplied members are the one place this service is deliberately more
lenient than SSF 1\.0 Sections 8\.1\.1\.3\-8\.1\.1\.4 permit: the typed update request carries the
receiver\-supplied members alone, so an echoed transmitter\-supplied member never reaches the
comparison the sections describe \- it is dropped at binding, which the same sections allow
for the MISSING case\. A receiver echoing a stale value is thus tolerated rather than told
400\.
### Constructors

## StreamManagementService\(IStreamStore, IEventOutbox, EventDispatcher, SharedSignalsTransmitterOptions, ReceiverAddressPolicy, PollEndpointLocator, TimeProvider\) Constructor {#Abblix.SharedSignals.Transmitter.StreamManagementService.StreamManagementService(Abblix.SharedSignals.Transmitter.IStreamStore,Abblix.SharedSignals.Transmitter.IEventOutbox,Abblix.SharedSignals.Transmitter.EventDispatcher,Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions,Abblix.SharedSignals.Transmitter.ReceiverAddressPolicy,Abblix.SharedSignals.Transmitter.PollEndpointLocator,System.TimeProvider)}

The transmitter's half of the Event Stream Management API \(SSF 1\.0 Section 8\.1\): every
operation from an authenticated receiver identity and a typed request to the
[ManagementResult&lt;TBody&gt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>') a host adapter renders\. The store persists, the
adapter transports and authenticates \- the SSF semantics live here, once\.

```csharp
public StreamManagementService(Abblix.SharedSignals.Transmitter.IStreamStore store, Abblix.SharedSignals.Transmitter.IEventOutbox outbox, Abblix.SharedSignals.Transmitter.EventDispatcher dispatcher, Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions options, Abblix.SharedSignals.Transmitter.ReceiverAddressPolicy addressPolicy, Abblix.SharedSignals.Transmitter.PollEndpointLocator pollEndpoints, System.TimeProvider? clock=null);
```
#### Parameters

###### `store` [IStreamStore](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.IStreamStore 'Abblix\.SharedSignals\.Transmitter\.IStreamStore') {#Abblix.SharedSignals.Transmitter.StreamManagementService.StreamManagementService(Abblix.SharedSignals.Transmitter.IStreamStore,Abblix.SharedSignals.Transmitter.IEventOutbox,Abblix.SharedSignals.Transmitter.EventDispatcher,Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions,Abblix.SharedSignals.Transmitter.ReceiverAddressPolicy,Abblix.SharedSignals.Transmitter.PollEndpointLocator,System.TimeProvider).store}

Where streams live\.

###### `outbox` [IEventOutbox](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.IEventOutbox 'Abblix\.SharedSignals\.Transmitter\.IEventOutbox') {#Abblix.SharedSignals.Transmitter.StreamManagementService.StreamManagementService(Abblix.SharedSignals.Transmitter.IStreamStore,Abblix.SharedSignals.Transmitter.IEventOutbox,Abblix.SharedSignals.Transmitter.EventDispatcher,Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions,Abblix.SharedSignals.Transmitter.ReceiverAddressPolicy,Abblix.SharedSignals.Transmitter.PollEndpointLocator,System.TimeProvider).outbox}

The per\-stream queues, dropped with their stream\.

###### `dispatcher` [EventDispatcher](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.EventDispatcher 'Abblix\.SharedSignals\.Transmitter\.EventDispatcher') {#Abblix.SharedSignals.Transmitter.StreamManagementService.StreamManagementService(Abblix.SharedSignals.Transmitter.IStreamStore,Abblix.SharedSignals.Transmitter.IEventOutbox,Abblix.SharedSignals.Transmitter.EventDispatcher,Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions,Abblix.SharedSignals.Transmitter.ReceiverAddressPolicy,Abblix.SharedSignals.Transmitter.PollEndpointLocator,System.TimeProvider).dispatcher}

Mints and enqueues the framework's own signals\.

###### `options` [SharedSignalsTransmitterOptions](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions 'Abblix\.SharedSignals\.Transmitter\.SharedSignalsTransmitterOptions') {#Abblix.SharedSignals.Transmitter.StreamManagementService.StreamManagementService(Abblix.SharedSignals.Transmitter.IStreamStore,Abblix.SharedSignals.Transmitter.IEventOutbox,Abblix.SharedSignals.Transmitter.EventDispatcher,Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions,Abblix.SharedSignals.Transmitter.ReceiverAddressPolicy,Abblix.SharedSignals.Transmitter.PollEndpointLocator,System.TimeProvider).options}

The deployment's one\-time decisions\.

###### `addressPolicy` [ReceiverAddressPolicy](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ReceiverAddressPolicy 'Abblix\.SharedSignals\.Transmitter\.ReceiverAddressPolicy') {#Abblix.SharedSignals.Transmitter.StreamManagementService.StreamManagementService(Abblix.SharedSignals.Transmitter.IStreamStore,Abblix.SharedSignals.Transmitter.IEventOutbox,Abblix.SharedSignals.Transmitter.EventDispatcher,Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions,Abblix.SharedSignals.Transmitter.ReceiverAddressPolicy,Abblix.SharedSignals.Transmitter.PollEndpointLocator,System.TimeProvider).addressPolicy}

Judges the delivery address a receiver proposes\. The same policy the sender consults, deliberately:
an address refused at delivery is refused for a reason that was already true when the receiver named
it, and answering 201 to a stream that can never be delivered to tells the receiver nothing it can
act on \- the refusal then lives only in the transmitter's log\.

###### `pollEndpoints` [PollEndpointLocator](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.PollEndpointLocator 'Abblix\.SharedSignals\.Transmitter\.PollEndpointLocator') {#Abblix.SharedSignals.Transmitter.StreamManagementService.StreamManagementService(Abblix.SharedSignals.Transmitter.IStreamStore,Abblix.SharedSignals.Transmitter.IEventOutbox,Abblix.SharedSignals.Transmitter.EventDispatcher,Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions,Abblix.SharedSignals.Transmitter.ReceiverAddressPolicy,Abblix.SharedSignals.Transmitter.PollEndpointLocator,System.TimeProvider).pollEndpoints}

Where a poll stream is polled \- this transmitter's own address, and the
            one member of a stream's delivery it supplies rather than receives\.

###### `clock` [System\.TimeProvider](https://learn.microsoft.com/en-us/dotnet/api/system.timeprovider 'System\.TimeProvider') {#Abblix.SharedSignals.Transmitter.StreamManagementService.StreamManagementService(Abblix.SharedSignals.Transmitter.IStreamStore,Abblix.SharedSignals.Transmitter.IEventOutbox,Abblix.SharedSignals.Transmitter.EventDispatcher,Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions,Abblix.SharedSignals.Transmitter.ReceiverAddressPolicy,Abblix.SharedSignals.Transmitter.PollEndpointLocator,System.TimeProvider).clock}

Measures the verification throttle; null takes the system clock\.

### Remarks
Echoed transmitter\-supplied members are the one place this service is deliberately more
lenient than SSF 1\.0 Sections 8\.1\.1\.3\-8\.1\.1\.4 permit: the typed update request carries the
receiver\-supplied members alone, so an echoed transmitter\-supplied member never reaches the
comparison the sections describe \- it is dropped at binding, which the same sections allow
for the MISSING case\. A receiver echoing a stale value is thus tolerated rather than told
400\.
### Methods

## StreamManagementService\.AddSubjectAsync\(string, AddSubjectRequest, CancellationToken\) Method {#Abblix.SharedSignals.Transmitter.StreamManagementService.AddSubjectAsync(string,Abblix.SharedSignals.Model.AddSubjectRequest,System.Threading.CancellationToken)}

Adds a subject to a stream \(SSF 1\.0 Section 8\.1\.3\.2\)\. Success asserts nothing about the
subject being known \- the anti\-probing posture of Section 9\.1 by construction, since
this service accepts any well\-formed subject as a statement of interest\.

```csharp
public System.Threading.Tasks.Task<Abblix.SharedSignals.Transmitter.ManagementResult<object>> AddSubjectAsync(string receiverId, Abblix.SharedSignals.Model.AddSubjectRequest request, System.Threading.CancellationToken cancellationToken=default(System.Threading.CancellationToken));
```
#### Parameters

###### `receiverId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.StreamManagementService.AddSubjectAsync(string,Abblix.SharedSignals.Model.AddSubjectRequest,System.Threading.CancellationToken).receiverId}

The authenticated receiver identity\.

###### `request` [AddSubjectRequest](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Model.AddSubjectRequest 'Abblix\.SharedSignals\.Model\.AddSubjectRequest') {#Abblix.SharedSignals.Transmitter.StreamManagementService.AddSubjectAsync(string,Abblix.SharedSignals.Model.AddSubjectRequest,System.Threading.CancellationToken).request}

The stream, the subject, and optionally whether it is verified;
            omitted means verified \(Section 8\.1\.3\.2\)\.

###### `cancellationToken` [System\.Threading\.CancellationToken](https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken 'System\.Threading\.CancellationToken') {#Abblix.SharedSignals.Transmitter.StreamManagementService.AddSubjectAsync(string,Abblix.SharedSignals.Model.AddSubjectRequest,System.Threading.CancellationToken).cancellationToken}

Cancels store I/O\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.SharedSignals\.Transmitter\.ManagementResult&lt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[System\.Object](https://learn.microsoft.com/en-us/dotnet/api/system.object 'System\.Object')[&gt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')

## StreamManagementService\.ChangeStreamStatusAsync\(string, string, string, string, CancellationToken\) Method {#Abblix.SharedSignals.Transmitter.StreamManagementService.ChangeStreamStatusAsync(string,string,string,string,System.Threading.CancellationToken)}

Changes a stream's status on the transmitter's OWN initiative \- the door SSF 1\.0
Section 8\.1\.5 governs, as opposed to the receiver\-driven
[UpdateStreamStatusAsync\(string, StreamStatus, CancellationToken\)](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.StreamManagementService#Abblix.SharedSignals.Transmitter.StreamManagementService.UpdateStreamStatusAsync(string,Abblix.SharedSignals.Model.StreamStatus,System.Threading.CancellationToken) 'Abblix\.SharedSignals\.Transmitter\.StreamManagementService\.UpdateStreamStatusAsync\(string, Abblix\.SharedSignals\.Model\.StreamStatus, System\.Threading\.CancellationToken\)')\. The stream\-updated event escorts the change: for
a pause or disable it is enqueued as a status announcement, the one kind of item
delivery carries over a stopped stream, and for a disable the held queue is dropped
FIRST so the announcement is not dropped with it\.

```csharp
public System.Threading.Tasks.Task<bool> ChangeStreamStatusAsync(string receiverId, string streamId, string status, string? reason=null, System.Threading.CancellationToken cancellationToken=default(System.Threading.CancellationToken));
```
#### Parameters

###### `receiverId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.StreamManagementService.ChangeStreamStatusAsync(string,string,string,string,System.Threading.CancellationToken).receiverId}

The receiver whose stream is being changed\.

###### `streamId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.StreamManagementService.ChangeStreamStatusAsync(string,string,string,string,System.Threading.CancellationToken).streamId}

The stream being changed\.

###### `status` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.StreamManagementService.ChangeStreamStatusAsync(string,string,string,string,System.Threading.CancellationToken).status}

The new status, one of [StreamStatuses](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Model.StreamStatuses 'Abblix\.SharedSignals\.Model\.StreamStatuses')\.

###### `reason` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.StreamManagementService.ChangeStreamStatusAsync(string,string,string,string,System.Threading.CancellationToken).reason}

Why the transmitter changed it, for the event and the status
            document\.

###### `cancellationToken` [System\.Threading\.CancellationToken](https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken 'System\.Threading\.CancellationToken') {#Abblix.SharedSignals.Transmitter.StreamManagementService.ChangeStreamStatusAsync(string,string,string,string,System.Threading.CancellationToken).cancellationToken}

Cancels store I/O and the enqueue\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[System\.Boolean](https://learn.microsoft.com/en-us/dotnet/api/system.boolean 'System\.Boolean')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')  
True when the stream was found and changed; false when no such stream exists,
            or its status already was the requested one \- a no\-op announces nothing\.

#### Exceptions

[System\.ArgumentException](https://learn.microsoft.com/en-us/dotnet/api/system.argumentexception 'System\.ArgumentException')  
The status value is not one of [StreamStatuses](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Model.StreamStatuses 'Abblix\.SharedSignals\.Model\.StreamStatuses'): the caller here is the
transmitter's own code, so a bad value is a programming error, not wire input\.

## StreamManagementService\.CreateStreamAsync\(string, CreateStreamRequest, CancellationToken\) Method {#Abblix.SharedSignals.Transmitter.StreamManagementService.CreateStreamAsync(string,Abblix.SharedSignals.Model.CreateStreamRequest,System.Threading.CancellationToken)}

Creates a stream for the receiver \(SSF 1\.0 Section 8\.1\.1\.1\): the transmitter supplies
identity, audience and the delivered\-events intersection; the receiver's proposal
supplies the rest\.

```csharp
public System.Threading.Tasks.Task<Abblix.SharedSignals.Transmitter.ManagementResult<Abblix.SharedSignals.Model.StreamConfiguration>> CreateStreamAsync(string receiverId, Abblix.SharedSignals.Model.CreateStreamRequest request, System.Threading.CancellationToken cancellationToken=default(System.Threading.CancellationToken));
```
#### Parameters

###### `receiverId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.StreamManagementService.CreateStreamAsync(string,Abblix.SharedSignals.Model.CreateStreamRequest,System.Threading.CancellationToken).receiverId}

The authenticated receiver identity\.

###### `request` [CreateStreamRequest](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Model.CreateStreamRequest 'Abblix\.SharedSignals\.Model\.CreateStreamRequest') {#Abblix.SharedSignals.Transmitter.StreamManagementService.CreateStreamAsync(string,Abblix.SharedSignals.Model.CreateStreamRequest,System.Threading.CancellationToken).request}

The receiver\-supplied half of the configuration\.

###### `cancellationToken` [System\.Threading\.CancellationToken](https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken 'System\.Threading\.CancellationToken') {#Abblix.SharedSignals.Transmitter.StreamManagementService.CreateStreamAsync(string,Abblix.SharedSignals.Model.CreateStreamRequest,System.Threading.CancellationToken).cancellationToken}

Cancels store I/O\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.SharedSignals\.Transmitter\.ManagementResult&lt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[StreamConfiguration](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Model.StreamConfiguration 'Abblix\.SharedSignals\.Model\.StreamConfiguration')[&gt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')

## StreamManagementService\.DeleteStreamAsync\(string, string, CancellationToken\) Method {#Abblix.SharedSignals.Transmitter.StreamManagementService.DeleteStreamAsync(string,string,System.Threading.CancellationToken)}

Deletes a stream and drops its queue \(SSF 1\.0 Section 8\.1\.1\.5\)\.

```csharp
public System.Threading.Tasks.Task<Abblix.SharedSignals.Transmitter.ManagementResult<object>> DeleteStreamAsync(string receiverId, string streamId, System.Threading.CancellationToken cancellationToken=default(System.Threading.CancellationToken));
```
#### Parameters

###### `receiverId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.StreamManagementService.DeleteStreamAsync(string,string,System.Threading.CancellationToken).receiverId}

The authenticated receiver identity\.

###### `streamId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.StreamManagementService.DeleteStreamAsync(string,string,System.Threading.CancellationToken).streamId}

The stream to delete\.

###### `cancellationToken` [System\.Threading\.CancellationToken](https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken 'System\.Threading\.CancellationToken') {#Abblix.SharedSignals.Transmitter.StreamManagementService.DeleteStreamAsync(string,string,System.Threading.CancellationToken).cancellationToken}

Cancels store I/O\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.SharedSignals\.Transmitter\.ManagementResult&lt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[System\.Object](https://learn.microsoft.com/en-us/dotnet/api/system.object 'System\.Object')[&gt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')

## StreamManagementService\.GetStreamAsync\(string, string, CancellationToken\) Method {#Abblix.SharedSignals.Transmitter.StreamManagementService.GetStreamAsync(string,string,System.Threading.CancellationToken)}

Reads one stream's configuration \(SSF 1\.0 Section 8\.1\.1\.2\)\.

```csharp
public System.Threading.Tasks.Task<Abblix.SharedSignals.Transmitter.ManagementResult<Abblix.SharedSignals.Model.StreamConfiguration>> GetStreamAsync(string receiverId, string streamId, System.Threading.CancellationToken cancellationToken=default(System.Threading.CancellationToken));
```
#### Parameters

###### `receiverId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.StreamManagementService.GetStreamAsync(string,string,System.Threading.CancellationToken).receiverId}

The authenticated receiver identity\.

###### `streamId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.StreamManagementService.GetStreamAsync(string,string,System.Threading.CancellationToken).streamId}

The stream to read\.

###### `cancellationToken` [System\.Threading\.CancellationToken](https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken 'System\.Threading\.CancellationToken') {#Abblix.SharedSignals.Transmitter.StreamManagementService.GetStreamAsync(string,string,System.Threading.CancellationToken).cancellationToken}

Cancels store I/O\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.SharedSignals\.Transmitter\.ManagementResult&lt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[StreamConfiguration](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Model.StreamConfiguration 'Abblix\.SharedSignals\.Model\.StreamConfiguration')[&gt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')

## StreamManagementService\.GetStreamStatusAsync\(string, string, CancellationToken\) Method {#Abblix.SharedSignals.Transmitter.StreamManagementService.GetStreamStatusAsync(string,string,System.Threading.CancellationToken)}

Reads a stream's status \(SSF 1\.0 Section 8\.1\.2\.1\)\.

```csharp
public System.Threading.Tasks.Task<Abblix.SharedSignals.Transmitter.ManagementResult<Abblix.SharedSignals.Model.StreamStatus>> GetStreamStatusAsync(string receiverId, string streamId, System.Threading.CancellationToken cancellationToken=default(System.Threading.CancellationToken));
```
#### Parameters

###### `receiverId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.StreamManagementService.GetStreamStatusAsync(string,string,System.Threading.CancellationToken).receiverId}

The authenticated receiver identity\.

###### `streamId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.StreamManagementService.GetStreamStatusAsync(string,string,System.Threading.CancellationToken).streamId}

The stream whose status is being queried\.

###### `cancellationToken` [System\.Threading\.CancellationToken](https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken 'System\.Threading\.CancellationToken') {#Abblix.SharedSignals.Transmitter.StreamManagementService.GetStreamStatusAsync(string,string,System.Threading.CancellationToken).cancellationToken}

Cancels store I/O\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.SharedSignals\.Transmitter\.ManagementResult&lt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[StreamStatus](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Model.StreamStatus 'Abblix\.SharedSignals\.Model\.StreamStatus')[&gt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')

## StreamManagementService\.ListStreamsAsync\(string, CancellationToken\) Method {#Abblix.SharedSignals.Transmitter.StreamManagementService.ListStreamsAsync(string,System.Threading.CancellationToken)}

Lists the receiver's streams \(SSF 1\.0 Section 8\.1\.1\.2\); the empty list is a receiver
with no streams, never an error\.

```csharp
public System.Threading.Tasks.Task<Abblix.SharedSignals.Transmitter.ManagementResult<System.Collections.Generic.IReadOnlyList<Abblix.SharedSignals.Model.StreamConfiguration>>> ListStreamsAsync(string receiverId, System.Threading.CancellationToken cancellationToken=default(System.Threading.CancellationToken));
```
#### Parameters

###### `receiverId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.StreamManagementService.ListStreamsAsync(string,System.Threading.CancellationToken).receiverId}

The authenticated receiver identity\.

###### `cancellationToken` [System\.Threading\.CancellationToken](https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken 'System\.Threading\.CancellationToken') {#Abblix.SharedSignals.Transmitter.StreamManagementService.ListStreamsAsync(string,System.Threading.CancellationToken).cancellationToken}

Cancels store I/O\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.SharedSignals\.Transmitter\.ManagementResult&lt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[System\.Collections\.Generic\.IReadOnlyList&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ireadonlylist-1 'System\.Collections\.Generic\.IReadOnlyList\`1')[StreamConfiguration](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Model.StreamConfiguration 'Abblix\.SharedSignals\.Model\.StreamConfiguration')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ireadonlylist-1 'System\.Collections\.Generic\.IReadOnlyList\`1')[&gt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')

## StreamManagementService\.RemoveSubjectAsync\(string, RemoveSubjectRequest, CancellationToken\) Method {#Abblix.SharedSignals.Transmitter.StreamManagementService.RemoveSubjectAsync(string,Abblix.SharedSignals.Model.RemoveSubjectRequest,System.Threading.CancellationToken)}

Removes a subject from a stream \(SSF 1\.0 Section 8\.1\.3\.3\)\. Removing what was never
added still answers success: a 404 for an unrecognized subject is exactly the probing
signal Section 9\.1 warns about, and staying silent is the option it offers\.

```csharp
public System.Threading.Tasks.Task<Abblix.SharedSignals.Transmitter.ManagementResult<object>> RemoveSubjectAsync(string receiverId, Abblix.SharedSignals.Model.RemoveSubjectRequest request, System.Threading.CancellationToken cancellationToken=default(System.Threading.CancellationToken));
```
#### Parameters

###### `receiverId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.StreamManagementService.RemoveSubjectAsync(string,Abblix.SharedSignals.Model.RemoveSubjectRequest,System.Threading.CancellationToken).receiverId}

The authenticated receiver identity\.

###### `request` [RemoveSubjectRequest](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Model.RemoveSubjectRequest 'Abblix\.SharedSignals\.Model\.RemoveSubjectRequest') {#Abblix.SharedSignals.Transmitter.StreamManagementService.RemoveSubjectAsync(string,Abblix.SharedSignals.Model.RemoveSubjectRequest,System.Threading.CancellationToken).request}

The stream and the subject\.

###### `cancellationToken` [System\.Threading\.CancellationToken](https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken 'System\.Threading\.CancellationToken') {#Abblix.SharedSignals.Transmitter.StreamManagementService.RemoveSubjectAsync(string,Abblix.SharedSignals.Model.RemoveSubjectRequest,System.Threading.CancellationToken).cancellationToken}

Cancels store I/O\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.SharedSignals\.Transmitter\.ManagementResult&lt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[System\.Object](https://learn.microsoft.com/en-us/dotnet/api/system.object 'System\.Object')[&gt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')

## StreamManagementService\.ReplaceStreamAsync\(string, UpdateStreamRequest, CancellationToken\) Method {#Abblix.SharedSignals.Transmitter.StreamManagementService.ReplaceStreamAsync(string,Abblix.SharedSignals.Model.UpdateStreamRequest,System.Threading.CancellationToken)}

Replaces a stream's receiver\-supplied configuration whole: a member absent from the
request is deleted \(SSF 1\.0 Section 8\.1\.1\.4\) \- except the delivery, without which a
stream cannot operate, so its absence is refused rather than read as deletion\.

```csharp
public System.Threading.Tasks.Task<Abblix.SharedSignals.Transmitter.ManagementResult<Abblix.SharedSignals.Model.StreamConfiguration>> ReplaceStreamAsync(string receiverId, Abblix.SharedSignals.Model.UpdateStreamRequest request, System.Threading.CancellationToken cancellationToken=default(System.Threading.CancellationToken));
```
#### Parameters

###### `receiverId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.StreamManagementService.ReplaceStreamAsync(string,Abblix.SharedSignals.Model.UpdateStreamRequest,System.Threading.CancellationToken).receiverId}

The authenticated receiver identity\.

###### `request` [UpdateStreamRequest](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Model.UpdateStreamRequest 'Abblix\.SharedSignals\.Model\.UpdateStreamRequest') {#Abblix.SharedSignals.Transmitter.StreamManagementService.ReplaceStreamAsync(string,Abblix.SharedSignals.Model.UpdateStreamRequest,System.Threading.CancellationToken).request}

The stream identifier and the full receiver\-supplied set\.

###### `cancellationToken` [System\.Threading\.CancellationToken](https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken 'System\.Threading\.CancellationToken') {#Abblix.SharedSignals.Transmitter.StreamManagementService.ReplaceStreamAsync(string,Abblix.SharedSignals.Model.UpdateStreamRequest,System.Threading.CancellationToken).cancellationToken}

Cancels store I/O\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.SharedSignals\.Transmitter\.ManagementResult&lt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[StreamConfiguration](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Model.StreamConfiguration 'Abblix\.SharedSignals\.Model\.StreamConfiguration')[&gt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')

## StreamManagementService\.RequestVerificationAsync\(string, VerificationRequest, CancellationToken\) Method {#Abblix.SharedSignals.Transmitter.StreamManagementService.RequestVerificationAsync(string,Abblix.SharedSignals.Model.VerificationRequest,System.Threading.CancellationToken)}

Triggers a Verification Event over a stream \(SSF 1\.0 Section 8\.1\.4\.2\): the event is
enqueued with the stream's own opaque identifier as its subject and the receiver's
"state" echoed, and requests inside "min\_verification\_interval" are throttled\.

```csharp
public System.Threading.Tasks.Task<Abblix.SharedSignals.Transmitter.ManagementResult<object>> RequestVerificationAsync(string receiverId, Abblix.SharedSignals.Model.VerificationRequest request, System.Threading.CancellationToken cancellationToken=default(System.Threading.CancellationToken));
```
#### Parameters

###### `receiverId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.StreamManagementService.RequestVerificationAsync(string,Abblix.SharedSignals.Model.VerificationRequest,System.Threading.CancellationToken).receiverId}

The authenticated receiver identity\.

###### `request` [VerificationRequest](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Model.VerificationRequest 'Abblix\.SharedSignals\.Model\.VerificationRequest') {#Abblix.SharedSignals.Transmitter.StreamManagementService.RequestVerificationAsync(string,Abblix.SharedSignals.Model.VerificationRequest,System.Threading.CancellationToken).request}

The stream and optionally the state to echo\.

###### `cancellationToken` [System\.Threading\.CancellationToken](https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken 'System\.Threading\.CancellationToken') {#Abblix.SharedSignals.Transmitter.StreamManagementService.RequestVerificationAsync(string,Abblix.SharedSignals.Model.VerificationRequest,System.Threading.CancellationToken).cancellationToken}

Cancels store I/O and the enqueue\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.SharedSignals\.Transmitter\.ManagementResult&lt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[System\.Object](https://learn.microsoft.com/en-us/dotnet/api/system.object 'System\.Object')[&gt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')

## StreamManagementService\.UpdateStreamAsync\(string, UpdateStreamRequest, CancellationToken\) Method {#Abblix.SharedSignals.Transmitter.StreamManagementService.UpdateStreamAsync(string,Abblix.SharedSignals.Model.UpdateStreamRequest,System.Threading.CancellationToken)}

Updates a stream: present receiver\-supplied members change, absent ones stay
\(SSF 1\.0 Section 8\.1\.1\.3\)\.

```csharp
public System.Threading.Tasks.Task<Abblix.SharedSignals.Transmitter.ManagementResult<Abblix.SharedSignals.Model.StreamConfiguration>> UpdateStreamAsync(string receiverId, Abblix.SharedSignals.Model.UpdateStreamRequest request, System.Threading.CancellationToken cancellationToken=default(System.Threading.CancellationToken));
```
#### Parameters

###### `receiverId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.StreamManagementService.UpdateStreamAsync(string,Abblix.SharedSignals.Model.UpdateStreamRequest,System.Threading.CancellationToken).receiverId}

The authenticated receiver identity\.

###### `request` [UpdateStreamRequest](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Model.UpdateStreamRequest 'Abblix\.SharedSignals\.Model\.UpdateStreamRequest') {#Abblix.SharedSignals.Transmitter.StreamManagementService.UpdateStreamAsync(string,Abblix.SharedSignals.Model.UpdateStreamRequest,System.Threading.CancellationToken).request}

The stream identifier and the members to change\.

###### `cancellationToken` [System\.Threading\.CancellationToken](https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken 'System\.Threading\.CancellationToken') {#Abblix.SharedSignals.Transmitter.StreamManagementService.UpdateStreamAsync(string,Abblix.SharedSignals.Model.UpdateStreamRequest,System.Threading.CancellationToken).cancellationToken}

Cancels store I/O\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.SharedSignals\.Transmitter\.ManagementResult&lt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[StreamConfiguration](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Model.StreamConfiguration 'Abblix\.SharedSignals\.Model\.StreamConfiguration')[&gt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')

## StreamManagementService\.UpdateStreamStatusAsync\(string, StreamStatus, CancellationToken\) Method {#Abblix.SharedSignals.Transmitter.StreamManagementService.UpdateStreamStatusAsync(string,Abblix.SharedSignals.Model.StreamStatus,System.Threading.CancellationToken)}

Updates a stream's status at the receiver's request \(SSF 1\.0 Section 8\.1\.2\.2\)\. A
receiver\-driven change sends no stream\-updated event \- Section 8\.1\.5 binds the
transmitter's OWN changes only\. Disabling drops the held queue: a disabled stream
"will not hold any events" \(Section 8\.1\.2\.1\)\.

```csharp
public System.Threading.Tasks.Task<Abblix.SharedSignals.Transmitter.ManagementResult<Abblix.SharedSignals.Model.StreamStatus>> UpdateStreamStatusAsync(string receiverId, Abblix.SharedSignals.Model.StreamStatus request, System.Threading.CancellationToken cancellationToken=default(System.Threading.CancellationToken));
```
#### Parameters

###### `receiverId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.StreamManagementService.UpdateStreamStatusAsync(string,Abblix.SharedSignals.Model.StreamStatus,System.Threading.CancellationToken).receiverId}

The authenticated receiver identity\.

###### `request` [StreamStatus](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Model.StreamStatus 'Abblix\.SharedSignals\.Model\.StreamStatus') {#Abblix.SharedSignals.Transmitter.StreamManagementService.UpdateStreamStatusAsync(string,Abblix.SharedSignals.Model.StreamStatus,System.Threading.CancellationToken).request}

The stream, the new status, and optionally why\.

###### `cancellationToken` [System\.Threading\.CancellationToken](https://learn.microsoft.com/en-us/dotnet/api/system.threading.cancellationtoken 'System\.Threading\.CancellationToken') {#Abblix.SharedSignals.Transmitter.StreamManagementService.UpdateStreamStatusAsync(string,Abblix.SharedSignals.Model.StreamStatus,System.Threading.CancellationToken).cancellationToken}

Cancels store I/O\.

#### Returns
[System\.Threading\.Tasks\.Task&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')[Abblix\.SharedSignals\.Transmitter\.ManagementResult&lt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[StreamStatus](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Model.StreamStatus 'Abblix\.SharedSignals\.Model\.StreamStatus')[&gt;](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ManagementResult_TBody_ 'Abblix\.SharedSignals\.Transmitter\.ManagementResult\<TBody\>')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1 'System\.Threading\.Tasks\.Task\`1')
