checker

package
v1.30.0 Latest Latest
Warning

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

Go to latest
Published: Aug 30, 2026 License: Apache-2.0 Imports: 27 Imported by: 4

Documentation

Overview

Package checker detects breaking changes and generates changelog messages between OpenAPI specifications.

Overview

The checker analyzes a diff report (from the diff package) and applies a set of rules to detect breaking changes and other notable differences. It supports both path operations and webhooks.

Usage

The main entry point is CheckBackwardCompatibility:

diffReport, _ := diff.Get(config, spec1, spec2)
changes := checker.CheckBackwardCompatibility(checker.NewConfig(checker.GetAllRules()), diffReport, operationsSources)

Configuration

Config controls which checks run and their severity levels:

  • Checks: the list of BackwardCompatibilityCheck functions to run
  • LogLevels: override default severity (ERR, WARN, INFO) for specific rule IDs
  • MinSunsetBetaDays/MinSunsetStableDays: minimum deprecation periods

Use NewConfig with GetAllRules() for all checks, or GetDefaultRules() for breaking changes only.

Severity Levels

Each rule has a default severity level:

  • ERR: breaking change that will break existing clients
  • WARN: potentially breaking change that may affect some clients
  • INFO: non-breaking change for changelog purposes

Rules

Rules are defined in rules.go with metadata including:

  • Direction: whether the rule applies to requests, responses, or neither
  • Area: the OpenAPI object the rule concerns (schema, parameters, requestBody, responses, paths, headers, security, tags, or components)
  • Kind: the aspect of the contract that changed (existence, requiredness, mutability, type, constraints, values, structure, or lifecycle)
  • Action: add, remove, change, generalize, specialize, increase, decrease, set

This metadata enables filtering and categorization of changes.

Webhooks

Webhooks are handled by merging modified webhooks into PathsDiff with a "webhook:" prefix, allowing all path/operation rules to apply without duplication. Added/deleted webhooks are handled separately by WebhookUpdatedCheck since PathsDiff.Added/Deleted require lookup in openapi3.Paths objects that don't contain webhooks.

Localization

Change messages support localization via the localizations package (generated from localizations_src). Messages use format strings with placeholders for dynamic values.

Index

Examples

Constants

