catalog

package
v2.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 27, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsPublicCategory

func IsPublicCategory(category string) bool

IsPublicCategory reports whether category is allowed in user-facing workflows.

func PublicCategories

func PublicCategories() []string

PublicCategories returns the sorted list of user-facing categories. It excludes "example", which is internal-only for test fixtures.

Types

type Entry

type Entry struct {
	Name              string     `yaml:"name"`
	DisplayName       string     `yaml:"display_name"`
	Description       string     `yaml:"description"`
	Category          string     `yaml:"category"`
	SpecURL           string     `yaml:"spec_url"`
	SpecFormat        string     `yaml:"spec_format"`
	OpenAPIVersion    string     `yaml:"openapi_version"`
	Tier              string     `yaml:"tier"`
	VerifiedDate      string     `yaml:"verified_date"`
	Homepage          string     `yaml:"homepage"`
	Notes             string     `yaml:"notes"`
	KnownAlternatives []KnownAlt `yaml:"known_alternatives,omitempty"`
	SandboxEndpoint   string     `yaml:"sandbox_endpoint,omitempty"`
	// SpecSource describes how the spec was obtained. Empty defaults to "official".
	// Values: official, community, sniffed, docs.
	SpecSource string `yaml:"spec_source,omitempty"`
	// AuthRequired indicates whether the API needs authentication. Empty means unknown.
	AuthRequired *bool `yaml:"auth_required,omitempty"`
	// ClientPattern describes the HTTP client pattern needed. Empty defaults to "rest".
	// Values: rest, proxy-envelope, graphql.
	ClientPattern string `yaml:"client_pattern,omitempty"`
	// HTTPTransport describes the runtime HTTP transport. Empty defaults by provenance:
	// official uses standard; non-official web-discovered sources use browser-chrome.
	HTTPTransport string `yaml:"http_transport,omitempty"`
	// ProxyRoutes maps path prefixes to backend service names for proxy-envelope APIs.
	// Only relevant when ClientPattern is "proxy-envelope".
	ProxyRoutes map[string]string `yaml:"proxy_routes,omitempty"`
	// WrapperLibraries lists reverse-engineered community libraries the generator
	// can use as implementation backing when no official spec exists. When this
	// list is non-empty, spec_url and spec_format are optional.
	WrapperLibraries []WrapperLibrary `yaml:"wrapper_libraries,omitempty"`
}

func LookupFS

func LookupFS(fsys fs.FS, name string) (*Entry, error)

LookupFS finds a single catalog entry by name from an fs.FS. Returns an error if the entry is not found.

func ParseDir

func ParseDir(dir string) ([]Entry, error)

func ParseEntry

func ParseEntry(data []byte) (*Entry, error)

func ParseFS

func ParseFS(fsys fs.FS) ([]Entry, error)

ParseFS reads all YAML catalog entries from an fs.FS (e.g., an embedded filesystem). It mirrors ParseDir but operates on the fs.FS interface instead of the OS filesystem.

func (*Entry) IsWrapperOnly

func (e *Entry) IsWrapperOnly() bool

IsWrapperOnly reports whether this entry represents an API reached through community wrapper libraries rather than an official spec.

func (*Entry) Validate

func (e *Entry) Validate() error

type KnownAlt

type KnownAlt struct {
	Name     string `yaml:"name"`
	URL      string `yaml:"url"`
	Language string `yaml:"language"`
}

type WrapperLibrary

type WrapperLibrary struct {
	Name            string `yaml:"name"`
	URL             string `yaml:"url"`
	Language        string `yaml:"language"`
	License         string `yaml:"license,omitempty"`
	IntegrationMode string `yaml:"integration_mode"`
	Notes           string `yaml:"notes,omitempty"`
}

WrapperLibrary describes a community-maintained library that wraps an API without an official OpenAPI spec. The generator uses these as implementation backing when the primary source is reverse-engineered rather than spec-driven.

IntegrationMode values:

  • native: library is in Go and can be imported directly
  • subprocess: library is in another language and must be invoked as a subprocess
  • html-scrape: no library — the entry documents a reverse-engineering technique

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL