Help us shape the future of Go! Take the 2026 Go Developer Survey

model

package module
v0.0.0-...-558c23f Latest Latest
Warning

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

Go to latest
Published: Oct 25, 2026 License: AGPL-3.0 Imports: 0 Imported by: 0

Documentation

Overview

Package model defines the canonical, language-agnostic data types shared between all API collectors and formatters. This is the only module both sides of the pipeline need to import for types.

Index

Constants

View Source
const (
	JsonTypeString  = "string"
	JsonTypeInt     = "int"
	JsonTypeLong    = "long"
	JsonTypeFloat   = "float"
	JsonTypeDouble  = "double"
	JsonTypeBoolean = "boolean"
	JsonTypeNull    = "null"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ApiBody

type ApiBody struct {
	// Name is the parameter that supplies the body, e.g. callbackData for
	// `@RequestBody String callbackData`. A formatter keeps it visible when the
	// body carries no fields of its own, where the parameter name is the only
	// thing distinguishing one scalar payload from another. Empty for a
	// response, which no parameter supplies.
	Name      string       `json:"name,omitempty"`
	MediaType string       `json:"mediaType,omitempty"`
	Body      *ObjectModel `json:"body,omitempty"`
	Example   any          `json:"example,omitempty"`
}

ApiBody describes the request or response body of an endpoint.

type ApiEndpoint

type ApiEndpoint struct {
	Name        string         `json:"name"`
	Folder      string         `json:"folder,omitempty"`
	Description string         `json:"description,omitempty"`
	Tags        []string       `json:"tags,omitempty"`
	Path        string         `json:"path"`
	Method      string         `json:"method,omitempty"` // empty for non-HTTP protocols
	Protocol    string         `json:"protocol"`         // "http", "grpc", "websocket", etc.
	Parameters  []ApiParameter `json:"parameters,omitempty"`
	Headers     []ApiHeader    `json:"headers,omitempty"`
	RequestBody *ApiBody       `json:"requestBody,omitempty"`
	Response    *ApiBody       `json:"response,omitempty"`
	// Consumes lists the request media types the endpoint declares (JAX-RS
	// @Consumes, Spring consumes=...). Empty when the source declares none, so
	// a formatter can tell a declared content type from a collector default.
	Consumes []string `json:"consumes,omitempty"`
	// Produces lists the response media types the endpoint declares (JAX-RS
	// @Produces, Spring produces=...). Empty when the source declares none.
	Produces []string `json:"produces,omitempty"`
	// Metadata holds protocol-specific extensions without polluting the core struct.
	Metadata map[string]any `json:"metadata,omitempty"`
}

ApiEndpoint is the canonical, language-agnostic model for a single API endpoint.

type ApiHeader

type ApiHeader struct {
	Name        string `json:"name"`
	Value       string `json:"value,omitempty"`
	Description string `json:"description,omitempty"`
	Example     string `json:"example,omitempty"`
	Required    bool   `json:"required"`
}

ApiHeader describes an HTTP header associated with an endpoint.

type ApiParameter

type ApiParameter struct {
	Name string `json:"name"`
	// Type is the parameter kind: "text" or "file". A file parameter is a
	// multipart part, never a query argument.
	Type     string `json:"type"` // "text" | "file"
	Required bool   `json:"required"`
	In       string `json:"in"` // "query" | "path" | "header" | "cookie" | "body" | "form"
	// TypeName is the declared type in the source language, e.g. "Long" or
	// "String", so a caller can tell them apart. Empty when the collector
	// cannot name the type.
	TypeName    string   `json:"typeName,omitempty"`
	Default     string   `json:"default,omitempty"`
	Description string   `json:"description,omitempty"`
	Example     string   `json:"example,omitempty"`
	Enum        []string `json:"enum,omitempty"`
}

ApiParameter describes a single input parameter of an endpoint.

type FieldModel

type FieldModel struct {
	Model        *ObjectModel   `json:"model"`
	Comment      string         `json:"comment,omitempty"`
	Required     bool           `json:"required"`
	DefaultValue string         `json:"defaultValue,omitempty"`
	Options      []FieldOption  `json:"options,omitempty"`
	Demo         string         `json:"demo,omitempty"`
	Advanced     map[string]any `json:"advanced,omitempty"`
	Generic      bool           `json:"generic,omitempty"`
}

type FieldOpt

type FieldOpt func(*FieldModel)

func WithComment

func WithComment(c string) FieldOpt

func WithDefault

func WithDefault(d string) FieldOpt

func WithDemo

func WithDemo(d string) FieldOpt

func WithGeneric

func WithGeneric(g bool) FieldOpt

func WithRequired

func WithRequired(r bool) FieldOpt

type FieldOption

type FieldOption struct {
	Value any    `json:"value"`
	Desc  string `json:"desc,omitempty"`
}

type ObjectModel

type ObjectModel struct {
	Kind       ObjectModelKind        `json:"kind"`
	TypeName   string                 `json:"typeName"`
	Fields     map[string]*FieldModel `json:"fields,omitempty"`
	Items      *ObjectModel           `json:"items,omitempty"`
	KeyModel   *ObjectModel           `json:"keyModel,omitempty"`
	ValueModel *ObjectModel           `json:"valueModel,omitempty"`
}

func ArrayModel

func ArrayModel(item *ObjectModel) *ObjectModel

func EmptyObject

func EmptyObject() *ObjectModel

func MapModel

func MapModel(key, value *ObjectModel) *ObjectModel

func NullModel

func NullModel() *ObjectModel

func ObjectModelFrom

func ObjectModelFrom(fields map[string]*FieldModel) *ObjectModel

func RefModel

func RefModel(typeName string) *ObjectModel

func SingleModel

func SingleModel(typeName string) *ObjectModel

func (*ObjectModel) IsArray

func (m *ObjectModel) IsArray() bool

func (*ObjectModel) IsMap

func (m *ObjectModel) IsMap() bool

func (*ObjectModel) IsNull

func (m *ObjectModel) IsNull() bool

func (*ObjectModel) IsObject

func (m *ObjectModel) IsObject() bool

func (*ObjectModel) IsRef

func (m *ObjectModel) IsRef() bool

func (*ObjectModel) IsSingle

func (m *ObjectModel) IsSingle() bool

type ObjectModelBuilder

type ObjectModelBuilder struct {
	// contains filtered or unexported fields
}

func NewObjectModelBuilder

func NewObjectModelBuilder() *ObjectModelBuilder

func (*ObjectModelBuilder) ArrayField

func (b *ObjectModelBuilder) ArrayField(name string, itemType *ObjectModel, opts ...FieldOpt) *ObjectModelBuilder

func (*ObjectModelBuilder) BoolField

func (b *ObjectModelBuilder) BoolField(name string, opts ...FieldOpt) *ObjectModelBuilder

func (*ObjectModelBuilder) Build

func (b *ObjectModelBuilder) Build() *ObjectModel

func (*ObjectModelBuilder) DoubleField

func (b *ObjectModelBuilder) DoubleField(name string, opts ...FieldOpt) *ObjectModelBuilder

func (*ObjectModelBuilder) Field

func (b *ObjectModelBuilder) Field(name string, model *ObjectModel, opts ...FieldOpt) *ObjectModelBuilder

func (*ObjectModelBuilder) FloatField

func (b *ObjectModelBuilder) FloatField(name string, opts ...FieldOpt) *ObjectModelBuilder

func (*ObjectModelBuilder) IntField

func (b *ObjectModelBuilder) IntField(name string, opts ...FieldOpt) *ObjectModelBuilder

func (*ObjectModelBuilder) LongField

func (b *ObjectModelBuilder) LongField(name string, opts ...FieldOpt) *ObjectModelBuilder

func (*ObjectModelBuilder) MapField

func (b *ObjectModelBuilder) MapField(name string, key, value *ObjectModel, opts ...FieldOpt) *ObjectModelBuilder

func (*ObjectModelBuilder) ObjectField

func (b *ObjectModelBuilder) ObjectField(name string, obj *ObjectModel, opts ...FieldOpt) *ObjectModelBuilder

func (*ObjectModelBuilder) StringField

func (b *ObjectModelBuilder) StringField(name string, opts ...FieldOpt) *ObjectModelBuilder

type ObjectModelKind

type ObjectModelKind string

ObjectModelKind represents the kind of type model.

const (
	KindSingle ObjectModelKind = "single"
	KindObject ObjectModelKind = "object"
	KindArray  ObjectModelKind = "array"
	KindMap    ObjectModelKind = "map"
	KindRef    ObjectModelKind = "ref"
)

Jump to

Keyboard shortcuts

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