#### [Abblix\.Oidc\.Server](https://www.abblix.com/docs/api/abblix-oidc-server 'index')
### [Abblix\.Oidc\.Server\.Common\.Constants](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Constants 'Abblix\.Oidc\.Server\.Common\.Constants')

## ScopeDefinition Class

Defines a structure for OAuth 2\.0 scope definitions, specifying the scope and associated claim types\.

```csharp
public record ScopeDefinition : System.IEquatable<Abblix.Oidc.Server.Common.Constants.ScopeDefinition>
```

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

Implements [System\.IEquatable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.iequatable-1 'System\.IEquatable\`1')[ScopeDefinition](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Constants.ScopeDefinition 'Abblix\.Oidc\.Server\.Common\.Constants\.ScopeDefinition')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.iequatable-1 'System\.IEquatable\`1')

### Remarks
The properties are settable and a parameterless constructor is available so that a definition can
be read from configuration\. A configuration binder builds a positional record through its
constructor, and it drops an element outright when a constructor parameter of collection type is
absent or empty from the source \- which is exactly the shape of a resource scope that carries no
claims\. Building the instance and then assigning its properties has no such blind spot\.
### Constructors

## ScopeDefinition\(\) Constructor {#Abblix.Oidc.Server.Common.Constants.ScopeDefinition.ScopeDefinition()}

Initializes an empty definition, to be completed through its properties\.

```csharp
public ScopeDefinition();
```

## ScopeDefinition\(string, string\[\]\) Constructor {#Abblix.Oidc.Server.Common.Constants.ScopeDefinition.ScopeDefinition(string,string[])}

Initializes a definition for the given scope and the claims it asks for\.

```csharp
public ScopeDefinition(string scope, params string[] claimTypes);
```
#### Parameters

###### `scope` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.Oidc.Server.Common.Constants.ScopeDefinition.ScopeDefinition(string,string[]).scope}

The name of the scope as it appears on the wire\.

###### `claimTypes` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')[\[\]](https://learn.microsoft.com/en-us/dotnet/api/system.array 'System\.Array') {#Abblix.Oidc.Server.Common.Constants.ScopeDefinition.ScopeDefinition(string,string[]).claimTypes}

The claims this scope requests, if any\.
### Properties

## ScopeDefinition\.ClaimTypes Property {#Abblix.Oidc.Server.Common.Constants.ScopeDefinition.ClaimTypes}

The claims this scope requests\. An empty set is meaningful: a scope that authorizes access to
a resource has nothing to say about the user\.

```csharp
public string[] ClaimTypes { get; set; }
```

#### Property Value
[System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')[\[\]](https://learn.microsoft.com/en-us/dotnet/api/system.array 'System\.Array')

## ScopeDefinition\.Scope Property {#Abblix.Oidc.Server.Common.Constants.ScopeDefinition.Scope}

The name of the scope as it appears on the wire\.

```csharp
public string Scope { get; set; }
```

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

## ScopeDefinition\.Deconstruct\(string, string\[\]\) Method {#Abblix.Oidc.Server.Common.Constants.ScopeDefinition.Deconstruct(string,string[])}

Deconstructs the definition into its scope and claim types\.

```csharp
public void Deconstruct(out string scope, out string[] claimTypes);
```
#### Parameters

###### `scope` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.Oidc.Server.Common.Constants.ScopeDefinition.Deconstruct(string,string[]).scope}

Receives [Scope](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Constants.ScopeDefinition#Abblix.Oidc.Server.Common.Constants.ScopeDefinition.Scope 'Abblix\.Oidc\.Server\.Common\.Constants\.ScopeDefinition\.Scope')\.

###### `claimTypes` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')[\[\]](https://learn.microsoft.com/en-us/dotnet/api/system.array 'System\.Array') {#Abblix.Oidc.Server.Common.Constants.ScopeDefinition.Deconstruct(string,string[]).claimTypes}

Receives [ClaimTypes](https://www.abblix.com/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Common.Constants.ScopeDefinition#Abblix.Oidc.Server.Common.Constants.ScopeDefinition.ClaimTypes 'Abblix\.Oidc\.Server\.Common\.Constants\.ScopeDefinition\.ClaimTypes')\.
