Skip to content

Endpoint Registry — All API Routes

Complete inventory of all HTTP endpoints exposed by Granit framework modules.

  • Route prefixes are relative — each module defines a short prefix (e.g., "templating", "blob-storage", "identity/users") via its *EndpointsOptions class. The application composes the full path by mounting modules under a versioned group:
// Application startup (e.g., Program.cs)
RouteGroupBuilder api = app.MapGroup("api/v{version:apiVersion}");
api.MapGranitBlobStorage(); // → /api/v1/blob-storage/blobs/...
api.MapGranitTemplating(); // → /api/v1/templating/templates/...
api.MapGranitIdentityUserCache();// → /api/v1/identity/users/...
  • Permissions: follow [Group].[Resource].[Action] (three segments)
  • Error responses: all endpoints return RFC 7807 Problem Details on errors
  • Query endpoints (MapGranitQuery<T>) mount directly on their parent route group — no extra /query suffix
  • Routes below show only the module-relative path (without the app prefix)

Module: Granit.Authentication.ApiKeys.Endpoints Prefix: authentication

MethodRouteOperationPermission
GET/api-keysListApiKeysApiKeys.Keys.Read
GET/api-keys/{id:guid}GetApiKeyByIdApiKeys.Keys.Read
POST/api-keysCreateApiKeyApiKeys.Keys.Create
POST/api-keys/{id:guid}/revokeRevokeApiKeyApiKeys.Keys.Revoke
POST/api-keys/{id:guid}/rotateRotateApiKeyApiKeys.Keys.Rotate
PUT/api-keys/{id:guid}/scopesUpdateApiKeyScopesApiKeys.Keys.UpdateScopes

Module: Granit.Authorization.Endpoints Prefix: authorization

MethodRouteOperationPermission
GET/permissionsGetMyPermissionsAuthenticated
GET/permissions/definitionsGetPermissionDefinitionsAdmin
GET/roles/{roleName}GetRolePermissionsAdmin
PUT/roles/{roleName}/{permissionName}GrantPermissionAdmin
DELETE/roles/{roleName}/{permissionName}RevokePermissionAdmin

Module: Granit.BackgroundJobs.Endpoints Prefix: background-jobs

MethodRouteOperationPermission
GET/jobs/GetAllBackgroundJobsBackgroundJobs.Jobs.Manage
GET/jobs/{name}GetBackgroundJobByNameBackgroundJobs.Jobs.Manage
POST/jobs/{name}/pausePauseBackgroundJobBackgroundJobs.Jobs.Manage
POST/jobs/{name}/resumeResumeBackgroundJobBackgroundJobs.Jobs.Manage
POST/jobs/{name}/triggerTriggerBackgroundJobBackgroundJobs.Jobs.Manage

Module: Granit.BlobStorage.Endpoints Prefix: blob-storage

MethodRouteOperationPermission
GET/blobsQueryBlobDescriptorBlobStorage.Blobs.Manage
GET/blobs/metaGetBlobDescriptorMetaBlobStorage.Blobs.Manage
GET/blobs/{id:guid}GetBlobDescriptorBlobStorage.Blobs.Manage
POST/blobs/uploadInitiateBlobUploadBlobStorage.Blobs.Manage
POST/blobs/{id:guid}/confirmConfirmBlobUploadBlobStorage.Blobs.Manage
POST/blobs/{id:guid}/download-urlGenerateBlobDownloadUrlBlobStorage.Blobs.Manage
DELETE/blobs/{id:guid}DeleteBlobBlobStorage.Blobs.Manage
POST/blobs/cleanup-orphansCleanupOrphanedBlobsBlobStorage.Blobs.Manage

Module: Granit.BlobStorage.Proxy Prefix: /api/blobs (standalone, not under the blob-storage group)

MethodRouteOperationAuth
PUT/upload/{token}BlobProxyUploadToken-based
GET/download/{token}BlobProxyDownloadToken-based

Module: Granit.Bff.Endpoints Prefix: {pathPrefix}/bff (per-frontend, dynamic)

