98 lines
3.2 KiB
Go
98 lines
3.2 KiB
Go
|
/*
|
||
|
Copyright 2017 The Kubernetes Authors.
|
||
|
|
||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
you may not use this file except in compliance with the License.
|
||
|
You may obtain a copy of the License at
|
||
|
|
||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
||
|
Unless required by applicable law or agreed to in writing, software
|
||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
See the License for the specific language governing permissions and
|
||
|
limitations under the License.
|
||
|
*/
|
||
|
|
||
|
package apiextensions
|
||
|
|
||
|
// JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).
|
||
|
type JSONSchemaProps struct {
|
||
|
ID string
|
||
|
Schema JSONSchemaURL
|
||
|
Ref *string
|
||
|
Description string
|
||
|
Type string
|
||
|
Nullable bool
|
||
|
Format string
|
||
|
Title string
|
||
|
Default *JSON
|
||
|
Maximum *float64
|
||
|
ExclusiveMaximum bool
|
||
|
Minimum *float64
|
||
|
ExclusiveMinimum bool
|
||
|
MaxLength *int64
|
||
|
MinLength *int64
|
||
|
Pattern string
|
||
|
MaxItems *int64
|
||
|
MinItems *int64
|
||
|
UniqueItems bool
|
||
|
MultipleOf *float64
|
||
|
Enum []JSON
|
||
|
MaxProperties *int64
|
||
|
MinProperties *int64
|
||
|
Required []string
|
||
|
Items *JSONSchemaPropsOrArray
|
||
|
AllOf []JSONSchemaProps
|
||
|
OneOf []JSONSchemaProps
|
||
|
AnyOf []JSONSchemaProps
|
||
|
Not *JSONSchemaProps
|
||
|
Properties map[string]JSONSchemaProps
|
||
|
AdditionalProperties *JSONSchemaPropsOrBool
|
||
|
PatternProperties map[string]JSONSchemaProps
|
||
|
Dependencies JSONSchemaDependencies
|
||
|
AdditionalItems *JSONSchemaPropsOrBool
|
||
|
Definitions JSONSchemaDefinitions
|
||
|
ExternalDocs *ExternalDocumentation
|
||
|
Example *JSON
|
||
|
}
|
||
|
|
||
|
// JSON represents any valid JSON value.
|
||
|
// These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil.
|
||
|
type JSON interface{}
|
||
|
|
||
|
// JSONSchemaURL represents a schema url.
|
||
|
type JSONSchemaURL string
|
||
|
|
||
|
// JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps
|
||
|
// or an array of JSONSchemaProps. Mainly here for serialization purposes.
|
||
|
type JSONSchemaPropsOrArray struct {
|
||
|
Schema *JSONSchemaProps
|
||
|
JSONSchemas []JSONSchemaProps
|
||
|
}
|
||
|
|
||
|
// JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value.
|
||
|
// Defaults to true for the boolean property.
|
||
|
type JSONSchemaPropsOrBool struct {
|
||
|
Allows bool
|
||
|
Schema *JSONSchemaProps
|
||
|
}
|
||
|
|
||
|
// JSONSchemaDependencies represent a dependencies property.
|
||
|
type JSONSchemaDependencies map[string]JSONSchemaPropsOrStringArray
|
||
|
|
||
|
// JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array.
|
||
|
type JSONSchemaPropsOrStringArray struct {
|
||
|
Schema *JSONSchemaProps
|
||
|
Property []string
|
||
|
}
|
||
|
|
||
|
// JSONSchemaDefinitions contains the models explicitly defined in this spec.
|
||
|
type JSONSchemaDefinitions map[string]JSONSchemaProps
|
||
|
|
||
|
// ExternalDocumentation allows referencing an external resource for extended documentation.
|
||
|
type ExternalDocumentation struct {
|
||
|
Description string
|
||
|
URL string
|
||
|
}
|