View Source
const (
	AddedRequiredRequestBodyId = "request-body-added-required"
	AddedOptionalRequestBodyId = "request-body-added-optional"
)
View Source
const (
	EndpointReactivatedId          = "endpoint-reactivated"
	APIDeprecatedSunsetParseId     = "api-deprecated-sunset-parse"
	APIDeprecatedSunsetMissingId   = "api-deprecated-sunset-missing"
	APIInvalidStabilityLevelId     = "api-invalid-stability-level"
	APISunsetDateTooSmallId        = "api-sunset-date-too-small"
	EndpointDeprecatedId           = "endpoint-deprecated"
	EndpointDeprecatedWithSunsetId = "endpoint-deprecated-with-sunset"
)
View Source
const (
	APIOperationIdRemovedId = "api-operation-id-removed"
	APIOperationIdAddId     = "api-operation-id-added"
)
View Source
const (
	APIPathRemovedWithoutDeprecationId = "api-path-removed-without-deprecation"
	APIPathRemovedWithDeprecationId    = "api-path-removed-with-deprecation"
	APIPathSunsetParseId               = "api-path-sunset-parse"
	APIPathRemovedBeforeSunsetId       = "api-path-removed-before-sunset"
	APIRemovedWithoutDeprecationId     = "api-removed-without-deprecation"
	APIRemovedWithDeprecationId        = "api-removed-with-deprecation"
	APIRemovedBeforeSunsetId           = "api-removed-before-sunset"
)
View Source
const (
	APISecurityRemovedCheckId       = "api-security-removed"
	APISecurityAddedCheckId         = "api-security-added"
	APISecurityScopeAddedId         = "api-security-scope-added"
	APISecurityScopeRemovedId       = "api-security-scope-removed"
	APIGlobalSecurityRemovedCheckId = "api-global-security-removed"
	APIGlobalSecurityAddedCheckId   = "api-global-security-added"
	APIGlobalSecurityScopeAddedId   = "api-global-security-scope-added"
	APIGlobalSecurityScopeRemovedId = "api-global-security-scope-removed"
)
View Source
const (
	APIStabilityDecreasedId = "api-stability-decreased"
	APIStabilityIncreasedId = "api-stability-increased"
)
View Source
const (
	APISunsetDeletedId             = "sunset-deleted"
	APISunsetDateChangedTooSmallId = "api-sunset-date-changed-too-small"
)
View Source
const (
	StabilityDraft  = "draft"
	StabilityAlpha  = "alpha"
	StabilityBeta   = "beta"
	StabilityStable = "stable"
)
View Source
const (
	// Deprecated: use StabilityDraft.
	STABILITY_DRAFT = StabilityDraft
	// Deprecated: use StabilityAlpha.
	STABILITY_ALPHA = StabilityAlpha
	// Deprecated: use StabilityBeta.
	STABILITY_BETA = StabilityBeta
	// Deprecated: use StabilityStable.
	STABILITY_STABLE = StabilityStable
)
View Source
const (
	APITagRemovedId = "api-tag-removed"
	APITagAddedId   = "api-tag-added"
)
View Source
const (
	APISchemasRemovedId = "api-schema-removed"
	ComponentSchemas    = "schemas"
)
View Source
const (
	APIComponentsSecurityRemovedId                  = "api-security-component-removed"
	APIComponentsSecurityAddedId                    = "api-security-component-added"
	APIComponentsSecurityComponentOauthUrlUpdatedId = "api-security-component-oauth-url-changed"
	APIComponentsSecurityTypeUpdatedId              = "api-security-component-type-changed"
	APIComponentsSecurityOauthTokenUrlUpdatedId     = "api-security-component-oauth-token-url-changed"
	APIComponentSecurityOauthScopeAddedId           = "api-security-component-oauth-scope-added"
	APIComponentSecurityOauthScopeRemovedId         = "api-security-component-oauth-scope-removed"
	APIComponentSecurityOauthScopeUpdatedId         = "api-security-component-oauth-scope-changed"
)
View Source
const (
	// Regular schema
	RequestBodyMediaTypeSchemaAddedId    = "request-body-media-type-schema-added"
	RequestBodyMediaTypeSchemaRemovedId  = "request-body-media-type-schema-removed"
	ResponseBodyMediaTypeSchemaAddedId   = "response-body-media-type-schema-added"
	ResponseBodyMediaTypeSchemaRemovedId = "response-body-media-type-schema-removed"

	// OpenAPI 3.2 itemSchema
	RequestBodyMediaTypeItemSchemaAddedId           = "request-body-media-type-item-schema-added"
	RequestBodyMediaTypeItemSchemaRemovedId         = "request-body-media-type-item-schema-removed"
	ResponseBodyMediaTypeItemSchemaAddedId          = "response-body-media-type-item-schema-added"
	ResponseBodyMediaTypeItemSchemaRemovedId        = "response-body-media-type-item-schema-removed"
	ResponseBodyMediaTypeItemSchemaRemovedUntypedId = "response-body-media-type-item-schema-removed-untyped"
)
View Source
const (
	NewRequiredRequestDefaultParameterToExistingPathId = "new-required-request-default-parameter-to-existing-path"
	NewOptionalRequestDefaultParameterToExistingPathId = "new-optional-request-default-parameter-to-existing-path"
)
View Source
const (
	NewRequiredRequestParameterId = "new-required-request-parameter"
	NewOptionalRequestParameterId = "new-optional-request-parameter"
)
View Source
const (
	RequestPropertyStabilityDecreasedId  = "request-property-stability-decreased"
	RequestPropertyStabilityIncreasedId  = "request-property-stability-increased"
	ResponsePropertyStabilityDecreasedId = "response-property-stability-decreased"
	ResponsePropertyStabilityIncreasedId = "response-property-stability-increased"
)
View Source
const (
	RequestBodyMediaTypeAddedId   = "request-body-media-type-added"
	RequestBodyMediaTypeRemovedId = "request-body-media-type-removed"
)
View Source
const (
	RequestBodyBecameOptionalId = "request-body-became-optional"
	RequestBodyBecameRequiredId = "request-body-became-required"
)
View Source
const (
	RequestBodyDiscriminatorAddedId                   = "request-body-discriminator-added"
	RequestBodyDiscriminatorRemovedId                 = "request-body-discriminator-removed"
	RequestBodyDiscriminatorPropertyNameChangedId     = "request-body-discriminator-property-name-changed"
	RequestBodyDiscriminatorMappingAddedId            = "request-body-discriminator-mapping-added"
	RequestBodyDiscriminatorMappingDeletedId          = "request-body-discriminator-mapping-deleted"
	RequestBodyDiscriminatorMappingChangedId          = "request-body-discriminator-mapping-changed"
	RequestPropertyDiscriminatorAddedId               = "request-property-discriminator-added"
	RequestPropertyDiscriminatorRemovedId             = "request-property-discriminator-removed"
	RequestPropertyDiscriminatorPropertyNameChangedId = "request-property-discriminator-property-name-changed"
	RequestPropertyDiscriminatorMappingAddedId        = "request-property-discriminator-mapping-added"
	RequestPropertyDiscriminatorMappingDeletedId      = "request-property-discriminator-mapping-deleted"
	RequestPropertyDiscriminatorMappingChangedId      = "request-property-discriminator-mapping-changed"
)
View Source
const (
	RequestParameterBecameNullableId            = "request-parameter-became-nullable"
	RequestParameterBecameNotNullableId         = "request-parameter-became-not-nullable"
	RequestParameterPropertyBecameNullableId    = "request-parameter-property-became-nullable"
	RequestParameterPropertyBecameNotNullableId = "request-parameter-property-became-not-nullable"
)
View Source
const (
	RequestParameterReactivatedId             = "request-parameter-reactivated"
	RequestParameterDeprecatedSunsetMissingId = "request-parameter-deprecated-sunset-missing"
	RequestParameterSunsetDateTooSmallId      = "request-parameter-sunset-date-too-small"
	RequestParameterDeprecatedId              = "request-parameter-deprecated"
)
View Source
const (
	RequestParameterEnumValueAddedId           = "request-parameter-enum-value-added"
	RequestParameterEnumValueRemovedId         = "request-parameter-enum-value-removed"
	RequestParameterPropertyEnumValueAddedId   = "request-parameter-property-enum-value-added"
	RequestParameterPropertyEnumValueRemovedId = "request-parameter-property-enum-value-removed"
)
View Source
const (
	RequestParameterListOfTypesWidenedId          = "request-parameter-list-of-types-widened"
	RequestParameterListOfTypesNarrowedId         = "request-parameter-list-of-types-narrowed"
	RequestParameterPropertyListOfTypesWidenedId  = "request-parameter-property-list-of-types-widened"
	RequestParameterPropertyListOfTypesNarrowedId = "request-parameter-property-list-of-types-narrowed"
)
View Source
const (
	RequestParameterPatternAddedId       = "request-parameter-pattern-added"
	RequestParameterPatternRemovedId     = "request-parameter-pattern-removed"
	RequestParameterPatternChangedId     = "request-parameter-pattern-changed"
	RequestParameterPatternGeneralizedId = "request-parameter-pattern-generalized"
	PatternChangedCommentId              = "pattern-changed-warn-comment"
	PatternAddedCommentId                = "pattern-added-error-comment"
)
View Source
const (
	RequestParameterRemovedId                = "request-parameter-removed" // this is actually the "without deprecation" case but we leave it as is for backward compatibility
	RequestParameterRemovedWithDeprecationId = "request-parameter-removed-with-deprecation"
	RequestParameterSunsetParseId            = "request-parameter-sunset-parse"
	ParameterRemovedBeforeSunsetId           = "request-parameter-removed-before-sunset"
)
View Source
const (
	RequestParameterBecomeRequiredId = "request-parameter-became-required"
	RequestParameterBecomeOptionalId = "request-parameter-became-optional"
)
View Source
const (
	RequestParameterSunsetDeletedId             = "request-parameter-sunset-deleted"
	RequestParameterSunsetDateChangedTooSmallId = "request-parameter-sunset-date-changed-too-small"
)
View Source
const (
	RequestParameterDefaultValueChangedId = "request-parameter-default-value-changed"
	RequestParameterDefaultValueAddedId   = "request-parameter-default-value-added"
	RequestParameterDefaultValueRemovedId = "request-parameter-default-value-removed"
)
View Source
const (
	RequestParameterMaxItemsIncreasedId = "request-parameter-max-items-increased"
	RequestParameterMaxItemsDecreasedId = "request-parameter-max-items-decreased"
)
View Source
const (
	RequestParameterMaxLengthDecreasedId = "request-parameter-max-length-decreased"
	RequestParameterMaxLengthIncreasedId = "request-parameter-max-length-increased"
)
View Source
const (
	RequestParameterMaxSetId          = "request-parameter-max-set"
	RequestParameterExclusiveMaxSetId = "request-parameter-exclusive-max-set"
)
View Source
const (
	RequestParameterMaxDecreasedId          = "request-parameter-max-decreased"
	RequestParameterMaxIncreasedId          = "request-parameter-max-increased"
	RequestParameterExclusiveMaxDecreasedId = "request-parameter-exclusive-max-decreased"
	RequestParameterExclusiveMaxIncreasedId = "request-parameter-exclusive-max-increased"
)
View Source
const (
	RequestParameterMinItemsIncreasedId = "request-parameter-min-items-increased"
	RequestParameterMinItemsDecreasedId = "request-parameter-min-items-decreased"
)
View Source
const (
	RequestParameterMinLengthIncreasedId = "request-parameter-min-length-increased"
	RequestParameterMinLengthDecreasedId = "request-parameter-min-length-decreased"
)
View Source
const (
	RequestParameterMinSetId          = "request-parameter-min-set"
	RequestParameterExclusiveMinSetId = "request-parameter-exclusive-min-set"
)
View Source
const (
	RequestParameterMinIncreasedId          = "request-parameter-min-increased"
	RequestParameterMinDecreasedId          = "request-parameter-min-decreased"
	RequestParameterExclusiveMinIncreasedId = "request-parameter-exclusive-min-increased"
	RequestParameterExclusiveMinDecreasedId = "request-parameter-exclusive-min-decreased"
)
View Source
const (
	RequestParameterTypeChangedId                 = "request-parameter-type-changed"
	RequestParameterTypeGeneralizedId             = "request-parameter-type-generalized"
	RequestParameterPropertyTypeChangedId         = "request-parameter-property-type-changed"
	RequestParameterPropertyTypeGeneralizedId     = "request-parameter-property-type-generalized"
	RequestParameterPropertyTypeSpecializedId     = "request-parameter-property-type-specialized"
	RequestParameterPropertyTypeChangedCommentId  = "request-parameter-property-type-changed-warn-comment"
	RequestParameterTypeFormExplodeArrayCommentId = "request-parameter-type-form-explode-array-comment"
)
View Source
const (
	RequestBodyAllOfAddedId                     = "request-body-all-of-added"
	RequestBodyAllOfRemovedId                   = "request-body-all-of-removed"
	RequestPropertyAllOfAddedId                 = "request-property-all-of-added"
	RequestPropertyAllOfRemovedId               = "request-property-all-of-removed"
	RequestBodyAllOfAddedAnnotationOnlyId       = "request-body-all-of-added-annotation-only"
	RequestBodyAllOfRemovedAnnotationOnlyId     = "request-body-all-of-removed-annotation-only"
	RequestPropertyAllOfAddedAnnotationOnlyId   = "request-property-all-of-added-annotation-only"
	RequestPropertyAllOfRemovedAnnotationOnlyId = "request-property-all-of-removed-annotation-only"
)
View Source
const (
	RequestBodyAnyOfAddedId       = "request-body-any-of-added"
	RequestBodyAnyOfRemovedId     = "request-body-any-of-removed"
	RequestPropertyAnyOfAddedId   = "request-property-any-of-added"
	RequestPropertyAnyOfRemovedId = "request-property-any-of-removed"
)
View Source
const (
	RequestBodyBecomeNotNullableId     = "request-body-became-not-nullable"
	RequestBodyBecomeNullableId        = "request-body-became-nullable"
	RequestPropertyBecomeNotNullableId = "request-property-became-not-nullable"
	RequestPropertyBecomeNullableId    = "request-property-became-nullable"
)
View Source
const (
	RequestBodyConstAddedId       = "request-body-const-added"
	RequestBodyConstRemovedId     = "request-body-const-removed"
	RequestBodyConstChangedId     = "request-body-const-changed"
	RequestPropertyConstAddedId   = "request-property-const-added"
	RequestPropertyConstRemovedId = "request-property-const-removed"
	RequestPropertyConstChangedId = "request-property-const-changed"
)
View Source
const (
	RequestBodyContainsAddedId            = "request-body-contains-added"
	RequestBodyContainsRemovedId          = "request-body-contains-removed"
	RequestBodyMinContainsIncreasedId     = "request-body-min-contains-increased"
	RequestBodyMinContainsDecreasedId     = "request-body-min-contains-decreased"
	RequestBodyMaxContainsIncreasedId     = "request-body-max-contains-increased"
	RequestBodyMaxContainsDecreasedId     = "request-body-max-contains-decreased"
	RequestPropertyContainsAddedId        = "request-property-contains-added"
	RequestPropertyContainsRemovedId      = "request-property-contains-removed"
	RequestPropertyMinContainsIncreasedId = "request-property-min-contains-increased"
	RequestPropertyMinContainsDecreasedId = "request-property-min-contains-decreased"
	RequestPropertyMaxContainsIncreasedId = "request-property-max-contains-increased"
	RequestPropertyMaxContainsDecreasedId = "request-property-max-contains-decreased"
)
View Source
const (
	RequestBodyContentSchemaAddedId      = "request-body-content-schema-added"
	RequestBodyContentSchemaRemovedId    = "request-body-content-schema-removed"
	RequestBodyContentMediaTypeChangedId = "request-body-content-media-type-changed"
	RequestBodyContentEncodingChangedId  = "request-body-content-encoding-changed"

	RequestPropertyContentSchemaAddedId      = "request-property-content-schema-added"
	RequestPropertyContentSchemaRemovedId    = "request-property-content-schema-removed"
	RequestPropertyContentMediaTypeChangedId = "request-property-content-media-type-changed"
	RequestPropertyContentEncodingChangedId  = "request-property-content-encoding-changed"
)
View Source
const (
	RequestBodyDefaultValueAddedId       = "request-body-default-value-added"
	RequestBodyDefaultValueRemovedId     = "request-body-default-value-removed"
	RequestBodyDefaultValueChangedId     = "request-body-default-value-changed"
	RequestPropertyDefaultValueAddedId   = "request-property-default-value-added"
	RequestPropertyDefaultValueRemovedId = "request-property-default-value-removed"
	RequestPropertyDefaultValueChangedId = "request-property-default-value-changed"
)
View Source
const (
	RequestBodyDependentRequiredAddedId       = "request-body-dependent-required-added"
	RequestBodyDependentRequiredRemovedId     = "request-body-dependent-required-removed"
	RequestBodyDependentRequiredChangedId     = "request-body-dependent-required-changed"
	RequestPropertyDependentRequiredAddedId   = "request-property-dependent-required-added"
	RequestPropertyDependentRequiredRemovedId = "request-property-dependent-required-removed"
	RequestPropertyDependentRequiredChangedId = "request-property-dependent-required-changed"
)
View Source
const (
	RequestBodyDependentSchemaAddedId       = "request-body-dependent-schema-added"
	RequestBodyDependentSchemaRemovedId     = "request-body-dependent-schema-removed"
	RequestPropertyDependentSchemaAddedId   = "request-property-dependent-schema-added"
	RequestPropertyDependentSchemaRemovedId = "request-property-dependent-schema-removed"
)
View Source
const (
	RequestPropertyDeprecatedId              = "request-property-deprecated"
	RequestPropertyDeprecatedWithSunsetId    = "request-property-deprecated-with-sunset"
	RequestPropertyDeprecatedSunsetMissingId = "request-property-deprecated-sunset-missing"
	RequestPropertyDeprecatedInvalidId       = "request-property-deprecated-sunset-invalid"
	RequestPropertyReactivatedId             = "request-property-reactivated"
	RequestPropertySunsetDateTooSmallId      = "request-property-sunset-date-too-small"
)
View Source
const (
	RequestPropertyEnumValueRemovedId         = "request-property-enum-value-removed"
	RequestReadOnlyPropertyEnumValueRemovedId = "request-read-only-property-enum-value-removed"
	RequestPropertyEnumValueAddedId           = "request-property-enum-value-added"
)
View Source
const (
	RequestBodyIfAddedId       = "request-body-if-added"
	RequestBodyIfRemovedId     = "request-body-if-removed"
	RequestBodyThenAddedId     = "request-body-then-added"
	RequestBodyThenRemovedId   = "request-body-then-removed"
	RequestBodyElseAddedId     = "request-body-else-added"
	RequestBodyElseRemovedId   = "request-body-else-removed"
	RequestPropertyIfAddedId   = "request-property-if-added"
	RequestPropertyIfRemovedId = "request-property-if-removed"

	RequestPropertyThenAddedId   = "request-property-then-added"
	RequestPropertyThenRemovedId = "request-property-then-removed"
	RequestPropertyElseAddedId   = "request-property-else-added"
	RequestPropertyElseRemovedId = "request-property-else-removed"
)
View Source
const (
	RequestBodyListOfTypesWidenedId      = "request-body-list-of-types-widened"
	RequestBodyListOfTypesNarrowedId     = "request-body-list-of-types-narrowed"
	RequestPropertyListOfTypesWidenedId  = "request-property-list-of-types-widened"
	RequestPropertyListOfTypesNarrowedId = "request-property-list-of-types-narrowed"
)
View Source
const (
	RequestBodyMaxItemsSetId     = "request-body-max-items-set"
	RequestPropertyMaxItemsSetId = "request-property-max-items-set"
)
View Source
const (
	RequestBodyMaxItemsDecreasedId             = "request-body-max-items-decreased"
	RequestBodyMaxItemsIncreasedId             = "request-body-max-items-increased"
	RequestPropertyMaxItemsDecreasedId         = "request-property-max-items-decreased"
	RequestReadOnlyPropertyMaxItemsDecreasedId = "request-read-only-property-max-items-decreased"
	RequestPropertyMaxItemsIncreasedId         = "request-property-max-items-increased"
)
View Source
const (
	RequestBodyMaxLengthSetId     = "request-body-max-length-set"
	RequestPropertyMaxLengthSetId = "request-property-max-length-set"
)
View Source
const (
	RequestBodyMaxLengthDecreasedId             = "request-body-max-length-decreased"
	RequestBodyMaxLengthIncreasedId             = "request-body-max-length-increased"
	RequestPropertyMaxLengthDecreasedId         = "request-property-max-length-decreased"
	RequestReadOnlyPropertyMaxLengthDecreasedId = "request-read-only-property-max-length-decreased"
	RequestPropertyMaxLengthIncreasedId         = "request-property-max-length-increased"
)
View Source
const (
	RequestBodyMaxPropertiesSetId     = "request-body-max-properties-set"
	RequestPropertyMaxPropertiesSetId = "request-property-max-properties-set"
)
View Source
const (
	RequestBodyMaxPropertiesDecreasedId             = "request-body-max-properties-decreased"
	RequestBodyMaxPropertiesIncreasedId             = "request-body-max-properties-increased"
	RequestPropertyMaxPropertiesDecreasedId         = "request-property-max-properties-decreased"
	RequestReadOnlyPropertyMaxPropertiesDecreasedId = "request-read-only-property-max-properties-decreased"
	RequestPropertyMaxPropertiesIncreasedId         = "request-property-max-properties-increased"
)
View Source
const (
	RequestBodyMaxSetId              = "request-body-max-set"
	RequestPropertyMaxSetId          = "request-property-max-set"
	RequestBodyExclusiveMaxSetId     = "request-body-exclusive-max-set"
	RequestPropertyExclusiveMaxSetId = "request-property-exclusive-max-set"
)
View Source
const (
	RequestBodyMaxDecreasedId                      = "request-body-max-decreased"
	RequestBodyMaxIncreasedId                      = "request-body-max-increased"
	RequestPropertyMaxDecreasedId                  = "request-property-max-decreased"
	RequestReadOnlyPropertyMaxDecreasedId          = "request-read-only-property-max-decreased"
	RequestPropertyMaxIncreasedId                  = "request-property-max-increased"
	RequestBodyExclusiveMaxDecreasedId             = "request-body-exclusive-max-decreased"
	RequestBodyExclusiveMaxIncreasedId             = "request-body-exclusive-max-increased"
	RequestPropertyExclusiveMaxDecreasedId         = "request-property-exclusive-max-decreased"
	RequestReadOnlyPropertyExclusiveMaxDecreasedId = "request-read-only-property-exclusive-max-decreased"
	RequestPropertyExclusiveMaxIncreasedId         = "request-property-exclusive-max-increased"
)
View Source
const (
	RequestBodyMinItemsIncreasedId     = "request-body-min-items-increased"
	RequestPropertyMinItemsIncreasedId = "request-property-min-items-increased"
)
View Source
const (
	RequestBodyMinItemsSetId     = "request-body-min-items-set"
	RequestPropertyMinItemsSetId = "request-property-min-items-set"
)
View Source
const (
	RequestBodyMinLengthIncreasedId     = "request-body-min-length-increased"
	RequestBodyMinLengthDecreasedId     = "request-body-min-length-decreased"
	RequestPropertyMinLengthIncreasedId = "request-property-min-length-increased"
	RequestPropertyMinLengthDecreasedId = "request-property-min-length-decreased"
)
View Source
const (
	RequestBodyMinPropertiesIncreasedId     = "request-body-min-properties-increased"
	RequestPropertyMinPropertiesIncreasedId = "request-property-min-properties-increased"
)
View Source
const (
	RequestBodyMinSetId              = "request-body-min-set"
	RequestPropertyMinSetId          = "request-property-min-set"
	RequestBodyExclusiveMinSetId     = "request-body-exclusive-min-set"
	RequestPropertyExclusiveMinSetId = "request-property-exclusive-min-set"
)
View Source
const (
	RequestBodyMinIncreasedId                      = "request-body-min-increased"
	RequestBodyMinDecreasedId                      = "request-body-min-decreased"
	RequestPropertyMinIncreasedId                  = "request-property-min-increased"
	RequestReadOnlyPropertyMinIncreasedId          = "request-read-only-property-min-increased"
	RequestPropertyMinDecreasedId                  = "request-property-min-decreased"
	RequestBodyExclusiveMinIncreasedId             = "request-body-exclusive-min-increased"
	RequestBodyExclusiveMinDecreasedId             = "request-body-exclusive-min-decreased"
	RequestPropertyExclusiveMinIncreasedId         = "request-property-exclusive-min-increased"
	RequestReadOnlyPropertyExclusiveMinIncreasedId = "request-read-only-property-exclusive-min-increased"
	RequestPropertyExclusiveMinDecreasedId         = "request-property-exclusive-min-decreased"
)
View Source
const (
	RequestBodyMultipleOfSetId             = "request-body-multiple-of-set"
	RequestPropertyMultipleOfSetId         = "request-property-multiple-of-set"
	RequestBodyMultipleOfUnsetId           = "request-body-multiple-of-unset"
	RequestPropertyMultipleOfUnsetId       = "request-property-multiple-of-unset"
	RequestBodyMultipleOfChangedId         = "request-body-multiple-of-changed"
	RequestPropertyMultipleOfChangedId     = "request-property-multiple-of-changed"
	RequestBodyMultipleOfGeneralizedId     = "request-body-multiple-of-generalized"
	RequestPropertyMultipleOfGeneralizedId = "request-property-multiple-of-generalized"
)
View Source
const (
	RequestBodyOneOfAddedId       = "request-body-one-of-added"
	RequestBodyOneOfRemovedId     = "request-body-one-of-removed"
	RequestPropertyOneOfAddedId   = "request-property-one-of-added"
	RequestPropertyOneOfRemovedId = "request-property-one-of-removed"
)
View Source
const (
	RequestPropertyPatternRemovedId     = "request-property-pattern-removed"
	RequestPropertyPatternAddedId       = "request-property-pattern-added"
	RequestPropertyPatternChangedId     = "request-property-pattern-changed"
	RequestPropertyPatternGeneralizedId = "request-property-pattern-generalized"
)
View Source
const (
	RequestBodyPatternPropertyAddedId       = "request-body-pattern-property-added"
	RequestBodyPatternPropertyRemovedId     = "request-body-pattern-property-removed"
	RequestPropertyPatternPropertyAddedId   = "request-property-pattern-property-added"
	RequestPropertyPatternPropertyRemovedId = "request-property-pattern-property-removed"
)
View Source
const (
	RequestBodyPrefixItemsAddedId       = "request-body-prefix-items-added"
	RequestBodyPrefixItemsRemovedId     = "request-body-prefix-items-removed"
	RequestPropertyPrefixItemsAddedId   = "request-property-prefix-items-added"
	RequestPropertyPrefixItemsRemovedId = "request-property-prefix-items-removed"

	// Shared by the request and response prefixItems checks. A position no
	// prefixItems entry covers is governed by items, so an added entry may
	// constrain a position that was open or open one that items closed, and
	// the two schemas cannot be ordered. The direction is undetermined.
	PrefixItemsChangedCommentId = "prefix-items-changed-warning-comment"
)
View Source
const (
	RequestBodyPropertyNamesAddedId       = "request-body-property-names-added"
	RequestBodyPropertyNamesRemovedId     = "request-body-property-names-removed"
	RequestPropertyPropertyNamesAddedId   = "request-property-property-names-added"
	RequestPropertyPropertyNamesRemovedId = "request-property-property-names-removed"
)
View Source
const (
	RequestPropertyBecameRequiredId            = "request-property-became-required"
	RequestPropertyBecameRequiredWithDefaultId = "request-property-became-required-with-default"
	RequestPropertyBecameOptionalId            = "request-property-became-optional"
)
View Source
const (
	RequestBodyTypeGeneralizedId     = "request-body-type-generalized"
	RequestBodyTypeChangedId         = "request-body-type-changed"
	RequestBodyTypeCompatibleId      = "request-body-type-compatible"
	RequestPropertyTypeGeneralizedId = "request-property-type-generalized"
	RequestPropertyTypeChangedId     = "request-property-type-changed"
	RequestPropertyTypeCompatibleId  = "request-property-type-compatible"
)
View Source
const (
	RequestBodyUnevaluatedItemsAddedId        = "request-body-unevaluated-items-added"
	RequestBodyUnevaluatedItemsRemovedId      = "request-body-unevaluated-items-removed"
	RequestBodyUnevaluatedPropertiesAddedId   = "request-body-unevaluated-properties-added"
	RequestBodyUnevaluatedPropertiesRemovedId = "request-body-unevaluated-properties-removed"

	RequestPropertyUnevaluatedItemsAddedId        = "request-property-unevaluated-items-added"
	RequestPropertyUnevaluatedItemsRemovedId      = "request-property-unevaluated-items-removed"
	RequestPropertyUnevaluatedPropertiesAddedId   = "request-property-unevaluated-properties-added"
	RequestPropertyUnevaluatedPropertiesRemovedId = "request-property-unevaluated-properties-removed"
)
View Source
const (
	RequestBodyUniqueItemsSetId       = "request-body-unique-items-set"
	RequestPropertyUniqueItemsSetId   = "request-property-unique-items-set"
	RequestBodyUniqueItemsUnsetId     = "request-body-unique-items-unset"
	RequestPropertyUniqueItemsUnsetId = "request-property-unique-items-unset"
)
View Source
const (
	RequestPropertyRemovedId                = "request-property-removed"
	NewRequiredRequestPropertyId            = "new-required-request-property"
	NewRequiredRequestPropertyWithDefaultId = "new-required-request-property-with-default"
	NewOptionalRequestPropertyId            = "new-optional-request-property"
	RequestBodyWrappedInOneOfId             = "request-body-wrapped-in-one-of"

	RequestBodyWrappedInOneOfOriginalPreservedId = "request-body-wrapped-in-one-of-original-preserved"

	// Shared by the request and response wrapped-in-one-of-original-preserved
	// checks. The spec does not say whether the alternatives overlap, and
	// oneOf rejects a payload matching more than one, so a payload that was
	// valid before may or may not still be accepted.
	WrappedInOneOfOriginalPreservedCommentId = "wrapped-in-one-of-original-preserved-warning-comment"

	// Shared by the two "required request property with a default" checks. A
	// request that omits a required property is invalid under the new contract
	// whether or not the property has a default: the default is a server-side
	// fallback, not a rule that makes the omitted property valid. So these are
	// breaking (ERR), same as the no-default siblings, with this comment
	// explaining why the default does not make them safe.
	RequiredRequestPropertyWithDefaultCommentId = "required-request-property-with-default-error-comment"
)
View Source
const (
	RequestOptionalPropertyBecameNonWriteOnlyCheckId = "request-optional-property-became-not-write-only"
	RequestOptionalPropertyBecameWriteOnlyCheckId    = "request-optional-property-became-write-only"
	RequestOptionalPropertyBecameReadOnlyCheckId     = "request-optional-property-became-read-only"
	RequestOptionalPropertyBecameNonReadOnlyCheckId  = "request-optional-property-became-not-read-only"
	RequestRequiredPropertyBecameNonWriteOnlyCheckId = "request-required-property-became-not-write-only"
	RequestRequiredPropertyBecameWriteOnlyCheckId    = "request-required-property-became-write-only"
	RequestRequiredPropertyBecameReadOnlyCheckId     = "request-required-property-became-read-only"
	RequestRequiredPropertyBecameNonReadOnlyCheckId  = "request-required-property-became-not-read-only"
)
View Source
const (
	ResponseBodyDiscriminatorAddedId                   = "response-body-discriminator-added"
	ResponseBodyDiscriminatorRemovedId                 = "response-body-discriminator-removed"
	ResponseBodyDiscriminatorPropertyNameChangedId     = "response-body-discriminator-property-name-changed"
	ResponseBodyDiscriminatorMappingAddedId            = "response-body-discriminator-mapping-added"
	ResponseBodyDiscriminatorMappingDeletedId          = "response-body-discriminator-mapping-deleted"
	ResponseBodyDiscriminatorMappingChangedId          = "response-body-discriminator-mapping-changed"
	ResponsePropertyDiscriminatorAddedId               = "response-property-discriminator-added"
	ResponsePropertyDiscriminatorRemovedId             = "response-property-discriminator-removed"
	ResponsePropertyDiscriminatorPropertyNameChangedId = "response-property-discriminator-property-name-changed"
	ResponsePropertyDiscriminatorMappingAddedId        = "response-property-discriminator-mapping-added"
	ResponsePropertyDiscriminatorMappingDeletedId      = "response-property-discriminator-mapping-deleted"
	ResponsePropertyDiscriminatorMappingChangedId      = "response-property-discriminator-mapping-changed"
)
View Source
const (
	ResponseHeaderBecameNullableId    = "response-header-became-nullable"
	ResponseHeaderBecameNotNullableId = "response-header-became-not-nullable"
)
View Source
const (
	RequiredResponseHeaderRemovedId = "required-response-header-removed"
	OptionalResponseHeaderRemovedId = "optional-response-header-removed"
)
View Source
const (
	ResponseHeaderTypeChangedId     = "response-header-type-changed"
	ResponseHeaderTypeGeneralizedId = "response-header-type-generalized"
	ResponseHeaderTypeSpecializedId = "response-header-type-specialized"
	ResponseHeaderTypeCompatibleId  = "response-header-type-compatible"

	// ResponseHeaderTypeCompatibleCommentId explains the surprising "compatible"
	// verdict for a header, where the shared media-type comment (which talks about
	// XML) does not apply: a header value is text on the wire regardless.
	ResponseHeaderTypeCompatibleCommentId = "response-header-type-compatible-comment"
)
View Source
const (
	ResponseMediaTypeNameChangedId     = "response-media-type-name-changed"
	ResponseMediaTypeNameGeneralizedId = "response-media-type-name-generalized"
	ResponseMediaTypeNameSpecializedId = "response-media-type-name-specialized"

	// A media type parameter appearing, disappearing or changing value all
	// reach this id, and the check cannot tell what the parameter
	// constrains, so it cannot order the two media types. Splitting the id
	// by which of the three happened is oasdiff#1186.
	ResponseMediaTypeNameChangedCommentId = "response-media-type-name-changed-warning-comment"
)
View Source
const (
	ResponseMediaTypeRemovedId = "response-media-type-removed"
	ResponseMediaTypeAddedId   = "response-media-type-added"
)
View Source
const (
	ResponseOptionalPropertyRemovedId          = "response-optional-property-removed"
	ResponseOptionalWriteOnlyPropertyRemovedId = "response-optional-write-only-property-removed"
	ResponseOptionalPropertyAddedId            = "response-optional-property-added"
	ResponseOptionalWriteOnlyPropertyAddedId   = "response-optional-write-only-property-added"
)
View Source
const (
	ResponseOptionalPropertyBecameNonWriteOnlyId = "response-optional-property-became-not-write-only"
	ResponseOptionalPropertyBecameWriteOnlyId    = "response-optional-property-became-write-only"
	ResponseOptionalPropertyBecameReadOnlyId     = "response-optional-property-became-read-only"
	ResponseOptionalPropertyBecameNonReadOnlyId  = "response-optional-property-became-not-read-only"
)
View Source
const (
	ResponsePropertyPatternAddedId   = "response-property-pattern-added"
	ResponsePropertyPatternChangedId = "response-property-pattern-changed"
	ResponsePropertyPatternRemovedId = "response-property-pattern-removed"
)
View Source
const (
	ResponseBodyAllOfAddedId                     = "response-body-all-of-added"
	ResponseBodyAllOfRemovedId                   = "response-body-all-of-removed"
	ResponsePropertyAllOfAddedId                 = "response-property-all-of-added"
	ResponsePropertyAllOfRemovedId               = "response-property-all-of-removed"
	ResponseBodyAllOfAddedAnnotationOnlyId       = "response-body-all-of-added-annotation-only"
	ResponseBodyAllOfRemovedAnnotationOnlyId     = "response-body-all-of-removed-annotation-only"
	ResponsePropertyAllOfAddedAnnotationOnlyId   = "response-property-all-of-added-annotation-only"
	ResponsePropertyAllOfRemovedAnnotationOnlyId = "response-property-all-of-removed-annotation-only"
)
View Source
const (
	ResponseBodyAnyOfAddedId       = "response-body-any-of-added"
	ResponseBodyAnyOfRemovedId     = "response-body-any-of-removed"
	ResponsePropertyAnyOfAddedId   = "response-property-any-of-added"
	ResponsePropertyAnyOfRemovedId = "response-property-any-of-removed"
)
View Source
const (
	ResponsePropertyBecameNullableId    = "response-property-became-nullable"
	ResponseBodyBecameNullableId        = "response-body-became-nullable"
	ResponsePropertyBecameNotNullableId = "response-property-became-not-nullable"
	ResponseBodyBecameNotNullableId     = "response-body-became-not-nullable"
)
View Source
const (
	ResponsePropertyBecameOptionalId          = "response-property-became-optional"
	ResponseWriteOnlyPropertyBecameOptionalId = "response-write-only-property-became-optional"
)
View Source
const (
	ResponsePropertyBecameRequiredId          = "response-property-became-required"
	ResponseWriteOnlyPropertyBecameRequiredId = "response-write-only-property-became-required"
)
View Source
const (
	ResponseBodyConstAddedId       = "response-body-const-added"
	ResponseBodyConstRemovedId     = "response-body-const-removed"
	ResponseBodyConstChangedId     = "response-body-const-changed"
	ResponsePropertyConstAddedId   = "response-property-const-added"
	ResponsePropertyConstRemovedId = "response-property-const-removed"
	ResponsePropertyConstChangedId = "response-property-const-changed"
)
View Source
const (
	ResponseBodyContainsAddedId            = "response-body-contains-added"
	ResponseBodyContainsRemovedId          = "response-body-contains-removed"
	ResponseBodyMinContainsIncreasedId     = "response-body-min-contains-increased"
	ResponseBodyMinContainsDecreasedId     = "response-body-min-contains-decreased"
	ResponseBodyMaxContainsIncreasedId     = "response-body-max-contains-increased"
	ResponseBodyMaxContainsDecreasedId     = "response-body-max-contains-decreased"
	ResponsePropertyContainsAddedId        = "response-property-contains-added"
	ResponsePropertyContainsRemovedId      = "response-property-contains-removed"
	ResponsePropertyMinContainsIncreasedId = "response-property-min-contains-increased"
	ResponsePropertyMinContainsDecreasedId = "response-property-min-contains-decreased"
	ResponsePropertyMaxContainsIncreasedId = "response-property-max-contains-increased"
	ResponsePropertyMaxContainsDecreasedId = "response-property-max-contains-decreased"
)
View Source
const (
	ResponseBodyContentSchemaAddedId      = "response-body-content-schema-added"
	ResponseBodyContentSchemaRemovedId    = "response-body-content-schema-removed"
	ResponseBodyContentMediaTypeChangedId = "response-body-content-media-type-changed"
	ResponseBodyContentEncodingChangedId  = "response-body-content-encoding-changed"

	ResponsePropertyContentSchemaAddedId      = "response-property-content-schema-added"
	ResponsePropertyContentSchemaRemovedId    = "response-property-content-schema-removed"
	ResponsePropertyContentMediaTypeChangedId = "response-property-content-media-type-changed"
	ResponsePropertyContentEncodingChangedId  = "response-property-content-encoding-changed"
)
View Source
const (
	ResponseBodyDefaultValueAddedId       = "response-body-default-value-added"
	ResponseBodyDefaultValueRemovedId     = "response-body-default-value-removed"
	ResponseBodyDefaultValueChangedId     = "response-body-default-value-changed"
	ResponsePropertyDefaultValueAddedId   = "response-property-default-value-added"
	ResponsePropertyDefaultValueRemovedId = "response-property-default-value-removed"
	ResponsePropertyDefaultValueChangedId = "response-property-default-value-changed"
)
View Source
const (
	ResponseBodyDependentRequiredAddedId       = "response-body-dependent-required-added"
	ResponseBodyDependentRequiredRemovedId     = "response-body-dependent-required-removed"
	ResponseBodyDependentRequiredChangedId     = "response-body-dependent-required-changed"
	ResponsePropertyDependentRequiredAddedId   = "response-property-dependent-required-added"
	ResponsePropertyDependentRequiredRemovedId = "response-property-dependent-required-removed"
	ResponsePropertyDependentRequiredChangedId = "response-property-dependent-required-changed"
)
View Source
const (
	ResponseBodyDependentSchemaAddedId       = "response-body-dependent-schema-added"
	ResponseBodyDependentSchemaRemovedId     = "response-body-dependent-schema-removed"
	ResponsePropertyDependentSchemaAddedId   = "response-property-dependent-schema-added"
	ResponsePropertyDependentSchemaRemovedId = "response-property-dependent-schema-removed"
)
View Source
const (
	ResponsePropertyDeprecatedId              = "response-property-deprecated"
	ResponsePropertyDeprecatedWithSunsetId    = "response-property-deprecated-with-sunset"
	ResponsePropertyDeprecatedSunsetMissingId = "response-property-deprecated-sunset-missing"
	ResponsePropertyDeprecatedInvalidId       = "response-property-deprecated-sunset-invalid"
	ResponsePropertyReactivatedId             = "response-property-reactivated"
	ResponsePropertySunsetDateTooSmallId      = "response-property-sunset-date-too-small"
)
View Source
const (
	ResponsePropertyEnumValueAddedId          = "response-property-enum-value-added"
	ResponseWriteOnlyPropertyEnumValueAddedId = "response-write-only-property-enum-value-added"
)
View Source
const (
	ResponseBodyIfAddedId       = "response-body-if-added"
	ResponseBodyIfRemovedId     = "response-body-if-removed"
	ResponseBodyThenAddedId     = "response-body-then-added"
	ResponseBodyThenRemovedId   = "response-body-then-removed"
	ResponseBodyElseAddedId     = "response-body-else-added"
	ResponseBodyElseRemovedId   = "response-body-else-removed"
	ResponsePropertyIfAddedId   = "response-property-if-added"
	ResponsePropertyIfRemovedId = "response-property-if-removed"

	ResponsePropertyThenAddedId   = "response-property-then-added"
	ResponsePropertyThenRemovedId = "response-property-then-removed"
	ResponsePropertyElseAddedId   = "response-property-else-added"
	ResponsePropertyElseRemovedId = "response-property-else-removed"
)
View Source
const (
	ResponseBodyListOfTypesWidenedId      = "response-body-list-of-types-widened"
	ResponseBodyListOfTypesNarrowedId     = "response-body-list-of-types-narrowed"
	ResponsePropertyListOfTypesWidenedId  = "response-property-list-of-types-widened"
	ResponsePropertyListOfTypesNarrowedId = "response-property-list-of-types-narrowed"
)
View Source
const (
	ResponseBodyMaxIncreasedId              = "response-body-max-increased"
	ResponsePropertyMaxIncreasedId          = "response-property-max-increased"
	ResponseBodyExclusiveMaxIncreasedId     = "response-body-exclusive-max-increased"
	ResponsePropertyExclusiveMaxIncreasedId = "response-property-exclusive-max-increased"
)
View Source
const (
	ResponseBodyMaxItemsIncreasedId     = "response-body-max-items-increased"
	ResponsePropertyMaxItemsIncreasedId = "response-property-max-items-increased"
)
View Source
const (
	ResponseBodyMaxLengthIncreasedId     = "response-body-max-length-increased"
	ResponsePropertyMaxLengthIncreasedId = "response-property-max-length-increased"
)
View Source
const (
	ResponseBodyMaxLengthUnsetId     = "response-body-max-length-unset"
	ResponsePropertyMaxLengthUnsetId = "response-property-max-length-unset"
)
View Source
const (
	ResponseBodyMaxPropertiesIncreasedId     = "response-body-max-properties-increased"
	ResponsePropertyMaxPropertiesIncreasedId = "response-property-max-properties-increased"
)
View Source
const (
	ResponseBodyMinDecreasedId              = "response-body-min-decreased"
	ResponsePropertyMinDecreasedId          = "response-property-min-decreased"
	ResponseBodyExclusiveMinDecreasedId     = "response-body-exclusive-min-decreased"
	ResponsePropertyExclusiveMinDecreasedId = "response-property-exclusive-min-decreased"
)
View Source
const (
	ResponseBodyMinItemsDecreasedId     = "response-body-min-items-decreased"
	ResponsePropertyMinItemsDecreasedId = "response-property-min-items-decreased"
)
View Source
const (
	ResponseBodyMinItemsUnsetId     = "response-body-min-items-unset"
	ResponsePropertyMinItemsUnsetId = "response-property-min-items-unset"
)
View Source
const (
	ResponseBodyMinLengthDecreasedId     = "response-body-min-length-decreased"
	ResponsePropertyMinLengthDecreasedId = "response-property-min-length-decreased"
)
View Source
const (
	ResponseBodyMinPropertiesDecreasedId     = "response-body-min-properties-decreased"
	ResponsePropertyMinPropertiesDecreasedId = "response-property-min-properties-decreased"
)
View Source
const (
	ResponseBodyMultipleOfUnsetId           = "response-body-multiple-of-unset"
	ResponsePropertyMultipleOfUnsetId       = "response-property-multiple-of-unset"
	ResponseBodyMultipleOfChangedId         = "response-body-multiple-of-changed"
	ResponsePropertyMultipleOfChangedId     = "response-property-multiple-of-changed"
	ResponseBodyMultipleOfSpecializedId     = "response-body-multiple-of-specialized"
	ResponsePropertyMultipleOfSpecializedId = "response-property-multiple-of-specialized"
)
View Source
const (
	ResponseBodyOneOfAddedId       = "response-body-one-of-added"
	ResponseBodyOneOfRemovedId     = "response-body-one-of-removed"
	ResponsePropertyOneOfAddedId   = "response-property-one-of-added"
	ResponsePropertyOneOfRemovedId = "response-property-one-of-removed"
)
View Source
const (
	ResponseBodyPatternPropertyAddedId       = "response-body-pattern-property-added"
	ResponseBodyPatternPropertyRemovedId     = "response-body-pattern-property-removed"
	ResponsePropertyPatternPropertyAddedId   = "response-property-pattern-property-added"
	ResponsePropertyPatternPropertyRemovedId = "response-property-pattern-property-removed"
)
View Source
const (
	ResponseBodyPrefixItemsAddedId       = "response-body-prefix-items-added"
	ResponseBodyPrefixItemsRemovedId     = "response-body-prefix-items-removed"
	ResponsePropertyPrefixItemsAddedId   = "response-property-prefix-items-added"
	ResponsePropertyPrefixItemsRemovedId = "response-property-prefix-items-removed"
)
View Source
const (
	ResponseBodyPropertyNamesAddedId       = "response-body-property-names-added"
	ResponseBodyPropertyNamesRemovedId     = "response-body-property-names-removed"
	ResponsePropertyPropertyNamesAddedId   = "response-property-property-names-added"
	ResponsePropertyPropertyNamesRemovedId = "response-property-property-names-removed"
)
View Source
const (
	ResponseBodyTypeChangedId         = "response-body-type-changed"
	ResponseBodyTypeGeneralizedId     = "response-body-type-generalized"
	ResponseBodyTypeSpecializedId     = "response-body-type-specialized"
	ResponseBodyTypeCompatibleId      = "response-body-type-compatible"
	ResponsePropertyTypeChangedId     = "response-property-type-changed"
	ResponsePropertyTypeGeneralizedId = "response-property-type-generalized"
	ResponsePropertyTypeSpecializedId = "response-property-type-specialized"
	ResponsePropertyTypeCompatibleId  = "response-property-type-compatible"
)
View Source
const (
	ResponseBodyUnevaluatedItemsAddedId        = "response-body-unevaluated-items-added"
	ResponseBodyUnevaluatedItemsRemovedId      = "response-body-unevaluated-items-removed"
	ResponseBodyUnevaluatedPropertiesAddedId   = "response-body-unevaluated-properties-added"
	ResponseBodyUnevaluatedPropertiesRemovedId = "response-body-unevaluated-properties-removed"

	ResponsePropertyUnevaluatedItemsAddedId        = "response-property-unevaluated-items-added"
	ResponsePropertyUnevaluatedItemsRemovedId      = "response-property-unevaluated-items-removed"
	ResponsePropertyUnevaluatedPropertiesAddedId   = "response-property-unevaluated-properties-added"
	ResponsePropertyUnevaluatedPropertiesRemovedId = "response-property-unevaluated-properties-removed"
)
View Source
const (
	ResponseBodyUniqueItemsUnsetId     = "response-body-unique-items-unset"
	ResponsePropertyUniqueItemsUnsetId = "response-property-unique-items-unset"
)
View Source
const (
	ResponseRequiredPropertyRemovedId          = "response-required-property-removed"
	ResponseRequiredWriteOnlyPropertyRemovedId = "response-required-write-only-property-removed"
	ResponseRequiredPropertyAddedId            = "response-required-property-added"
	ResponseRequiredWriteOnlyPropertyAddedId   = "response-required-write-only-property-added"
	ResponseBodyWrappedInOneOfId               = "response-body-wrapped-in-one-of"

	ResponseBodyWrappedInOneOfOriginalPreservedId = "response-body-wrapped-in-one-of-original-preserved"
)
View Source
const (
	ResponseRequiredPropertyBecameNonWriteOnlyId = "response-required-property-became-not-write-only"
	ResponseRequiredPropertyBecameWriteOnlyId    = "response-required-property-became-write-only"
	ResponseRequiredPropertyBecameReadOnlyId     = "response-required-property-became-read-only"
	ResponseRequiredPropertyBecameNonReadOnlyId  = "response-required-property-became-not-read-only"
)
View Source
const (
	ResponseSuccessStatusRemovedId    = "response-success-status-removed"
	ResponseNonSuccessStatusRemovedId = "response-non-success-status-removed"
	ResponseSuccessStatusAddedId      = "response-success-status-added"
	ResponseNonSuccessStatusAddedId   = "response-non-success-status-added"
)
View Source
const (
	RequestBodySchemaBecameFalseId        = "request-body-schema-became-false"
	RequestBodySchemaBecameNotFalseId     = "request-body-schema-became-not-false"
	RequestPropertySchemaBecameFalseId    = "request-property-schema-became-false"
	RequestPropertySchemaBecameNotFalseId = "request-property-schema-became-not-false"

	ResponseBodySchemaBecameFalseId        = "response-body-schema-became-false"
	ResponseBodySchemaBecameNotFalseId     = "response-body-schema-became-not-false"
	ResponsePropertySchemaBecameFalseId    = "response-property-schema-became-false"
	ResponsePropertySchemaBecameNotFalseId = "response-property-schema-became-not-false"

	RequestParameterSchemaBecameFalseId            = "request-parameter-schema-became-false"
	RequestParameterSchemaBecameNotFalseId         = "request-parameter-schema-became-not-false"
	RequestParameterPropertySchemaBecameFalseId    = "request-parameter-property-schema-became-false"
	RequestParameterPropertySchemaBecameNotFalseId = "request-parameter-property-schema-became-not-false"

	ResponseHeaderSchemaBecameFalseId    = "response-header-schema-became-false"
	ResponseHeaderSchemaBecameNotFalseId = "response-header-schema-became-not-false"

	// A property schema narrowing to nothing is reported at the level the
	// law derives for a response narrowing, with this comment naming what
	// the reader likely wants to know instead.
	ResponsePropertySchemaBecameFalseCommentId = "response-property-schema-became-false-comment"
)
View Source
const (
	WebhookAddedId    = "webhook-added"
	WebhookRemovedId  = "webhook-removed"
	ComponentWebhooks = "webhooks"
)
View Source
const (
	ColorAlways  = colorize.ColorAlways
	ColorNever   = colorize.ColorNever
	ColorAuto    = colorize.ColorAuto
	ColorInvalid = colorize.ColorInvalid
)
View Source
const (
	DefaultBetaDeprecationDays   = uint(0)
	DefaultStableDeprecationDays = uint(0)
)
View Source
const (
	ERR     = rules.ERR
	WARN    = rules.WARN
	INFO    = rules.INFO
	NONE    = rules.NONE
	INVALID = rules.INVALID
)
View Source
const (
	DirectionRequest  = rules.DirectionRequest
	DirectionResponse = rules.DirectionResponse
	DirectionNone     = rules.DirectionNone

	AreaSchema      = rules.AreaSchema
	AreaParameters  = rules.AreaParameters
	AreaRequestBody = rules.AreaRequestBody
	AreaResponses   = rules.AreaResponses
	AreaPaths       = rules.AreaPaths
	AreaHeaders     = rules.AreaHeaders
	AreaSecurity    = rules.AreaSecurity
	AreaTags        = rules.AreaTags
	AreaComponents  = rules.AreaComponents
	AreaInfo        = rules.AreaInfo
	AreaServers     = rules.AreaServers
	AreaNone        = rules.AreaNone

	KindExistence    = rules.KindExistence
	KindRequiredness = rules.KindRequiredness
	KindMutability   = rules.KindMutability
	KindType         = rules.KindType
	KindConstraints  = rules.KindConstraints
	KindValues       = rules.KindValues
	KindStructure    = rules.KindStructure
	KindLifecycle    = rules.KindLifecycle
	KindNone         = rules.KindNone

	EffectNone         = rules.EffectNone
	EffectWidens       = rules.EffectWidens
	EffectNarrows      = rules.EffectNarrows
	EffectIncomparable = rules.EffectIncomparable
	EffectUnknown      = rules.EffectUnknown
	EffectViolation    = rules.EffectViolation

	GuardReadOnly   = rules.GuardReadOnly
	GuardWriteOnly  = rules.GuardWriteOnly
	GuardSanctioned = rules.GuardSanctioned
	GuardNonSuccess = rules.GuardNonSuccess
	GuardHasDefault = rules.GuardHasDefault
	GuardNegotiated = rules.GuardNegotiated
)
View Source
const (
	APIVersionNotBumpedId      = "api-version-not-bumped"
	APIVersionDecreasedId      = "api-version-decreased"
	APIMajorVersionNotBumpedId = "api-major-version-not-bumped"
)

