diff

package
v0.0.0-...-f1424fc Latest Latest
Warning

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

Go to latest
Published: Oct 21, 2022 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Package diff provides a diff function for OpenAPI Spec 3.

Index

Examples

Constants

View Source
const SunsetExtension = "x-sunset"

Variables

ParamLocations are the four possible locations of parameters: path, query, header or cookie

Functions

This section is empty.

Types

type CallbacksDiff

type CallbacksDiff struct {
	Added    StringList        `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  StringList        `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedCallbacks `json:"modified,omitempty" yaml:"modified,omitempty"`
}

CallbacksDiff describes the changes between a pair of callback objects: https://swagger.io/specification/#callback-object

func (*CallbacksDiff) Empty

func (diff *CallbacksDiff) Empty() bool

Empty indicates whether a change was found in this element

type ComponentsDiff

type ComponentsDiff struct {
	SchemasDiff         *SchemasDiff         `json:"schemas,omitempty" yaml:"schemas,omitempty"`
	ParametersDiff      *ParametersDiff      `json:"parameters,omitempty" yaml:"parameters,omitempty"`
	HeadersDiff         *HeadersDiff         `json:"headers,omitempty" yaml:"headers,omitempty"`
	RequestBodiesDiff   *RequestBodiesDiff   `json:"requestBodies,omitempty" yaml:"requestBodies,omitempty"`
	ResponsesDiff       *ResponsesDiff       `json:"responses,omitempty" yaml:"responses,omitempty"`
	SecuritySchemesDiff *SecuritySchemesDiff `json:"securitySchemes,omitempty" yaml:"securitySchemes,omitempty"`
	ExamplesDiff        *ExamplesDiff        `json:"examples,omitempty" yaml:"examples,omitempty"`
	LinksDiff           *LinksDiff           `json:"links,omitempty" yaml:"links,omitempty"`
	CallbacksDiff       *CallbacksDiff       `json:"callbacks,omitempty" yaml:"callbacks,omitempty"`
}

ComponentsDiff describes the changes between a pair of component objects: https://swagger.io/specification/#components-object

func (*ComponentsDiff) Empty

func (diff *ComponentsDiff) Empty() bool

Empty indicates whether a change was found in this element

type Config

type Config struct {
	ExcludeExamples         bool
	ExcludeDescription      bool
	IncludeExtensions       StringSet
	PathFilter              string
	FilterExtension         string
	PathPrefixBase          string
	PathPrefixRevision      string
	PathStripPrefixBase     string
	PathStripPrefixRevision string
	BreakingOnly            bool
	DeprecationDays         int
}

Config includes various settings to control the diff

func NewConfig

func NewConfig() *Config

NewConfig returns a default configuration

type ContactDiff

type ContactDiff struct {
	Added          bool            `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted        bool            `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	ExtensionsDiff *ExtensionsDiff `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	NameDiff       *ValueDiff      `json:"name,omitempty" yaml:"name,omitempty"`
	URLDiff        *ValueDiff      `json:"url,omitempty" yaml:"url,omitempty"`
	EmailDiff      *ValueDiff      `json:"email,omitempty" yaml:"email,omitempty"`
}

ContactDiff describes the changes between a pair of contact objects: https://swagger.io/specification/#contact-object

func (*ContactDiff) Empty

func (diff *ContactDiff) Empty() bool

Empty indicates whether a change was found in this element

type ContentDiff

type ContentDiff struct {
	MediaTypeAdded    StringList         `json:"mediaTypeAdded,omitempty" yaml:"mediaTypeAdded,omitempty"`
	MediaTypeDeleted  StringList         `json:"mediaTypeDeleted,omitempty" yaml:"mediaTypeDeleted,omitempty"`
	MediaTypeModified ModifiedMediaTypes `json:"mediaTypeModified,omitempty" yaml:"mediaTypeModified,omitempty"`
}

ContentDiff describes the changes between content properties each containing media type objects: https://swagger.io/specification/#media-type-object

func (*ContentDiff) Empty

func (diff *ContentDiff) Empty() bool

Empty indicates whether a change was found in this element

type DetailName

type DetailName string

DetailName is the key type of the summary map

const (
	// Swagger
	PathsDetail        DetailName = "paths"
	SecurityDetail     DetailName = "security"
	ServersDetail      DetailName = "servers"
	TagsDetail         DetailName = "tags"
	ExternalDocsDetail DetailName = "externalDocs"

	// Components
	SchemasDetail         DetailName = "schemas"
	ParametersDetail      DetailName = "parameters"
	HeadersDetail         DetailName = "headers"
	RequestBodiesDetail   DetailName = "requestBodies"
	ResponsesDetail       DetailName = "responses"
	SecuritySchemesDetail DetailName = "securitySchemes"
	ExamplesDetail        DetailName = "examples"
	LinksDetail           DetailName = "links"
	CallbacksDetail       DetailName = "callbacks"

	// Special
	EndpointsDetail DetailName = "endpoints"
)

Detail constants are the keys in the summary map

type Diff

type Diff struct {
	ExtensionsDiff   *ExtensionsDiff           `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	OpenAPIDiff      *ValueDiff                `json:"openAPI,omitempty" yaml:"openAPI,omitempty"`
	InfoDiff         *InfoDiff                 `json:"info,omitempty" yaml:"info,omitempty"`
	PathsDiff        *PathsDiff                `json:"paths,omitempty" yaml:"paths,omitempty"`
	EndpointsDiff    *EndpointsDiff            `json:"endpoints,omitempty" yaml:"endpoints,omitempty"`
	SecurityDiff     *SecurityRequirementsDiff `json:"security,omitempty" yaml:"security,omitempty"`
	ServersDiff      *ServersDiff              `json:"servers,omitempty" yaml:"servers,omitempty"`
	TagsDiff         *TagsDiff                 `json:"tags,omitempty" yaml:"tags,omitempty"`
	ExternalDocsDiff *ExternalDocsDiff         `json:"externalDocs,omitempty" yaml:"externalDocs,omitempty"`

	ComponentsDiff `json:"components,omitempty" yaml:"components,omitempty"`
}

Diff describes the changes between a pair of OpenAPI objects: https://swagger.io/specification/#schema

func Get

func Get(config *Config, s1, s2 *openapi3.T) (*Diff, error)