MethodRouteOperationAuth
GET/loginBffLogin_{Name}Anonymous
GET/callbackBffCallback_{Name}Anonymous
GET/logoutBffLogout_{Name}Anonymous
POST/backchannel-logoutBffBackChannelLogout_{Name}Anonymous
MethodRouteOperationAuth
GET/userBffGetUser_{Name}Anonymous
POST/csrf-tokenBffGenerateCsrfToken_{Name}Anonymous
GET/sessionsBffListSessions_{Name}Anonymous
DELETE/sessions/{targetSessionId}BffRevokeSession_{Name}Anonymous
DELETE/sessionsBffRevokeAllSessions_{Name}Anonymous
MethodRouteOperationAuth
GET/{**path}BffStaticFiles_{Name}Anonymous

Module: Granit.Http.Cookies.Endpoints Prefix: cookies

MethodRouteOperationAuth
GET/configGetCookieConsentConfigAnonymous

Module: Granit.CustomerBalance.Endpoints Prefix: customer-balance

MethodRouteOperationPermission
GET/balanceGetCustomerBalanceCustomerBalance.Accounts.Read
GET/transactionsListBalanceTransactionsCustomerBalance.Transactions.Read
POST/balance/creditAddAdminCreditCustomerBalance.Credits.Manage

Module: Granit.DataExchange.Endpoints Prefix: data-exchange

MethodRouteOperationPermission
GET/import/jobsListImportJobsDataExchange.Import.*
POST/import/jobsUploadImportFileDataExchange.Import.*
POST/import/{jobId:guid}/previewPreviewImportJobDataExchange.Import.*
PUT/import/{jobId:guid}/mappingsConfirmImportMappingsDataExchange.Import.*
POST/import/{jobId:guid}/executeExecuteImportJobDataExchange.Import.*
POST/import/{jobId:guid}/dry-runDryRunImportJobDataExchange.Import.*
GET/import/{jobId:guid}GetImportJobStatusDataExchange.Import.*
DELETE/import/{jobId:guid}CancelImportJobDataExchange.Import.*
GET/import/{jobId:guid}/reportGetImportReportDataExchange.Import.*
GET/import/{jobId:guid}/correction-fileGetImportCorrectionFileDataExchange.Import.*
MethodRouteOperationPermission
GET/export/jobsListExportJobsDataExchange.Export.*
POST/export/jobsCreateExportJobDataExchange.Export.*
GET/export/jobs/{jobId:guid}GetExportJobStatusDataExchange.Export.*
GET/export/jobs/{jobId:guid}/downloadDownloadExportFileDataExchange.Export.*
MethodRouteOperationPermission
GET/metadata/definitionsListExportDefinitionsDataExchange.Export.*
GET/metadata/definitions/{name}/fieldsGetExportDefinitionFieldsDataExchange.Export.*
GET/metadata/presets/{definitionName}ListExportPresetsDataExchange.Export.*
POST/metadata/presetsSaveExportPresetDataExchange.Export.*
DELETE/metadata/presets/{definitionName}/{presetName}DeleteExportPresetDataExchange.Export.*

Module: Granit.Features.Endpoints Prefix: features

MethodRouteOperationPermission
GET/definitionsGetFeatureDefinitionsFeatures.Flags.Read
GET/valuesGetAllFeatureValuesAuthenticated
GET/values/{name}GetFeatureValueAuthenticated
PUT/overrides/{name}SetFeatureOverrideFeatures.Flags.Manage
DELETE/overrides/{name}DeleteFeatureOverrideFeatures.Flags.Manage

Identity uses three separate endpoint groups with distinct prefixes and separate registration methods.

Module: Granit.Identity.EndpointsMapGranitIdentityUserCache() Prefix: identity/users

MethodRouteOperationPermission
GET/SearchIdentityUserCacheIdentity.UserCache.Read
GET/{userId}GetIdentityUserByIdIdentity.UserCache.Read
POST/batchBatchResolveIdentityUsersIdentity.UserCache.Read
GET/statsGetIdentityUserCacheStatsIdentity.UserCache.Read
GET/capabilitiesGetIdentityProviderCapabilitiesIdentity.UserCache.Read
POST/syncSyncIdentityUsersIdentity.UserCache.Sync
POST/sync-allSyncAllIdentityUsersIdentity.UserCache.Sync
POST/sync-staleSyncStaleIdentityUsersIdentity.UserCache.Sync
PATCH/{userId}/pseudonymizePseudonymizeIdentityUserCacheIdentity.UserCache.Delete
DELETE/{userId}EraseIdentityUserCacheIdentity.UserCache.Delete

Module: Granit.Identity.EndpointsMapGranitIdentityProvider() Prefix: identity/provider

