diff --git a/packages/test-utils/api-report.md b/packages/test-utils/api-report.md index 2f2671885e..94ef7af51e 100644 --- a/packages/test-utils/api-report.md +++ b/packages/test-utils/api-report.md @@ -7,8 +7,6 @@ import { AnalyticsApi } from '@backstage/core-plugin-api'; import { AnalyticsEvent } from '@backstage/core-plugin-api'; import { ApiHolder } from '@backstage/core-plugin-api'; import { ApiRef } from '@backstage/core-plugin-api'; -import { AuthorizeDecision } from '@backstage/plugin-permission-common'; -import { AuthorizeQuery } from '@backstage/plugin-permission-common'; import { AuthorizeResult } from '@backstage/plugin-permission-common'; import { ComponentType } from 'react'; import { Config } from '@backstage/config'; @@ -18,6 +16,8 @@ import { DiscoveryApi } from '@backstage/core-plugin-api'; import { ErrorApi } from '@backstage/core-plugin-api'; import { ErrorApiError } from '@backstage/core-plugin-api'; import { ErrorApiErrorContext } from '@backstage/core-plugin-api'; +import { EvaluatePermissionRequest } from '@backstage/plugin-permission-common'; +import { EvaluatePermissionResponse } from '@backstage/plugin-permission-common'; import { ExternalRouteRef } from '@backstage/core-plugin-api'; import { FetchApi } from '@backstage/core-plugin-api'; import { IdentityApi } from '@backstage/core-plugin-api'; @@ -150,11 +150,13 @@ export interface MockFetchApiOptions { export class MockPermissionApi implements PermissionApi { constructor( requestHandler?: ( - request: AuthorizeQuery, + request: EvaluatePermissionRequest, ) => AuthorizeResult.ALLOW | AuthorizeResult.DENY, ); // (undocumented) - authorize(request: AuthorizeQuery): Promise; + authorize( + request: EvaluatePermissionRequest, + ): Promise; } // @public diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index ad80e36232..0df10cf944 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -8,7 +8,7 @@ import { CatalogApi } from '@backstage/catalog-client'; import { CatalogEntityDocument } from '@backstage/plugin-catalog-common'; import { CompoundEntityRef } from '@backstage/catalog-model'; -import { ConditionalPolicyDecision } from '@backstage/plugin-permission-node'; +import { ConditionalPolicyDecision } from '@backstage/plugin-permission-common'; import { Conditions } from '@backstage/plugin-permission-node'; import { Config } from '@backstage/config'; import { DocumentCollatorFactory } from '@backstage/plugin-search-common'; diff --git a/plugins/permission-common/api-report.md b/plugins/permission-common/api-report.md index 77ab94b4e3..001ba53f3a 100644 --- a/plugins/permission-common/api-report.md +++ b/plugins/permission-common/api-report.md @@ -15,37 +15,11 @@ export type AnyOfCriteria = { anyOf: NonEmptyArray>; }; -// @public -export type AuthorizeDecision = - | { - result: AuthorizeResult.ALLOW | AuthorizeResult.DENY; - } - | { - result: AuthorizeResult.CONDITIONAL; - conditions: PermissionCriteria; - }; - -// @public -export type AuthorizeQuery = { - permission: Permission; - resourceRef?: string; -}; - -// @public -export type AuthorizeRequest = { - items: Identified[]; -}; - // @public export type AuthorizeRequestOptions = { token?: string; }; -// @public -export type AuthorizeResponse = { - items: Identified[]; -}; - // @public export enum AuthorizeResult { ALLOW = 'ALLOW', @@ -56,6 +30,14 @@ export enum AuthorizeResult { // @public export type BasicPermission = PermissionBase<'basic', {}>; +// @public +export type ConditionalPolicyDecision = { + result: AuthorizeResult.CONDITIONAL; + pluginId: string; + resourceType: string; + conditions: PermissionCriteria; +}; + // @public export function createPermission(input: { name: string; @@ -69,13 +51,42 @@ export function createPermission(input: { attributes: PermissionAttributes; }): BasicPermission; +// @public +export type DefinitivePolicyDecision = { + result: AuthorizeResult.ALLOW | AuthorizeResult.DENY; +}; + // @public export type DiscoveryApi = { getBaseUrl(pluginId: string): Promise; }; // @public -export type Identified = T & { +export type EvaluatePermissionRequest = { + permission: Permission; + resourceRef?: string; +}; + +// @public +export type EvaluatePermissionRequestBatch = + PermissionMessageBatch; + +// @public +export type EvaluatePermissionResponse = + | { + result: AuthorizeResult.ALLOW | AuthorizeResult.DENY; + } + | { + result: AuthorizeResult.CONDITIONAL; + conditions: PermissionCriteria; + }; + +// @public +export type EvaluatePermissionResponseBatch = + PermissionMessageBatch; + +// @public +export type IdentifiedPermissionMessage = T & { id: string; }; @@ -114,9 +125,9 @@ export type PermissionAttributes = { export interface PermissionAuthorizer { // (undocumented) authorize( - queries: AuthorizeQuery[], + requests: EvaluatePermissionRequest[], options?: AuthorizeRequestOptions, - ): Promise; + ): Promise; } // @public @@ -131,9 +142,9 @@ export type PermissionBase = { export class PermissionClient implements PermissionAuthorizer { constructor(options: { discovery: DiscoveryApi; config: Config }); authorize( - queries: AuthorizeQuery[], + queries: EvaluatePermissionRequest[], options?: AuthorizeRequestOptions, - ): Promise; + ): Promise; } // @public @@ -149,6 +160,16 @@ export type PermissionCriteria = | NotCriteria | TQuery; +// @public +export type PermissionMessageBatch = { + items: IdentifiedPermissionMessage[]; +}; + +// @public +export type PolicyDecision = + | DefinitivePolicyDecision + | ConditionalPolicyDecision; + // @public export type ResourcePermission = PermissionBase< diff --git a/plugins/permission-node/api-report.md b/plugins/permission-node/api-report.md index f6de7f4909..fe4e70abf9 100644 --- a/plugins/permission-node/api-report.md +++ b/plugins/permission-node/api-report.md @@ -5,19 +5,22 @@ ```ts import { AllOfCriteria } from '@backstage/plugin-permission-common'; import { AnyOfCriteria } from '@backstage/plugin-permission-common'; -import { AuthorizeDecision } from '@backstage/plugin-permission-common'; -import { AuthorizeQuery } from '@backstage/plugin-permission-common'; import { AuthorizeRequestOptions } from '@backstage/plugin-permission-common'; -import { AuthorizeResult } from '@backstage/plugin-permission-common'; import { BackstageIdentityResponse } from '@backstage/plugin-auth-node'; +import { ConditionalPolicyDecision } from '@backstage/plugin-permission-common'; import { Config } from '@backstage/config'; +import { DefinitivePolicyDecision } from '@backstage/plugin-permission-common'; +import { EvaluatePermissionRequest } from '@backstage/plugin-permission-common'; +import { EvaluatePermissionResponse } from '@backstage/plugin-permission-common'; import express from 'express'; -import { Identified } from '@backstage/plugin-permission-common'; +import { IdentifiedPermissionMessage } from '@backstage/plugin-permission-common'; import { NotCriteria } from '@backstage/plugin-permission-common'; +import { Permission } from '@backstage/plugin-permission-common'; import { PermissionAuthorizer } from '@backstage/plugin-permission-common'; import { PermissionCondition } from '@backstage/plugin-permission-common'; import { PermissionCriteria } from '@backstage/plugin-permission-common'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; +import { PolicyDecision } from '@backstage/plugin-permission-common'; import { TokenManager } from '@backstage/backend-common'; // @public @@ -26,7 +29,7 @@ export type ApplyConditionsRequest = { }; // @public -export type ApplyConditionsRequestEntry = Identified<{ +export type ApplyConditionsRequestEntry = IdentifiedPermissionMessage<{ resourceRef: string; resourceType: string; conditions: PermissionCriteria; @@ -38,7 +41,8 @@ export type ApplyConditionsResponse = { }; // @public -export type ApplyConditionsResponseEntry = Identified; +export type ApplyConditionsResponseEntry = + IdentifiedPermissionMessage; // @public export type Condition = TRule extends PermissionRule< @@ -49,14 +53,6 @@ export type Condition = TRule extends PermissionRule< ? (...params: TParams) => PermissionCondition : never; -// @public -export type ConditionalPolicyDecision = { - result: AuthorizeResult.CONDITIONAL; - pluginId: string; - resourceType: string; - conditions: PermissionCriteria; -}; - // @public export type Conditions< TRules extends Record>, @@ -116,11 +112,6 @@ export const createPermissionRule: < rule: PermissionRule, ) => PermissionRule; -// @public -export type DefinitivePolicyDecision = { - result: AuthorizeResult.ALLOW | AuthorizeResult.DENY; -}; - // @alpha export const isAndCriteria: ( criteria: PermissionCriteria, @@ -147,7 +138,7 @@ export const makeCreatePermissionRule: () => < export interface PermissionPolicy { // (undocumented) handle( - request: PolicyAuthorizeQuery, + request: PolicyQuery, user?: BackstageIdentityResponse, ): Promise; } @@ -165,20 +156,17 @@ export type PermissionRule< }; // @public -export type PolicyAuthorizeQuery = Omit; - -// @public -export type PolicyDecision = - | DefinitivePolicyDecision - | ConditionalPolicyDecision; +export type PolicyQuery = { + permission: Permission; +}; // @public export class ServerPermissionClient implements PermissionAuthorizer { // (undocumented) authorize( - queries: AuthorizeQuery[], + requests: EvaluatePermissionRequest[], options?: AuthorizeRequestOptions, - ): Promise; + ): Promise; // (undocumented) static fromConfig( config: Config, diff --git a/plugins/permission-react/api-report.md b/plugins/permission-react/api-report.md index 6b66376cb7..17b29a463a 100644 --- a/plugins/permission-react/api-report.md +++ b/plugins/permission-react/api-report.md @@ -4,11 +4,11 @@ ```ts import { ApiRef } from '@backstage/core-plugin-api'; -import { AuthorizeDecision } from '@backstage/plugin-permission-common'; -import { AuthorizeQuery } from '@backstage/plugin-permission-common'; import { ComponentProps } from 'react'; import { Config } from '@backstage/config'; import { DiscoveryApi } from '@backstage/core-plugin-api'; +import { EvaluatePermissionRequest } from '@backstage/plugin-permission-common'; +import { EvaluatePermissionResponse } from '@backstage/plugin-permission-common'; import { IdentityApi } from '@backstage/core-plugin-api'; import { Permission } from '@backstage/plugin-permission-common'; import { ReactElement } from 'react'; @@ -25,7 +25,9 @@ export type AsyncPermissionResult = { // @public export class IdentityPermissionApi implements PermissionApi { // (undocumented) - authorize(request: AuthorizeQuery): Promise; + authorize( + request: EvaluatePermissionRequest, + ): Promise; // (undocumented) static create(options: { config: Config; @@ -36,7 +38,9 @@ export class IdentityPermissionApi implements PermissionApi { // @public export type PermissionApi = { - authorize(request: AuthorizeQuery): Promise; + authorize( + request: EvaluatePermissionRequest, + ): Promise; }; // @public