Serenity.Net.Core assembly

Serenity namespace

signature name description
static class AuthorizationExtensions Authorization extension methods
static class CollectionExtensions Basic collection extensions
static class CoreTexts
enum DateElementOrder Date element orders
static class DateHelper Static class with common date utilities and constants
class DefaultSectionKeyAttribute Attribute to access the default section key for an option class
static class DistributedCacheExtensions Contains extensions methods to work with IDistributedCache provider.
static class EnumMapper Contains Enum mapping and other helper functions
static class ExceptionExtensions Exception data extensions
static class FileSystemExtensions IFileSystem extensions to reduce dependency on System.IO, in case these methods are also added to IFileSystem in the future
interface IFileSystem Base file system for abstracting physical disk access
class InformationalException An exception that is created purely for informational purposes, e.g. for logging something to exception log
interface INotLoggedException An exception that should not be logged.
static class Invariants Invariant culture related constants and formats.
interface IServiceResolver<TService> A generic version of IServiceProvider which resolves a service on demand.
interface ITextLocalizer Text localizer for current context language / pending state.
interface IUserDefinition User definition abstraction.
static class JSON Contains shortcuts to Newtonsoft.Json serialization / deserialization methods, and default Serenity settings.
static class JsonSettings Contains default Serenity JSON serialization settings.
class LocalText Defines a localizable text resource. Contains a local text key and has implicit conversions to and from String.
static class MemoryCacheExtensions Contains extensions methods to work with IMemoryCache provider.
class NullTextLocalizer Null text localizer which returns null for all keys
static class PathHelper Contains Path related helper functions.
class PhysicalFileSystem Physical file sytem
static class ReflectionExtensions Reflection extensions
static class StringHelper This static class contains some helper functions that operate on String objects.
enum SummaryType Enumeration of aggregate function types for a column
static class TextLocalizerExtensions Extensions for local text context
class Throttler Provides throttling checks for operations. E.g. allow 10 login attempts per minute.
class TwoLevelCache Contains helper functions to use local and distributed cache in sync with optional cache invalidation.
static class TwoLevelCacheExtensions Contains extension functions to use local and distributed cache in sync with optional cache invalidation.
static class UriHelper Contains URI related helper functions.
struct ValueStopwatch A value stopwatch

Serenity.Abstractions namespace

signature name description
class DefaultTypeSource Default implementation for a type source
interface IGetAllTexts Abstraction for local text registry that can return all registered entries
interface IGetAssemblies Abstraction for type source that can return a list of assemblies
interface IHasPassword Used to determine if user has a password. If interface not found on user definition it assumes user has a password.
interface IHttpContextItemsAccessor Interface for abstraction that should return HttpContext.Current.Items for web requests, and null for normal threads.
interface IImpersonator Interface for authorization services that supports temporary impersonating
interface ILanguageFallbacks Abstraction for local text registry that can return language fallbacks
interface ILocalTextRegistry Abstraction for local text registry which stores translations for local text keys.
interface IPermissionService Permission service abstraction
interface IRemoveAll Abstraction for objects that supports clearing all items, like a cache or local text registry.
interface ISiteAbsoluteUrl Interface to access absolute base URL for current site, including the PathBase. Useful for reporting callbacks, or e-mails etc.
interface ITransientGrantor Interface for permission services that supports granting permissions temporarily
interface ITwoLevelCache An abstraction for a combination of in memory and distributed cache.
interface ITypeSource Abstraction for type source which is used as an extensibility point for Serenity applications
interface IUserAccessor Abstraction to access the current user
interface IUserClaimCreator Interface for getting user ClaimsPrincipal
interface IUserPasswordValidator Abstraction to validate a user password
interface IUserRetrieveService Abstraction to retrieve a user definition by its id or username
static class TypeSourceExtensions Type source extension methods

Serenity.ComponentModel namespace

