## API Report File for "@backstage/techdocs-common"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).

```ts
/// <reference types="node" />

import { Config } from '@backstage/config';
import { ContainerRunner } from '@backstage/backend-common';
import { Entity } from '@backstage/catalog-model';
import { EntityName } from '@backstage/catalog-model';
import express from 'express';
import { IndexableDocument } from '@backstage/search-common';
import { Logger as Logger_2 } from 'winston';
import { PluginEndpointDiscovery } from '@backstage/backend-common';
import { ScmIntegrationRegistry } from '@backstage/integration';
import { UrlReader } from '@backstage/backend-common';
import { Writable } from 'stream';

// Warning: (ae-missing-release-tag) "DirectoryPreparer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class DirectoryPreparer implements PreparerBase {
  constructor(config: Config, _logger: Logger_2, reader: UrlReader);
  // Warning: (ae-forgotten-export) The symbol "PreparerResponse" needs to be exported by the entry point index.d.ts
  //
  // (undocumented)
  prepare(
    entity: Entity,
    options?: {
      logger?: Logger_2;
      etag?: string;
    },
  ): Promise<PreparerResponse>;
}

// Warning: (ae-missing-release-tag) "GeneratorBase" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type GeneratorBase = {
  run(opts: GeneratorRunOptions): Promise<void>;
};

// Warning: (ae-missing-release-tag) "GeneratorBuilder" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export type GeneratorBuilder = {
  register(protocol: SupportedGeneratorKey, generator: GeneratorBase): void;
  get(entity: Entity): GeneratorBase;
};

// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}'
// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}'
// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}'
// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}'
// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets.
// Warning: (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}'
// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (tsdoc-param-tag-with-invalid-optional-name) The @param should not include a JSDoc-style optional name; it must not be enclosed in '[ ]' brackets.
// Warning: (tsdoc-param-tag-with-invalid-type) The @param block should not include a JSDoc-style '{type}'
// Warning: (ae-missing-release-tag) "GeneratorRunOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export type GeneratorRunOptions = {
  inputDir: string;
  outputDir: string;
  parsedLocationAnnotation?: ParsedLocationAnnotation;
  etag?: string;
  logger: Logger_2;
  logStream?: Writable;
};

// Warning: (ae-missing-release-tag) "Generators" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class Generators implements GeneratorBuilder {
  // (undocumented)
  static fromConfig(
    config: Config,
    {
      logger,
      containerRunner,
    }: {
      logger: Logger_2;
      containerRunner: ContainerRunner;
    },
  ): Promise<GeneratorBuilder>;
  // (undocumented)
  get(entity: Entity): GeneratorBase;
  // (undocumented)
  register(generatorKey: SupportedGeneratorKey, generator: GeneratorBase): void;
}

// Warning: (ae-missing-release-tag) "getDocFilesFromRepository" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export const getDocFilesFromRepository: (
  reader: UrlReader,
  entity: Entity,
  opts?:
    | {
        etag?: string | undefined;
        logger?: Logger_2 | undefined;
      }
    | undefined,
) => Promise<PreparerResponse>;

// Warning: (ae-missing-release-tag) "getLocationForEntity" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export const getLocationForEntity: (
  entity: Entity,
  scmIntegration: ScmIntegrationRegistry,
) => ParsedLocationAnnotation;

// Warning: (ae-missing-release-tag) "ParsedLocationAnnotation" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type ParsedLocationAnnotation = {
  type: RemoteProtocol;
  target: string;
};

// Warning: (ae-missing-release-tag) "parseReferenceAnnotation" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export const parseReferenceAnnotation: (
  annotationName: string,
  entity: Entity,
) => ParsedLocationAnnotation;

// Warning: (ae-missing-release-tag) "PreparerBase" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type PreparerBase = {
  prepare(
    entity: Entity,
    options?: {
      logger?: Logger_2;
      etag?: string;
    },
  ): Promise<PreparerResponse>;
};

// Warning: (ae-missing-release-tag) "PreparerBuilder" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type PreparerBuilder = {
  register(protocol: RemoteProtocol, preparer: PreparerBase): void;
  get(entity: Entity): PreparerBase;
};

// Warning: (ae-missing-release-tag) "Preparers" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class Preparers implements PreparerBuilder {
  // Warning: (ae-forgotten-export) The symbol "factoryOptions" needs to be exported by the entry point index.d.ts
  //
  // (undocumented)
  static fromConfig(
    config: Config,
    { logger, reader }: factoryOptions,
  ): Promise<PreparerBuilder>;
  // (undocumented)
  get(entity: Entity): PreparerBase;
  // (undocumented)
  register(protocol: RemoteProtocol, preparer: PreparerBase): void;
}

// Warning: (ae-missing-release-tag) "Publisher" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export class Publisher {
  // Warning: (ae-forgotten-export) The symbol "factoryOptions" needs to be exported by the entry point index.d.ts
  //
  // (undocumented)
  static fromConfig(
    config: Config,
    { logger, discovery }: factoryOptions_2,
  ): Promise<PublisherBase>;
}

// Warning: (ae-missing-release-tag) "PublisherBase" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export interface PublisherBase {
  docsRouter(): express.Handler;
  fetchTechDocsMetadata(entityName: EntityName): Promise<TechDocsMetadata>;
  // Warning: (ae-forgotten-export) The symbol "ReadinessResponse" needs to be exported by the entry point index.d.ts
  getReadiness(): Promise<ReadinessResponse>;
  hasDocsBeenGenerated(entityName: Entity): Promise<boolean>;
  // Warning: (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag
  // Warning: (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag
  // Warning: (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@"
  // Warning: (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@"
  // Warning: (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag
  // Warning: (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@"
  // Warning: (ae-forgotten-export) The symbol "MigrateRequest" needs to be exported by the entry point index.d.ts
  migrateDocsCase?(migrateRequest: MigrateRequest): Promise<void>;
  // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
  // Warning: (ae-forgotten-export) The symbol "PublishRequest" needs to be exported by the entry point index.d.ts
  // Warning: (ae-forgotten-export) The symbol "PublishResponse" needs to be exported by the entry point index.d.ts
  publish(request: PublishRequest): Promise<PublishResponse>;
}

// Warning: (ae-missing-release-tag) "PublisherType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export type PublisherType =
  | 'local'
  | 'googleGcs'
  | 'awsS3'
  | 'azureBlobStorage'
  | 'openStackSwift';

// Warning: (ae-missing-release-tag) "RemoteProtocol" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type RemoteProtocol = 'url' | 'dir';

// Warning: (ae-missing-release-tag) "TechDocsDocument" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface TechDocsDocument extends IndexableDocument {
  // (undocumented)
  kind: string;
  // (undocumented)
  lifecycle: string;
  // (undocumented)
  name: string;
  // (undocumented)
  namespace: string;
  // (undocumented)
  owner: string;
  // (undocumented)
  path: string;
}

// Warning: (ae-missing-release-tag) "TechdocsGenerator" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class TechdocsGenerator implements GeneratorBase {
  constructor({
    logger,
    containerRunner,
    config,
    scmIntegrations,
  }: {
    logger: Logger_2;
    containerRunner: ContainerRunner;
    config: Config;
    scmIntegrations: ScmIntegrationRegistry;
  });
  static readonly defaultDockerImage = 'spotify/techdocs:v0.3.2';
  // (undocumented)
  static fromConfig(
    config: Config,
    {
      containerRunner,
      logger,
    }: {
      containerRunner: ContainerRunner;
      logger: Logger_2;
    },
  ): TechdocsGenerator;
  // (undocumented)
  run({
    inputDir,
    outputDir,
    parsedLocationAnnotation,
    etag,
    logger: childLogger,
    logStream,
  }: GeneratorRunOptions): Promise<void>;
}

// Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// Warning: (ae-missing-release-tag) "TechDocsMetadata" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export type TechDocsMetadata = {
  site_name: string;
  site_description: string;
  etag: string;
};

// Warning: (ae-missing-release-tag) "transformDirLocation" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export const transformDirLocation: (
  entity: Entity,
  dirAnnotation: ParsedLocationAnnotation,
  scmIntegrations: ScmIntegrationRegistry,
) => {
  type: 'dir' | 'url';
  target: string;
};

// Warning: (ae-missing-release-tag) "UrlPreparer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class UrlPreparer implements PreparerBase {
  constructor(reader: UrlReader, logger: Logger_2);
  // (undocumented)
  prepare(
    entity: Entity,
    options?: {
      etag?: string;
    },
  ): Promise<PreparerResponse>;
}

// Warnings were encountered during analysis:
//
// src/stages/generate/types.d.ts:44:5 - (ae-forgotten-export) The symbol "SupportedGeneratorKey" needs to be exported by the entry point index.d.ts
// src/stages/prepare/types.d.ts:18:8 - (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
// src/stages/prepare/types.d.ts:19:8 - (tsdoc-param-tag-with-invalid-name) The @param block should be followed by a valid parameter name: The identifier cannot non-word characters
// src/stages/prepare/types.d.ts:21:33 - (tsdoc-escape-right-brace) The "}" character should be escaped using a backslash to avoid confusion with a TSDoc inline tag
// src/stages/prepare/types.d.ts:21:16 - (tsdoc-malformed-inline-tag) Expecting a TSDoc tag starting with "{@"
```