MethodRouteOperationPermission
GET/usersGetIdentityProviderUsersIdentity.Users.Read
GET/users/{userId}GetIdentityProviderUserIdentity.Users.Read
POST/usersCreateIdentityProviderUserIdentity.Users.Manage
PUT/users/{userId}UpdateIdentityProviderUserIdentity.Users.Manage
PATCH/users/{userId}/enabledSetIdentityProviderUserEnabledIdentity.Users.Manage
MethodRouteOperationPermission
GET/rolesGetIdentityProviderRolesIdentity.Roles.Read
GET/roles/{roleName}/membersGetIdentityProviderRoleMembersIdentity.Roles.Read
GET/users/{userId}/rolesGetIdentityProviderUserRolesIdentity.Roles.Read
PUT/users/{userId}/roles/{roleName}AssignIdentityProviderRoleIdentity.Roles.Manage
DELETE/users/{userId}/roles/{roleName}RemoveIdentityProviderRoleIdentity.Roles.Manage
MethodRouteOperationPermission
GET/groupsGetIdentityProviderGroupsIdentity.Groups.Read
GET/users/{userId}/groupsGetIdentityProviderUserGroupsIdentity.Groups.Read
PUT/users/{userId}/groups/{groupId}AddIdentityProviderUserToGroupIdentity.Groups.Manage
DELETE/users/{userId}/groups/{groupId}RemoveIdentityProviderUserFromGroupIdentity.Groups.Manage
MethodRouteOperationPermission
GET/users/{userId}/sessionsGetIdentityProviderUserSessionsIdentity.Sessions.Read
DELETE/users/{userId}/sessions/{sessionId}TerminateIdentityProviderSessionIdentity.Sessions.Manage
DELETE/users/{userId}/sessionsTerminateAllIdentityProviderSessionsIdentity.Sessions.Manage
GET/users/{userId}/devicesGetIdentityProviderUserDevicesIdentity.Sessions.Read
MethodRouteOperationPermission
GET/users/{userId}/password/changed-atGetIdentityProviderPasswordChangedAtIdentity.Passwords.Read
POST/users/{userId}/password/reset-emailSendIdentityProviderPasswordResetEmailIdentity.Passwords.Manage
POST/users/{userId}/password/temporarySetIdentityProviderTemporaryPasswordIdentity.Passwords.Manage

Module: Granit.Identity.Endpoints — registered at identity/webhook (outside the identity/provider group, via MapGranitIdentityUserCache())

MethodRouteOperationAuth
POST/identity/webhookIdentityWebhookSignature-validated

Module: Granit.Invoicing.Endpoints Prefix: invoicing

MethodRouteOperationPermission
GET/invoicesQueryInvoiceInvoicing.Invoices.Read
GET/invoices/metaGetInvoiceMetaInvoicing.Invoices.Read
GET/invoices/{id:guid}GetInvoiceByIdInvoicing.Invoices.Read
GET/invoices/{id:guid}/pdfDownloadInvoicePdfInvoicing.Invoices.Download
POST/invoicesCreateInvoiceInvoicing.Invoices.Manage

Module: Granit.Localization.Endpoints Prefix: localization

MethodRouteOperationPermission
GET/GetGranitLocalizationAnonymous
GET/overridesGetLocalizationOverridesLocalization.Overrides.Manage
PUT/overrides/{resourceName}/{cultureName}/{key}PutLocalizationOverrideLocalization.Overrides.Manage
DELETE/overrides/{resourceName}/{cultureName}/{key}DeleteLocalizationOverrideLocalization.Overrides.Manage

Module: Granit.Metering.Endpoints Prefix: metering

MethodRouteOperationPermission
GET/metersListActiveMetersMetering.Meters.Read
GET/meters/{id:guid}GetMeterDefinitionMetering.Meters.Read
POST/metersCreateMeterDefinitionMetering.Meters.Manage
PUT/meters/{id:guid}UpdateMeterDefinitionMetering.Meters.Manage
POST/meters/{id:guid}/deactivateDeactivateMeterDefinitionMetering.Meters.Manage
MethodRouteOperationPermission
GET/usageGetUsageForPeriodMetering.Usage.Read
GET/quota/{meterId:guid}CheckMeteringQuotaMetering.Usage.Read
POST/eventsRecordUsageEventsMetering.Usage.Record

Module: Granit.MultiTenancy.Endpoints Prefix: multi-tenancy

