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

## SharedSignalsEndpointOptions Class

What the endpoint adapter leaves to the host: how an authenticated request maps to the
receiver identity every management operation is scoped by\. Authentication itself stays with
the host's middleware \- SSF 1\.0 Section 7\.1\.1 deliberately leaves the scheme open\.

```csharp
public sealed record SharedSignalsEndpointOptions : System.IEquatable<Abblix.SharedSignals.MinimalApi.SharedSignalsEndpointOptions>
```

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

Implements [System\.IEquatable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.iequatable-1 'System\.IEquatable\`1')[SharedSignalsEndpointOptions](https://www.abblix.com/en/docs/api/abblix-sharedsignals-minimalapi/Abblix.SharedSignals.MinimalApi.SharedSignalsEndpointOptions 'Abblix\.SharedSignals\.MinimalApi\.SharedSignalsEndpointOptions')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.iequatable-1 'System\.IEquatable\`1')
### Properties

## SharedSignalsEndpointOptions\.AdvertisedPrefix Property {#Abblix.SharedSignals.MinimalApi.SharedSignalsEndpointOptions.AdvertisedPrefix}

The management prefix the configuration document advertises, as the outside world
reaches it; unset advertises [ManagementPrefix](https://www.abblix.com/en/docs/api/abblix-sharedsignals-minimalapi/Abblix.SharedSignals.MinimalApi.SharedSignalsEndpointOptions#Abblix.SharedSignals.MinimalApi.SharedSignalsEndpointOptions.ManagementPrefix 'Abblix\.SharedSignals\.MinimalApi\.SharedSignalsEndpointOptions\.ManagementPrefix')\. Set it when a proxy in
front rewrites paths, so the document names the external addresses while the routes
stay mapped on the internal ones\.

```csharp
public Microsoft.AspNetCore.Http.PathString AdvertisedPrefix { get; init; }
```

#### Property Value
[Microsoft\.AspNetCore\.Http\.PathString](https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.pathstring 'Microsoft\.AspNetCore\.Http\.PathString')

## SharedSignalsEndpointOptions\.ConfigurationDocumentRoute Property {#Abblix.SharedSignals.MinimalApi.SharedSignalsEndpointOptions.ConfigurationDocumentRoute}

The route the configuration document is served on; unset takes the canonical
well\-known address derived from the issuer \(SSF 1\.0 Section 7\.2\)\. A set value is
deployment plumbing for a rewriting proxy that maps the canonical address onto an
internal route \- the EXTERNAL address never moves, because receivers derive it from
the issuer\.

```csharp
public Microsoft.AspNetCore.Http.PathString ConfigurationDocumentRoute { get; init; }
```

#### Property Value
[Microsoft\.AspNetCore\.Http\.PathString](https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.pathstring 'Microsoft\.AspNetCore\.Http\.PathString')

## SharedSignalsEndpointOptions\.GrantedScopesSelector Property {#Abblix.SharedSignals.MinimalApi.SharedSignalsEndpointOptions.GrantedScopesSelector}

Reads the scopes the caller's access token was granted\. Null \- the default \- checks no scope at
all, which is what this surface did before the option existed\.

```csharp
public System.Func<Microsoft.AspNetCore.Http.HttpContext,System.Collections.Generic.IReadOnlyCollection<string>>? GrantedScopesSelector { get; init; }
```

#### Property Value
[System\.Func&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2')[Microsoft\.AspNetCore\.Http\.HttpContext](https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.httpcontext 'Microsoft\.AspNetCore\.Http\.HttpContext')[,](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2')[System\.Collections\.Generic\.IReadOnlyCollection&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ireadonlycollection-1 'System\.Collections\.Generic\.IReadOnlyCollection\`1')[System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ireadonlycollection-1 'System\.Collections\.Generic\.IReadOnlyCollection\`1')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2')

### Remarks
The CAEP Interoperability Profile Section 2\.7\.2 requires a transmitter to "verify that the
authorization represented by the access token is sufficient for the requested resource access",
and Section 2\.7\.3 says what sufficient means: `ssf.read` for reading, `ssf.manage` for
changing\. This library can apply that split per route, but it cannot find the scopes on its own \-
where they live depends on how the host authenticates, and this package never sees a token\.

Set it and every route enforces its own requirement. Leave it null and none do, which keeps a
deployment that authorizes some other way working exactly as before - and outside the profile,
deliberately, rather than by omission.

A common wiring reads the `scope` claim: `ctx => ctx.User.FindFirst("scope")?.Value.Split(' ')
            ?? []`.

## SharedSignalsEndpointOptions\.ManagementPrefix Property {#Abblix.SharedSignals.MinimalApi.SharedSignalsEndpointOptions.ManagementPrefix}

The route prefix the management surface is mapped under\. Behind a rewriting proxy this
is the INTERNAL prefix; what the configuration document advertises is
[AdvertisedPrefix](https://www.abblix.com/en/docs/api/abblix-sharedsignals-minimalapi/Abblix.SharedSignals.MinimalApi.SharedSignalsEndpointOptions#Abblix.SharedSignals.MinimalApi.SharedSignalsEndpointOptions.AdvertisedPrefix 'Abblix\.SharedSignals\.MinimalApi\.SharedSignalsEndpointOptions\.AdvertisedPrefix')\.

```csharp
public Microsoft.AspNetCore.Http.PathString ManagementPrefix { get; init; }
```

#### Property Value
[Microsoft\.AspNetCore\.Http\.PathString](https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.pathstring 'Microsoft\.AspNetCore\.Http\.PathString')

## SharedSignalsEndpointOptions\.MapWellKnownConfiguration Property {#Abblix.SharedSignals.MinimalApi.SharedSignalsEndpointOptions.MapWellKnownConfiguration}

Whether [MapSharedSignalsTransmitterEndpoints\(this IEndpointRouteBuilder\)](https://www.abblix.com/en/docs/api/abblix-sharedsignals-minimalapi/Abblix.SharedSignals.MinimalApi.SharedSignalsEndpointRouteBuilderExtensions#Abblix.SharedSignals.MinimalApi.SharedSignalsEndpointRouteBuilderExtensions.MapSharedSignalsTransmitterEndpoints(thisMicrosoft.AspNetCore.Routing.IEndpointRouteBuilder) 'Abblix\.SharedSignals\.MinimalApi\.SharedSignalsEndpointRouteBuilderExtensions\.MapSharedSignalsTransmitterEndpoints\(this Microsoft\.AspNetCore\.Routing\.IEndpointRouteBuilder\)') maps
the configuration document at the canonical well\-known address\. True by default; false
is for a host whose gateway or CDN answers that address itself\. The address is fixed by
SSF 1\.0 Section 7\.2 and receivers derive it from the issuer, so this flag only
suppresses the route, never moves it \- a host that must serve the document on another
internal path pairs it with [ConfigurationDocumentRoute](https://www.abblix.com/en/docs/api/abblix-sharedsignals-minimalapi/Abblix.SharedSignals.MinimalApi.SharedSignalsEndpointOptions#Abblix.SharedSignals.MinimalApi.SharedSignalsEndpointOptions.ConfigurationDocumentRoute 'Abblix\.SharedSignals\.MinimalApi\.SharedSignalsEndpointOptions\.ConfigurationDocumentRoute') and
[MapSharedSignalsConfigurationDocument\(this IEndpointRouteBuilder\)](https://www.abblix.com/en/docs/api/abblix-sharedsignals-minimalapi/Abblix.SharedSignals.MinimalApi.SharedSignalsEndpointRouteBuilderExtensions#Abblix.SharedSignals.MinimalApi.SharedSignalsEndpointRouteBuilderExtensions.MapSharedSignalsConfigurationDocument(thisMicrosoft.AspNetCore.Routing.IEndpointRouteBuilder) 'Abblix\.SharedSignals\.MinimalApi\.SharedSignalsEndpointRouteBuilderExtensions\.MapSharedSignalsConfigurationDocument\(this Microsoft\.AspNetCore\.Routing\.IEndpointRouteBuilder\)')\.

```csharp
public bool MapWellKnownConfiguration { get; init; }
```

#### Property Value
[System\.Boolean](https://learn.microsoft.com/en-us/dotnet/api/system.boolean 'System\.Boolean')

## SharedSignalsEndpointOptions\.ReceiverIdSelector Property {#Abblix.SharedSignals.MinimalApi.SharedSignalsEndpointOptions.ReceiverIdSelector}

Extracts the receiver identity from the authenticated request; null answers the request
with 401\. The default reads the "sub" claim and falls back to the identity name \- the
two places the common authentication handlers put a caller's identifier\.

```csharp
public System.Func<Microsoft.AspNetCore.Http.HttpContext,string?> ReceiverIdSelector { get; init; }
```

#### Property Value
[System\.Func&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2')[Microsoft\.AspNetCore\.Http\.HttpContext](https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.httpcontext 'Microsoft\.AspNetCore\.Http\.HttpContext')[,](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2')[System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2')