signature name description
class AlignCenterAttribute Centers text horizontally (usually in a grid column).
abstract class AlignmentAttribute Controls horizontal alignment of text (usually in grid columns).
class AlignRightAttribute Right aligns text horizontally (usually in a grid column)
class AllowHideAttribute Controls users ability to hide a column, e.g. using column picker.
class AnnotationTypeAttribute Declares that the type with this attribute is an annotation type for another type, e.g. it contains attributes for the other type and its properties. This is mainly used to separate dependencies between rows and UI related properties like editor types etc.
class AsyncLookupEditorAttribute Indicates that the target property should use a "Lookup" editor with "async" set to true.
class BasedOnRowAttribute An attribute that indicates this type is based on another row type. Used with form, columns etc. types to map their properties to corresponding property in a row, so that they inherit attributes.
abstract class BaseUploadEditorAttribute Sets editor type as "ImageUpload", which only allows image files. Make sure you use this attribute in Row.cs, not Form.cs as the image upload behavior only works if it is in row, otherwise your files will stay in temporary directory.
class BooleanEditorAttribute Indicates that the target property should use a "Boolean" editor.
class BooleanFilteringAttribute Sets filtering type to "Boolean"
class BooleanFormatterAttribute Sets formatting type to "Boolean"
class CheckboxFormatterAttribute Sets formatting type to "Checkbox"
class CheckLookupEditorAttribute Indicates that the target property should use a "CheckLookup" editor.
class CollapsibleAttribute Used to specify a target is collapsible. Commonly used with form categories to make them collapsible.
class ColumnsScriptAttribute Indicates that this type should generate a columns script, which contains information about properties in this type and is an array of PropertyItem objects. Column scripts can be accessed from client side using Q.getColumns("Key")
class CssClassAttribute Sets the CSS class for columns and form fields. In forms, class is added to container div with .field class that contains both label and editor. For columns, it sets cssClass property of SlickColumn, which adds this class to slick cells for all rows. Slick column headers are not affected by this attribute, use HeaderCssClass for that.
abstract class CustomEditorAttribute Base attribute class that all other custom editor types derives from.
abstract class CustomFilteringAttribute Base class which other custom filtering types derive from.
abstract class CustomFormatterAttribute Base class for custom formatter type attributes
class DataScriptAttribute Indicates that this method / type should generate a remote data script. Data contained by remote data scripts can be accessed client side using Q.getRemoteData("Key") function.
class DateEditorAttribute Indicates that the target property should use a "Date" editor.
class DateFilteringAttribute Sets filtering type as "Date"
class DateFormatterAttribute Sets formatting type to "Date"
class DateTimeEditorAttribute Indicates that the target property should use a "DateTime" editor.
class DateTimeFilteringAttribute Indicates that this field should have date/time type of filtering
class DateTimeFormatterAttribute Sets formatting type to "DateTime".
class DateYearEditorAttribute Indicates that the target property should use a "DateYear" editor.
class DecimalEditorAttribute Indicates that the target property should use a "Decimal" editor.
class DecimalFilteringAttribute Indicates that this field should have decimal type of filtering
class DefaultFilenameFormatSanitizer Default implementation for IFilenameFormatSanitizer
class DisplayFormatAttribute Sets the display format for a column. This has no effect on editors! It is only for Display, "NOT Editing". For editing, you have to change UI culture.
class DistinctValuesEditorAttribute Indicates that the target property should use a "DistinctValues" editor and also defines an automatic lookup script for row fields.
abstract class DynamicScriptAttribute Base class for dynamic script attributes. Dynamic scripts contain dynamic data, but they are not parameterized.
class EditLinkAttribute Indicates that the property this attribute placed on should have an edit link
class EditorFilteringAttribute Indicates that property should a custom editor for filtering, which is usually determined by form editor type of the property.
class EditorOptionAttribute Sets an editor option for target property editor. Avoid using this where possible as option keys and values are not checked.
class EditorTypeAttribute Sets editor type of the target property.
class EmailAddressEditorAttribute Indicates that the target property should use a "EmailAddress" editor.
class EnumEditorAttribute Indicates that the target property should use a "Enum" editor.
class EnumFilteringAttribute Indicates that property should use enum type of filtering
class EnumFormatterAttribute Sets formatting type to "Enum".
class EnumKeyAttribute Sets the enumeration key of an enum
class FileDownloadFormatterAttribute Sets formatting type to "FileDownload".
class FileUploadEditorAttribute Sets editor type as "ImageUpload" (single), while allowing non-image files.
class FilteringIdFieldAttribute Specifies ID field to filter on a field. For example, if this attribute is placed on EmployeeName field, EmployeeId can be the filtering field, so that values are filtered on ID not text value.
class FilteringOptionAttribute Declares a new filtering option
class FilteringTypeAttribute Sets filtering type for the field
class FilterOnlyAttribute Indicates that this field should not be shown, and could not be made visible in column selection dialog, but only used for advanced filtering.
class FormatterOptionAttribute Adds a formatter option
class FormatterTypeAttribute Sets formatter type.
class FormCssClassAttribute Sets CSS class for field on forms only.
class FormScriptAttribute Indicates that this type should generate a form script, which contains information about properties in this type and is an array of PropertyItem objects. Form scripts can be accessed from client side using Q.getForm("Key")
class FormWidthAttribute Sets CSS class for field on forms only. Useful for Bootstrap grid, e.g. col-md-4 etc.
class FullWidthAttribute Set form field width class to null, e.g. full width
class GenerateFieldsAttribute Marks a row class so that its fields should be generated by Serenity.Pro.Coder RowFieldsGenerator
class GroupOrderAttribute Sets in which order this property should be grouped by. This is only meaningful when a grid has grouping, and it sets the default grouped columns. The properties with this attribute are the default ones grouped by and their groupOrder determines in which order they are grouped by.
class HalfWidthAttribute Marks form field with "col-sm-6" css class, which makes it allocate half of form row on device widths >= 768px (e.g. iPad)
class HeaderCssClassAttribute Sets the CSS class for grid column headers. It sets headerCssClass property of SlickColumn. This has no effect for forms.
class HiddenAttribute Sets a column as initially hidden
class HideOnInsertAttribute Controls whether this field is visible on new record mode
class HideOnUpdateAttribute Controls whether this field is visible on edit record mode
class HintAttribute Sets a hint for a form field. Hint is shown when field label is hovered. This has no effect on columns.
class HtmlContentEditorAttribute Indicates that the target property should use a "HtmlContent" editor. This is generally a CK editor that contains more functionalities compared to other ones.
class HtmlNoteContentEditorAttribute Indicates that the target property should use a "HtmlNoteContent" editor. This is generally a CK editor with only basic functionality for notes enabled.
class HtmlReportContentEditorAttribute Indicates that the target property should use a "HtmlReportContent" editor. This is generally a CK editor with only functionality compatible with common reporting tools like SSRS, Telerik, DevExpress etc. enabled.
interface ICustomizePropertyItems Represents a customized column / form script
interface IFilenameFormatSanitizer Abstraction for sanitizing values of replacement placeholders in a file name format string like |X|/|Y|. Sanitizer is called for each of the placeholders and for the result. Can be implemented by custom subclasses of upload editor attributes or registered in DI.
class IgnoreAttribute Skips a property while generating grid column or form field list. Use this to ignore a property for UI, but still use it for other purposes like JSON serialization. This might be useful when a type is used as a Service Request and Form Declaration at the same time.
class IgnoreNameAttribute Skips checking a property name. This is usually used along with BasedOnRow attribute CheckNames = true to skip checking property name if it matches a field property name in the row.
class ImageUploadEditorAttribute Sets editor type as "ImageUpload", which only allows image files. Make sure you use this attribute in Row.cs, not Form.cs as the image upload behavior only works if it is in row, otherwise your files will stay in temporary directory.
class ImplicitPermissionAttribute Placed on permission keys to define an implicitly assigned permissions when a user / role has the permission. Currently only implemented in premium app.
class InsertableAttribute Controls if this field is editable in new record mode. When used with fields, turns on or off the insertable flag.
class IntegerEditorAttribute Indicates that the target property should use a "Integer" editor.
class IntegerFilteringAttribute Indicates that property should use integer type of filtering
interface IUploadEditor Runs FileUploadBehavior or MultipleFileUploadBehavior behaviors. Make sure you use this attribute in Row.cs, not Form.cs as the image upload behavior only works if it is in row, otherwise your files will stay in temporary directory.
interface IUploadFileConstraints Constraints of the uploaded file size.
interface IUploadFileOptions Upload options related to the file name and encoding
interface IUploadImageContrains Contstraints for the uploaded image.
interface IUploadImageOptions Options for the uploaded image and thumbnails
interface IUploadOptions Marker interface for all upload options
class JsonLocalTextAssetsAttribute Registers a folder with json local text files packed as static web assets for the assembly
class LabelWidthAttribute Determines label with of target property, and optionally the properties following it until another of this attribute is used.
class LocalTextPrefixAttribute Sets local text prefix for the row.
class LookupEditorAttribute Indicates that the target property should use a "Lookup" editor.
abstract class LookupEditorBaseAttribute Base class for lookup based editor types
class LookupFilteringAttribute Indicates that property should use lookup editor type of filtering
class LookupScriptAttribute Placed on rows / or custom lookup classes to denote it has a lookup script. When placed on a row class, lookup scripts only transfer ID and Name fields by default to client side for security / performance reasons. Make sure you add [LookupInclude] attribute to properties you'll need to access from script.
class MaskedEditorAttribute Indicates that the target property should use a "Masked" editor and also defines an automatic lookup script for row fields.
class MaxLengthAttribute Sets the maximum length of an editor attached to the target property.
class MediumHalfLargeQuarterWidthAttribute Marks form field with "col-md-6 col-lg-3" css class, which makes it allocate half of form row on device widths >= 992px (some desktop), and quarter on device widths >= 1200px
class MediumHalfLargeThirdWidthAttribute Marks form field with "col-md-6 col-lg-4" css class, which makes it allocate half of form row on device widths >= 992px (some desktop), and third on device widths >= 1200px
class MediumHalfWidthAttribute Marks form field with "col-md-6" css class, which makes it allocate half of form row on device widths >= 992px (some desktops)
class MediumQuarterWidthAttribute Marks form field with "col-md-3" css class, which makes it allocate quarter on device widths >= 992px (some desktops)
class MediumThirdLargeQuarterWidthAttribute Marks form field with "col-md-4 col-lg-3" css class, which makes it allocate third of form row on device widths >= 992px (some desktop), and quarter on device widths >= 1200px
class MinuteFormatterAttribute Sets formatting type to "Minute" which formats an integer value in HH:mm format.
class ModuleAttribute Sets the module name for the row. Module name is usually the folder name under ~/Modules folder entity resides in.
class MultipleFileUploadEditorAttribute Sets editor type to "MultipleImageUpload" while allowing non-image files.
class MultipleImageUploadEditorAttribute Sets editor type to "MultipleImageUpload" which doesn't allow non-image file types by default.
class NestedLocalTextsAttribute Indicates that this class contains local texts with optionally subclasses that also contains local texts with keys joined by "." between each class name. The topmost class has no local text prefix by default and its name doesn't take role in local text key generation.
class NestedPermissionKeysAttribute Indicates that this class contains permission keys with optional subclasses that also contains permission keys.
class NotFilterableAttribute Indicates that the field this attribute is placed on is not filterable.
class NumberFormatterAttribute Sets formatting type to "Number"
class OneThirdWidthAttribute Marks form field with "col-md-4" css class, which makes it allocate a third of form row on device widths >= 992px (e.g. medium desktop)
class OneWayAttribute Indicates that the target property should not get serialized when a property grid is saved. This means, the editor of the property reads the value from the entity, but it doesn't get written back to save entity.
class PasswordEditorAttribute Indicates that the target property should use a "Password" editor.
enum PasswordValidationResult Password validation result
class PlaceholderAttribute Sets a placeholder for a form field. Placeholder text is shown inside the editor when its value is empty. Only editors using basic inputs and Select2 editor supports this.
class PropertyItem Corresponds to a property item (e.g. a field in property grid with a label and editor, or a column specification in a grid)
class PropertyItemsData The data format of a property items script (form or columns)
class QuarterWidthAttribute Marks form field with "col-lg-3 col-sm-6" css class, which makes it allocate half of form row on device widths >= 768 (e.g. ipad), and quarter on device widths >= 1200px (desktop)
class QuickFilterAttribute Indicates that this property should have a quick filter on grid.
class QuickFilterOptionAttribute Add an option to the quick filtering.
class RadioButtonEditorAttribute Indicates that the target property should use a "RadioButton" editor.
class RecaptchaAttribute Indicates that the target property should use a "Recaptcha" (Google).
class RegisterPermissionKeyAttribute Registers a permission key.
class RequiredAttribute Determines if field is required in form.
class RequiredPermissionAttribute Specifies required permission to access an object, e.g. a report
class ResetFormWidthAttribute Resets form field width to null. It maybe used to cancel UntilNext flag of a prior width attribute.
class ResetLabelWidthAttribute Resets form css class to null, it maybe used to cancel a prior LabelWidth attribute with UntilNext = true
class ResizableAttribute Determines resizability of a target column.
class ScriptIncludeAttribute Enables script code generation for the type this attribute is placed on. By default, types which are used in an endpoint / row is automatically enabled for code generation. Use this only for non-referenced types.
class ScriptSkipAttribute Disables script code generation for the type this attribute is placed on. Currently only useful for LocalText/Permission generation.
class ServiceLookupEditorAttribute Indicates that the target property should use a "ServiceLookup" editor.
abstract class ServiceLookupEditorBaseAttribute Base class for service lookup based editor types
class SortableAttribute Indicates if sorting is enabled for this property
class SortOrderAttribute Sets the column as sorted by default, and its index among sorted columns. Negative values means descending sort. Applies only to columns.
class StringEditorAttribute Indicates that the target property should use a "String" editor.
class SummaryTypeAttribute Determines type of aggregate function for a column to use
class TabAttribute Sets a tab for a form field.
class TextAreaEditorAttribute Indicates that the target property should use a "TextArea" editor.
class ThreeQuarterWidthAttribute Marks form field with "col-lg-9" css class, which makes it allocate three quarter on device widths >= 1200px
class TimeEditorAttribute Indicates that the target property should use a "Time" editor.
class TwoThirdWidthAttribute Marks form field with "col-md-8" css class, which makes it allocate two third of form row on device widths >= 992px (e.g. medium desktop)
class UpdatableAttribute Controls if this field is editable in update record mode. When used with fields, turns on or off the updatable flag.
class UploadOptions Set of default upload options
class URLEditorAttribute Indicates that the target property should use a "Url" editor.
class UrlFormatterAttribute Sets formatting type to "Url"
class VisibleAttribute Controls initial visibility of a column / form field.
class WidthAttribute Sets column width