The versioning policy is one statement: a breaking change requires a major version increase. These are the three ways to violate it.

View Source
const ComponentSecuritySchemes = "securitySchemes"
View Source
const DefaultStabilityLevel = StabilityLevelBeta

DefaultStabilityLevel is the default stability level when none is specified. This matches the documented CLI default of "beta".

View Source
const (
	EndpointAddedId = "endpoint-added"
)
View Source
const (
	NewRequestPathParameterId = "new-request-path-parameter"
)
View Source
const (
	NewRequiredRequestHeaderPropertyId = "new-required-request-header-property"
)
View Source
const (
	RequestBodyBecameEnumId = "request-body-became-enum"
)
View Source
const (
	RequestBodyEnumValueRemovedId = "request-body-enum-value-removed"
)
View Source
const (
	RequestBodyRemovedId = "request-body-removed"
)
View Source
const (
	RequestHeaderPropertyBecameEnumId = "request-header-property-became-enum"
)
View Source
const (
	RequestHeaderPropertyBecameRequiredId = "request-header-property-became-required"
)
View Source
const (
	RequestParameterBecameEnumId = "request-parameter-became-enum"
)
View Source
const (
	RequestParameterMaxLengthSetId = "request-parameter-max-length-set"
)
View Source
const (
	RequestParameterMinItemsSetId = "request-parameter-min-items-set"
)
View Source
const (
	RequestParameterXExtensibleEnumValueRemovedId = "request-parameter-x-extensible-enum-value-removed"
)
View Source
const (
	RequestPropertyBecameEnumId = "request-property-became-enum"
)
View Source
const (
	RequestPropertyXExtensibleEnumValueRemovedId = "request-property-x-extensible-enum-value-removed"
)
View Source
const (
	ResponseHeaderAddedId = "response-header-added"
)
View Source
const (
	ResponseHeaderBecameOptionalId = "response-header-became-optional"
)
View Source
const (
	ResponseMediaTypeEnumValueRemovedId = "response-mediatype-enum-value-removed"
)
View Source
const (
	ResponsePropertyEnumValueRemovedId = "response-property-enum-value-removed"
)
View Source
const TypeChangeLooselyTypedCommentId = "type-change-loosely-typed-comment"