MethodRouteOperationPermission
GET/tenants/ListTenantsMultiTenancy.Tenants.Read
GET/tenants/{id:guid}GetTenantMultiTenancy.Tenants.Read
POST/tenants/CreateTenantMultiTenancy.Tenants.Create
PUT/tenants/{id:guid}UpdateTenantMultiTenancy.Tenants.Update
POST/tenants/{id:guid}/activateActivateTenantMultiTenancy.Tenants.Update
POST/tenants/{id:guid}/deactivateDeactivateTenantMultiTenancy.Tenants.Update

Module: Granit.Notifications.Endpoints Prefix: notifications

MethodRouteOperationAuth
GET/GetNotificationsAuthenticated
GET/unread/countGetUnreadCountAuthenticated
POST/{id:guid}/readMarkAsReadAuthenticated
POST/read-allMarkAllAsReadAuthenticated
MethodRouteOperationAuth
GET/entity/{entityType}/{entityId}GetEntityActivityFeedAuthenticated
MethodRouteOperationAuth
GET/preferencesGetPreferencesAuthenticated
PUT/preferencesUpdatePreferenceAuthenticated
GET/typesGetNotificationTypesAuthenticated
GET/subscriptionsGetSubscriptionsAuthenticated
POST/subscriptions/{typeName}SubscribeAuthenticated
DELETE/subscriptions/{typeName}UnsubscribeAuthenticated
MethodRouteOperationAuth
POST/entity/{entityType}/{entityId}/followFollowEntityAuthenticated
DELETE/entity/{entityType}/{entityId}/followUnfollowEntityAuthenticated
GET/entity/{entityType}/{entityId}/followersGetEntityFollowersAuthenticated

Module: Granit.Identity.Local.EndpointsMapGranitAccount() Prefix: account

MethodRouteOperationAuth
POST/loginAccountLoginAnonymous
POST/login/two-factorAccountTwoFactorLoginAnonymous
MethodRouteOperationAuth
GET/configGetAccountConfigAnonymous
MethodRouteOperationAuth
POST/registerRegisterAccountAnonymous
GET/confirm-emailConfirmEmailAnonymous
POST/resend-confirmation-emailResendConfirmationEmailAuthenticated
MethodRouteOperationAuth
GET/profileGetAccountProfileAuthenticated
PUT/profileUpdateAccountProfileAuthenticated
MethodRouteOperationAuth
POST/change-passwordChangePasswordAuthenticated
POST/forgot-passwordForgotPasswordAnonymous
POST/reset-passwordResetPasswordAnonymous
MethodRouteOperationAuth
GET/two-factorGetTwoFactorStatusAuthenticated
GET/two-factor/authenticator-keyGetAuthenticatorKeyAuthenticated
POST/two-factor/enableEnableTwoFactorAuthenticated
POST/two-factor/disableDisableTwoFactorAuthenticated
POST/two-factor/recovery-codesGenerateRecoveryCodesAuthenticated
MethodRouteOperationAuth
GET/external-loginsListExternalLoginsAuthenticated
POST/external-logins/challenge/{provider}ChallengeExternalLoginAnonymous
GET/external-logins/callbackExternalLoginCallbackAnonymous
DELETE/external-logins/{provider}UnlinkExternalLoginAuthenticated
MethodRouteOperationAuth
GET/passkeysListPasskeysAuthenticated
POST/passkeys/register/beginBeginPasskeyRegistrationAuthenticated
POST/passkeys/register/completeCompletePasskeyRegistrationAuthenticated
POST/passkeys/assertion/beginBeginPasskeyAssertionAnonymous
POST/passkeys/assertion/completeCompletePasskeyAssertionAnonymous
PATCH/passkeys/{id}RenamePasskeyAuthenticated
DELETE/passkeys/{id}DeletePasskeyAuthenticated
MethodRouteOperationAuth
POST/deleteDeleteAccountAuthenticated
POST/session/heartbeatSessionHeartbeatAuthenticated
POST/session/back-to-impersonatorBackToImpersonatorAuthenticated

OpenIddict admin endpoints manage OIDC applications, scopes, and authorizations. User/role/group admin is handled by Identity Provider.

Module: Granit.OpenIddict.EndpointsMapGranitOpenIddict() Prefix: admin