Serenity.Data namespace

signature name description
class Base32 This class is based on the Base32 class from DC# 0.31 All credits to Jonathan Bindel.
static class BinarySerialization Contains helper functions for serialization and deserialization of data items (e.g.cached items)
class DeletePermissionAttribute Sets delete permission for the row.
class FieldInsertPermissionAttribute Sets default read permission for fields of a row which doesn't have a InsertPermission themselves.
class FieldModifyPermissionAttribute Sets default read permission for fields of a row which doesn't have a ModifyPermission themselves.
class FieldReadPermissionAttribute Sets default read permission for fields of a row which doesn't have a ReadPermission themselves.
class FieldUpdatePermissionAttribute Sets default read permission for fields of a row which doesn't have a UpdatePermission themselves.
class InsertPermissionAttribute Sets delete permission for the row.
class JsonSafeInt64Converter Serialize/deserialize a row
class ModifyPermissionAttribute Sets modify permission for the row. Modify permission is used for Insert/Update/Delete if they are not explicitly specified.
class NavigationPermissionAttribute Sets navigation permission for the row, which if exists takes precedence over ReadPermissionAttribute to determine permission for row's page and navigation item.
abstract class PermissionAttributeBase An abstract base attribute that all permission related attributes derive from.
class ReadPermissionAttribute Sets read permission for the row.
class ServiceLookupPermissionAttribute Sets a permission to read only lookup fields in a row via List service Lookup field means ID, Name, and [LookupInclude] properties in a row. You must use [AuthorizeList(typeof(XRow))] instead of ServiceAuthorize in service endpoint.
class UpdatePermissionAttribute Sets update permission for the row.