TypeChangeLooselyTypedCommentId explains the surprising "compatible" verdict: a type change that is safe only because the media type isn't strongly typed.

Variables

This section is empty.

Functions

func CompareChanges added in v1.11.10

func CompareChanges(a, b Change) int

func ComputeFingerprint added in v1.23.0

func ComputeFingerprint(id, operation, path string, args []any) string

ComputeFingerprint produces a short, stable identifier for a change or finding. It is used to match the same logical item across spec versions (carry-forward of review state in oasdiff-service) and to look up review records at view time. The changelog and validate commands share it so a downstream tool can match findings produced by either.

func Fingerprint added in v1.23.0

func Fingerprint(c Change) string

Fingerprint is ComputeFingerprint for a Change, reading its id, operation, path, and args. Findings are not Changes, so they call ComputeFingerprint directly.

func GetAllRuleIds

func GetAllRuleIds() []string

func GetCheckLevels

func GetCheckLevels() map[string]Level

GetCheckLevels gets levels for all backward compatibility checks

func GetSeverityLevels

func GetSeverityLevels(source io.Reader) (map[string]Level, error)

GetSeverityLevels reads severity levels from a reader and returns a map of severity levels

func GetSupportedColorValues

func GetSupportedColorValues() []string

func GetSupportedStabilityLevels added in v1.20.0

