diff --git a/experiments/netconf/proto2yang/ietf-http.yang b/experiments/netconf/proto2yang/ietf-http.yang
new file mode 100644
index 0000000..3d9cf2c
--- /dev/null
+++ b/experiments/netconf/proto2yang/ietf-http.yang
@@ -0,0 +1,158 @@
+
+module ietf-http {
+
+
+    namespace "urn:opencord:params:xml:ns:voltha:ietf-http";
+    prefix http;
+
+
+    organization "CORD";
+    contact
+        " Any name";
+
+    description
+        "";
+
+    revision "2016-11-15" {
+        description "Initial revision.";
+        reference "reference";
+    }
+
+
+    grouping HttpRule {
+        description
+            "`HttpRule` defines the mapping of an RPC method to one or more HTTP REST API
+ methods. The mapping determines what portions of the request message are
+ populated from the path, query parameters, or body of the HTTP request.  The
+ mapping is typically specified as an `google.api.http` annotation, see
+  google api annotations.proto  for details.
+
+ The mapping consists of a mandatory field specifying a path template and an
+ optional `body` field specifying what data is represented in the HTTP request
+ body. The field name for the path indicates the HTTP method. Example:
+
+ ```
+ package google.storage.v2;
+
+ import  google api annotations.proto ;
+
+ service Storage  
+   rpc CreateObject(CreateObjectRequest) returns (Object)  
+     option (google.api.http)  
+       post:   v2  bucket_name=buckets    objects 
+       body:  object 
+      ;
+    ;
+  
+ ```
+
+ Here `bucket_name` and `object` bind to fields of the request message
+ `CreateObjectRequest`.
+
+ The rules for mapping HTTP path, query parameters, and body fields
+ to the request message are as follows:
+
+ 1. The `body` field specifies either ` ` or a field path, or is
+    omitted. If omitted, it assumes there is no HTTP body.
+ 2. Leaf fields (recursive expansion of nested messages in the
+    request) can be classified into three types:
+     (a) Matched in the URL template.
+     (b) Covered by body (if body is ` `, everything except (a) fields;
+         else everything under the body field)
+     (c) All other fields.
+ 3. URL query parameters found in the HTTP request are mapped to (c) fields.
+ 4. Any body sent with an HTTP request can contain only (b) fields.
+
+ The syntax of the path template is as follows:
+
+     Template =     Segments   Verb   ;
+     Segments = Segment       Segment   ;
+     Segment  =     |      | LITERAL | Variable ;
+     Variable =     FieldPath    =  Segments       ;
+     FieldPath = IDENT    .  IDENT   ;
+     Verb     =  :  LITERAL ;
+
+ ` ` matches a single path component, `  ` zero or more path components, and
+ `LITERAL` a constant.  A `Variable` can match an entire path as specified
+ again by a template; this nested template must not contain further variables.
+ If no template is given with a variable, it matches a single path component.
+ The notation ` var ` is henceforth equivalent to ` var=  `.
+
+ Use CustomHttpPattern to specify any HTTP method that is not included in the
+ pattern field, such as HEAD, or     to leave the HTTP method unspecified for
+ a given URL path rule. The wild-card rule is useful for services that provide
+ content to Web (HTML) clients.";
+        leaf get {
+            type  string; 
+            description
+                "Used for listing and getting information about resources.";
+        }
+
+        leaf put {
+            type  string; 
+            description
+                "Used for updating a resource.";
+        }
+
+        leaf post {
+            type  string; 
+            description
+                "Used for creating a resource.";
+        }
+
+        leaf delete {
+            type  string; 
+            description
+                "Used for deleting a resource.";
+        }
+
+        leaf patch {
+            type  string; 
+            description
+                "Used for updating a resource.";
+        }
+
+        container custom {
+            uses  CustomHttpPattern;
+
+            description
+                "Custom pattern is used for defining custom verbs.";
+        }
+
+        leaf body {
+            type  string; 
+            description
+                "The name of the request field whose value is mapped to the HTTP body, or
+ ` ` for mapping all fields not captured by the path pattern to the HTTP
+ body.";
+        }
+
+        list additional_bindings {
+            key "get";
+            uses  HttpRule;
+
+            description
+                "Additional HTTP bindings for the selector. Nested bindings must not
+ specify a selector and must not contain additional bindings.";
+        }
+
+    }
+
+    grouping CustomHttpPattern {
+        description
+            "A custom pattern is used for defining custom HTTP verb.";
+        leaf kind {
+            type  string; 
+            description
+                "The name of this custom HTTP verb.";
+        }
+
+        leaf path {
+            type  string; 
+            description
+                "The path matched by this custom verb.";
+        }
+
+    }
+
+}
\ No newline at end of file