MethodRouteOperationPermission
GET/usersListUsersOpenIddict.Users.Read
GET/users/{userId}GetUserOpenIddict.Users.Read
POST/usersCreateUserOpenIddict.Users.Create
POST/users/{userId}/impersonateImpersonateUserOpenIddict.Users.Impersonate
MethodRouteOperationPermissionResponse
GET/oidc/applicationsListOidcApplicationsOpenIddict.Applications.ReadOidcApplicationResponse[]
POST/oidc/applicationsCreateOidcApplicationOpenIddict.Applications.Manage201 / 409
DELETE/oidc/applications/{clientId}DeleteOidcApplicationOpenIddict.Applications.Manage204 / 404
POST/oidc/applications/{clientId}/rotate-secretRotateOidcApplicationSecretOpenIddict.Applications.RotateOidcSecretRotationResponse / 404

Response types:

interface OidcApplicationResponse {
id: string;
clientId: string;
displayName: string;
type: string; // "public" | "confidential"
}
interface OidcSecretRotationResponse {
clientId: string;
newSecret: string; // ⚠ Shown ONCE — display in a copyable modal
}
MethodRouteOperationPermissionResponse
GET/oidc/scopesListOidcScopesOpenIddict.Scopes.ReadOidcScopeResponse[]
POST/oidc/scopesCreateOidcScopeOpenIddict.Scopes.Manage201 / 409
DELETE/oidc/scopes/{scopeName}DeleteOidcScopeOpenIddict.Scopes.Manage204 / 404
interface OidcScopeResponse {
id: string;
name: string;
displayName: string;
}
MethodRouteOperationPermissionResponse
GET/oidc/authorizationsListOidcAuthorizationsOpenIddict.Authorizations.ReadOidcAuthorizationResponse[]
DELETE/oidc/authorizations/{authorizationId:guid}RevokeOidcAuthorizationOpenIddict.Authorizations.Revoke204 / 404
DELETE/oidc/authorizations/user/{userId}RevokeUserOidcAuthorizationsOpenIddict.Authorizations.Revoke204
interface OidcAuthorizationResponse {
id: string;
subject: string; // userId
status: string; // "valid" | "revoked"
type: string; // "permanent" | "ad-hoc"
}

Module: Granit.Payments.Endpoints Prefix: payments

MethodRouteOperationPermission
GET/methodsListPaymentMethodsPayments.Methods.Read
GET/methods/availableGetAvailablePaymentMethodsPayments.Methods.Read
POST/methodsAttachPaymentMethodPayments.Methods.Manage
DELETE/methods/{id:guid}DetachPaymentMethodPayments.Methods.Manage
MethodRouteOperationPermission
GET/transactionsListPaymentTransactionsPayments.Transactions.Read
GET/transactions/{id:guid}GetPaymentTransactionPayments.Transactions.Read
POST/chargeInitiatePaymentChargePayments.Charges.Execute
POST/refundRequestPaymentRefundPayments.Refunds.Execute
MethodRouteOperationAuth
POST/checkoutCreateCheckoutSessionPayments.Charges.Execute
POST/webhooks/{provider}HandlePaymentWebhookAnonymous

Module: Granit.Privacy.Endpoints Prefix: privacy

MethodRouteOperationPermission
GET/regulationGetApplicableRegulationAuthenticated
GET/purposesListProcessingPurposesPrivacy.Purposes.Read
MethodRouteOperationAuth
POST/opt-outRequestOptOutAnonymous
GET/opt-out/statusGetOptOutStatusAnonymous
MethodRouteOperationPermission
POST/exportsRequestPrivacyExportPrivacy.Export.Execute
GET/exports/{requestId:guid}GetPrivacyExportStatusPrivacy.Export.Execute
GET/exportsListPrivacyExportsPrivacy.Export.Execute
MethodRouteOperationPermission
POST/deletionsRequestPrivacyDeletionPrivacy.Deletion.Execute
POST/deletions/{requestId:guid}/cancelCancelPrivacyDeletionPrivacy.Deletion.Execute
GET/deletions/{requestId:guid}GetPrivacyDeletionStatusPrivacy.Deletion.Execute
GET/deletionsListPrivacyDeletionsPrivacy.Deletion.Execute
MethodRouteOperationPermission
GET/agreements/documentsListPrivacyLegalDocumentsPrivacy.Agreements.Read
GET/agreements/statusGetPrivacyConsentStatusPrivacy.Agreements.Read
GET/agreements/historyListPrivacyAgreementHistoryPrivacy.Agreements.Read
POST/agreements/acceptAcceptPrivacyAgreementPrivacy.Agreements.Create
MethodRouteOperationPermission
GET/legal-documents/ListLegalDocumentVersionsPrivacy.LegalDocuments.Read
GET/legal-documents/{id:guid}GetLegalDocumentPrivacy.LegalDocuments.Read
POST/legal-documents/CreateLegalDocumentPrivacy.LegalDocuments.Create
PUT/legal-documents/{id:guid}UpdateLegalDocumentPrivacy.LegalDocuments.Manage
POST/legal-documents/{id:guid}/publishPublishLegalDocumentPrivacy.LegalDocuments.Manage

