from __future__ import annotations from dataclasses import dataclass from typing import TYPE_CHECKING, Any from litestar.openapi.spec.base import BaseSchemaObject if TYPE_CHECKING: from litestar.openapi.spec.server import Server __all__ = ("Link",) @dataclass class Link(BaseSchemaObject): """The ``Link object`` represents a possible design-time link for a response. The presence of a link does not guarantee the caller's ability to successfully invoke it, rather it provides a known relationship and traversal mechanism between responses and other operations. Unlike _dynamic_ links (i.e. links provided **in** the response payload), the OAS linking mechanism does not require link information in the runtime response. For computing links, and providing instructions to execute them, a `runtime expression `_ is used for accessing values in an operation and using them as parameters while invoking the linked operation. """ operation_ref: str | None = None """A relative or absolute URI reference to an OAS operation. This field is mutually exclusive of the ``operationId`` field, and MUST point to an `Operation Object `_. Relative ``operationRef`` values MAY be used to locate an existing `Operation Object `_ in the OpenAPI definition. See the rules for resolving `Relative References `_ """ operation_id: str | None = None """The name of an _existing_, resolvable OAS operation, as defined with a unique ``operationId``. This field is mutually exclusive of the ``operationRef`` field. """ parameters: dict[str, Any] | None = None """A map representing parameters to pass to an operation as specified with ``operationId`` or identified via ``operationRef``. The key is the parameter name to be used, whereas the value can be a constant or an expression to be evaluated and passed to the linked operation. The parameter name can be qualified using the `parameter location `_ ``[{in}.]{name}`` for operations that use the same parameter name in different locations (e.g. path.id). """ request_body: Any | None = None """A literal value or `{expression} `_ to use as a request body when calling the target operation.""" description: str | None = None """A description of the link. `CommonMark syntax `_ MAY be used for rich text representation. """ server: Server | None = None """A server object to be used by the target operation."""