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

## License Class

Represents the licensing constraints applied to the application, including limits on the number of clients and issuers,
as well as the validity period of the license\.

```csharp
public record License : System.IEquatable<Abblix.Oidc.Server.Features.Licensing.License>
```

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

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

### Remarks
This record is central to defining and enforcing operational limits and licensing terms within the application\. It
supports not only quantitative restrictions, such as the number of clients and issuers, but also temporal constraints,
specifying when the license is valid and providing a grace period beyond the expiration date\.

Properties:
\- [ClientLimit](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Licensing.License#Abblix.Oidc.Server.Features.Licensing.License.ClientLimit 'Abblix\.Oidc\.Server\.Features\.Licensing\.License\.ClientLimit') and [IssuerLimit](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Licensing.License#Abblix.Oidc.Server.Features.Licensing.License.IssuerLimit 'Abblix\.Oidc\.Server\.Features\.Licensing\.License\.IssuerLimit') impose limits on the number of clients and issuers
  that can interact with the application, ensuring compliance with the licensing agreement\.
\- [ValidIssuers](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Licensing.License#Abblix.Oidc.Server.Features.Licensing.License.ValidIssuers 'Abblix\.Oidc\.Server\.Features\.Licensing\.License\.ValidIssuers') specifies which issuers are recognized as valid sources of tokens or claims, adding
  an additional layer of security and compliance\.
\- [NotBefore](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Licensing.License#Abblix.Oidc.Server.Features.Licensing.License.NotBefore 'Abblix\.Oidc\.Server\.Features\.Licensing\.License\.NotBefore') and [ExpiresAt](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Licensing.License#Abblix.Oidc.Server.Features.Licensing.License.ExpiresAt 'Abblix\.Oidc\.Server\.Features\.Licensing\.License\.ExpiresAt') define the time frame during which the license is considered
  valid, allowing for precise control over the license's lifecycle\.
\- [GracePeriod](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Licensing.License#Abblix.Oidc.Server.Features.Licensing.License.GracePeriod 'Abblix\.Oidc\.Server\.Features\.Licensing\.License\.GracePeriod') offers flexibility by defining a period after [ExpiresAt](https://www.abblix.com/en/docs/api/abblix-oidc-server/Abblix.Oidc.Server.Features.Licensing.License#Abblix.Oidc.Server.Features.Licensing.License.ExpiresAt 'Abblix\.Oidc\.Server\.Features\.Licensing\.License\.ExpiresAt') during which the
  license constraints are still enforced, but the application may remain operational to account for renewal
  processes\.

Together, these properties enable a robust and flexible approach to licensing, facilitating compliance, security,
and operational continuity\.
### Properties

## License\.ClientLimit Property {#Abblix.Oidc.Server.Features.Licensing.License.ClientLimit}

The maximum number of clients that are allowed to interact with the application under the current license\.

```csharp
public System.Nullable<int> ClientLimit { get; init; }
```

#### Property Value
[System\.Nullable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.nullable-1 'System\.Nullable\`1')[System\.Int32](https://learn.microsoft.com/en-us/dotnet/api/system.int32 'System\.Int32')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.nullable-1 'System\.Nullable\`1')

### Remarks
This property specifies a limit on the number of unique client applications that can be registered or authenticated
by the application\. It's a crucial aspect of licensing enforcement, ensuring that the application usage does not
exceed the terms agreed upon in the licensing contract\. A value of `null` indicates that there is no limit on
the number of clients\.

When the number of unique clients exceeds this limit, the application should enforce the licensing terms by
restricting further client registrations or authentications, aligning with the compliance requirements\.

## License\.ExpiresAt Property {#Abblix.Oidc.Server.Features.Licensing.License.ExpiresAt}

The expiration date and time of the license\.

```csharp
public System.Nullable<System.DateTimeOffset> ExpiresAt { get; init; }
```

#### Property Value
[System\.Nullable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.nullable-1 'System\.Nullable\`1')[System\.DateTimeOffset](https://learn.microsoft.com/en-us/dotnet/api/system.datetimeoffset 'System\.DateTimeOffset')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.nullable-1 'System\.Nullable\`1')

## License\.GracePeriod Property {#Abblix.Oidc.Server.Features.Licensing.License.GracePeriod}

An optional grace period after the expiration date during which the license conditions are still considered valid\.

```csharp
public System.Nullable<System.DateTimeOffset> GracePeriod { get; init; }
```

#### Property Value
[System\.Nullable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.nullable-1 'System\.Nullable\`1')[System\.DateTimeOffset](https://learn.microsoft.com/en-us/dotnet/api/system.datetimeoffset 'System\.DateTimeOffset')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.nullable-1 'System\.Nullable\`1')

## License\.IssuerLimit Property {#Abblix.Oidc.Server.Features.Licensing.License.IssuerLimit}

The maximum number of issuers that are recognized as valid by the application under the current license\.

```csharp
public System.Nullable<int> IssuerLimit { get; init; }
```

#### Property Value
[System\.Nullable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.nullable-1 'System\.Nullable\`1')[System\.Int32](https://learn.microsoft.com/en-us/dotnet/api/system.int32 'System\.Int32')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.nullable-1 'System\.Nullable\`1')

### Remarks
This property defines a cap on the number of distinct issuers from which the application will accept tokens or
claims\. It plays a vital role in controlling access and ensuring that the application's interactions are within
the bounds set by its licensing terms\. A `null` value for this property implies that there's no restriction
on the number of issuers\.

Exceeding this limit may require the application to implement measures that block tokens or claims issued by
additional issuers, thereby maintaining adherence to the licensing agreement\.

## License\.NotBefore Property {#Abblix.Oidc.Server.Features.Licensing.License.NotBefore}

The date and time before which the license is not valid\.

```csharp
public System.Nullable<System.DateTimeOffset> NotBefore { get; init; }
```

#### Property Value
[System\.Nullable&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.nullable-1 'System\.Nullable\`1')[System\.DateTimeOffset](https://learn.microsoft.com/en-us/dotnet/api/system.datetimeoffset 'System\.DateTimeOffset')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.nullable-1 'System\.Nullable\`1')

## License\.ValidIssuers Property {#Abblix.Oidc.Server.Features.Licensing.License.ValidIssuers}

An array of strings representing the issuers that are considered valid for this license\.

```csharp
public System.Collections.Generic.HashSet<string>? ValidIssuers { get; init; }
```

#### Property Value
[System\.Collections\.Generic\.HashSet&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.hashset-1 'System\.Collections\.Generic\.HashSet\`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.hashset-1 'System\.Collections\.Generic\.HashSet\`1')