Module: Granit.QueryEngine.AspNetCore Prefix: mounts on the calling group — no extra prefix by default

MethodRouteOperation
GET/Query{EntityName}
GET/metaGet{EntityName}Meta
GET/saved-viewsGet{EntityName}SavedViews
POST/saved-viewsCreate{EntityName}SavedView
PUT/saved-views/{id}Update{EntityName}SavedView
DELETE/saved-views/{id}Delete{EntityName}SavedView
POST/saved-views/{id}/set-defaultSetDefault{EntityName}SavedView

Module: Granit.Scheduling.Endpoints Prefix: scheduling

MethodRouteOperationPermission
GET/scheduled-actions/{id:guid}GetScheduledActionByIdScheduling.Actions.Read
DELETE/scheduled-actions/{id:guid}CancelScheduledActionScheduling.Actions.Manage
PUT/scheduled-actions/{id:guid}/rescheduleRescheduleScheduledActionScheduling.Actions.Manage

Module: Granit.Settings.Endpoints Prefix: settings (three independent sub-groups: settings/user, settings/tenant, settings/global)

MethodRouteOperationPermission
GET/userGetAllUserSettingsAuthenticated
GET/user/{name}GetUserSettingAuthenticated
PUT/user/{name}UpdateUserSettingAuthenticated
DELETE/user/{name}DeleteUserSettingAuthenticated
GET/tenantGetAllTenantSettingsSettings.Tenant.Read
PUT/tenant/{name}UpdateTenantSettingSettings.Tenant.Manage
GET/globalGetAllGlobalSettingsSettings.Global.Read
PUT/global/{name}UpdateGlobalSettingSettings.Global.Manage

Module: Granit.Templating.Endpoints Prefix: templating

MethodRouteOperationPermission
GET/templates/ListTemplatesTemplates.Templates.Manage
GET/templates/{name}GetTemplateDetailTemplates.Templates.Manage
POST/templates/CreateTemplateDraftTemplates.Templates.Manage
PUT/templates/{name}UpdateTemplateDraftTemplates.Templates.Manage
DELETE/templates/{name}/draftDeleteTemplateDraftTemplates.Templates.Manage
POST/templates/{name}/publishPublishTemplateTemplates.Templates.Manage
POST/templates/{name}/unpublishUnpublishTemplateTemplates.Templates.Manage
GET/templates/{name}/lifecycleGetTemplateLifecycleTemplates.Templates.Manage
POST/templates/{name}/previewPreviewTemplateTemplates.Templates.Manage
GET/templates/{name}/variablesGetTemplateVariablesTemplates.Templates.Manage
GET/templates/{name}/historyGetTemplateHistoryTemplates.Templates.Manage
GET/templates/{name}/history/{revisionId:guid}GetTemplateRevisionDetailTemplates.Templates.Manage
MethodRouteOperationPermission
GET/layoutsListAvailableLayoutsTemplates.Templates.Manage
MethodRouteOperationPermission
GET/categoriesListTemplateCategoriesTemplates.Templates.Manage
POST/categoriesCreateTemplateCategoryTemplates.Templates.Manage
PUT/categories/{id:guid}UpdateTemplateCategoryTemplates.Templates.Manage
DELETE/categories/{id:guid}DeleteTemplateCategoryTemplates.Templates.Manage

Module: Granit.Subscriptions.Endpoints Prefix: subscriptions