Serenity.Extensions.DependencyInjection namespace

signature name description
static class CoreServiceCollectionExtensions Contains extensions to register core services
class ServiceResolver<TService> A generic version of IServiceProvider which resolves a service on demand.

Serenity.IO namespace

signature name description
enum DeleteType File deletion type.
class GlobFilter A fast glob implementation, compatible with .gitignore patterns of GIT
class TemporaryFileHelper Contains helper functions for temporary files and folders

Serenity.Localization namespace

signature name description
class DefaultTextLocalizer Implementation of text localizer for current ui culture name and text registry
static class EnumLocalTextRegistration Contains initialization method for adding local text translations defined by Description attributes in enumeration classes.
class FallbackLocalTextSource Adds key fallback to any ILocalTextSource implementation
interface ILocalText An interface implemented by LocalText class to access initial translation value. Some classes like NestedLocalTextRegistration uses this type to avoid re-registering a initialized local text object, when their Initialization method called more than once.
static class JsonLocalTextRegistration Contains helper methods for registration of local texts in hierarchical/dictionary formatted JSON files.
struct LanguageIdKeyPair A pair of a languageID and text key
class LocalTextRegistry Default ILocalTextRegistry implementation.
static class NavigationLocalTextRegistration Contains initialization method for adding navigation item attribute related local texts
static class NestedLocalTextRegistration Contains helper methods for registration of local texts in nested static classes. Nested static contains LocalText objects with actual translations as keys. This class locates them (with NestedLocalTextsAttribute at outermost class), determines keys by path from outermost to nested class name, replaces existing LocalText instance with a InitializedLocalText instance containing this generated key and initial translation, and registers this translation in ILocalTextRegistry provider.
static class NestedPermissionKeyRegistration Contains helper methods for registration of permission keys in nested static classes. These classes contains string constants containing permission keys. Display name for permission keys can be set by [DisplayName] attribute. Display name for groups can be set by [Description] attribute on classes themselves. For group display name to work, all constants in a class must start with same group prefix.
static class PropertyItemsLocalTextRegistration Contains initialization method for adding local text keys implicitly defined by DisplayName, Tab, Placeholder, Hint etc. attributes used in Form definitions