Get calculates the diff between a pair of OpenAPI objects.

Note that Get expects OpenAPI References (https://swagger.io/docs/specification/using-ref/) to be resolved. References are normally resolved automatically when you load the spec. In other cases you can resolve refs using https://pkg.go.dev/github.com/rjmohammad/kin-openapi/openapi3#Loader.ResolveRefsIn.

Example
loader := openapi3.NewLoader()
loader.IsExternalRefsAllowed = true

s1, err := loader.LoadFromFile("../data/simple1.yaml")
if err != nil {
	fmt.Fprintf(os.Stderr, "failed to load spec with %v", err)
	return
}

s2, err := loader.LoadFromFile("../data/simple2.yaml")
if err != nil {
	fmt.Fprintf(os.Stderr, "failed to load spec with %v", err)
	return
}

diffReport, err := diff.Get(&diff.Config{}, s1, s2)

if err != nil {
	fmt.Fprintf(os.Stderr, "diff failed with %v", err)
	return
}

bytes, err := yaml.Marshal(diffReport)
if err != nil {
	fmt.Fprintf(os.Stderr, "failed to marshal result with %v", err)
	return
}
fmt.Printf("%s\n", bytes)
Output:

paths:
    modified:
        /api/test:
            operations:
                added:
                    - POST
                deleted:
                    - GET
endpoints:
    added:
        - method: POST
          path: /api/test
    deleted:
        - method: GET
          path: /api/test

func (*Diff) Empty

func (diff *Diff) Empty() bool

Empty indicates whether a change was found in this element

func (*Diff) GetSummary

func (diff *Diff) GetSummary() *Summary

GetSummary returns a summary of the changes in the diff

func (*Diff) Patch

func (diff *Diff) Patch(s *openapi3.T) error

Patch applies the patch to a spec

type DiscriminatorDiff

type DiscriminatorDiff struct {
	Added            bool            `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted          bool            `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	ExtensionsDiff   *ExtensionsDiff `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	PropertyNameDiff *ValueDiff      `json:"propertyName,omitempty" yaml:"propertyName,omitempty"`
	MappingDiff      *StringMapDiff  `json:"mapping,omitempty" yaml:"mapping,omitempty"`
}

DiscriminatorDiff describes the changes between a pair of discriminator objects: https://swagger.io/specification/#discriminator-object

func (*DiscriminatorDiff) Empty

func (diff *DiscriminatorDiff) Empty() bool

Empty indicates whether a change was found in this element

type EncodingDiff

type EncodingDiff struct {
	ExtensionsDiff    *ExtensionsDiff `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	ContentTypeDiff   *ValueDiff      `json:"contentType,omitempty" yaml:"contentType,omitempty"`
	HeadersDiff       *HeadersDiff    `json:"headers,omitempty" yaml:"headers,omitempty"`
	StyleDiff         *ValueDiff      `json:"styleDiff,omitempty" yaml:"styleDiff,omitempty"`
	ExplodeDiff       *ValueDiff      `json:"explode,omitempty" yaml:"explode,omitempty"`
	AllowReservedDiff *ValueDiff      `json:"allowReservedDiff,omitempty" yaml:"allowReservedDiff,omitempty"`
}

EncodingDiff describes the changes between a pair of encoding objects: https://swagger.io/specification/#encoding-object

func (*EncodingDiff) Empty

func (diff *EncodingDiff) Empty() bool

Empty indicates whether a change was found in this element

type EncodingsDiff

type EncodingsDiff struct {
	Added    StringList        `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  StringList        `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedEncodings `json:"modified,omitempty" yaml:"modified,omitempty"`
}

EncodingsDiff describes the changes between a pair of sets of encoding objects: https://swagger.io/specification/#encoding-object

func (*EncodingsDiff) Empty

func (diff *EncodingsDiff) Empty() bool

Empty indicates whether a change was found in this element

type Endpoint

type Endpoint struct {
	Method string `json:"method,omitempty" yaml:"method,omitempty"`
	Path   string `json:"path,omitempty" yaml:"path,omitempty"`
}

Endpoint is a combination of an HTTP method and a Path

type Endpoints

type Endpoints []Endpoint

Endpoints is a list of endpoints

func (Endpoints) Len

func (endpoints Endpoints) Len() int

Len implements the sort.Interface interface

func (Endpoints) Less

func (endpoints Endpoints) Less(i, j int) bool

Less implements the sort.Interface interface

func (Endpoints) Swap

func (endpoints Endpoints) Swap(i, j int)

Swap implements the sort.Interface interface

type EndpointsDiff

type EndpointsDiff struct {
	Added    Endpoints         `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  Endpoints         `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedEndpoints `json:"modified,omitempty" yaml:"modified,omitempty"`
}

EndpointsDiff is an alternate, simplified view of PathsDiff. It describes the changes between Endpoints which are a flattened combination of OpenAPI Paths and Operations.

For example, if there's a new path "/test" with method POST then EndpointsDiff will describe this as a new endpoint: POST /test.

Or, if path "/test" was modified to include a new methdod, PUT, then EndpointsDiff will describe this as a new endpoint: PUT /test.

func (*EndpointsDiff) Empty

func (diff *EndpointsDiff) Empty() bool

Empty indicates whether a change was found in this element

type EnumDiff

type EnumDiff struct {
	Added   EnumValues `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted EnumValues `json:"deleted,omitempty" yaml:"deleted,omitempty"`
}

EnumDiff describes the changes between a pair of enums

func (*EnumDiff) Empty

func (enumDiff *EnumDiff) Empty() bool

Empty indicates whether a change was found in this element

func (*EnumDiff) Patch

func (enumDiff *EnumDiff) Patch(enum *[]interface{})

Patch applies the patch to an enum

type EnumValues

type EnumValues []interface{}

EnumValues is a list of enum values

type ExampleDiff

type ExampleDiff struct {
	ExtensionsDiff    *ExtensionsDiff `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	SummaryDiff       *ValueDiff      `json:"summary,omitempty" yaml:"summary,omitempty"`
	DescriptionDiff   *ValueDiff      `json:"description,omitempty" yaml:"description,omitempty"`
	ValueDiff         *ValueDiff      `json:"value,omitempty" yaml:"value,omitempty"`
	ExternalValueDiff *ValueDiff      `json:"externalValue,omitempty" yaml:"externalValue,omitempty"`
}

ExampleDiff describes the changes between a pair of example objects: https://swagger.io/specification/#example-object

func (*ExampleDiff) Empty

func (diff *ExampleDiff) Empty() bool

Empty indicates whether a change was found in this element

type ExamplesDiff

type ExamplesDiff struct {
	Added    StringList       `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  StringList       `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedExamples `json:"modified,omitempty" yaml:"modified,omitempty"`
}

ExamplesDiff describes the changes between a pair of sets of example objects: https://swagger.io/specification/#example-object

func (*ExamplesDiff) Empty

func (diff *ExamplesDiff) Empty() bool

Empty indicates whether a change was found in this element

type ExtensionsDiff

type ExtensionsDiff InterfaceMapDiff

ExtensionsDiff describes the changes between a pair of sets of specification extensions: https://swagger.io/specification/#specification-extensions

func (*ExtensionsDiff) Empty

func (diff *ExtensionsDiff) Empty() bool

Empty indicates whether a change was found in this element

type ExternalDocsDiff

type ExternalDocsDiff struct {
	Added           bool            `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted         bool            `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	ExtensionsDiff  *ExtensionsDiff `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	DescriptionDiff *ValueDiff      `json:"description,omitempty" yaml:"description,omitempty"`
	URLDiff         *ValueDiff      `json:"url,omitempty" yaml:"url,omitempty"`
}

ExternalDocsDiff describes the changes between a pair of external documentation objects: https://swagger.io/specification/#external-documentation-object

func (*ExternalDocsDiff) Empty

func (diff *ExternalDocsDiff) Empty() bool

Empty indicates whether a change was found in this element

type HeaderDiff

type HeaderDiff struct {
	ExtensionsDiff  *ExtensionsDiff `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	DescriptionDiff *ValueDiff      `json:"description,omitempty" yaml:"description,omitempty"`
	DeprecatedDiff  *ValueDiff      `json:"deprecated,omitempty" yaml:"deprecated,omitempty"`
	RequiredDiff    *ValueDiff      `json:"required,omitempty" yaml:"required,omitempty"`
	ExampleDiff     *ValueDiff      `json:"example,omitempty" yaml:"example,omitempty"`
	ExamplesDiff    *ExamplesDiff   `json:"examples,omitempty" yaml:"examples,omitempty"`
	SchemaDiff      *SchemaDiff     `json:"schema,omitempty" yaml:"schema,omitempty"`
	ContentDiff     *ContentDiff    `json:"content,omitempty" yaml:"content,omitempty"`
}

HeaderDiff describes the changes between a pair of header objects: https://swagger.io/specification/#header-object

func (*HeaderDiff) Empty

func (headerDiff *HeaderDiff) Empty() bool

Empty indicates whether a change was found in this element

type HeadersDiff

type HeadersDiff struct {
	Added    StringList      `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  StringList      `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedHeaders `json:"modified,omitempty" yaml:"modified,omitempty"`
}

HeadersDiff describes the changes between a pair of sets of header objects: https://swagger.io/specification/#header-object

func (*HeadersDiff) Empty

func (headersDiff *HeadersDiff) Empty() bool

Empty indicates whether a change was found in this element

type IDiff

type IDiff interface {
	Empty() bool
}

IDiff defines common operations for diff results

type InfoDiff

type InfoDiff struct {
	ExtensionsDiff     *ExtensionsDiff `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	TitleDiff          *ValueDiff      `json:"title,omitempty" yaml:"title,omitempty"`
	DescriptionDiff    *ValueDiff      `json:"description,omitempty" yaml:"description,omitempty"`
	TermsOfServiceDiff *ValueDiff      `json:"termsOfService,omitempty" yaml:"termsOfService,omitempty"`
	ContactDiff        *ContactDiff    `json:"contact,omitempty" yaml:"contact,omitempty"`
	LicenseDiff        *LicenseDiff    `json:"license,omitempty" yaml:"license,omitempty"`
	VersionDiff        *ValueDiff      `json:"version,omitempty" yaml:"version,omitempty"`
}

InfoDiff describes the changes between a pair of info objects: https://swagger.io/specification/#info-object

func (*InfoDiff) Empty

func (diff *InfoDiff) Empty() bool

Empty indicates whether a change was found in this element

type InterfaceMap

type InterfaceMap map[string]interface{}

InterfaceMap is a map of string to interface

type InterfaceMapDiff

type InterfaceMapDiff struct {
	Added    StringList         `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  StringList         `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedInterfaces `json:"modified,omitempty" yaml:"modified,omitempty"`
}

InterfaceMapDiff describes the changes between a pair of InterfaceMap

func (*InterfaceMapDiff) Empty

func (diff *InterfaceMapDiff) Empty() bool

Empty indicates whether a change was found in this element

type LicenseDiff

type LicenseDiff struct {
	Added          bool            `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted        bool            `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	ExtensionsDiff *ExtensionsDiff `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	NameDiff       *ValueDiff      `json:"name,omitempty" yaml:"name,omitempty"`
	URLDiff        *ValueDiff      `json:"url,omitempty" yaml:"url,omitempty"`
}

LicenseDiff describes the changes between a pair of license objects: https://swagger.io/specification/#license-object

func (*LicenseDiff) Empty

func (diff *LicenseDiff) Empty() bool

Empty indicates whether a change was found in this element

type LinkDiff

type LinkDiff struct {
	ExtensionsDiff   *ExtensionsDiff   `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	OperationIDDiff  *ValueDiff        `json:"operationId,omitempty" yaml:"operationId,omitempty"`
	OperationRefDiff *ValueDiff        `json:"operationRef,omitempty" yaml:"operationRef,omitempty"`
	DescriptionDiff  *ValueDiff        `json:"description,omitempty" yaml:"description,omitempty"`
	ParametersDiff   *InterfaceMapDiff `json:"parameters,omitempty" yaml:"parameters,omitempty"`
	ServerDiff       *ServerDiff       `json:"server,omitempty" yaml:"server,omitempty"`
	RequestBodyDiff  *ValueDiff        `json:"requestBody,omitempty" yaml:"requestBody,omitempty"`
}

LinkDiff describes the changes between a pair of link objects: https://swagger.io/specification/#link-object

func (*LinkDiff) Empty

func (diff *LinkDiff) Empty() bool

Empty indicates whether a change was found in this element

type LinksDiff

type LinksDiff struct {
	Added    StringList    `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  StringList    `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedLinks `json:"modified,omitempty" yaml:"modified,omitempty"`
}

LinksDiff describes the changes between a pair of sets of link objects: https://swagger.io/specification/#link-object

func (*LinksDiff) Empty

func (diff *LinksDiff) Empty() bool

Empty indicates whether a change was found in this element

type MediaTypeDiff

type MediaTypeDiff struct {
	ExtensionsDiff *ExtensionsDiff `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	SchemaDiff     *SchemaDiff     `json:"schema,omitempty" yaml:"schema,omitempty"`
	ExampleDiff    *ValueDiff      `json:"example,omitempty" yaml:"example,omitempty"`
	ExamplesDiff   *ExamplesDiff   `json:"examples,omitempty" yaml:"examples,omitempty"`
	EncodingsDiff  *EncodingsDiff  `json:"encoding,omitempty" yaml:"encoding,omitempty"`
}

MediaTypeDiff describes the changes between a pair of media type objects

func (*MediaTypeDiff) Empty

func (diff *MediaTypeDiff) Empty() bool

Empty indicates whether a change was found in this element

type MethodDiff

type MethodDiff struct {
	ExtensionsDiff   *ExtensionsDiff           `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	TagsDiff         *StringsDiff              `json:"tags,omitempty" yaml:"tags,omitempty"`
	SummaryDiff      *ValueDiff                `json:"summary,omitempty" yaml:"summary,omitempty"`
	DescriptionDiff  *ValueDiff                `json:"description,omitempty" yaml:"description,omitempty"`
	OperationIDDiff  *ValueDiff                `json:"operationID,omitempty" yaml:"operationID,omitempty"`
	ParametersDiff   *ParametersDiff           `json:"parameters,omitempty" yaml:"parameters,omitempty"`
	RequestBodyDiff  *RequestBodyDiff          `json:"requestBody,omitempty" yaml:"requestBody,omitempty"`
	ResponsesDiff    *ResponsesDiff            `json:"responses,omitempty" yaml:"responses,omitempty"`
	CallbacksDiff    *CallbacksDiff            `json:"callbacks,omitempty" yaml:"callbacks,omitempty"`
	DeprecatedDiff   *ValueDiff                `json:"deprecated,omitempty" yaml:"deprecated,omitempty"`
	SecurityDiff     *SecurityRequirementsDiff `json:"securityRequirements,omitempty" yaml:"securityRequirements,omitempty"`
	ServersDiff      *ServersDiff              `json:"servers,omitempty" yaml:"servers,omitempty"`
	ExternalDocsDiff *ExternalDocsDiff         `json:"externalDocs,omitempty" yaml:"externalDocs,omitempty"`
}

MethodDiff describes the changes between a pair of operation objects: https://swagger.io/specification/#operation-object

func (*MethodDiff) Empty

func (methodDiff *MethodDiff) Empty() bool

Empty indicates whether a change was found in this element

func (*MethodDiff) Patch

func (methodDiff *MethodDiff) Patch(operation *openapi3.Operation) error

Patch applies the patch to a method

type ModifiedCallbacks

type ModifiedCallbacks map[string]*PathsDiff

ModifiedCallbacks is map of callback names to their respective diffs

type ModifiedEncodings

type ModifiedEncodings map[string]*EncodingDiff

ModifiedEncodings is map of enconding names to their respective diffs

type ModifiedEndpoints

type ModifiedEndpoints map[Endpoint]*MethodDiff

ModifiedEndpoints is a map of endpoints to their respective diffs

func (ModifiedEndpoints) ToEndpoints

func (modifiedEndpoints ModifiedEndpoints) ToEndpoints() Endpoints

ToEndpoints returns the modified endpoints

type ModifiedExamples

type ModifiedExamples map[string]*ExampleDiff

ModifiedExamples is map of enconding names to their respective diffs

type ModifiedHeaders

type ModifiedHeaders map[string]*HeaderDiff

ModifiedHeaders is map of header names to their respective diffs

type ModifiedInterfaces

type ModifiedInterfaces map[string]*ValueDiff

ModifiedInterfaces is map of interface names to their respective diffs

type ModifiedKeys

type ModifiedKeys map[string]*ValueDiff

ModifiedKeys maps keys to their respective diffs

type ModifiedLinks map[string]*LinkDiff

ModifiedLinks is map of link values to their respective diffs

type ModifiedMediaTypes

type ModifiedMediaTypes map[string]*MediaTypeDiff

ModifiedMediaTypes is map of media type names to their respective diffs

type ModifiedOperations

type ModifiedOperations map[string]*MethodDiff

ModifiedOperations is a map of HTTP methods to their respective diffs

type ModifiedPaths

type ModifiedPaths map[string]*PathDiff

ModifiedPaths is a map of paths to their respective diffs

type ModifiedRequestBodies

type ModifiedRequestBodies map[string]*RequestBodyDiff

ModifiedRequestBodies is map of requestBody names to their respective diffs

type ModifiedResponses

type ModifiedResponses map[string]*ResponseDiff

ModifiedResponses is map of response values to their respective diffs

type ModifiedSchemas

type ModifiedSchemas map[string]*SchemaDiff

ModifiedSchemas is map of schema names to their respective diffs

type ModifiedSecurityRequirements

type ModifiedSecurityRequirements map[string]SecurityScopesDiff

ModifiedSecurityRequirements is map of security requirements to their respective diffs

type ModifiedSecuritySchemes

type ModifiedSecuritySchemes map[string]*SecuritySchemeDiff

ModifiedSecuritySchemes is map of security schemes to their respective diffs

type ModifiedServers

type ModifiedServers map[string]*ServerDiff

ModifiedServers is map of server names to their respective diffs

type ModifiedTags

type ModifiedTags map[string]*TagDiff

ModifiedTags is map of tag names to their respective diffs

type ModifiedVariables

type ModifiedVariables map[string]*VariableDiff

ModifiedVariables is map of variable names to their respective diffs

type OAuthFlowDiff

type OAuthFlowDiff struct {
	Added                bool            `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted              bool            `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	ExtensionsDiff       *ExtensionsDiff `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	AuthorizationURLDiff *ValueDiff      `json:"authorizationURL,omitempty" yaml:"authorizationURL,omitempty"`
	TokenURLDiff         *ValueDiff      `json:"tokenURL,omitempty" yaml:"tokenURL,omitempty"`
	RefreshURLDiff       *ValueDiff      `json:"refresh,omitempty" yaml:"refresh,omitempty"`
	ScopesDiff           *StringMapDiff  `json:"scopes,omitempty" yaml:"scopes,omitempty"`
}

OAuthFlowDiff describes the changes between a pair of oauth flow objects: https://swagger.io/specification/#oauth-flow-object

func (*OAuthFlowDiff) Empty

func (diff *OAuthFlowDiff) Empty() bool

Empty indicates whether a change was found in this element

type OAuthFlowsDiff

type OAuthFlowsDiff struct {
	Added                 bool            `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted               bool            `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	ExtensionsDiff        *ExtensionsDiff `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	ImplicitDiff          *OAuthFlowDiff  `json:"implicit,omitempty" yaml:"implicit,omitempty"`
	PasswordDiff          *OAuthFlowDiff  `json:"password,omitempty" yaml:"password,omitempty"`
	ClientCredentialsDiff *OAuthFlowDiff  `json:"clientCredentials,omitempty" yaml:"clientCredentials,omitempty"`
	AuthorizationCodeDiff *OAuthFlowDiff  `json:"authorizationCode,omitempty" yaml:"authorizationCode,omitempty"`
}

OAuthFlowsDiff describes the changes between a pair of oauth flows objects: https://swagger.io/specification/#oauth-flows-object

func (*OAuthFlowsDiff) Empty

func (diff *OAuthFlowsDiff) Empty() bool

Empty indicates whether a change was found in this element

type OperationsDiff

type OperationsDiff struct {
	Added    StringList         `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  StringList         `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedOperations `json:"modified,omitempty" yaml:"modified,omitempty"`
}

OperationsDiff describes the changes between a pair of operation objects (https://swagger.io/specification/#operation-object) of two path item objects

func (*OperationsDiff) Empty

func (operationsDiff *OperationsDiff) Empty() bool

Empty indicates whether a change was found in this element

func (*OperationsDiff) Patch

func (operationsDiff *OperationsDiff) Patch(operations map[string]*openapi3.Operation) error

Patch applies the patch to operations

type ParamDiffByLocation

type ParamDiffByLocation map[string]ParamDiffs

ParamDiffByLocation maps param location (path, query, header or cookie) to param diffs in this location

type ParamDiffs

type ParamDiffs map[string]*ParameterDiff

ParamDiffs is map of parameter names to their respective diffs

type ParamNamesByLocation

type ParamNamesByLocation map[string]StringList

ParamNamesByLocation maps param location (path, query, header or cookie) to the params in this location

type ParameterDiff

type ParameterDiff struct {
	ExtensionsDiff      *ExtensionsDiff `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	DescriptionDiff     *ValueDiff      `json:"description,omitempty" yaml:"description,omitempty"`
	StyleDiff           *ValueDiff      `json:"style,omitempty" yaml:"style,omitempty"`
	ExplodeDiff         *ValueDiff      `json:"explode,omitempty" yaml:"explode,omitempty"`
	AllowEmptyValueDiff *ValueDiff      `json:"allowEmptyValue,omitempty" yaml:"allowEmptyValue,omitempty"`
	AllowReservedDiff   *ValueDiff      `json:"allowReserved,omitempty" yaml:"allowReserved,omitempty"`
	DeprecatedDiff      *ValueDiff      `json:"deprecated,omitempty" yaml:"deprecated,omitempty"`
	RequiredDiff        *ValueDiff      `json:"required,omitempty" yaml:"required,omitempty"`
	SchemaDiff          *SchemaDiff     `json:"schema,omitempty" yaml:"schema,omitempty"`
	ExampleDiff         *ValueDiff      `json:"example,omitempty" yaml:"example,omitempty"`
	ExamplesDiff        *ExamplesDiff   `json:"examples,omitempty" yaml:"examples,omitempty"`
	ContentDiff         *ContentDiff    `json:"content,omitempty" yaml:"content,omitempty"`
}

ParameterDiff describes the changes between a pair of parameter objects: https://swagger.io/specification/#parameter-object

func (*ParameterDiff) Empty

func (diff *ParameterDiff) Empty() bool

Empty indicates whether a change was found in this element

func (*ParameterDiff) Patch

func (diff *ParameterDiff) Patch(parameter *openapi3.Parameter) error

Patch applies the patch to a parameter

type ParametersDiff

type ParametersDiff struct {
	Added    ParamNamesByLocation `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  ParamNamesByLocation `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ParamDiffByLocation  `json:"modified,omitempty" yaml:"modified,omitempty"`
}

ParametersDiff describes the changes between a pair of lists of parameter objects: https://swagger.io/specification/#parameter-object

func (*ParametersDiff) Empty

func (parametersDiff *ParametersDiff) Empty() bool

Empty indicates whether a change was found in this element

func (*ParametersDiff) Patch

func (parametersDiff *ParametersDiff) Patch(parameters openapi3.Parameters) error

Patch applies the patch to parameters

type PathDiff

type PathDiff struct {
	ExtensionsDiff  *ExtensionsDiff `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	RefDiff         *ValueDiff      `json:"ref,omitempty" yaml:"ref,omitempty"`
	SummaryDiff     *ValueDiff      `json:"summary,omitempty" yaml:"summary,omitempty"`
	DescriptionDiff *ValueDiff      `json:"description,omitempty" yaml:"description,omitempty"`
	OperationsDiff  *OperationsDiff `json:"operations,omitempty" yaml:"operations,omitempty"`
	ServersDiff     *ServersDiff    `json:"servers,omitempty" yaml:"servers,omitempty"`
	ParametersDiff  *ParametersDiff `json:"parameters,omitempty" yaml:"parameters,omitempty"`
}

PathDiff describes the changes between a pair of path item objects: https://swagger.io/specification/#path-item-object

func (*PathDiff) Empty

func (pathDiff *PathDiff) Empty() bool

Empty indicates whether a change was found in this element

func (*PathDiff) Patch

func (pathDiff *PathDiff) Patch(pathItem *openapi3.PathItem) error

Patch applies the patch to a path item

type PathsDiff

type PathsDiff struct {
	Added    StringList    `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  StringList    `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedPaths `json:"modified,omitempty" yaml:"modified,omitempty"`
}

PathsDiff describes the changes between a pair of Paths objects: https://swagger.io/specification/#paths-object

func (*PathsDiff) Empty

func (pathsDiff *PathsDiff) Empty() bool

Empty indicates whether a change was found in this element

func (*PathsDiff) Patch

func (pathsDiff *PathsDiff) Patch(paths openapi3.Paths) error

Patch applies the patch to paths

type RequestBodiesDiff

type RequestBodiesDiff struct {
	Added    StringList            `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  StringList            `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedRequestBodies `json:"modified,omitempty" yaml:"modified,omitempty"`
}

RequestBodiesDiff describes the changes between a pair of sets of request body objects: https://swagger.io/specification/#request-body-object

func (*RequestBodiesDiff) Empty

func (requestBodiesDiff *RequestBodiesDiff) Empty() bool

Empty indicates whether a change was found in this element

type RequestBodyDiff

type RequestBodyDiff struct {
	Added           bool            `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted         bool            `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	ExtensionsDiff  *ExtensionsDiff `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	DescriptionDiff *ValueDiff      `json:"description,omitempty" yaml:"description,omitempty"`
	RequiredDiff    *ValueDiff      `json:"required,omitempty" yaml:"required,omitempty"`
	ContentDiff     *ContentDiff    `json:"content,omitempty" yaml:"content,omitempty"`
}

RequestBodyDiff describes the changes between a pair of request body objects: https://swagger.io/specification/#request-body-object

func (*RequestBodyDiff) Empty

func (diff *RequestBodyDiff) Empty() bool

Empty indicates whether a change was found in this element

type RequiredPropertiesDiff

type RequiredPropertiesDiff struct {
	StringsDiff
}

RequiredPropertiesDiff describes the changes between a pair of lists of required properties

func (*RequiredPropertiesDiff) Empty

func (diff *RequiredPropertiesDiff) Empty() bool

Empty indicates whether a change was found in this element

type ResponseDiff

type ResponseDiff struct {
	ExtensionsDiff  *ExtensionsDiff `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	DescriptionDiff *ValueDiff      `json:"description,omitempty" yaml:"description,omitempty"`
	HeadersDiff     *HeadersDiff    `json:"headers,omitempty" yaml:"headers,omitempty"`
	ContentDiff     *ContentDiff    `json:"content,omitempty" yaml:"content,omitempty"`
	LinksDiff       *LinksDiff      `json:"links,omitempty" yaml:"links,omitempty"`
}

ResponseDiff describes the changes between a pair of response objects: https://swagger.io/specification/#response-object

func (*ResponseDiff) Empty

func (diff *ResponseDiff) Empty() bool

Empty indicates whether a change was found in this element

type ResponsesDiff

type ResponsesDiff struct {
	Added    StringList        `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  StringList        `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedResponses `json:"modified,omitempty" yaml:"modified,omitempty"`
}

ResponsesDiff describes the changes between a pair of sets of response objects: https://swagger.io/specification/#responses-object

func (*ResponsesDiff) Empty

func (responsesDiff *ResponsesDiff) Empty() bool

Empty indicates whether a change was found in this element

type SchemaDiff

type SchemaDiff struct {
	SchemaAdded                     bool                    `json:"schemaAdded,omitempty" yaml:"schemaAdded,omitempty"`
	SchemaDeleted                   bool                    `json:"schemaDeleted,omitempty" yaml:"schemaDeleted,omitempty"`
	CircularRefDiff                 bool                    `json:"circularRef,omitempty" yaml:"circularRef,omitempty"`
	ExtensionsDiff                  *ExtensionsDiff         `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	OneOfDiff                       *SchemaListDiff         `json:"oneOf,omitempty" yaml:"oneOf,omitempty"`
	AnyOfDiff                       *SchemaListDiff         `json:"anyOf,omitempty" yaml:"anyOf,omitempty"`
	AllOfDiff                       *SchemaListDiff         `json:"allOf,omitempty" yaml:"allOf,omitempty"`
	NotDiff                         *SchemaDiff             `json:"not,omitempty" yaml:"not,omitempty"`
	TypeDiff                        *ValueDiff              `json:"type,omitempty" yaml:"type,omitempty"`
	TitleDiff                       *ValueDiff              `json:"title,omitempty" yaml:"title,omitempty"`
	FormatDiff                      *ValueDiff              `json:"format,omitempty" yaml:"format,omitempty"`
	DescriptionDiff                 *ValueDiff              `json:"description,omitempty" yaml:"description,omitempty"`
	EnumDiff                        *EnumDiff               `json:"enum,omitempty" yaml:"enum,omitempty"`
	DefaultDiff                     *ValueDiff              `json:"default,omitempty" yaml:"default,omitempty"`
	ExampleDiff                     *ValueDiff              `json:"example,omitempty" yaml:"example,omitempty"`
	ExternalDocsDiff                *ExternalDocsDiff       `json:"externalDocs,omitempty" yaml:"externalDocs,omitempty"`
	AdditionalPropertiesAllowedDiff *ValueDiff              `json:"additionalPropertiesAllowed,omitempty" yaml:"additionalPropertiesAllowed,omitempty"`
	UniqueItemsDiff                 *ValueDiff              `json:"uniqueItems,omitempty" yaml:"uniqueItems,omitempty"`
	ExclusiveMinDiff                *ValueDiff              `json:"exclusiveMin,omitempty" yaml:"exclusiveMin,omitempty"`
	ExclusiveMaxDiff                *ValueDiff              `json:"exclusiveMax,omitempty" yaml:"exclusiveMax,omitempty"`
	NullableDiff                    *ValueDiff              `json:"nullable,omitempty" yaml:"nullable,omitempty"`
	ReadOnlyDiff                    *ValueDiff              `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
	WriteOnlyDiff                   *ValueDiff              `json:"writeOnly,omitempty" yaml:"writeOnly,omitempty"`
	AllowEmptyValueDiff             *ValueDiff              `json:"allowEmptyValue,omitempty" yaml:"allowEmptyValue,omitempty"`
	XMLDiff                         *ValueDiff              `json:"XML,omitempty" yaml:"XML,omitempty"`
	DeprecatedDiff                  *ValueDiff              `json:"deprecated,omitempty" yaml:"deprecated,omitempty"`
	MinDiff                         *ValueDiff              `json:"min,omitempty" yaml:"min,omitempty"`
	MaxDiff                         *ValueDiff              `json:"max,omitempty" yaml:"max,omitempty"`
	MultipleOfDiff                  *ValueDiff              `json:"multipleOf,omitempty" yaml:"multipleOf,omitempty"`
	MinLengthDiff                   *ValueDiff              `json:"minLength,omitempty" yaml:"minLength,omitempty"`
	MaxLengthDiff                   *ValueDiff              `json:"maxLength,omitempty" yaml:"maxLength,omitempty"`
	PatternDiff                     *ValueDiff              `json:"pattern,omitempty" yaml:"pattern,omitempty"`
	MinItemsDiff                    *ValueDiff              `json:"minItems,omitempty" yaml:"minItems,omitempty"`
	MaxItemsDiff                    *ValueDiff              `json:"maxItems,omitempty" yaml:"maxItems,omitempty"`
	ItemsDiff                       *SchemaDiff             `json:"items,omitempty" yaml:"items,omitempty"`
	RequiredDiff                    *RequiredPropertiesDiff `json:"required,omitempty" yaml:"required,omitempty"`
	PropertiesDiff                  *SchemasDiff            `json:"properties,omitempty" yaml:"properties,omitempty"`
	MinPropsDiff                    *ValueDiff              `json:"minProps,omitempty" yaml:"minProps,omitempty"`
	MaxPropsDiff                    *ValueDiff              `json:"maxProps,omitempty" yaml:"maxProps,omitempty"`
	AdditionalPropertiesDiff        *SchemaDiff             `json:"additionalProperties,omitempty" yaml:"additionalProperties,omitempty"`
	DiscriminatorDiff               *DiscriminatorDiff      `json:"discriminatorDiff,omitempty" yaml:"discriminatorDiff,omitempty"`
}

SchemaDiff describes the changes between a pair of schema objects: https://swagger.io/specification/#schema-object

func (*SchemaDiff) Empty

func (diff *SchemaDiff) Empty() bool

Empty indicates whether a change was found in this element

func (*SchemaDiff) Patch

func (diff *SchemaDiff) Patch(schema *openapi3.Schema) error

Patch applies the patch to a schema

type SchemaListDiff

type SchemaListDiff struct {
	Added    int             `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  int             `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedSchemas `json:"modified,omitempty" yaml:"modified,omitempty"`
}

SchemaListDiff describes the changes between a pair of lists of schema objects: https://swagger.io/specification/#schema-object The result is a combination of two diffs: 1. Diff of schemas with a $ref: number of added/deleted schemas; modified=diff of schemas with the same $ref 2. Diff of schemas without a $ref (inline schemas): number of added/deleted schemas; modified=only if exactly one schema was added and one deleted, the Modified field will show a diff between them

func (*SchemaListDiff) Empty

func (diff *SchemaListDiff) Empty() bool

Empty indicates whether a change was found in this element

type SchemasDiff

type SchemasDiff struct {
	Added    StringList      `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  StringList      `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedSchemas `json:"modified,omitempty" yaml:"modified,omitempty"`
}

SchemasDiff describes the changes between a pair of sets of schema objects: https://swagger.io/specification/#schema-object

func (*SchemasDiff) Empty

func (schemasDiff *SchemasDiff) Empty() bool

Empty indicates whether a change was found in this element

type SecurityRequirementsDiff

type SecurityRequirementsDiff struct {
	Added    StringList                   `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  StringList                   `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedSecurityRequirements `json:"modified,omitempty" yaml:"modified,omitempty"`
}

SecurityRequirementsDiff describes the changes between a pair of sets of security requirement objects: https://swagger.io/specification/#security-requirement-object

func (*SecurityRequirementsDiff) Empty

func (diff *SecurityRequirementsDiff) Empty() bool

Empty indicates whether a change was found in this element

type SecuritySchemeDiff

type SecuritySchemeDiff struct {
	ExtensionsDiff       *ExtensionsDiff `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	TypeDiff             *ValueDiff      `json:"type,omitempty" yaml:"type,omitempty"`
	DescriptionDiff      *ValueDiff      `json:"description,omitempty" yaml:"description,omitempty"`
	NameDiff             *ValueDiff      `json:"name,omitempty" yaml:"name,omitempty"`
	InDiff               *ValueDiff      `json:"in,omitempty" yaml:"in,omitempty"`
	SchemeDiff           *ValueDiff      `json:"scheme,omitempty" yaml:"scheme,omitempty"`
	BearerFormatDiff     *ValueDiff      `json:"bearerFormat,omitempty" yaml:"bearerFormat,omitempty"`
	OAuthFlowsDiff       *OAuthFlowsDiff `json:"OAuthFlows,omitempty" yaml:"OAuthFlows,omitempty"`
	OpenIDConnectURLDiff *ValueDiff      `json:"openIDConnectURL,omitempty" yaml:"openIDConnectURL,omitempty"`
}

SecuritySchemeDiff describes the changes between a pair of security scheme objects: https://swagger.io/specification/#security-scheme-object

func (*SecuritySchemeDiff) Empty

func (diff *SecuritySchemeDiff) Empty() bool

Empty indicates whether a change was found in this element

type SecuritySchemesDiff

type SecuritySchemesDiff struct {
	Added    StringList              `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  StringList              `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedSecuritySchemes `json:"modified,omitempty" yaml:"modified,omitempty"`
}

SecuritySchemesDiff describes the changes between a pair of sets of security scheme objects: https://swagger.io/specification/#security-scheme-object

func (*SecuritySchemesDiff) Empty

func (diff *SecuritySchemesDiff) Empty() bool

Empty indicates whether a change was found in this element

type SecurityScopesDiff

type SecurityScopesDiff map[string]*StringsDiff

SecurityScopesDiff is a map of security schemes to their respective scope diffs

type ServerDiff

type ServerDiff struct {
	Added           bool            `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted         bool            `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	ExtensionsDiff  *ExtensionsDiff `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	URLDiff         *ValueDiff      `json:"urlType,omitempty" yaml:"urlType,omitempty"`
	DescriptionDiff *ValueDiff      `json:"description,omitempty" yaml:"description,omitempty"`
	VariablesDiff   *VariablesDiff  `json:"variables,omitempty" yaml:"variables,omitempty"`
}

ServerDiff describes the changes between a pair of server objects: https://swagger.io/specification/#server-object

func (*ServerDiff) Empty

func (diff *ServerDiff) Empty() bool

Empty indicates whether a change was found in this element

type ServersDiff

type ServersDiff struct {
	Added    StringList      `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  StringList      `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedServers `json:"modified,omitempty" yaml:"modified,omitempty"`
}

ServersDiff describes the changes between a pair of sets of encoding objects: https://swagger.io/specification/#server-object

func (*ServersDiff) Empty

func (diff *ServersDiff) Empty() bool

Empty indicates whether a change was found in this element

type StringList

type StringList []string

StringList is a list of string values

func ToStringList

func ToStringList[diff DiffT](m map[string]diff) StringList

func (StringList) Len

func (list StringList) Len() int

Len implements the sort.Interface interface

func (StringList) Less

func (list StringList) Less(i, j int) bool

Less implements the sort.Interface interface

func (StringList) Swap

func (list StringList) Swap(i, j int)

Swap implements the sort.Interface interface

type StringMap

type StringMap map[string]string

StringMap is a map of string to string

type StringMapDiff

type StringMapDiff struct {
	Added    StringList   `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  StringList   `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedKeys `json:"modified,omitempty" yaml:"modified,omitempty"`
}

StringMapDiff describes the changes between a pair of string maps

func (*StringMapDiff) Empty

func (diff *StringMapDiff) Empty() bool

Empty indicates whether a change was found in this element

type StringSet

type StringSet map[string]struct{}

StringSet is a set of string values

func (StringSet) Empty

func (stringSet StringSet) Empty() bool

Empty indicates whether a change was found in this element

type StringsDiff

type StringsDiff struct {
	Added   StringList `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted StringList `json:"deleted,omitempty" yaml:"deleted,omitempty"`
}

StringsDiff describes the changes between a pair of lists of strings

func (*StringsDiff) Empty

func (stringsDiff *StringsDiff) Empty() bool

Empty indicates whether a change was found in this element

type Summary

type Summary struct {
	Diff    bool                           `json:"diff" yaml:"diff"`
	Details map[DetailName]*SummaryDetails `json:"details,omitempty" yaml:"details,omitempty"`
}

Summary summarizes the changes between a pair of OpenAPI specifications

func (*Summary) GetSummaryDetails

func (summary *Summary) GetSummaryDetails(name DetailName) SummaryDetails

GetSummaryDetails returns the summary for a specific part

type SummaryDetails

type SummaryDetails struct {
	Added    int `json:"added,omitempty" yaml:"added,omitempty"`       // number of added items
	Deleted  int `json:"deleted,omitempty" yaml:"deleted,omitempty"`   // number of deleted items
	Modified int `json:"modified,omitempty" yaml:"modified,omitempty"` // number of modified items
}

SummaryDetails summarizes the changes between equivalent parts of the two OpenAPI specifications: paths, schemas, parameters, headers, responses etc.

type TagDiff

type TagDiff struct {
	NameDiff        *ValueDiff `json:"name,omitempty" yaml:"name,omitempty"`
	DescriptionDiff *ValueDiff `json:"description,omitempty" yaml:"description,omitempty"`
}

TagDiff describes the changes between a pair of tag objects: https://swagger.io/specification/#tag-object

func (*TagDiff) Empty

func (diff *TagDiff) Empty() bool

Empty indicates whether a change was found in this element

type TagsDiff

type TagsDiff struct {
	Added    StringList   `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  StringList   `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedTags `json:"modified,omitempty" yaml:"modified,omitempty"`
}

TagsDiff describes the changes between a pair of lists of tag objects: https://swagger.io/specification/#tag-object

func (*TagsDiff) Empty

func (tagsDiff *TagsDiff) Empty() bool

Empty indicates whether a change was found in this element

type ValueDiff

type ValueDiff struct {
	From interface{} `json:"from" yaml:"from"`
	To   interface{} `json:"to" yaml:"to"`
}

ValueDiff describes the changes between a pair of values

func (*ValueDiff) CompareWithDefault

func (diff *ValueDiff) CompareWithDefault(from, to, defaultValue interface{}) bool

CompareWithDefault checks if value was changed from a specific value to another specific value For example: was the value changed from 'true' to 'false'? If the original value or the new value are not defined, the comparison uses the default value

func (*ValueDiff) Empty

func (diff *ValueDiff) Empty() bool

Empty indicates whether a change was found in this element

type VariableDiff

type VariableDiff struct {
	ExtensionsDiff  *ExtensionsDiff `json:"extensions,omitempty" yaml:"extensions,omitempty"`
	EnumDiff        *StringsDiff    `json:"enum,omitempty" yaml:"enum,omitempty"`
	DefaultDiff     *ValueDiff      `json:"default,omitempty" yaml:"default,omitempty"`
	DescriptionDiff *ValueDiff      `json:"description,omitempty" yaml:"description,omitempty"`
}

VariableDiff describes the changes between a pair of server variable objects: https://swagger.io/specification/#server-variable-object

func (*VariableDiff) Empty

func (diff *VariableDiff) Empty() bool

Empty indicates whether a change was found in this element

type VariablesDiff

type VariablesDiff struct {
	Added    StringList        `json:"added,omitempty" yaml:"added,omitempty"`
	Deleted  StringList        `json:"deleted,omitempty" yaml:"deleted,omitempty"`
	Modified ModifiedVariables `json:"modified,omitempty" yaml:"modified,omitempty"`
}

VariablesDiff describes the changes between a pair of sets of server variable objects: https://swagger.io/specification/#server-variable-object

func (*VariablesDiff) Empty

func (diff *VariablesDiff) Empty() bool

Empty indicates whether a change was found in this element

Jump to

Keyboard shortcuts

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