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
- type ApiBody
- type ApiEndpoint
- type ApiHeader
- type ApiParameter
- type FieldModel
- type FieldOpt
- type FieldOption
- type ObjectModel
- func ArrayModel(item *ObjectModel) *ObjectModel
- func EmptyObject() *ObjectModel
- func MapModel(key, value *ObjectModel) *ObjectModel
- func NullModel() *ObjectModel
- func ObjectModelFrom(fields map[string]*FieldModel) *ObjectModel
- func RefModel(typeName string) *ObjectModel
- func SingleModel(typeName string) *ObjectModel
- type ObjectModelBuilder
- func (b *ObjectModelBuilder) ArrayField(name string, itemType *ObjectModel, opts ...FieldOpt) *ObjectModelBuilder
- func (b *ObjectModelBuilder) BoolField(name string, opts ...FieldOpt) *ObjectModelBuilder
- func (b *ObjectModelBuilder) Build() *ObjectModel
- func (b *ObjectModelBuilder) DoubleField(name string, opts ...FieldOpt) *ObjectModelBuilder
- func (b *ObjectModelBuilder) Field(name string, model *ObjectModel, opts ...FieldOpt) *ObjectModelBuilder
- func (b *ObjectModelBuilder) FloatField(name string, opts ...FieldOpt) *ObjectModelBuilder
- func (b *ObjectModelBuilder) IntField(name string, opts ...FieldOpt) *ObjectModelBuilder
- func (b *ObjectModelBuilder) LongField(name string, opts ...FieldOpt) *ObjectModelBuilder
- func (b *ObjectModelBuilder) MapField(name string, key, value *ObjectModel, opts ...FieldOpt) *ObjectModelBuilder
- func (b *ObjectModelBuilder) ObjectField(name string, obj *ObjectModel, opts ...FieldOpt) *ObjectModelBuilder
- func (b *ObjectModelBuilder) StringField(name string, opts ...FieldOpt) *ObjectModelBuilder
- type ObjectModelKind
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 WithDefault ¶
func WithGeneric ¶
func WithRequired ¶
type FieldOption ¶
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" )
Click to show internal directories.
Click to hide internal directories.