// buildAttributeSchema initializes the given JSON schema that corresponds to the given attribute. func buildAttributeSchema(api *design.APIDefinition, s *JSONSchema, at *design.AttributeDefinition) *JSONSchema { if at.View != "" { inner := NewJSONSchema() inner.Ref = MediaTypeRef(api, at.Type.(*design.MediaTypeDefinition), at.View) s.Merge(inner) return s } s.Merge(TypeSchema(api, at.Type)) if s.Ref != "" { // Ref is exclusive with other fields return s } s.DefaultValue = toStringMap(at.DefaultValue) s.Description = at.Description s.Example = at.GenerateExample(api.RandomGenerator(), nil) val := at.Validation if val == nil { return s } s.Enum = val.Values s.Format = val.Format s.Pattern = val.Pattern if val.Minimum != nil { s.Minimum = val.Minimum } if val.Maximum != nil { s.Maximum = val.Maximum } if val.MinLength != nil { s.MinLength = val.MinLength } if val.MaxLength != nil { s.MaxLength = val.MaxLength } s.Required = val.Required return s }