diff --git a/pkg/schema/schema.go b/pkg/schema/schema.go
index e0eca6b6ffc02511acbe3712b2f2bf83fc5bc05e..ab9b7e952d3720f8c7065a2bb7d7e74b1c91927f 100644
--- a/pkg/schema/schema.go
+++ b/pkg/schema/schema.go
@@ -12,7 +12,8 @@ import (
 
 type Schema struct {
 	field.Field
-	Loaded bool `json:"loaded"`
+	Loaded   bool              `json:"loaded"`
+	Metadata map[string]string `json:"metadata"`
 }
 
 func New(kv ...interface{}) *Schema {
@@ -33,8 +34,9 @@ var (
 
 func (s *Schema) Clone(reset bool) *Schema {
 	return &Schema{
-		Field:  *s.Field.Clone(reset),
-		Loaded: s.Loaded,
+		Field:    *s.Field.Clone(reset),
+		Loaded:   s.Loaded,
+		Metadata: s.Metadata,
 	}
 }
 
diff --git a/pkg/schema/schema_json.go b/pkg/schema/schema_json.go
index 906acb5d0d361611d01f43d10bd0f80377ccb4a7..72b4ac25bb78c6d8cb868bd7018e81acf2d2080c 100644
--- a/pkg/schema/schema_json.go
+++ b/pkg/schema/schema_json.go
@@ -6,8 +6,8 @@ import (
 )
 
 type jsonSchema struct {
-	//Field  json.RawMessage `json:"field,inline"`
-	Loaded bool `json:"loaded"`
+	Loaded   bool              `json:"loaded"`
+	Metadata map[string]string `json:"metadata"`
 }
 
 func (s *Schema) UnmarshalJSON(b []byte) error {
@@ -17,20 +17,12 @@ func (s *Schema) UnmarshalJSON(b []byte) error {
 		return errors.Wrapf(err, "error unmarshal json into field")
 	}
 	s.Loaded = j.Loaded
+	s.Metadata = j.Metadata
 
 	if err := s.Field.UnmarshalJSON(b); err != nil {
 		return err
 	}
 
-	//if len(j.Field) > 0 {
-	//	if err := s.Field.UnmarshalJSON(j.Field); err != nil {
-	//		return err
-	//	}
-	//	//if err := jsoniter.Unmarshal(j.Field, &s.Field); err != nil {
-	//	//	return err
-	//	//}
-	//}
-
 	return nil
 }
 
@@ -42,8 +34,8 @@ func (s *Schema) MarshalJSON() ([]byte, error) {
 	}
 
 	jsonSch, err := jsoniter.Marshal(jsonSchema{
-		//Field: b,
-		Loaded: s.Loaded,
+		Loaded:   s.Loaded,
+		Metadata: s.Metadata,
 	})
 	if err != nil {
 		return nil, err
diff --git a/pkg/schema/test/object_test.go b/pkg/schema/test/object_test.go
index e5af975cdb9ed8e86044e5d357530dd2420afee9..e70aa6a3f11c94125cbf2f320741becf1359ad48 100644
--- a/pkg/schema/test/object_test.go
+++ b/pkg/schema/test/object_test.go
@@ -110,10 +110,13 @@ func TestSchema_JSON(t *testing.T) {
 		"evaluatedField", field.String(modify.Value("stringField2 + '_' 	")),
 	)
 	sch.Loaded = true
+	sch.Metadata = map[string]string{
+		"extension": "perxisweb",
+	}
 
 	b, err := json.MarshalIndent(sch, "", "  ")
 	require.NoError(t, err)
-	//fmt.Println(string(b))
+	fmt.Println(string(b))
 
 	res := schema.New()
 	err = json.Unmarshal(b, res)