MethodRouteOperationPermission
GET/plansListPlansSubscriptions.Plans.Read
GET/plans/{id:guid}GetPlanByIdSubscriptions.Plans.Read
POST/plansCreatePlanSubscriptions.Plans.Manage
PUT/plans/{id:guid}UpdatePlanSubscriptions.Plans.Manage
POST/plans/{id:guid}/publishPublishPlanSubscriptions.Plans.Manage
POST/plans/{id:guid}/archiveArchivePlanSubscriptions.Plans.Manage
MethodRouteOperationPermission
GET/plans/{planId:guid}/prices/historyGetPlanPriceHistorySubscriptions.Prices.Read
POST/plans/{planId:guid}/pricesCreatePriceVersionSubscriptions.Prices.Manage
POST/subscriptions/{id:guid}/migrate-priceMigrateSubscriptionPriceSubscriptions.Prices.Manage
POST/subscriptions/bulk-migrate-priceBulkMigrateSubscriptionPriceSubscriptions.Prices.Manage
MethodRouteOperationPermission
GET/subscriptions/activeGetActiveSubscriptionSubscriptions.Subscriptions.Read
GET/subscriptions/{id:guid}GetSubscriptionByIdSubscriptions.Subscriptions.Read
POST/subscriptionsCreateSubscriptionSubscriptions.Subscriptions.Manage
POST/subscriptions/{id:guid}/cancelCancelSubscriptionSubscriptions.Subscriptions.Manage
POST/subscriptions/{id:guid}/change-planChangeSubscriptionPlanSubscriptions.Subscriptions.Manage
MethodRouteOperationPermission
GET/subscriptions/{id:guid}/seatsListSeatsSubscriptions.Seats.Read
POST/subscriptions/{id:guid}/seatsAssignSeatSubscriptions.Seats.Manage
DELETE/subscriptions/{id:guid}/seats/{userId:guid}RevokeSeatSubscriptions.Seats.Manage

Module: Granit.Tax.Endpoints Prefix: tax

MethodRouteOperationPermission
GET/rates/GetAllTaxRatesTax.Rates.Read
GET/rates/{countryCode}GetTaxRateByCountryTax.Rates.Read
POST/ids/validateValidateTaxIdTax.Validations.Execute

Module: Granit.Timeline.Endpoints Prefix: timeline

MethodRouteOperationPermission
GET/{entityType}/{entityId}GetTimelineStreamTimeline.Entries.Read
POST/{entityType}/{entityId}/entriesPostTimelineEntryTimeline.Entries.Read
DELETE/{entityType}/{entityId}/entries/{entryId:guid}DeleteTimelineEntryTimeline.Entries.Read
MethodRouteOperationPermission
POST/{entityType}/{entityId}/followFollowTimelineEntityTimeline.Entries.Read
DELETE/{entityType}/{entityId}/followUnfollowTimelineEntityTimeline.Entries.Read
GET/{entityType}/{entityId}/followersGetTimelineFollowersTimeline.Entries.Read

Module: Granit.Validation.Endpoints Prefix: validation

MethodRouteOperationAuth
POST/validateValidateFieldAnonymous
POST/validate-batchValidateFieldBatchAnonymous
GET/validatorsGetRegisteredValidatorsAnonymous

Module: Granit.Webhooks.Endpoints Prefix: webhooks

MethodRouteOperationPermission
GET/configGetWebhooksConfigWebhooks.Subscriptions.Manage
MethodRouteOperationPermission
GET/event-typesGetWebhookEventTypesWebhooks.Subscriptions.Manage
MethodRouteOperationPermission
GET/subscriptionsQueryWebhookSubscriptionWebhooks.Subscriptions.Manage
GET/subscriptions/metaGetWebhookSubscriptionMetaWebhooks.Subscriptions.Manage
MethodRouteOperationPermission
GET/subscriptions/{id:guid}GetWebhookSubscriptionWebhooks.Subscriptions.Manage
POST/subscriptionsCreateWebhookSubscriptionWebhooks.Subscriptions.Manage
PUT/subscriptions/{id:guid}UpdateWebhookSubscriptionWebhooks.Subscriptions.Manage
DELETE/subscriptions/{id:guid}DeleteWebhookSubscriptionWebhooks.Subscriptions.Manage
MethodRouteOperationPermission
POST/subscriptions/{id:guid}/activateActivateWebhookSubscriptionWebhooks.Subscriptions.Manage
POST/subscriptions/{id:guid}/suspendSuspendWebhookSubscriptionWebhooks.Subscriptions.Manage
POST/subscriptions/{id:guid}/deactivateDeactivateWebhookSubscriptionWebhooks.Subscriptions.Manage
MethodRouteOperationPermission
POST/subscriptions/{id:guid}/rotate-secretRotateWebhookSecretWebhooks.Subscriptions.Manage
POST/subscriptions/{id:guid}/test-pingTestWebhookPingWebhooks.Subscriptions.Manage
MethodRouteOperationPermission
GET/statsGetWebhookStatsWebhooks.Subscriptions.Manage
GET/deliveriesQueryWebhookDeliveryAttemptWebhooks.Subscriptions.Manage
GET/deliveries/metaGetWebhookDeliveryAttemptMetaWebhooks.Subscriptions.Manage
POST/deliveries/{deliveryId:guid}/retryRetryWebhookDeliveryWebhooks.Subscriptions.Manage