func GetSupportedStabilityLevels() []string

GetSupportedStabilityLevels returns the list of valid stability level strings.

func IsColorEnabled added in v1.16.0

func IsColorEnabled(colorMode ColorMode) bool

IsColorEnabled lets oasdiff packages outside checker (validate, future subcommands) gate their own color logic on the same auto-detect + override convention.

func IsDecreased

func IsDecreased(from any, to any) bool

func IsIncreased

func IsIncreased(from any, to any) bool

func ParameterSources added in v1.12.0

func ParameterSources(operationsSources *diff.OperationsSourcesMap, operationItem *diff.MethodDiff, paramDiff *diff.ParameterDiff) (*Source, *Source)

parameterSources returns source locations from parameter Origins. Falls back to operation-level sources when parameter origin data is unavailable.

func ProcessSeverityLevels

func ProcessSeverityLevels(file string) (map[string]Level, error)

ProcessSeverityLevels reads a file with severity levels and returns a map of severity levels

func ResponseSources added in v1.12.0

func ResponseSources(operationsSources *diff.OperationsSourcesMap, operationItem *diff.MethodDiff, responseDiff *diff.ResponseDiff) (*Source, *Source)

responseSources returns source locations from response Origins. Falls back to operation-level sources when response origin data is unavailable.

func SchemaAddedItemSources added in v1.12.0

func SchemaAddedItemSources(operationsSources *diff.OperationsSourcesMap, operationItem *diff.MethodDiff, schemaDiff *diff.SchemaDiff, field string, value string) (*Source, *Source)

SchemaAddedItemSources returns source locations for an added sequence item. Base source is nil, revision source points to the specific added item.

func SchemaDeletedItemSources added in v1.12.0

func SchemaDeletedItemSources(operationsSources *diff.OperationsSourcesMap, operationItem *diff.MethodDiff, schemaDiff *diff.SchemaDiff, field string, value string) (*Source, *Source)

SchemaDeletedItemSources returns source locations for a deleted sequence item. Base source points to the specific deleted item, revision source is nil.

func SchemaFieldSources added in v1.12.0

func SchemaFieldSources(operationsSources *diff.OperationsSourcesMap, operationItem *diff.MethodDiff, schemaDiff *diff.SchemaDiff, field string) (*Source, *Source)

schemaFieldSources returns source locations from a specific field within schema Origins. Falls back to schema-level sources when the field is not found in origin data.

func SchemaSources added in v1.12.0

func SchemaSources(operationsSources *diff.OperationsSourcesMap, operationItem *diff.MethodDiff, schemaDiff *diff.SchemaDiff) (*Source, *Source)

schemaSources returns source locations from schema Origins. Falls back to operation-level sources when schema origin data is unavailable.

func SetPipedOutput

func SetPipedOutput(val *bool) *bool

SetPipedOutput overrides piped-output auto-detection; see colorize.

func SubschemaSources added in v1.15.0

func SubschemaSources(operationsSources *diff.OperationsSourcesMap, operationItem *diff.MethodDiff, schemaDiff *diff.SchemaDiff, field string, baseIndex, revisionIndex int) (*Source, *Source)

SubschemaSources returns source locations for a specific subschema within an allOf/oneOf/anyOf array. For added subschemas, baseIndex should be -1; for deleted subschemas, revisionIndex should be -1.

Types

type ApiChange

type ApiChange struct {
	CommonChange

	Id          string
	Args        []any
	Comment     string
	Disclaimers []Disclaimer
	Details     string
	Level       Level
	Operation   string
	OperationId string
	Path        string
	Source      *load.Source

	// DEPRECATED: Will be removed after migration to BaseSource/RevisionSource
	SourceFile      string
	SourceLine      int
	SourceLineEnd   int
	SourceColumn    int
	SourceColumnEnd int
	// contains filtered or unexported fields
}

ApiChange represnts a change in the Paths Section of an OpenAPI spec

func NewApiChange

func NewApiChange(id string, config *Config, args []any, comment string, operationsSources *diff.OperationsSourcesMap, operation *openapi3.Operation, method, path string) ApiChange

NewApiChange creates a new ApiChange

func (ApiChange) GetArgs

func (c ApiChange) GetArgs() []any

func (ApiChange) GetComment

func (c ApiChange) GetComment(l Localizer) string

func (ApiChange) GetDisclaimers added in v1.29.0

func (c ApiChange) GetDisclaimers() []Disclaimer

func (ApiChange) GetId

func (c ApiChange) GetId() string

func (ApiChange) GetLevel

func (c ApiChange) GetLevel() Level

func (ApiChange) GetOperation

func (c ApiChange) GetOperation() string

func (ApiChange) GetOperationId

func (c ApiChange) GetOperationId() string

func (ApiChange) GetPath

func (c ApiChange) GetPath() string

func (ApiChange) GetSection

func (c ApiChange) GetSection() string

func (ApiChange) GetSource

func (c ApiChange) GetSource() string

func (ApiChange) GetSourceColumn

