EdgeAIG's picture
download
raw
12.4 kB
import type { NonEmptyArray } from "../../Array.ts";
import * as Context from "../../Context.ts";
import * as JsonSchema from "../../JsonSchema.ts";
import * as HttpApi from "./HttpApi.ts";
import type * as HttpApiGroup from "./HttpApiGroup.ts";
declare const Identifier_base: Context.ServiceClass<Identifier, "effect/httpapi/OpenApi/Identifier", string>;
/**
* OpenAPI annotation for overriding generated identifiers, including operation ids.
*
* @category annotations
* @since 4.0.0
*/
export declare class Identifier extends Identifier_base {
}
declare const Title_base: Context.ServiceClass<Title, "effect/httpapi/OpenApi/Title", string>;
/**
* OpenAPI annotation for setting the API title or group tag name.
*
* @category annotations
* @since 4.0.0
*/
export declare class Title extends Title_base {
}
declare const Version_base: Context.ServiceClass<Version, "effect/httpapi/OpenApi/Version", string>;
/**
* OpenAPI annotation for setting the generated API version.
*
* @category annotations
* @since 4.0.0
*/
export declare class Version extends Version_base {
}
declare const Description_base: Context.ServiceClass<Description, "effect/httpapi/OpenApi/Description", string>;
/**
* OpenAPI annotation for setting generated descriptions on APIs, groups, endpoints, or security schemes.
*
* @category annotations
* @since 4.0.0
*/
export declare class Description extends Description_base {
}
declare const License_base: Context.ServiceClass<License, "effect/httpapi/OpenApi/License", OpenAPISpecLicense>;
/**
* OpenAPI annotation for setting the generated API license metadata.
*
* @category annotations
* @since 4.0.0
*/
export declare class License extends License_base {
}
declare const ExternalDocs_base: Context.ServiceClass<ExternalDocs, "effect/httpapi/OpenApi/ExternalDocs", OpenAPISpecExternalDocs>;
/**
* OpenAPI annotation for adding external documentation metadata to groups or endpoints.
*
* @category annotations
* @since 4.0.0
*/
export declare class ExternalDocs extends ExternalDocs_base {
}
declare const Servers_base: Context.ServiceClass<Servers, "effect/httpapi/OpenApi/Servers", readonly OpenAPISpecServer[]>;
/**
* OpenAPI annotation for setting the generated API server list.
*
* @category annotations
* @since 4.0.0
*/
export declare class Servers extends Servers_base {
}
declare const Format_base: Context.ServiceClass<Format, "effect/httpapi/OpenApi/Format", string>;
/**
* OpenAPI annotation for setting the format metadata, such as a bearer token format on security schemes.
*
* @category annotations
* @since 4.0.0
*/
export declare class Format extends Format_base {
}
declare const Summary_base: Context.ServiceClass<Summary, "effect/httpapi/OpenApi/Summary", string>;
/**
* OpenAPI annotation for setting generated summary text.
*
* @category annotations
* @since 4.0.0
*/
export declare class Summary extends Summary_base {
}
declare const Deprecated_base: Context.ServiceClass<Deprecated, "effect/httpapi/OpenApi/Deprecated", boolean>;
/**
* OpenAPI annotation for marking a generated endpoint operation as deprecated.
*
* @category annotations
* @since 4.0.0
*/
export declare class Deprecated extends Deprecated_base {
}
declare const Override_base: Context.ServiceClass<Override, "effect/httpapi/OpenApi/Override", Record<string, unknown>>;
/**
* OpenAPI annotation for shallowly merging additional fields into a generated OpenAPI object.
*
* @category annotations
* @since 4.0.0
*/
export declare class Override extends Override_base {
}
/**
* Annotation that excludes an annotated group or endpoint from the generated
* OpenAPI specification.
*
* **When to use**
*
* Use to hide internal, experimental, or otherwise undocumented HTTP API groups
* and endpoints from generated OpenAPI output.
*
* @category annotations
* @since 4.0.0
*/
export declare const Exclude: Context.Reference<boolean>;
declare const Transform_base: Context.ServiceClass<Transform, "effect/httpapi/OpenApi/Transform", (openApiSpec: Record<string, any>) => Record<string, any>>;
/**
* OpenAPI annotation for transforming a generated OpenAPI object.
*
* **Details**
*
* The function is applied during generation to the annotated API, group tag, or
* endpoint operation.
*
* @category annotations
* @since 4.0.0
*/
export declare class Transform extends Transform_base {
}
/**
* Builds a `Context` containing OpenAPI annotations from the supplied options.
*
* @category annotations
* @since 4.0.0
*/
export declare const annotations: (options: {
readonly identifier?: string | undefined;
readonly title?: string | undefined;
readonly version?: string | undefined;
readonly description?: string | undefined;
readonly license?: OpenAPISpecLicense | undefined;
readonly summary?: string | undefined;
readonly deprecated?: boolean | undefined;
readonly externalDocs?: OpenAPISpecExternalDocs | undefined;
readonly servers?: ReadonlyArray<OpenAPISpecServer> | undefined;
readonly format?: string | undefined;
readonly override?: Record<string, unknown> | undefined;
readonly exclude?: boolean | undefined;
readonly transform?: ((openApiSpec: Record<string, any>) => Record<string, any>) | undefined;
}) => Context.Context<never>;
/**
* Converts an `HttpApi` instance into an OpenAPI Specification object.
*
* **Details**
*
* This function takes an `HttpApi` instance, which defines a structured API,
* and generates an OpenAPI Specification (`OpenAPISpec`). The resulting spec
* adheres to the OpenAPI 3.1.0 standard and includes detailed metadata such as
* paths, operations, security schemes, and components. The function processes
* the API's annotations, middleware, groups, and endpoints to build a complete
* and accurate representation of the API in OpenAPI format.
*
* The function also deduplicates schemas, applies transformations, and
* integrates annotations like descriptions, summaries, external documentation,
* and overrides. Cached results are used for better performance when the same
* `HttpApi` instance is processed multiple times.
*
* @category constructors
* @since 4.0.0
*/
export declare function fromApi<Id extends string, Groups extends HttpApiGroup.Any>(api: HttpApi.HttpApi<Id, Groups>): OpenAPISpec;
/**
* This model describes the OpenAPI specification (version 3.1.0) returned by
* {@link fromApi}. It is not intended to describe the entire OpenAPI
* specification, only the output of `fromApi`.
*
* @category models
* @since 4.0.0
*/
export interface OpenAPISpec {
openapi: "3.1.0";
info: OpenAPISpecInfo;
paths: OpenAPISpecPaths;
components: OpenAPIComponents;
security: Array<OpenAPISecurityRequirement>;
tags: Array<OpenAPISpecTag>;
servers?: Array<OpenAPISpecServer>;
}
/**
* OpenAPI `info` object generated by `fromApi`.
*
* @category models
* @since 4.0.0
*/
export interface OpenAPISpecInfo {
title: string;
version: string;
description?: string;
license?: OpenAPISpecLicense;
summary?: string;
}
/**
* OpenAPI tag object generated for an HTTP API group.
*
* @category models
* @since 4.0.0
*/
export interface OpenAPISpecTag {
name: string;
description?: string;
externalDocs?: OpenAPISpecExternalDocs;
}
/**
* OpenAPI external documentation metadata.
*
* @category models
* @since 4.0.0
*/
export interface OpenAPISpecExternalDocs {
url: string;
description?: string;
}
/**
* OpenAPI license metadata used in the generated `info` object.
*
* @category models
* @since 4.0.0
*/
export interface OpenAPISpecLicense {
name: string;
url?: string;
[key: string]: unknown;
}
/**
* OpenAPI server object used in the generated `servers` array.
*
* @category models
* @since 4.0.0
*/
export interface OpenAPISpecServer {
url: string;
description?: string;
variables?: Record<string, OpenAPISpecServerVariable>;
}
/**
* OpenAPI variable definition for templated server URLs.
*
* @category models
* @since 4.0.0
*/
export interface OpenAPISpecServerVariable {
default: string;
enum?: NonEmptyArray<string>;
description?: string;
}
/**
* Generated OpenAPI `paths` object, keyed by route path.
*
* @category models
* @since 4.0.0
*/
export type OpenAPISpecPaths = Record<string, OpenAPISpecPathItem>;
/**
* Lowercase HTTP method names used as keys in generated OpenAPI path items.
*
* @category models
* @since 4.0.0
*/
export type OpenAPISpecMethodName = "get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace";
/**
* Generated OpenAPI path item mapping HTTP methods to operations for a single route path.
*
* @category models
* @since 4.0.0
*/
export type OpenAPISpecPathItem = {
[K in OpenAPISpecMethodName]?: OpenAPISpecOperation;
};
/**
* Generated OpenAPI parameter object for path, query, header, or cookie parameters.
*
* @category models
* @since 4.0.0
*/
export interface OpenAPISpecParameter {
name: string;
in: "query" | "header" | "path" | "cookie";
schema: object;
required: boolean;
description?: string;
}
/**
* Generated OpenAPI responses object, keyed by HTTP status code.
*
* @category models
* @since 4.0.0
*/
export type OpenAPISpecResponses = Record<number, OpenApiSpecResponse>;
/**
* Generated OpenAPI content object, keyed by media type.
*
* @category models
* @since 4.0.0
*/
export type OpenApiSpecContent = {
[K in string]: OpenApiSpecMediaType;
};
/**
* Generated OpenAPI response object for an endpoint success or error schema.
*
* @category models
* @since 4.0.0
*/
export interface OpenApiSpecResponse {
description: string;
content?: OpenApiSpecContent;
}
/**
* Generated OpenAPI media type object containing the JSON Schema for a request or response body.
*
* @category models
* @since 4.0.0
*/
export interface OpenApiSpecMediaType {
schema: JsonSchema.JsonSchema;
"x-effect-stream"?: OpenApiSpecEffectStream;
}
/**
* Effect-specific metadata for generated streaming response media types.
*
* @category models
* @since 4.0.0
*/
export type OpenApiSpecEffectStream = {
encoding: "sse";
causeSchema: JsonSchema.JsonSchema;
errorSchema: JsonSchema.JsonSchema;
failureEvent: "effect/httpapi/stream/failure";
} | {
encoding: "uint8array";
};
/**
* Generated OpenAPI request body object for endpoint payloads.
*
* @category models
* @since 4.0.0
*/
export interface OpenAPISpecRequestBody {
content: OpenApiSpecContent;
required: true;
}
/**
* Generated OpenAPI components containing shared schemas and security schemes.
*
* @category models
* @since 4.0.0
*/
export interface OpenAPIComponents {
schemas: JsonSchema.Definitions;
securitySchemes: Record<string, OpenAPISecurityScheme>;
}
/**
* Generated OpenAPI HTTP security scheme, such as bearer or basic authentication.
*
* @category models
* @since 4.0.0
*/
export interface OpenAPIHTTPSecurityScheme {
readonly type: "http";
scheme: "bearer" | "basic" | string;
description?: string;
bearerFormat?: string;
}
/**
* Generated OpenAPI API key security scheme.
*
* @category models
* @since 4.0.0
*/
export interface OpenAPIApiKeySecurityScheme {
readonly type: "apiKey";
name: string;
in: "query" | "header" | "cookie";
description?: string;
}
/**
* Union of security scheme objects emitted in generated OpenAPI components.
*
* @category models
* @since 4.0.0
*/
export type OpenAPISecurityScheme = OpenAPIHTTPSecurityScheme | OpenAPIApiKeySecurityScheme;
/**
* Generated OpenAPI security requirement, keyed by security scheme name.
*
* @category models
* @since 4.0.0
*/
export type OpenAPISecurityRequirement = Record<string, Array<string>>;
/**
* Generated OpenAPI operation object for an HTTP API endpoint.
*
* @category models
* @since 4.0.0
*/
export interface OpenAPISpecOperation {
operationId: string;
parameters: Array<OpenAPISpecParameter>;
responses: OpenAPISpecResponses;
/** Always contains at least the title annotation or the group identifier */
tags: NonEmptyArray<string>;
security: Array<OpenAPISecurityRequirement>;
requestBody?: OpenAPISpecRequestBody;
description?: string;
summary?: string;
deprecated?: boolean;
externalDocs?: OpenAPISpecExternalDocs;
}
export {};
//# sourceMappingURL=OpenApi.d.ts.map

Xet Storage Details

Size:
12.4 kB
·
Xet hash:
326b3c4a0618c972106c453c7783c2b9618f44fdbd9fb55d289c3d19740a6074

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.