diff --git a/.changeset/polite-parrots-clap.md b/.changeset/polite-parrots-clap.md
deleted file mode 100644
index de485e0856..0000000000
--- a/.changeset/polite-parrots-clap.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@backstage/create-app': patch
----
-
-Update the search backend template to forward env discovery to the router.
diff --git a/.changeset/six-grapes-sniff.md b/.changeset/six-grapes-sniff.md
index 43e5ef04f6..095e96dd77 100644
--- a/.changeset/six-grapes-sniff.md
+++ b/.changeset/six-grapes-sniff.md
@@ -2,4 +2,4 @@
'@backstage/plugin-search-backend': patch
---
-**BREAKING**: Update the router to use the new `auth` services. The router now requires a discovery service option to get credentials for the permission service.
+Update the router to use the new `auth` services, it now accepts an optional discovery service option to get credentials for the permission service.
diff --git a/packages/create-app/templates/default-app/packages/backend/src/plugins/search.ts.hbs b/packages/create-app/templates/default-app/packages/backend/src/plugins/search.ts.hbs
index 4149f67193..467ac60a5a 100644
--- a/packages/create-app/templates/default-app/packages/backend/src/plugins/search.ts.hbs
+++ b/packages/create-app/templates/default-app/packages/backend/src/plugins/search.ts.hbs
@@ -60,7 +60,6 @@ export default async function createPlugin(
engine: indexBuilder.getSearchEngine(),
types: indexBuilder.getDocumentTypes(),
permissions: env.permissions,
- discovery: env.discovery,
config: env.config,
logger: env.logger,
});
diff --git a/plugins/search-backend-node/api-report-alpha.md b/plugins/search-backend-node/api-report-alpha.md
index a7ac52a218..c8e5cbb65d 100644
--- a/plugins/search-backend-node/api-report-alpha.md
+++ b/plugins/search-backend-node/api-report-alpha.md
@@ -3,39 +3,12 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
-///
-
-import { BackstageCredentials } from '@backstage/backend-plugin-api';
import { DocumentTypeInfo } from '@backstage/plugin-search-common';
import { ExtensionPoint } from '@backstage/backend-plugin-api';
-import { IndexableResultSet } from '@backstage/plugin-search-common';
import { RegisterCollatorParameters } from '@backstage/plugin-search-backend-node';
import { RegisterDecoratorParameters } from '@backstage/plugin-search-backend-node';
-import { SearchQuery } from '@backstage/plugin-search-common';
+import { SearchEngine } from '@backstage/plugin-search-backend-node';
import { ServiceRef } from '@backstage/backend-plugin-api';
-import { Writable } from 'stream';
-
-// @public
-export type QueryRequestOptions =
- | {
- token?: string;
- }
- | {
- credentials: BackstageCredentials;
- };
-
-// @public
-export type QueryTranslator = (query: SearchQuery) => unknown;
-
-// @public
-export interface SearchEngine {
- getIndexer(type: string): Promise;
- query(
- query: SearchQuery,
- options?: QueryRequestOptions,
- ): Promise;
- setTranslator(translator: QueryTranslator): void;
-}
// @alpha
export interface SearchEngineRegistryExtensionPoint {
diff --git a/plugins/search-backend-node/src/alpha.ts b/plugins/search-backend-node/src/alpha.ts
index a491e158b4..272bef7f84 100644
--- a/plugins/search-backend-node/src/alpha.ts
+++ b/plugins/search-backend-node/src/alpha.ts
@@ -30,14 +30,10 @@ import {
RegisterDecoratorParameters,
} from '@backstage/plugin-search-backend-node';
-import { SearchEngine } from './types';
-import { IndexBuilder } from './IndexBuilder';
-
-export type {
+import {
SearchEngine,
- QueryRequestOptions,
- QueryTranslator,
-} from './types';
+ IndexBuilder,
+} from '@backstage/plugin-search-backend-node';
/**
* @alpha
diff --git a/plugins/search-backend/api-report.md b/plugins/search-backend/api-report.md
index f868ed43a3..4f99632f28 100644
--- a/plugins/search-backend/api-report.md
+++ b/plugins/search-backend/api-report.md
@@ -21,7 +21,7 @@ export function createRouter(options: RouterOptions): Promise;
export type RouterOptions = {
engine: SearchEngine;
types: Record;
- discovery: DiscoveryService;
+ discovery?: DiscoveryService;
permissions: PermissionEvaluator | PermissionAuthorizer;
config: Config;
logger: Logger;
diff --git a/plugins/search-backend/src/service/router.ts b/plugins/search-backend/src/service/router.ts
index 9f811d5d06..ae470ba40e 100644
--- a/plugins/search-backend/src/service/router.ts
+++ b/plugins/search-backend/src/service/router.ts
@@ -18,6 +18,7 @@ import express from 'express';
import { Logger } from 'winston';
import { z } from 'zod';
import {
+ HostDiscovery,
createLegacyAuthAdapters,
errorHandler,
} from '@backstage/backend-common';
@@ -64,7 +65,7 @@ const jsonObjectSchema: z.ZodSchema = z.lazy(() => {
export type RouterOptions = {
engine: SearchEngine;
types: Record;
- discovery: DiscoveryService;
+ discovery?: DiscoveryService;
permissions: PermissionEvaluator | PermissionAuthorizer;
config: Config;
logger: Logger;
@@ -83,9 +84,19 @@ export async function createRouter(
options: RouterOptions,
): Promise {
const router = await createOpenApiRouter();
- const { engine: inputEngine, types, permissions, config, logger } = options;
+ const {
+ engine: inputEngine,
+ types,
+ permissions,
+ config,
+ logger,
+ discovery = HostDiscovery.fromConfig(config),
+ } = options;
- const { auth, httpAuth } = createLegacyAuthAdapters(options);
+ const { auth, httpAuth } = createLegacyAuthAdapters({
+ ...options,
+ discovery,
+ });
const maxPageLimit =
config.getOptionalNumber('search.maxPageLimit') ?? defaultMaxPageLimit;