func (c ApiChange) GetSourceColumn() int

func (ApiChange) GetSourceColumnEnd

func (c ApiChange) GetSourceColumnEnd() int

func (ApiChange) GetSourceFile

func (c ApiChange) GetSourceFile() string

func (ApiChange) GetSourceLine

func (c ApiChange) GetSourceLine() int

func (ApiChange) GetSourceLineEnd

func (c ApiChange) GetSourceLineEnd() int

func (ApiChange) GetText

func (c ApiChange) GetText(l Localizer) string

func (ApiChange) GetUncolorizedText

func (c ApiChange) GetUncolorizedText(l Localizer) string

func (ApiChange) IsBreaking

func (c ApiChange) IsBreaking() bool

func (ApiChange) MatchIgnore

func (c ApiChange) MatchIgnore(ignorePath, ignoreLine string, l Localizer) bool

func (ApiChange) MultiLineError

func (c ApiChange) MultiLineError(l Localizer, colorMode ColorMode) string

func (ApiChange) SingleLineError

func (c ApiChange) SingleLineError(l Localizer, colorMode ColorMode) string

func (ApiChange) WithDetails added in v1.11.9

func (c ApiChange) WithDetails(details string) ApiChange

WithDetails returns a copy of the ApiChange with Details set

func (ApiChange) WithDisclaimers added in v1.29.0

func (c ApiChange) WithDisclaimers(disclaimers []Disclaimer) ApiChange

WithDisclaimers is additive and drops duplicates: a change can gather the same condition from more than one place.

func (ApiChange) WithSchema added in v1.23.0

func (a ApiChange) WithSchema(schemaDiff *diff.SchemaDiff) ApiChange

WithSchema returns a copy of the ApiChange with claimed set: the change is claimed when a recognized transition at the given schema node (the node the change was computed from) claims the change's rule (see transition_claims.go). The node itself is not retained.

func (ApiChange) WithSources added in v1.12.0

func (a ApiChange) WithSources(baseSource, revisionSource *Source) ApiChange

WithSources returns a copy of the ApiChange with BaseSource and RevisionSource populated

type Area added in v1.18.3

type Area = rules.Area

The rule model (taxonomy, Effect, Guards, Level, location claims) is defined in checker/rules; the aliases below keep the checker package's public surface unchanged. This package binds the model to the check implementations via Handler.

type BackwardCompatibilityCheck

