NAME

Langertha::Manifest::Endpoint - One endpoint of a provider manifest: wire dialect, base URL, auth reference

VERSION

version 0.503

SYNOPSIS

my $endpoint = Langertha::Manifest::Endpoint->new(
  id       => 'chat',
  dialect  => 'openai-chat',
  base_url => 'https://provider.example/v1',
  auth_ref => 'api',
);

if ( $endpoint->is_known_dialect ) { ... }

DESCRIPTION

An endpoint of a Langertha::Manifest: where to talk (base_url), which wire envelope to speak (dialect) and which auth mechanism it needs (auth_ref, absent when it needs none). Immutable; validated on construction.

id

Local id of the endpoint, unique within the manifest; models point at it with endpoint_ref.

dialect

The wire dialect token (see "known_dialects"). A pattern-valid but unknown dialect is accepted — whether a client has an adapter for it is "is_known_dialect", a separate question from validity.

base_url

http/https URL; exactly what a Langertha engine of this dialect takes as url (the dialect decides which path it appends). Printable ASCII, never carries userinfo, a query string or a fragment. This keeps the usual credential carriers out of a published URL; it is best effort — a secret embedded in the path itself cannot be told apart from a real path.

auth_ref

Id of the Langertha::Manifest::Auth entry this endpoint needs, or undef when it needs no credentials.

known_dialects

my @dialects = Langertha::Manifest::Endpoint->known_dialects;

The v1 dialect vocabulary: openai-chat, responses, perplexity-agent, anthropic (first-party Messages API), anthropic-compat (the /anthropic shims: structured output via a synthetic tool and forced choice), gemini, ollama, aki, lmstudio.

is_known_dialect

True when "dialect" is in the v1 vocabulary.

from_hash

my $endpoint = Langertha::Manifest::Endpoint->from_hash(\%data);

Builds an endpoint from its JSON object form, rejecting unknown and forbidden fields.

to_hash

Returns the JSON object form; auth_ref is omitted when undefined.

SEE ALSO

SUPPORT

Issues

Please report bugs and feature requests on GitHub at https://github.com/Getty/langertha/issues.

IRC

Join #langertha on irc.perl.org or message Getty directly.

CONTRIBUTING

Contributions are welcome! Please fork the repository and submit a pull request.

AUTHOR

Torsten Raudssus <getty@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2026 by Torsten Raudssus https://raudssus.de/.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.