// Copyright 2022 Princess B33f Heavy Industries / Dave Shanley
// SPDX-License-Identifier: MIT

package v3

// Label definitions used to look up vales in yaml.Node tree.
const (
	ComponentsLabel            = "components"
	SchemasLabel               = "schemas"
	MediaTypesLabel            = "mediaTypes" // OpenAPI 3.2+ mediaTypes component section
	EncodingLabel              = "encoding"
	ItemSchemaLabel            = "itemSchema"
	ItemEncodingLabel          = "itemEncoding"
	HeadersLabel               = "headers"
	ExpressionLabel            = "expression"
	InfoLabel                  = "info"
	SwaggerLabel               = "swagger"
	ParametersLabel            = "parameters"
	ParameterLabel             = "parameter"
	RequestBodyLabel           = "requestBody"
	RequestBodiesLabel         = "requestBodies"
	ResponsesLabel             = "responses"
	ResponseLabel              = "response"
	CallbacksLabel             = "callbacks"
	ContentLabel               = "content"
	PathsLabel                 = "paths"
	PathItemsLabel             = "pathItems"
	PathLabel                  = "path"
	WebhooksLabel              = "webhooks"
	JSONSchemaDialectLabel     = "jsonSchemaDialect"
	JSONSchemaLabel            = "$schema"
	SelfLabel                  = "$self"
	GetLabel                   = "get"
	PostLabel                  = "post"
	PatchLabel                 = "patch"
	PutLabel                   = "put"
	DeleteLabel                = "delete"
	OptionsLabel               = "options"
	HeadLabel                  = "head"
	TraceLabel                 = "trace"
	QueryLabel                 = "query"
	AdditionalOperationsLabel  = "additionalOperations" // OpenAPI 3.2+ additional operations
	LinksLabel                 = "links"
	DefaultLabel               = "default"
	ConstLabel                 = "const"
	SecurityLabel              = "security"
	SecuritySchemesLabel       = "securitySchemes"
	OAuthFlowsLabel            = "flows"
	VariablesLabel             = "variables"
	ServersLabel               = "servers"
	ServerLabel                = "server"
	ImplicitLabel              = "implicit"
	PasswordLabel              = "password"
	ClientCredentialsLabel     = "clientCredentials"
	AuthorizationCodeLabel     = "authorizationCode"
	DeviceLabel                = "device" // OpenAPI 3.2+ device flow
	DescriptionLabel           = "description"
	URLLabel                   = "url"
	NameLabel                  = "name"
	EmailLabel                 = "email"
	TitleLabel                 = "title"
	TermsOfServiceLabel        = "termsOfService"
	VersionLabel               = "version"
	OpenAPILabel               = "openapi"
	HostLabel                  = "host"
	BasePathLabel              = "basePath"
	LicenseLabel               = "license"
	Identifier                 = "identifier"
	ContactLabel               = "contact"
	NamespaceLabel             = "namespace"
	PrefixLabel                = "prefix"
	AttributeLabel             = "attribute"
	WrappedLabel               = "wrapped"
	PropertyNameLabel          = "propertyName"
	SummaryLabel               = "summary"
	ParentLabel                = "parent"
	KindLabel                  = "kind"
	ValueLabel                 = "value"
	ExternalValue              = "externalValue"
	SchemaDialectLabel         = "$schema"
	ExclusiveMaximumLabel      = "exclusiveMaximum"
	ExclusiveMinimumLabel      = "exclusiveMinimum"
	TypeLabel                  = "type"
	TagsLabel                  = "tags"
	MultipleOfLabel            = "multipleOf"
	MaximumLabel               = "maximum"
	MinimumLabel               = "minimum"
	MaxLengthLabel             = "maxLength"
	MinLengthLabel             = "minLength"
	PatternLabel               = "pattern"
	FormatLabel                = "format"
	MaxItemsLabel              = "maxItems"
	ExamplesLabel              = "examples"
	MinItemsLabel              = "minItems"
	UniqueItemsLabel           = "uniqueItems"
	MaxPropertiesLabel         = "maxProperties"
	MinPropertiesLabel         = "minProperties"
	RequiredLabel              = "required"
	EnumLabel                  = "enum"
	SchemaLabel                = "schema"
	NotLabel                   = "not"
	ItemsLabel                 = "items"
	PropertiesLabel            = "properties"
	AllOfLabel                 = "allOf"
	AnyOfLabel                 = "anyOf"
	PrefixItemsLabel           = "prefixItems"
	OneOfLabel                 = "oneOf"
	AdditionalPropertiesLabel  = "additionalProperties"
	ContentEncodingLabel       = "contentEncoding"
	ContentMediaType           = "contentMediaType"
	NullableLabel              = "nullable"
	ReadOnlyLabel              = "readOnly"
	WriteOnlyLabel             = "writeOnly"
	XMLLabel                   = "xml"
	DeprecatedLabel            = "deprecated"
	ExampleLabel               = "example"
	RefLabel                   = "$ref"
	DiscriminatorLabel         = "discriminator"
	ExternalDocsLabel          = "externalDocs"
	InLabel                    = "in"
	AllowEmptyValueLabel       = "allowEmptyValue"
	StyleLabel                 = "style"
	CollectionFormatLabel      = "collectionFormat"
	AllowReservedLabel         = "allowReserved"
	ExplodeLabel               = "explode"
	ContentTypeLabel           = "contentType"
	SecurityDefinitionLabel    = "securityDefinition"
	Scopes                     = "scopes"
	AuthorizationUrlLabel      = "authorizationUrl"
	TokenUrlLabel              = "tokenUrl"
	RefreshUrlLabel            = "refreshUrl"
	FlowLabel                  = "flow"
	FlowsLabel                 = "flows"
	SchemeLabel                = "scheme"
	OpenIdConnectUrlLabel      = "openIdConnectUrl"
	OAuth2MetadataUrlLabel     = "oauth2MetadataUrl" // OpenAPI 3.2+ OAuth2 metadata URL
	ScopesLabel                = "scopes"
	OperationRefLabel          = "operationRef"
	OperationIdLabel           = "operationId"
	CodesLabel                 = "codes"
	ProducesLabel              = "produces"
	ConsumesLabel              = "consumes"
	SchemesLabel               = "schemes"
	IfLabel                    = "if"
	ElseLabel                  = "else"
	ThenLabel                  = "then"
	PropertyNamesLabel         = "propertyNames"
	ContainsLabel              = "contains"
	MinContainsLabel           = "minContains"
	MaxContainsLabel           = "maxContains"
	UnevaluatedItemsLabel      = "unevaluatedItems"
	UnevaluatedPropertiesLabel = "unevaluatedProperties"
	DependentSchemasLabel      = "dependentSchemas"
	PatternPropertiesLabel     = "patternProperties"
	AnchorLabel                = "$anchor"
	DynamicAnchorLabel         = "$dynamicAnchor"
	DynamicRefLabel            = "$dynamicRef"
)
