config

package
v0.7.1 Latest Latest
Warning

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

Go to latest
Published: Jul 28, 2025 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	Input              string                   `yaml:"input" json:"input"`
	Output             string                   `yaml:"output" json:"output"`
	Backup             bool                     `yaml:"backup" json:"backup"`
	Validate           bool                     `yaml:"validate" json:"validate"`
	Exclude            []string                 `yaml:"exclude" json:"exclude"`
	Mappings           map[string]string        `yaml:"mappings" json:"mappings"`
	PaginationPriority []string                 `yaml:"pagination_priority" json:"pagination_priority"` // Global pagination strategy priority
	EndpointPagination []EndpointPaginationRule `yaml:"endpoint_pagination" json:"endpoint_pagination"` // Endpoint-specific pagination overrides
	FlattenResponses   bool                     `yaml:"flatten_responses" json:"flatten_responses"`
	VendorExtensions   VendorExtensions         `yaml:"vendor_extensions" json:"vendor_extensions"`
	DefaultValues      DefaultValues            `yaml:"default_values" json:"default_values"`
}

Config represents the complete OpenMorph configuration

func LoadConfig

func LoadConfig(configPath string, inlineMaps []string, inputDir string, outputFile string, noConfig bool) (*Config, error)

LoadConfig loads config from file (YAML/JSON) and merges with inline flags. If noConfig is true, ignores all config files and uses only CLI flags.

type DefaultCondition added in v0.4.0

type DefaultCondition struct {
	Type         string   `yaml:"type" json:"type"`                   // type constraint (e.g., "string", "integer", "boolean")
	ParameterIn  string   `yaml:"parameter_in" json:"parameter_in"`   // for parameters: "query", "path", "header", "cookie"
	HTTPMethods  []string `yaml:"http_methods" json:"http_methods"`   // which HTTP methods to target
	PathPatterns []string `yaml:"path_patterns" json:"path_patterns"` // which API paths to target
	HasEnum      bool     `yaml:"has_enum" json:"has_enum"`           // only apply if field has enum values
	IsArray      bool     `yaml:"is_array" json:"is_array"`           // only apply if field is array
	PropertyName string   `yaml:"property_name" json:"property_name"` // match specific property names
	Required     *bool    `yaml:"required" json:"required"`           // apply only to required/optional fields
}

DefaultCondition specifies when the default should be applied

type DefaultRule added in v0.4.0

type DefaultRule struct {
	Target    DefaultTarget          `yaml:"target" json:"target"`
	Condition DefaultCondition       `yaml:"condition" json:"condition"`
	Value     interface{}            `yaml:"value" json:"value"`
	Template  map[string]interface{} `yaml:"template" json:"template"`
	Priority  int                    `yaml:"priority" json:"priority"`
}

DefaultRule defines a rule for setting default values

type DefaultTarget added in v0.4.0

type DefaultTarget struct {
	Location string `yaml:"location" json:"location"` // "parameter", "request_body", "response", "component", "array", "enum"
	Property string `yaml:"property" json:"property"` // specific property name (optional)
	Path     string `yaml:"path" json:"path"`         // JSONPath-like selector (optional)
}

DefaultTarget specifies where the default should be applied

type DefaultValues added in v0.4.0

type DefaultValues struct {
	Enabled bool                   `yaml:"enabled" json:"enabled"`
	Rules   map[string]DefaultRule `yaml:"rules" json:"rules"`
}

DefaultValues configuration for setting defaults in OpenAPI specs

type EndpointPaginationRule added in v0.5.0

type EndpointPaginationRule struct {
	Endpoint   string `yaml:"endpoint" json:"endpoint"`     // Endpoint pattern (supports wildcards like /api/v1/users/*)
	Method     string `yaml:"method" json:"method"`         // HTTP method (GET, POST, etc.) - case insensitive
	Pagination string `yaml:"pagination" json:"pagination"` // Pagination strategy (cursor, checkpoint, offset, page, none)
}

EndpointPaginationRule defines pagination configuration for specific endpoints Allows overriding global pagination priority for individual endpoints

Example:

endpoint: "/api/v1/users/*"  # Supports wildcard patterns
method: "GET"                # HTTP method (case-insensitive)
pagination: "cursor"         # Strategy: cursor, offset, page, checkpoint, none

type FieldMapping added in v0.3.0

type FieldMapping struct {
	RequestParams  map[string][]string `yaml:"request_params" json:"request_params"`
	ResponseFields map[string][]string `yaml:"response_fields" json:"response_fields"`
}

FieldMapping defines how to map request/response fields

type ProviderConfig added in v0.3.0

type ProviderConfig struct {
	ExtensionName string                    `yaml:"extension_name" json:"extension_name"`
	TargetLevel   string                    `yaml:"target_level" json:"target_level"`   // "operation", "path", "schema"
	Methods       []string                  `yaml:"methods" json:"methods"`             // ["get", "post"] or empty for all
	PathPatterns  []string                  `yaml:"path_patterns" json:"path_patterns"` // ["/api/v1/*"] or empty for all
	FieldMapping  FieldMapping              `yaml:"field_mapping" json:"field_mapping"`
	Strategies    map[string]StrategyConfig `yaml:"strategies" json:"strategies"`
}

ProviderConfig defines configuration for a specific provider

type StrategyConfig added in v0.3.0

type StrategyConfig struct {
	Template       map[string]interface{} `yaml:"template" json:"template"`
	RequiredFields []string               `yaml:"required_fields" json:"required_fields"`
	OptionalFields []string               `yaml:"optional_fields" json:"optional_fields"`
}

StrategyConfig defines the template for a pagination strategy

type VendorExtensions added in v0.3.0

type VendorExtensions struct {
	Enabled   bool                      `yaml:"enabled" json:"enabled"`
	Providers map[string]ProviderConfig `yaml:"providers" json:"providers"`
}

VendorExtensions configuration for adding vendor-specific extensions

Jump to

Keyboard shortcuts

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