Serenity.Navigation namespace

signature name description
interface INavigationItemSource Navigation item source abstraction
interface INavigationModel Navigation model abstraction
interface INavigationModelFactory Factory abstraction for navigation models
class NavigationGroupAttribute Defines a navigation group, which are usually the icons on the sidebar band
class NavigationItem A node in a navigation tree model
abstract class NavigationItemAttribute Navigation item attribute
class NavigationMenuAttribute Navigation menu without a link
class NavigationSectionAttribute Navigation section attribute

Serenity.Net.Core.Authorization namespace

signature name description
interface IRolePermissionService Role Permission Service abstraction

Serenity.Plugins namespace

signature name description
class CssFile CSS file dependency for plugins
interface IBackgroundJobs Interface for plugins that has a list of background jobs
interface IConfigureServices Interface for plugins that requires to configure their own services / options
interface ICssFiles CSS file dependencies for plugins.
interface INavigationItems Abstraction for plugins with navigation entries
interface IPlugin Abstraction for plugins
interface IScriptFiles Abstraction for plugins with script file dependencies
class NavigationEntry Plugin navigation entry abstraction.
class PrecompiledViewsAttribute Indicates that this plugin assembly contains precompiled views (by RazorGenerator)
class ScriptFile Plugin script file registration

Serenity.Reflection namespace

signature name description
static class AnnotationTypeExtensions Extension methods for annotation types
class AnnotationTypeRegistry Default annotation type registry
class AssemblySorter Sorts assemblies based on their dependencies
class CodeWriter Used to write formatted code to a string builder.
interface IAnnotatedType Annotated type information
interface IAnnotationTypeRegistry An interface to query list of annotation types for a given type
interface IPropertyInfo An interface to virtualize property attribute access
class WrappedProperty A class that basically implements IPropertyInfo for PropertyInfo objects

Serenity.Services namespace

signature name description
enum ColumnSelection Column selection types for List services
class DefaultUserClaimCreator Default implementation for IUserClaimCreator
interface IIsSensitiveMessage An interface to determine if the message of an exception might contain sensitive information that should not be shown to the end user. Currently only ValidationError implements this and returns false by default unless set explicitly.
class JsonStringHashSetConverter Serialize/deserialize a IdentifierSet object as string
static class PermissionExpressionParser A simple parser / evaluator for logic permission expressions
class ValidationError Generic validation error mostly used by services.

Serenity.Web namespace

signature name description
enum ImageScaleMode Thumbnail scaling modes
class ImpersonatingUserAccessor Adds impersonation support to any IUserContext implementation
class LocalTextPackages Corresponds to LocalTextPackages section of the appsettings.json file
class LogicOperatorPermissionService Adds AND OR operator support to any IPermissionService implementation
class RecaptchaSettings Settings for Recaptcha integration Get your keys from https://www.google.com/recaptcha/admin/ Generate keys for the V2, not V3
class TransientGrantingPermissionService Adds temporary granting support to any IPermissionService implementation