type BackwardCompatibilityCheck func(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

BackwardCompatibilityCheck, or a check, is a function that receives a diff report and returns a list of changes

type BackwardCompatibilityChecks

type BackwardCompatibilityChecks []BackwardCompatibilityCheck

func GetAllChecks

func GetAllChecks() BackwardCompatibilityChecks

GetAllChecks gets all backward compatibility checks

type BackwardCompatibilityRule

type BackwardCompatibilityRule struct {
	rules.Rule
	Handler BackwardCompatibilityCheck
}

BackwardCompatibilityRule binds the rule metadata to the check function that implements it.

type BackwardCompatibilityRules

type BackwardCompatibilityRules []BackwardCompatibilityRule

func GetAllRules

func GetAllRules() BackwardCompatibilityRules

func (BackwardCompatibilityRules) Metadata added in v1.30.0

func (bcRules BackwardCompatibilityRules) Metadata() []rules.Rule

Metadata returns the rules without their handlers, for callers that audit the rules rather than run them.

type Change

type Change interface {
	GetSection() string
	IsBreaking() bool
	GetId() string
	GetText(l Localizer) string
	GetArgs() []any
	GetUncolorizedText(l Localizer) string
	GetComment(l Localizer) string
	GetLevel() Level

	GetDisclaimers() []Disclaimer
	GetOperation() string
	GetOperationId() string
	GetPath() string
	GetSource() string
	GetAttributes() map[string]any

	// Location tracking methods
	GetBaseSource() *Source
	GetRevisionSource() *Source

	// DEPRECATED: Will be removed after GitHubActionsFormatter migration
	GetSourceFile() string
	GetSourceLine() int
	GetSourceLineEnd() int
	GetSourceColumn() int
	GetSourceColumnEnd() int
	MatchIgnore(ignorePath, ignoreLine string, l Localizer) bool
	SingleLineError(l Localizer, colorMode ColorMode) string
	MultiLineError(l Localizer, colorMode ColorMode) string
}

type Changes

type Changes []Change

func APIAddedCheck

func APIAddedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func APIComponentsSchemaRemovedCheck

func APIComponentsSchemaRemovedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func APIComponentsSecurityUpdatedCheck

func APIComponentsSecurityUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func APIDeprecationCheck

func APIDeprecationCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func APIOperationIdUpdatedCheck

func APIOperationIdUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func APIRemovedCheck

func APIRemovedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func APISecurityUpdatedCheck

func APISecurityUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func APISunsetChangedCheck

func APISunsetChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func APITagUpdatedCheck

func APITagUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func AddedRequestBodyCheck

func AddedRequestBodyCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func CheckBackwardCompatibility

func CheckBackwardCompatibility(config *Config, diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap) Changes

CheckBackwardCompatibility runs the checks and returns the changes with level WARN or ERR; see CheckBackwardCompatibilityUntilLevel.

Example
package main

import (
	"fmt"
	"os"
	"strings"

	"github.com/getkin/kin-openapi/openapi3"
	"github.com/oasdiff/oasdiff/checker"
	"github.com/oasdiff/oasdiff/diff"
	"github.com/oasdiff/oasdiff/load"
)

func main() {
	loader := openapi3.NewLoader()
	loader.IsExternalRefsAllowed = true

	s1, err := load.NewSpecInfo(loader, load.NewSource("../data/openapi-test1.yaml"))
	if err != nil {
		fmt.Fprintf(os.Stderr, "failed to load spec: %v", err)
		return
	}

	s2, err := load.NewSpecInfo(loader, load.NewSource("../data/openapi-test3.yaml"))
	if err != nil {
		fmt.Fprintf(os.Stderr, "failed to load spec: %v", err)
		return
	}

	diffRes, operationsSources, err := diff.GetPathsDiff(diff.NewConfig(),
		[]*load.SpecInfo{s1},
		[]*load.SpecInfo{s2},
	)

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

	errs := checker.CheckBackwardCompatibility(checker.NewConfig(checker.GetAllChecks()), 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:
6 breaking changes: 3 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].

error at ../data/openapi-test3.yaml, in API POST /register the endpoint scheme security `bearerAuth` was removed from the API [api-security-removed].

error at ../data/openapi-test3.yaml, in API POST /register the security scope `write:pets` was added to the endpoint's security scheme `OAuth` [api-security-scope-added].

warning at ../data/openapi-test3.yaml, in API GET /api/{domain}/{project}/badges/security-score deleted the `cookie` request parameter `test` [request-parameter-removed]. This is a warning because some clients may return an error when receiving an unexpected parameter. It is recommended to deprecate the parameter first.

warning at ../data/openapi-test3.yaml, in API GET /api/{domain}/{project}/badges/security-score deleted the `header` request parameter `user` [request-parameter-removed]. This is a warning because some clients may return an error when receiving an unexpected parameter. It is recommended to deprecate the parameter first.

warning at ../data/openapi-test3.yaml, in API GET /api/{domain}/{project}/badges/security-score deleted the `query` request parameter `filter` [request-parameter-removed]. This is a warning because some clients may return an error when receiving an unexpected parameter. It is recommended to deprecate the parameter first.

func CheckBackwardCompatibilityUntilLevel

func CheckBackwardCompatibilityUntilLevel(config *Config, diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, level Level) Changes

CheckBackwardCompatibilityUntilLevel runs the checks and returns the changes with level equal or higher than the given level. Changes claimed by a recognized schema transition are dropped, so each transition is reported only by its own finding (see transition_claims.go). It does not mutate the caller's diffReport; clonePathsDiffForCheck isolates the pipeline's mutation surface.

func MediaTypeSchemaExistenceCheck added in v1.21.0

func MediaTypeSchemaExistenceCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

MediaTypeSchemaExistenceCheck classifies a schema added to, or removed from, a media type that exists on both sides (the media type itself is unchanged, only its schema appears or disappears). The per-schema-change checks skip these one-sided schema diffs (see modifiedSchemaPresentBothSides), so this check is what reports them, by request/response contravariance:

request body, schema added   -> breaking (ERR): a body that accepted anything
                                now requires a specific shape (narrowing)
request body, schema removed -> info: the body got more permissive
response, schema added       -> info: the response got more specific
response, schema removed     -> breaking (WARN): a typed response is no longer
                                guaranteed (the output contract loosened)

The OpenAPI 3.2 itemSchema, which types one item of a streamed body, is classified the same way and for the same reasons: it constrains what may be sent or returned, so adding one narrows and removing one loosens.

Two degenerate schemas escape that classification. One equivalent to the empty schema (`{}`, `true`, or annotations only) accepts everything, so its arrival or departure leaves the contract unchanged and is not reported. The boolean `false` accepts nothing, so a body schema arriving as `false` withdraws the media type's payload and is reported as schema-became-false. The itemSchema variants are still classified by shape alone (#1196).

func NewRequestNonPathDefaultParameterCheck

func NewRequestNonPathDefaultParameterCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func NewRequestNonPathParameterCheck

func NewRequestNonPathParameterCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func NewRequestPathParameterCheck

func NewRequestPathParameterCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func NewRequiredRequestHeaderPropertyCheck

func NewRequiredRequestHeaderPropertyCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ProcessIgnoredBackwardCompatibilityErrors

func ProcessIgnoredBackwardCompatibilityErrors(level Level, errs Changes, ignoreFile string, l Localizer) (Changes, error)

func RequestBodyBecameEnumCheck

func RequestBodyBecameEnumCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestBodyEnumValueRemovedCheck

func RequestBodyEnumValueRemovedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestBodyMediaTypeChangedCheck

func RequestBodyMediaTypeChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestBodyRemovedCheck added in v1.11.2

func RequestBodyRemovedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestBodyRequiredUpdatedCheck

func RequestBodyRequiredUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestDiscriminatorUpdatedCheck

func RequestDiscriminatorUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestHeaderPropertyBecameEnumCheck

func RequestHeaderPropertyBecameEnumCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestHeaderPropertyBecameRequiredCheck

func RequestHeaderPropertyBecameRequiredCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterBecameEnumCheck

func RequestParameterBecameEnumCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterBecameNullableCheck added in v1.23.0

func RequestParameterBecameNullableCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterDefaultValueChangedCheck

func RequestParameterDefaultValueChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterDeprecationCheck

func RequestParameterDeprecationCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterEnumValueUpdatedCheck

func RequestParameterEnumValueUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterListOfTypesChangedCheck added in v1.11.6

func RequestParameterListOfTypesChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterMaxItemsUpdatedCheck

func RequestParameterMaxItemsUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterMaxLengthSetCheck

func RequestParameterMaxLengthSetCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterMaxLengthUpdatedCheck

func RequestParameterMaxLengthUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterMaxSetCheck

func RequestParameterMaxSetCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterMaxUpdatedCheck

func RequestParameterMaxUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterMinItemsSetCheck

func RequestParameterMinItemsSetCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterMinItemsUpdatedCheck

func RequestParameterMinItemsUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterMinLengthUpdatedCheck

func RequestParameterMinLengthUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterMinSetCheck

func RequestParameterMinSetCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterMinUpdatedCheck

func RequestParameterMinUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterPatternAddedOrChangedCheck

func RequestParameterPatternAddedOrChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterRemovedCheck

func RequestParameterRemovedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterRequiredValueUpdatedCheck

func RequestParameterRequiredValueUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterSchemaBecameFalseCheck added in v1.30.0

func RequestParameterSchemaBecameFalseCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterSunsetChangedCheck

func RequestParameterSunsetChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterTypeChangedCheck

func RequestParameterTypeChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestParameterXExtensibleEnumValueRemovedCheck

func RequestParameterXExtensibleEnumValueRemovedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyAllOfUpdatedCheck

func RequestPropertyAllOfUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyAnyOfUpdatedCheck

func RequestPropertyAnyOfUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyBecameEnumCheck

func RequestPropertyBecameEnumCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyBecameNotNullableCheck

func RequestPropertyBecameNotNullableCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyConstChangedCheck added in v1.15.0

func RequestPropertyConstChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyContainsUpdatedCheck added in v1.15.0

func RequestPropertyContainsUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyContentUpdatedCheck added in v1.15.0

func RequestPropertyContentUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyDefaultValueChangedCheck

func RequestPropertyDefaultValueChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyDependentRequiredChangedCheck added in v1.15.0

func RequestPropertyDependentRequiredChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyDependentSchemasUpdatedCheck added in v1.15.0

func RequestPropertyDependentSchemasUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyDeprecationCheck added in v1.11.9

func RequestPropertyDeprecationCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

RequestPropertyDeprecationCheck detects deprecated properties in request bodies

func RequestPropertyEnumValueUpdatedCheck

func RequestPropertyEnumValueUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyIfUpdatedCheck added in v1.15.0

func RequestPropertyIfUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyListOfTypesChangedCheck added in v1.11.6

func RequestPropertyListOfTypesChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyMaxDecreasedCheck

func RequestPropertyMaxDecreasedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyMaxItemsSetCheck added in v1.30.0

func RequestPropertyMaxItemsSetCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyMaxItemsUpdatedCheck added in v1.30.0

func RequestPropertyMaxItemsUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyMaxLengthSetCheck

func RequestPropertyMaxLengthSetCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyMaxLengthUpdatedCheck

func RequestPropertyMaxLengthUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyMaxPropertiesSetCheck added in v1.30.0

func RequestPropertyMaxPropertiesSetCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyMaxPropertiesUpdatedCheck added in v1.30.0

func RequestPropertyMaxPropertiesUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyMaxSetCheck

func RequestPropertyMaxSetCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyMinIncreasedCheck

func RequestPropertyMinIncreasedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyMinItemsIncreasedCheck

func RequestPropertyMinItemsIncreasedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyMinItemsSetCheck

func RequestPropertyMinItemsSetCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyMinLengthUpdatedCheck

func RequestPropertyMinLengthUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyMinPropertiesIncreasedCheck added in v1.30.0

func RequestPropertyMinPropertiesIncreasedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyMinSetCheck

func RequestPropertyMinSetCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyMultipleOfUpdatedCheck added in v1.30.0

func RequestPropertyMultipleOfUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyOneOfUpdatedCheck

func RequestPropertyOneOfUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyPatternPropertiesUpdatedCheck added in v1.15.0

func RequestPropertyPatternPropertiesUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyPatternUpdatedCheck

func RequestPropertyPatternUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyPrefixItemsUpdatedCheck added in v1.15.0

func RequestPropertyPrefixItemsUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyPropertyNamesUpdatedCheck added in v1.15.0

func RequestPropertyPropertyNamesUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyRequiredUpdatedCheck

func RequestPropertyRequiredUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertySchemaBecameFalseCheck added in v1.30.0

func RequestPropertySchemaBecameFalseCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyStabilityUpdatedCheck added in v1.20.0

func RequestPropertyStabilityUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

RequestPropertyStabilityUpdatedCheck detects request properties where x-stability-level changed. Only emits changes when the property's base stability meets the configured threshold.

func RequestPropertyTypeChangedCheck

func RequestPropertyTypeChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyUnevaluatedUpdatedCheck added in v1.15.0

func RequestPropertyUnevaluatedUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyUniqueItemsUpdatedCheck added in v1.30.0

func RequestPropertyUniqueItemsUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyUpdatedCheck

func RequestPropertyUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyWriteOnlyReadOnlyCheck

func RequestPropertyWriteOnlyReadOnlyCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func RequestPropertyXExtensibleEnumValueRemovedCheck

func RequestPropertyXExtensibleEnumValueRemovedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponseDiscriminatorUpdatedCheck

func ResponseDiscriminatorUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponseHeaderAddedCheck added in v1.21.0

func ResponseHeaderAddedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

ResponseHeaderAddedCheck reports a response header that was added. Adding a response header is non-breaking, so it is reported at INFO. It is the mirror of ResponseHeaderRemovedCheck (see #1033).

func ResponseHeaderBecameNullableCheck added in v1.26.0

func ResponseHeaderBecameNullableCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

ResponseHeaderBecameNullableCheck reports a nullability change on a response header's schema, the response-header mirror of ResponsePropertyBecameNullableCheck. A response header becoming nullable means a client that never expected a null value can now receive one (breaking); becoming not-nullable narrows the server's output and is safe (info).

func ResponseHeaderBecameOptionalCheck

func ResponseHeaderBecameOptionalCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponseHeaderRemovedCheck

func ResponseHeaderRemovedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponseHeaderSchemaBecameFalseCheck added in v1.30.0

func ResponseHeaderSchemaBecameFalseCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponseHeaderTypeChangedCheck added in v1.26.0

func ResponseHeaderTypeChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

ResponseHeaderTypeChangedCheck reports a type or format change on a response header's schema, the response-header mirror of ResponsePropertyTypeChangedCheck (response headers previously had existence-level checks only, no schema walk).

A response header value is text on the wire, never a strongly typed media type, so it is classified non-strongly-typed (mediaType ""), the same way a scalar parameter is: a bare string -> integer is a loosely typed compatible change (the value "123" is still valid text a string client reads), while dropping a format a client parses -- the motivating case, Retry-After string/date-time -> integer -- is breaking on the format axis.

func ResponseMediaTypeEnumValueRemovedCheck

func ResponseMediaTypeEnumValueRemovedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponseMediaTypeNameUpdatedCheck added in v1.11.4

func ResponseMediaTypeNameUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponseMediaTypeUpdatedCheck

func ResponseMediaTypeUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponseNonSuccessStatusUpdatedCheck

func ResponseNonSuccessStatusUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponseOptionalPropertyUpdatedCheck

func ResponseOptionalPropertyUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponseOptionalPropertyWriteOnlyReadOnlyCheck

func ResponseOptionalPropertyWriteOnlyReadOnlyCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponseParameterEnumValueRemovedCheck

func ResponseParameterEnumValueRemovedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePatternAddedOrChangedCheck

func ResponsePatternAddedOrChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyAllOfUpdatedCheck

func ResponsePropertyAllOfUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyAnyOfUpdatedCheck

func ResponsePropertyAnyOfUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyBecameNullableCheck

func ResponsePropertyBecameNullableCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyBecameOptionalCheck

func ResponsePropertyBecameOptionalCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyBecameRequiredCheck

func ResponsePropertyBecameRequiredCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyConstChangedCheck added in v1.15.0

func ResponsePropertyConstChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyContainsUpdatedCheck added in v1.15.0

func ResponsePropertyContainsUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyContentUpdatedCheck added in v1.15.0

func ResponsePropertyContentUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyDefaultValueChangedCheck

func ResponsePropertyDefaultValueChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyDependentRequiredChangedCheck added in v1.15.0

func ResponsePropertyDependentRequiredChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyDependentSchemasUpdatedCheck added in v1.15.0

func ResponsePropertyDependentSchemasUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyDeprecationCheck added in v1.11.9

func ResponsePropertyDeprecationCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

ResponsePropertyDeprecationCheck detects deprecated properties in response bodies

func ResponsePropertyEnumValueAddedCheck

func ResponsePropertyEnumValueAddedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyIfUpdatedCheck added in v1.15.0

func ResponsePropertyIfUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyListOfTypesChangedCheck added in v1.11.6

func ResponsePropertyListOfTypesChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyMaxIncreasedCheck

func ResponsePropertyMaxIncreasedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyMaxItemsIncreasedCheck added in v1.30.0

func ResponsePropertyMaxItemsIncreasedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyMaxLengthIncreasedCheck

func ResponsePropertyMaxLengthIncreasedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyMaxLengthUnsetCheck

func ResponsePropertyMaxLengthUnsetCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyMaxPropertiesIncreasedCheck added in v1.30.0

func ResponsePropertyMaxPropertiesIncreasedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyMinDecreasedCheck

func ResponsePropertyMinDecreasedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyMinItemsDecreasedCheck

func ResponsePropertyMinItemsDecreasedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyMinItemsUnsetCheck

func ResponsePropertyMinItemsUnsetCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyMinLengthDecreasedCheck

func ResponsePropertyMinLengthDecreasedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyMinPropertiesDecreasedCheck added in v1.30.0

func ResponsePropertyMinPropertiesDecreasedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyMultipleOfUpdatedCheck added in v1.30.0

func ResponsePropertyMultipleOfUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyOneOfUpdated

func ResponsePropertyOneOfUpdated(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyPatternPropertiesUpdatedCheck added in v1.15.0

func ResponsePropertyPatternPropertiesUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyPrefixItemsUpdatedCheck added in v1.15.0

func ResponsePropertyPrefixItemsUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyPropertyNamesUpdatedCheck added in v1.15.0

func ResponsePropertyPropertyNamesUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertySchemaBecameFalseCheck added in v1.30.0

func ResponsePropertySchemaBecameFalseCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyStabilityUpdatedCheck added in v1.20.0

func ResponsePropertyStabilityUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

ResponsePropertyStabilityUpdatedCheck detects response properties where x-stability-level changed. Only emits changes when the property's base stability meets the configured threshold.

func ResponsePropertyTypeChangedCheck

func ResponsePropertyTypeChangedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyUnevaluatedUpdatedCheck added in v1.15.0

func ResponsePropertyUnevaluatedUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponsePropertyUniqueItemsUnsetCheck added in v1.30.0

func ResponsePropertyUniqueItemsUnsetCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponseRequiredPropertyUpdatedCheck

func ResponseRequiredPropertyUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponseRequiredPropertyWriteOnlyReadOnlyCheck

func ResponseRequiredPropertyWriteOnlyReadOnlyCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func ResponseSuccessStatusUpdatedCheck

func ResponseSuccessStatusUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func WebhookUpdatedCheck added in v1.15.0

func WebhookUpdatedCheck(diffReport *diff.Diff, operationsSources *diff.OperationsSourcesMap, config *Config) Changes

func (Changes) GetLevelCount

func (changes Changes) GetLevelCount() map[Level]int

func (Changes) HasLevelOrHigher

func (changes Changes) HasLevelOrHigher(level Level) bool

type ColorMode

type ColorMode = colorize.ColorMode

ColorMode is defined in the colorize package; the aliases keep the checker package's public surface unchanged.

func NewColorMode

func NewColorMode(color string) (ColorMode, error)

type CommonChange

type CommonChange struct {
	// Location information for correlation UI
	BaseSource     *Source // Location in base (original) file
	RevisionSource *Source // Location in revision (modified) file

	Attributes map[string]any
}

func (CommonChange) GetAttributes

func (c CommonChange) GetAttributes() map[string]any

func (CommonChange) GetBaseSource added in v1.12.0

func (c CommonChange) GetBaseSource() *Source

func (CommonChange) GetRevisionSource added in v1.12.0

func (c CommonChange) GetRevisionSource() *Source

type ComponentChange

type ComponentChange struct {
	CommonChange

	Id        string
	Args      []any
	Comment   string
	Level     Level
	Component string

	// DEPRECATED: Will be removed after migration to BaseSource/RevisionSource
	SourceFile      string
	SourceLine      int
	SourceLineEnd   int
	SourceColumn    int
	SourceColumnEnd int
}

ComponentChange represnts a change in the Components Section: https://swagger.io/docs/specification/components/

func (ComponentChange) GetArgs

func (c ComponentChange) GetArgs() []any

func (ComponentChange) GetComment

func (c ComponentChange) GetComment(l Localizer) string

func (ComponentChange) GetDisclaimers added in v1.29.0

func (ComponentChange) GetDisclaimers() []Disclaimer

func (ComponentChange) GetId

func (c ComponentChange) GetId() string

func (ComponentChange) GetLevel

func (c ComponentChange) GetLevel() Level

func (ComponentChange) GetOperation

func (ComponentChange) GetOperation() string

func (ComponentChange) GetOperationId

func (ComponentChange) GetOperationId() string

func (ComponentChange) GetPath

func (ComponentChange) GetPath() string

func (ComponentChange) GetSection

func (c ComponentChange) GetSection() string

func (ComponentChange) GetSource

func (c ComponentChange) GetSource() string

func (ComponentChange) GetSourceColumn

func (c ComponentChange) GetSourceColumn() int

func (ComponentChange) GetSourceColumnEnd

func (c ComponentChange) GetSourceColumnEnd() int

func (ComponentChange) GetSourceFile

func (c ComponentChange) GetSourceFile() string

func (ComponentChange) GetSourceLine

func (c ComponentChange) GetSourceLine() int

func (ComponentChange) GetSourceLineEnd

func (c ComponentChange) GetSourceLineEnd() int

func (ComponentChange) GetText

func (c ComponentChange) GetText(l Localizer) string

func (ComponentChange) GetUncolorizedText

func (c ComponentChange) GetUncolorizedText(l Localizer) string

func (ComponentChange) IsBreaking

func (c ComponentChange) IsBreaking() bool

func (ComponentChange) MatchIgnore

func (c ComponentChange) MatchIgnore(ignorePath, ignoreLine string, l Localizer) bool

func (ComponentChange) MultiLineError

func (c ComponentChange) MultiLineError(l Localizer, colorMode ColorMode) string

func (ComponentChange) SingleLineError

func (c ComponentChange) SingleLineError(l Localizer, colorMode ColorMode) string

func (ComponentChange) WithSources added in v1.12.0

func (c ComponentChange) WithSources(baseSource, revisionSource *Source) ComponentChange

WithSources returns a copy of the ComponentChange with BaseSource and RevisionSource populated

type Config

type Config struct {
	Checks              BackwardCompatibilityChecks
	MinSunsetBetaDays   uint
	MinSunsetStableDays uint
	LogLevels           map[string]Level

	Attributes     []string
	StabilityLevel StabilityLevel
	// contains filtered or unexported fields
}

func NewConfig

func NewConfig(checks BackwardCompatibilityChecks, opts ...Option) *Config

NewConfig creates a new configuration with default values, then applies the given options in order.

type Direction

type Direction = rules.Direction

The rule model (taxonomy, Effect, Guards, Level, location claims) is defined in checker/rules; the aliases below keep the checker package's public surface unchanged. This package binds the model to the check implementations via Handler.

type Disclaimer added in v1.29.0

type Disclaimer int

A Disclaimer says why oasdiff could not compare something exactly. When one applies, the rule's severity may be too strong for the change it describes.

A Disclaimer only names the problem. The ceiling it puts on a severity is in disclaimerCeilings; its explanation is a localized message.

const (
	// DisclaimerAllOfNotFlattened marks a change found inside an allOf branch
	// that was compared branch by branch. A sibling branch can require what
	// this one dropped, so the change may have no effect on the merged schema.
	DisclaimerAllOfNotFlattened Disclaimer = iota + 1
)

func (Disclaimer) String added in v1.29.0

func (d Disclaimer) String() string

type Effect added in v1.30.0

type Effect = rules.Effect

The rule model (taxonomy, Effect, Guards, Level, location claims) is defined in checker/rules; the aliases below keep the checker package's public surface unchanged. This package binds the model to the check implementations via Handler.

type Guard added in v1.30.0

type Guard = rules.Guard

The rule model (taxonomy, Effect, Guards, Level, location claims) is defined in checker/rules; the aliases below keep the checker package's public surface unchanged. This package binds the model to the check implementations via Handler.

type InfoChange added in v1.27.0

type InfoChange struct {
	CommonChange

	Id      string
	Args    []any
	Comment string
	Level   Level
}

InfoChange represents a change in the Info Section: https://swagger.io/specification/#info-object It carries no path or operation: the subject is the document as a whole.

func (InfoChange) GetArgs added in v1.27.0

func (c InfoChange) GetArgs() []any

func (InfoChange) GetComment added in v1.27.0

func (c InfoChange) GetComment(l Localizer) string

func (InfoChange) GetDisclaimers added in v1.29.0

func (InfoChange) GetDisclaimers() []Disclaimer

func (InfoChange) GetId added in v1.27.0

func (c InfoChange) GetId() string

func (InfoChange) GetLevel added in v1.27.0

func (c InfoChange) GetLevel() Level

func (InfoChange) GetOperation added in v1.27.0

func (InfoChange) GetOperation() string

func (InfoChange) GetOperationId added in v1.27.0

func (InfoChange) GetOperationId() string

func (InfoChange) GetPath added in v1.27.0

func (InfoChange) GetPath() string

func (InfoChange) GetSection added in v1.27.0

func (c InfoChange) GetSection() string

func (InfoChange) GetSource added in v1.27.0

func (InfoChange) GetSource() string

func (InfoChange) GetSourceColumn added in v1.27.0

func (InfoChange) GetSourceColumn() int

func (InfoChange) GetSourceColumnEnd added in v1.27.0

func (InfoChange) GetSourceColumnEnd() int

func (InfoChange) GetSourceFile added in v1.27.0

func (InfoChange) GetSourceFile() string

func (InfoChange) GetSourceLine added in v1.27.0

func (InfoChange) GetSourceLine() int

func (InfoChange) GetSourceLineEnd added in v1.27.0

func (InfoChange) GetSourceLineEnd() int

func (InfoChange) GetText added in v1.27.0

func (c InfoChange) GetText(l Localizer) string

func (InfoChange) GetUncolorizedText added in v1.27.0

func (c InfoChange) GetUncolorizedText(l Localizer) string

func (InfoChange) IsBreaking added in v1.27.0

func (c InfoChange) IsBreaking() bool

func (InfoChange) MatchIgnore added in v1.27.0

func (c InfoChange) MatchIgnore(ignorePath, ignoreLine string, l Localizer) bool

func (InfoChange) MultiLineError added in v1.27.0

func (c InfoChange) MultiLineError(l Localizer, colorMode ColorMode) string

func (InfoChange) SingleLineError added in v1.27.0

func (c InfoChange) SingleLineError(l Localizer, colorMode ColorMode) string

func (InfoChange) WithSources added in v1.27.0

func (c InfoChange) WithSources(baseSource, revisionSource *Source) InfoChange

WithSources returns a copy of the InfoChange with BaseSource and RevisionSource populated

type Kind added in v1.18.3

type Kind = rules.Kind

The rule model (taxonomy, Effect, Guards, Level, location claims) is defined in checker/rules; the aliases below keep the checker package's public surface unchanged. This package binds the model to the check implementations via Handler.

type Level

type Level = rules.Level

Level is defined in checker/rules; the aliases keep the checker package's public surface unchanged.

func NewLevel

func NewLevel(level string) (Level, error)

type Localizer

type Localizer func(key string, args ...any) string

func NewDefaultLocalizer

func NewDefaultLocalizer() Localizer

func NewLocalizer

func NewLocalizer(locale string) Localizer

type Option added in v1.15.3

type Option func(*Config)

Option configures a Config during NewConfig. Options compose: each receives the Config after defaults and prior options have been applied. Use the With* constructors below to obtain Options.

func WithAttributes added in v1.15.3

func WithAttributes(attributes []string) Option

WithAttributes sets the list of attributes to be used.

func WithChecks added in v1.15.3

func WithChecks(checks BackwardCompatibilityChecks) Option

WithChecks sets the list of checks to be used (replaces the constructor's checks argument).

func WithDeprecation added in v1.15.3

func WithDeprecation(deprecationDaysBeta uint, deprecationDaysStable uint) Option

WithDeprecation sets the number of days before sunset for deprecation warnings.

func WithSeverityLevels added in v1.15.3

func WithSeverityLevels(severityLevels map[string]Level) Option

WithSeverityLevels overrides per-check log levels from the given map.

func WithSingleCheck added in v1.15.3

func WithSingleCheck(check BackwardCompatibilityCheck) Option

WithSingleCheck sets a single check to be used (replaces the constructor's checks argument).

func WithStabilityLevel added in v1.20.0

func WithStabilityLevel(level string) Option

WithStabilityLevel sets the minimum stability level from a string. If the level is empty, the config is unchanged.

type SecurityChange

type SecurityChange struct {
	CommonChange

	Id      string
	Args    []any
	Comment string
	Level   Level

	// DEPRECATED: Will be removed after migration to BaseSource/RevisionSource
	SourceFile      string
	SourceLine      int
	SourceLineEnd   int
	SourceColumn    int
	SourceColumnEnd int
}

SecurityChange represents a change in the Security Section (not to be confised with components/securitySchemes)

func (SecurityChange) GetArgs

func (c SecurityChange) GetArgs() []any

func (SecurityChange) GetComment

func (c SecurityChange) GetComment(l Localizer) string

func (SecurityChange) GetDisclaimers added in v1.29.0

func (SecurityChange) GetDisclaimers() []Disclaimer

func (SecurityChange) GetId

func (c SecurityChange) GetId() string

func (SecurityChange) GetLevel

func (c SecurityChange) GetLevel() Level

func (SecurityChange) GetOperation

func (r SecurityChange) GetOperation() string

func (SecurityChange) GetOperationId

func (SecurityChange) GetOperationId() string

func (SecurityChange) GetPath

func (SecurityChange) GetPath() string

func (SecurityChange) GetSection

func (c SecurityChange) GetSection() string

func (SecurityChange) GetSource

func (c SecurityChange) GetSource() string

func (SecurityChange) GetSourceColumn

func (c SecurityChange) GetSourceColumn() int

func (SecurityChange) GetSourceColumnEnd

func (c SecurityChange) GetSourceColumnEnd() int

func (SecurityChange) GetSourceFile

func (c SecurityChange) GetSourceFile() string

func (SecurityChange) GetSourceLine

func (c SecurityChange) GetSourceLine() int

func (SecurityChange) GetSourceLineEnd

func (c SecurityChange) GetSourceLineEnd() int

func (SecurityChange) GetText

func (c SecurityChange) GetText(l Localizer) string

func (SecurityChange) GetUncolorizedText

func (c SecurityChange) GetUncolorizedText(l Localizer) string

func (SecurityChange) IsBreaking

func (c SecurityChange) IsBreaking() bool

func (SecurityChange) MatchIgnore

func (c SecurityChange) MatchIgnore(ignorePath, ignoreLine string, l Localizer) bool

func (SecurityChange) MultiLineError

func (c SecurityChange) MultiLineError(l Localizer, colorMode ColorMode) string

func (SecurityChange) SingleLineError

func (c SecurityChange) SingleLineError(l Localizer, colorMode ColorMode) string

func (SecurityChange) WithSources added in v1.12.0

func (c SecurityChange) WithSources(baseSource, revisionSource *Source) SecurityChange

WithSources returns a copy of the SecurityChange with BaseSource and RevisionSource populated

type Source added in v1.12.0

type Source struct {
	File      string `json:"file,omitempty" yaml:"file,omitempty"`           // File path (relative or absolute)
	Line      int    `json:"line,omitempty" yaml:"line,omitempty"`           // Line number (1-based)
	Column    int    `json:"column,omitempty" yaml:"column,omitempty"`       // Column number (1-based)
	EndLine   int    `json:"endLine,omitempty" yaml:"endLine,omitempty"`     // End line (1-based, inclusive); 0 if unknown/single
	EndColumn int    `json:"endColumn,omitempty" yaml:"endColumn,omitempty"` // End column (1-based); 0 if unknown
}

Source represents the location of a change in an OpenAPI spec file

func NewEmptySource added in v1.12.0

func NewEmptySource() *Source

func NewSource added in v1.12.0

func NewSource(file string, line int, column int) *Source

func NewSourceFromField added in v1.12.0

func NewSourceFromField(operationsSources *diff.OperationsSourcesMap, operation *openapi3.Operation, origin *openapi3.Origin, field string) *Source

func NewSourceFromOrigin added in v1.12.0

func NewSourceFromOrigin(operationsSources *diff.OperationsSourcesMap, operation *openapi3.Operation, origin *openapi3.Origin) *Source

func NewSourceFromSequenceItem added in v1.12.0

func NewSourceFromSequenceItem(operationsSources *diff.OperationsSourcesMap, operation *openapi3.Operation, origin *openapi3.Origin, field string, value string) *Source

NewSourceFromSequenceItem returns the source location of a specific item in a sequence-valued field (e.g. type: [string, null]). It looks up the item by value in Origin.Sequences[field]. If multiple items share the same value, it returns the first match.

func (*Source) WithEnd added in v1.24.0

func (s *Source) WithEnd(endLine, endColumn int) *Source

WithEnd sets the origin's end span and returns the receiver, so end-bearing sources keep the NewSource constructor. Unset for a point source.

type StabilityLevel added in v1.20.0

type StabilityLevel int

StabilityLevel represents a threshold for filtering operations by their x-stability-level. Higher values include more stability levels (e.g., StabilityLevelDraft includes all levels). The enum is a pure ordering: level >= threshold means "included."

const (
	// StabilityLevelDraft includes all operations (stable, beta, alpha, and draft).
	StabilityLevelDraft StabilityLevel = iota + 1
	// StabilityLevelAlpha includes stable, beta, and alpha operations.
	StabilityLevelAlpha
	// StabilityLevelBeta includes stable and beta operations.
	StabilityLevelBeta
	// StabilityLevelStable includes only stable operations.
	StabilityLevelStable
)

func ParseStabilityLevel added in v1.20.0

func ParseStabilityLevel(s string) StabilityLevel

ParseStabilityLevel converts a stability string to a StabilityLevel. An empty string is treated as stable (implicit stable).

func (StabilityLevel) IsIncluded added in v1.20.0

func (sl StabilityLevel) IsIncluded(stability string) bool

IsIncluded returns true if the given stability label meets the configured threshold. For example, if the threshold is StabilityLevelDraft, all levels are included. If the threshold is StabilityLevelAlpha, draft is excluded but alpha/beta/stable are included. An empty stability string is treated as "stable".

Source Files

Directories

Path Synopsis
oasdiff's ultimate objective is to detect breaking changes, so that its users can prevent them.
oasdiff's ultimate objective is to detect breaking changes, so that its users can prevent them.
Package localizations provides localized messages for breaking change and changelog output.
Package localizations provides localized messages for breaking change and changelog output.
Package metaschema enumerates every possible edit of an OpenAPI document: each field location in the OpenAPI object model, paired with the syntactic edit actions applicable at that location.
Package metaschema enumerates every possible edit of an OpenAPI document: each field location in the OpenAPI object model, paired with the syntactic edit actions applicable at that location.
Package rules defines the metadata model of the backward-compatibility rules: the severity levels, the Direction/Area/Kind taxonomy, the Effect a rule concludes about the accepted-value set, the Guards that select the document state it applies to, and the claims tying each rule to the edits it covers (see checker/metaschema).
Package rules defines the metadata model of the backward-compatibility rules: the severity levels, the Direction/Area/Kind taxonomy, the Effect a rule concludes about the accepted-value set, the Guards that select the document state it applies to, and the claims tying each rule to the edits it covers (see checker/metaschema).

Jump to

Keyboard shortcuts

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