Module: Granit.Workflow.Endpoints Prefix: workflow

MethodRouteOperationPermission
GET/{entityType}/{entityId}/historyGetWorkflowTransitionHistoryWorkflow.History
GET/transitionsGetAvailable{TState}TransitionsWorkflow.History
POST/transitionsExecute{TState}TransitionWorkflow.History

Module: Granit.AI.Endpoints Prefix: ai

MethodRouteOperationPermission
GET/workspacesListAIWorkspacesAI.Workspaces.*
GET/workspaces/{name}GetAIWorkspaceAI.Workspaces.*
POST/workspacesCreateAIWorkspaceAI.Workspaces.*
PUT/workspaces/{name}UpdateAIWorkspaceAI.Workspaces.*
DELETE/workspaces/{name}DeleteAIWorkspaceAI.Workspaces.*
MethodRouteOperationPermission
POST/chat/{workspaceName}AIChatCompleteAI.Chat.Execute
POST/chat/{workspaceName}/streamAIChatStreamAI.Chat.Execute
POST/embeddings/{workspaceName}AIGenerateEmbeddingsAI.Embedding.Generate

Module: Granit.Auditing.Endpoints Prefix: auditing

MethodRouteOperationPermission
GET/audit-entries/GetAuditEntriesAuditing.AuditEntries.Read
GET/audit-entries/{id:guid}GetAuditEntryByIdAuditing.AuditEntries.Read
GET/audit-entries/entity/{entityType}/{entityId}GetAuditEntriesByEntityAuditing.AuditEntries.Read
GET/audit-entries/correlation/{correlationId}GetAuditEntriesByCorrelationIdAuditing.AuditEntries.Read
POST/audit-entries/pseudonymize/{userId}PseudonymizeAuditEntriesAuditing.AuditEntries.Manage

Module: Granit.Diagnostics.Endpoints Prefix: diagnostics

MethodRouteOperationAuth
GET/healthGetMonitoringHealthAuthenticated

Module: Granit.ReferenceData.Endpoints Prefix: reference-data

MethodRouteOperationPermission
GET/GetAll{EntityType}Read
GET/{code}Get{EntityType}ByCodeRead
GET/{code}/childrenGet{EntityType}ChildrenRead
POST/Create{EntityType}Admin
PUT/{code}Update{EntityType}Admin
DELETE/{code}Deactivate{EntityType}Admin

ModuleEndpointsAuth model
AI8Permission-based
API Keys6Permission-based
Audit Log5Permission-based
Authorization5Admin + Authenticated
Background Jobs5Permission-based
BFF10 per frontendAnonymous (session-based)
Blob Storage8 + 2 proxyPermission + Token
Cookie Consent1Anonymous
Customer Balance3Permission-based
Data Exchange19Permission-based
Diagnostics1Authenticated
Features5Permission + Authenticated
Identity — Cache10Permission-based
Identity — Provider19 + webhookPermission-based
Invoicing5Permission-based
Localization4Anonymous + Permission
Metering8Permission-based
Multi-Tenancy6Permission-based
Notifications14Authenticated
Account Self-Service28Anonymous + Authenticated
OpenIddict — Admin14Permission-based
Payments10Permission + Anonymous
Privacy (GDPR)20Permission + Anonymous
QueryEngine7 per entityApp-defined
Reference Data6 per entityApp-defined
Scheduling3Permission-based
Settings8Authenticated + Permission
Subscriptions18Permission-based
Tax3Permission-based
Templating17Permission-based
Timeline6Permission-based
Validation3Anonymous
Webhooks17Permission-based
Workflow3Permission-based
Total~290+