Documentation ¶
Overview ¶
Package diff provides a diff function for OpenAPI Spec 3.
Index ¶
- Constants
- Variables
- func GetPathsDiff(config *Config, s1, s2 []*load.SpecInfo) (*Diff, *OperationsSourcesMap, error)
- func GetWithOperationsSourcesMap(config *Config, s1, s2 *load.SpecInfo) (*Diff, *OperationsSourcesMap, error)
- type CallbacksDiff
- type ComponentsDiff
- type Config
- func (config *Config) IsExcludeDescription() bool
- func (config *Config) IsExcludeEndpoints() bool
- func (config *Config) IsExcludeExamples() bool
- func (config *Config) IsExcludeSummary() bool
- func (config *Config) IsExcludeTitle() bool
- func (config *Config) WithCheckBreaking() *Config
- func (config *Config) WithExcludeElements(excludeElements []string) *Config
- type ContactDiff
- type ContentDiff
- type DetailName
- type Diff
- type DiscriminatorDiff
- type EncodingDiff
- type EncodingsDiff
- type Endpoint
- type Endpoints
- type EndpointsDiff
- type EnumDiff
- type EnumValues
- type ExampleDiff
- type ExamplesDiff
- type ExtensionsDiff
- type ExternalDocsDiff
- type HeaderDiff
- type HeadersDiff
- type IDiff
- type InfoDiff
- type InterfaceMap
- type InterfaceMapDiff
- type LicenseDiff
- type LinkDiff
- type LinksDiff
- type MediaTypeDiff
- type MethodDiff
- type ModifiedCallbacks
- type ModifiedEncodings
- type ModifiedEndpoints
- type ModifiedExamples
- type ModifiedHeaders
- type ModifiedInterfaces
- type ModifiedKeys
- type ModifiedLinks
- type ModifiedMediaTypes
- type ModifiedOperations
- type ModifiedPaths
- type ModifiedRequestBodies
- type ModifiedResponses
- type ModifiedSchemas
- type ModifiedSecurityRequirements
- type ModifiedSecuritySchemes
- type ModifiedServers
- type ModifiedTags
- type ModifiedVariables
- type OAuthFlowDiff
- type OAuthFlowsDiff
- type OperationsDiff
- type OperationsSourcesMap
- type ParamDiffByLocation
- type ParamDiffs
- type ParamNamesByLocation
- type ParameterDiff
- type ParametersDiff
- type ParametersDiffByLocation
- type PathDiff
- type PathParamsMap
- type PathsDiff
- type RequestBodiesDiff
- type RequestBodyDiff
- type RequiredPropertiesDiff
- type ResponseDiff
- type ResponsesDiff
- type SchemaDiff
- type SchemaListDiff
- type SchemasDiff
- type SecurityRequirementsDiff
- type SecuritySchemeDiff
- type SecuritySchemesDiff
- type SecurityScopesDiff
- type ServerDiff
- type ServersDiff
- type StringMapDiff
- type StringsDiff
- type Summary
- type SummaryDetails
- type TagDiff
- type TagsDiff
- type ValueDiff
- type VariableDiff
- type VariablesDiff
Examples ¶
Constants ¶
const ( ExcludeExamplesOption = "examples" ExcludeDescriptionOption = "description" ExcludeEndpointsOption = "endpoints" ExcludeTitleOption = "title" ExcludeSummaryOption = "summary" )
const ( SunsetExtension = "x-sunset" XStabilityLevelExtension = "x-stability-level" XExtensibleEnumExtension = "x-extensible-enum" )
const SinceDateExtension = "x-since-date"
Variables ¶
var (
DefaultSinceDate = civil.Date{Year: 2000, Month: 1, Day: 1}
)
var ExcludeDiffOptions = []string{ ExcludeExamplesOption, ExcludeDescriptionOption, ExcludeEndpointsOption, ExcludeTitleOption, ExcludeSummaryOption, }
var ParamLocations = []string{openapi3.ParameterInPath, openapi3.ParameterInQuery, openapi3.ParameterInHeader, openapi3.ParameterInCookie}
ParamLocations are the four possible locations of parameters: path, query, header or cookie
Functions ¶
func GetPathsDiff ¶
GetPathsDiff calculates the diff between a pair of slice of OpenAPI objects. It is helpful when you want to find diff and check for breaking changes for API divided into multiple files. If there are same paths in different OpenAPI objects, then function uses version of the path with the last x-since-date extension. The x-since-date extension should be set on path or operations level. Extension set on the operations level overrides the value set on path level. If such path doesn't have the x-since-date extension, its value is default "2000-01-01" If there are same paths with the same x-since-date value, then function returns error. The format of the x-since-date is the RFC3339 full-date format
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/getkin/kin-openapi/openapi3#Loader.ResolveRefsIn.
Example ¶
package main import ( "fmt" "os" "strings" "github.com/getkin/kin-openapi/openapi3" "github.com/tufin/oasdiff/checker" "github.com/tufin/oasdiff/diff" "github.com/tufin/oasdiff/load" ) func main() { loader := openapi3.NewLoader() loader.IsExternalRefsAllowed = true s1, err := load.LoadSpecInfo(loader, load.NewSource("../data/openapi-test1.yaml")) if err != nil { fmt.Fprintf(os.Stderr, "failed to load spec with %v", err) return } s2, err := load.LoadSpecInfo(loader, load.NewSource("../data/openapi-test3.yaml")) if err != nil { fmt.Fprintf(os.Stderr, "failed to load spec with %v", err) return } diffConfig := diff.NewConfig().WithCheckBreaking() diffRes, operationsSources, err := diff.GetPathsDiff(diffConfig, []*load.SpecInfo{s1}, []*load.SpecInfo{s2}, ) if err != nil { fmt.Fprintf(os.Stderr, "diff failed with %v", err) return } errs := checker.CheckBackwardCompatibility(checker.GetDefaultChecks(), diffRes, operationsSources) // process configuration file for ignoring errors errs, err = checker.ProcessIgnoredBackwardCompatibilityErrors(checker.ERR, errs, "../data/ignore-err-example.txt", checker.NewDefaultLocalizer()) if err != nil { fmt.Fprintf(os.Stderr, "ignore errors failed with %v", err) return } // process configuration file for ignoring warnings errs, err = checker.ProcessIgnoredBackwardCompatibilityErrors(checker.WARN, errs, "../data/ignore-warn-example.txt", checker.NewDefaultLocalizer()) if err != nil { fmt.Fprintf(os.Stderr, "ignore warnings failed with %v", err) return } // pretty print breaking changes errors if len(errs) > 0 { localizer := checker.NewDefaultLocalizer() count := errs.GetLevelCount() fmt.Print(localizer("total-errors", len(errs), count[checker.ERR], "error", count[checker.WARN], "warning")) for _, bcerr := range errs { fmt.Printf("%s\n\n", strings.TrimRight(bcerr.SingleLineError(localizer, checker.ColorNever), " ")) } } }
Output: 4 breaking changes: 1 error, 3 warning error at ../data/openapi-test3.yaml, in API GET /api/{domain}/{project}/badges/security-score removed the success response with the status '201' [response-success-status-removed]. warning at ../data/openapi-test3.yaml, in API GET /api/{domain}/{project}/badges/security-score deleted the 'cookie' request parameter 'test' [request-parameter-removed]. warning at ../data/openapi-test3.yaml, in API GET /api/{domain}/{project}/badges/security-score deleted the 'header' request parameter 'user' [request-parameter-removed]. warning at ../data/openapi-test3.yaml, in API GET /api/{domain}/{project}/badges/security-score deleted the 'query' request parameter 'filter' [request-parameter-removed].
func GetWithOperationsSourcesMap ¶
func GetWithOperationsSourcesMap(config *Config, s1, s2 *load.SpecInfo) (*Diff, *OperationsSourcesMap, error)
GetWithOperationsSourcesMap calculates the diff between a pair of OpenAPI objects.
Note that GetWithOperationsSourcesMap 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/getkin/kin-openapi/openapi3#Loader.ResolveRefsIn.
Types ¶
type CallbacksDiff ¶
type CallbacksDiff struct { Added utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.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
type Config ¶
type Config struct { IncludeExtensions utils.StringSet PathFilter string FilterExtension string PathPrefixBase string PathPrefixRevision string PathStripPrefixBase string PathStripPrefixRevision string ExcludeElements utils.StringSet IncludePathParams bool }
Config includes various settings to control the diff
func (*Config) IsExcludeDescription ¶
func (*Config) IsExcludeEndpoints ¶
func (*Config) IsExcludeExamples ¶
func (*Config) IsExcludeSummary ¶
func (*Config) IsExcludeTitle ¶
func (*Config) WithCheckBreaking ¶
func (*Config) WithExcludeElements ¶
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 utils.StringList `json:"mediaTypeAdded,omitempty" yaml:"mediaTypeAdded,omitempty"` MediaTypeDeleted utils.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 ¶
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/getkin/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.NewConfig(), 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) GetSummary ¶
GetSummary returns a summary of the changes in the diff
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 utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.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
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 { EnumAdded bool `json:"enumAdded,omitempty" yaml:"enumAdded,omitempty"` EnumDeleted bool `json:"enumDeleted,omitempty" yaml:"enumDeleted,omitempty"` 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
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 utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.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 utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.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 InfoDiff ¶
type InfoDiff 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"` 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
type InterfaceMap ¶
type InterfaceMap map[string]interface{}
InterfaceMap is a map of string to interface
type InterfaceMapDiff ¶
type InterfaceMapDiff struct { Added utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.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
type LinksDiff ¶
type LinksDiff struct { Added utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.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
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 *ParametersDiffByLocation `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"` Base *openapi3.Operation `json:"-" yaml:"-"` Revision *openapi3.Operation `json:"-" yaml:"-"` }
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
type ModifiedCallbacks ¶
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 ¶
ModifiedInterfaces is map of interface names to their respective diffs
func (ModifiedInterfaces) Empty ¶
func (modifiedInterfaces ModifiedInterfaces) Empty() bool
Empty indicates whether a change was found in this element
type ModifiedKeys ¶
ModifiedKeys maps keys to their respective diffs
type ModifiedLinks ¶
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 ¶
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 ¶
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 utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.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
type OperationsSourcesMap ¶
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]utils.StringList
ParamNamesByLocation maps param location (path, query, header or cookie) to the params in this location
type ParameterDiff ¶
type ParameterDiff struct { NameDiff *ValueDiff `json:"name,omitempty" yaml:"name,omitempty"` InDiff *ValueDiff `json:"in,omitempty" yaml:"in,omitempty"` 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"` Base *openapi3.Parameter `json:"-" yaml:"-"` Revision *openapi3.Parameter `json:"-" yaml:"-"` }
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
type ParametersDiff ¶
type ParametersDiff struct { Added utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.StringList `json:"deleted,omitempty" yaml:"deleted,omitempty"` Modified ParamDiffs `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 (diff *ParametersDiff) Empty() bool
Empty indicates whether a change was found in this element
type ParametersDiffByLocation ¶
type ParametersDiffByLocation 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"` }
ParametersDiffByLocation describes the changes, grouped by param location, between a pair of lists of parameter objects: https://swagger.io/specification/#parameter-object
func (*ParametersDiffByLocation) Empty ¶
func (diff *ParametersDiffByLocation) Empty() bool
Empty indicates whether a change was found in this element
func (*ParametersDiffByLocation) Patch ¶
func (diff *ParametersDiffByLocation) 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 *ParametersDiffByLocation `json:"parameters,omitempty" yaml:"parameters,omitempty"` Base *openapi3.PathItem `json:"-" yaml:"-"` Revision *openapi3.PathItem `json:"-" yaml:"-"` }
PathDiff describes the changes between a pair of path item objects: https://swagger.io/specification/#path-item-object
type PathParamsMap ¶
PathParamsMap handles path param renaming for example: person/{personName} -> /person/{name} in such cases, PathParamsMap stores the param mapping: personName -> name
func NewPathParamsMap ¶
func NewPathParamsMap(pathParams1, pathParams2 []string) (PathParamsMap, bool)
func (PathParamsMap) Inverse ¶
func (pathParamsMap PathParamsMap) Inverse() PathParamsMap
type PathsDiff ¶
type PathsDiff struct { Added utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.StringList `json:"deleted,omitempty" yaml:"deleted,omitempty"` Modified ModifiedPaths `json:"modified,omitempty" yaml:"modified,omitempty"` Base *openapi3.Paths `json:"-" yaml:"-"` Revision *openapi3.Paths `json:"-" yaml:"-"` }
PathsDiff describes the changes between a pair of Paths objects: https://swagger.io/specification/#paths-object
type RequestBodiesDiff ¶
type RequestBodiesDiff struct { Added utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.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"` Base *openapi3.Response `json:"-" yaml:"-"` Revision *openapi3.Response `json:"-" yaml:"-"` }
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 utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.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"` Base *openapi3.Schema `json:"-" yaml:"-"` Revision *openapi3.Schema `json:"-" yaml:"-"` }
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
type SchemaListDiff ¶
type SchemaListDiff struct { Added utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.StringList `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: added/deleted schema names; modified=diff of schemas with the same $ref 2. Diff of schemas without a $ref (inline schemas): added/deleted schemas (base/revision + index in the list of 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 utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.StringList `json:"deleted,omitempty" yaml:"deleted,omitempty"` Modified ModifiedSchemas `json:"modified,omitempty" yaml:"modified,omitempty"` Base openapi3.Schemas `json:"-" yaml:"-"` Revision openapi3.Schemas `json:"-" yaml:"-"` }
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 utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.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 utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.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
func (SecurityScopesDiff) Empty ¶
func (diff SecurityScopesDiff) Empty() bool
Empty indicates whether a change was found in this element
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 utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.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 StringMapDiff ¶
type StringMapDiff struct { Added utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.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 StringsDiff ¶
type StringsDiff struct { Added utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.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
type TagsDiff ¶
type TagsDiff struct { Added utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.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
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
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 utils.StringList `json:"added,omitempty" yaml:"added,omitempty"` Deleted utils.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
Source Files ¶
- callbacks_diff.go
- components_diff.go
- config.go
- contact.go
- content_diff.go
- diff.go
- diff_interface.go
- directional_schema_diff_cache.go
- discriminator_diff.go
- doc.go
- encoding_diff.go
- encodings_diff.go
- endpoints.go
- endpoints_diff.go
- enum_diff.go
- example_diff.go
- examples_diff.go
- extensions_diff.go
- external_docs_diff.go
- header_diff.go
- headers_diff.go
- info_diff.go
- interface_map_diff.go
- license_diff.go
- link_diff.go
- links_diff.go
- media_type_diff.go
- method_diff.go
- modified_endpoints.go
- modified_paths.go
- modified_schemas.go
- oauth_flow.go
- oauth_flows.go
- operations_diff.go
- parameter_diff.go
- parameters_diff.go
- parameters_diff_by_location.go
- path_diff.go
- path_items_diff.go
- path_params_map.go
- paths_diff.go
- request_bodies_diff.go
- request_body_diff.go
- required_diff.go
- response_diff.go
- responses_diff.go
- schema_circular_refs.go
- schema_diff.go
- schema_diff_cache.go
- schema_list_diff.go
- schema_ref_map.go
- schemas_diff.go
- security_requirements_diff.go
- security_scheme.go
- security_schemes.go
- security_scopes_diff.go
- server_diff.go
- servers_diff.go
- state.go
- string_list_diff.go
- string_map_diff.go
- summary.go
- tag_diff.go
- tags_diff.go
- value_diff.go
- variable_diff.go
- variables_diff.go