diff --git a/.changeset/fair-hairs-mix.md b/.changeset/fair-hairs-mix.md new file mode 100644 index 0000000000..6c06c7bf72 --- /dev/null +++ b/.changeset/fair-hairs-mix.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-permission-common': patch +--- + +Add the MetadataResponse type from @backstage/plugin-permission-node, since this +type might be used in frontend code. diff --git a/.changeset/friendly-cherries-applaud.md b/.changeset/friendly-cherries-applaud.md new file mode 100644 index 0000000000..c0160858f2 --- /dev/null +++ b/.changeset/friendly-cherries-applaud.md @@ -0,0 +1,9 @@ +--- +'@backstage/plugin-permission-node': patch +--- + +The MetadataResponse type has been moved to @backstage/plugin-permission-common +to match the recent move of MetadataResponseSerializedRule, and should be +imported from there going forward. To avoid an immediate breaking change, this +type is still re-exported from this package, but is marked as deprecated and +will be removed in a future release. diff --git a/plugins/permission-common/api-report.md b/plugins/permission-common/api-report.md index 12dd49d090..465c43846f 100644 --- a/plugins/permission-common/api-report.md +++ b/plugins/permission-common/api-report.md @@ -126,6 +126,12 @@ export function isResourcePermission( // @public export function isUpdatePermission(permission: Permission): boolean; +// @public +export type MetadataResponse = { + permissions?: Permission[]; + rules: MetadataResponseSerializedRule[]; +}; + // @public export type MetadataResponseSerializedRule = { name: string; diff --git a/plugins/permission-common/src/types/index.ts b/plugins/permission-common/src/types/index.ts index 1d2243447f..f5380541df 100644 --- a/plugins/permission-common/src/types/index.ts +++ b/plugins/permission-common/src/types/index.ts @@ -40,7 +40,10 @@ export type { NotCriteria, } from './api'; export type { DiscoveryApi } from './discovery'; -export type { MetadataResponseSerializedRule } from './integration'; +export type { + MetadataResponse, + MetadataResponseSerializedRule, +} from './integration'; export type { BasicPermission, PermissionAttributes, diff --git a/plugins/permission-common/src/types/integration.ts b/plugins/permission-common/src/types/integration.ts index 6c208bb775..d531140923 100644 --- a/plugins/permission-common/src/types/integration.ts +++ b/plugins/permission-common/src/types/integration.ts @@ -15,6 +15,7 @@ */ import zodToJsonSchema from 'zod-to-json-schema'; +import { Permission } from './permission'; /** * Serialized permission rules, with the paramsSchema @@ -28,3 +29,14 @@ export type MetadataResponseSerializedRule = { resourceType: string; paramsSchema?: ReturnType; }; + +/** + * Response type for the .metadata endpoint in + * {@link @backstage/plugin-permission-node#createPermissionIntegrationRouter} + * + * @public + */ +export type MetadataResponse = { + permissions?: Permission[]; + rules: MetadataResponseSerializedRule[]; +}; diff --git a/plugins/permission-node/api-report.md b/plugins/permission-node/api-report.md index 8a90a39728..36483bd342 100644 --- a/plugins/permission-node/api-report.md +++ b/plugins/permission-node/api-report.md @@ -17,6 +17,7 @@ import { DefinitivePolicyDecision } from '@backstage/plugin-permission-common'; import { DiscoveryService } from '@backstage/backend-plugin-api'; import express from 'express'; import { IdentifiedPermissionMessage } from '@backstage/plugin-permission-common'; +import { MetadataResponse as MetadataResponse_2 } from '@backstage/plugin-permission-common'; import { MetadataResponseSerializedRule as MetadataResponseSerializedRule_2 } from '@backstage/plugin-permission-common'; import { NotCriteria } from '@backstage/plugin-permission-common'; import { Permission } from '@backstage/plugin-permission-common'; @@ -188,11 +189,8 @@ export const makeCreatePermissionRule: < rule: PermissionRule, ) => PermissionRule; -// @public -export type MetadataResponse = { - permissions?: Permission[]; - rules: MetadataResponseSerializedRule[]; -}; +// @public @deprecated +export type MetadataResponse = MetadataResponse_2; // @public @deprecated export type MetadataResponseSerializedRule = MetadataResponseSerializedRule_2; diff --git a/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts b/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts index 7793d8ab8e..40d215d515 100644 --- a/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts +++ b/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts @@ -24,6 +24,7 @@ import { AuthorizeResult, DefinitivePolicyDecision, IdentifiedPermissionMessage, + MetadataResponse as CommonMetadataResponse, MetadataResponseSerializedRule as CommonMetadataResponseSerializedRule, Permission, PermissionCondition, @@ -119,11 +120,9 @@ export type MetadataResponseSerializedRule = * Response type for the .metadata endpoint. * * @public + * @deprecated Please import from `@backstage/plugin-permission-common` instead. */ -export type MetadataResponse = { - permissions?: Permission[]; - rules: MetadataResponseSerializedRule[]; -}; +export type MetadataResponse = CommonMetadataResponse; const applyConditions = ( criteria: PermissionCriteria>,