// Package capability provides primitives to interact with the openapi HTTP API.
//
// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.5.1 DO NOT EDIT.
package capability

import (
	core "github.com/meshery/schemas/models/core"
)

// Defines values for CapabilityStatus.
const (
	Disabled CapabilityStatus = "disabled"
	Enabled  CapabilityStatus = "enabled"
)

// Capability Meshery manages entities in accordance with their specific capabilities. This field explicitly identifies those capabilities largely by what actions a given component supports; e.g. metric-scrape, sub-interface, and so on. This field is extensible. Entities may define a broad array of capabilities, which are in-turn dynamically interpretted by Meshery for full lifecycle management.
type Capability struct {
	// Description A written representation of the purpose and characteristics of the capability.
	Description string `json:"description" yaml:"description"`

	// DisplayName A string starting with an alphanumeric character. Spaces and hyphens allowed.
	DisplayName core.InputString `json:"displayName" yaml:"displayName"`

	// EntityState State of the entity in which the capability is applicable.
	EntityState []core.InputString `json:"entityState" yaml:"entityState"`

	// Key A string starting with an alphanumeric character. Spaces and hyphens allowed.
	Key core.InputString `json:"key" yaml:"key"`

	// Kind A string starting with an alphanumeric character. Spaces and hyphens allowed.
	Kind core.InputString `json:"kind" yaml:"kind"`

	// Metadata Metadata contains additional information associated with the capability. Extension point.
	Metadata *map[string]interface{} `json:"metadata,omitempty" yaml:"metadata,omitempty"`

	// SchemaVersion API version of the object, optionally prefixed with an API group (e.g. "group.example.io/v1beta1" or bare "v1beta1").
	SchemaVersion core.VersionString `json:"schemaVersion" yaml:"schemaVersion"`

	// Status Status of the capability
	Status CapabilityStatus `json:"status" yaml:"status"`

	// SubType A string starting with an alphanumeric character. Spaces and hyphens allowed.
	SubType core.InputString `json:"subType" yaml:"subType"`

	// Type A string starting with an alphanumeric character. Spaces and hyphens allowed.
	Type core.InputString `json:"type" yaml:"type"`

	// Version A valid semantic version string between 5 and 100 characters. The pattern allows for a major.minor.patch version followed by an optional pre-release tag like '-alpha' or '-beta.2' and an optional build metadata tag like '+build.1'.
	Version core.SemverString `json:"version" yaml:"version"`
}

// CapabilityStatus Status of the capability
type CapabilityStatus string
