diff --git a/go/adapter_service/adapter_service.pb.go b/go/adapter_service/adapter_service.pb.go
index 31f5673..356a51d 100644
--- a/go/adapter_service/adapter_service.pb.go
+++ b/go/adapter_service/adapter_service.pb.go
@@ -36,61 +36,64 @@
 }
 
 var fileDescriptor_038e6ec340f67698 = []byte{
-	// 853 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0xdf, 0x6e, 0xdb, 0x36,
-	0x14, 0xc6, 0x91, 0x0d, 0xd8, 0xc5, 0x49, 0x6c, 0x27, 0x6c, 0x96, 0x0e, 0x0a, 0x56, 0x74, 0xed,
-	0xcd, 0x6e, 0x2a, 0x0f, 0x2d, 0xda, 0x6e, 0x18, 0x86, 0xcd, 0xff, 0xea, 0x7a, 0x6b, 0xe1, 0xc0,
-	0x9a, 0x8b, 0x61, 0x37, 0x01, 0x2d, 0x1d, 0xcb, 0x44, 0x29, 0x52, 0x13, 0x8f, 0x9c, 0xf6, 0x0d,
-	0xf6, 0x08, 0x7b, 0xdc, 0x41, 0x12, 0xe5, 0x58, 0xaa, 0xdd, 0xd6, 0x4e, 0xee, 0xac, 0xf3, 0xf1,
-	0xfb, 0xf1, 0xf0, 0x1c, 0x9a, 0x24, 0x3c, 0x5c, 0x6a, 0x49, 0x0b, 0x7e, 0x19, 0x27, 0x9a, 0xb4,
-	0x69, 0xf3, 0x80, 0xc7, 0x84, 0xc9, 0xa5, 0xc1, 0x64, 0x29, 0x7c, 0x74, 0xf3, 0x30, 0x6b, 0xd5,
-	0xc2, 0xce, 0x79, 0xa8, 0x75, 0x28, 0xb1, 0x9d, 0xcb, 0xb3, 0x74, 0xde, 0xc6, 0x28, 0xa6, 0xf7,
-	0xc5, 0x68, 0xc7, 0xa9, 0x22, 0x7d, 0x1d, 0x45, 0x5a, 0x59, 0xed, 0x7e, 0x5d, 0x4b, 0xf0, 0xd2,
-	0xc2, 0x37, 0xbb, 0x03, 0xbc, 0xce, 0xc3, 0xb9, 0x57, 0xd5, 0xf0, 0x1d, 0xa1, 0x32, 0x42, 0x2b,
-	0xb3, 0xd9, 0xbb, 0x40, 0x2e, 0x69, 0xb1, 0x59, 0x2b, 0xbe, 0xac, 0xf6, 0x6d, 0x55, 0xd3, 0x91,
-	0x2f, 0x2e, 0x09, 0x0d, 0x6d, 0xb6, 0xe2, 0x12, 0x15, 0xd9, 0x29, 0x1f, 0xff, 0x77, 0x07, 0x9a,
-	0x9d, 0x62, 0x01, 0x5e, 0x51, 0x1c, 0xf6, 0x2b, 0xb4, 0x86, 0x48, 0x2f, 0xf3, 0xc9, 0x3d, 0xe2,
-	0x94, 0x1a, 0xc6, 0x5c, 0x5b, 0x85, 0x9e, 0x56, 0x0a, 0x7d, 0x12, 0x5a, 0x39, 0xa7, 0xae, 0xcd,
-	0x6f, 0x7d, 0xe4, 0xf7, 0x07, 0x3f, 0x1c, 0xb0, 0xa7, 0x70, 0xd8, 0x09, 0x74, 0x4c, 0xfd, 0x7c,
-	0xed, 0xac, 0xe9, 0xda, 0x22, 0x14, 0xdf, 0xce, 0x99, 0x5b, 0x54, 0xdf, 0x2d, 0xab, 0xef, 0x0e,
-	0xb2, 0xea, 0xb3, 0x9f, 0xa0, 0x35, 0x41, 0x5f, 0x2b, 0x5f, 0x48, 0xdc, 0xd1, 0xfa, 0x0c, 0x8e,
-	0xfa, 0x28, 0x91, 0x76, 0xf5, 0x3d, 0x87, 0x46, 0x5f, 0x18, 0x3e, 0xdb, 0x79, 0xc2, 0x1f, 0xa1,
-	0x39, 0xc1, 0x81, 0xda, 0xc3, 0xf9, 0x0c, 0x8e, 0x26, 0x38, 0xd3, 0x9a, 0x76, 0x9f, 0xd1, 0x43,
-	0x39, 0xff, 0x13, 0xcd, 0xae, 0xce, 0x2e, 0x1c, 0x0f, 0x91, 0xc6, 0xf3, 0xb8, 0x18, 0x37, 0x52,
-	0x73, 0xfd, 0x81, 0xf7, 0x9e, 0x5b, 0xd9, 0xca, 0xde, 0x95, 0x20, 0x7f, 0xd1, 0xe3, 0x31, 0x9f,
-	0x09, 0x29, 0x8a, 0xde, 0xf4, 0x16, 0x42, 0x06, 0xc5, 0xf0, 0x57, 0xda, 0xd0, 0x67, 0x4f, 0xff,
-	0x18, 0xa0, 0x28, 0xd4, 0x85, 0x4e, 0x88, 0x1d, 0x95, 0xae, 0xec, 0x6b, 0xab, 0xe7, 0x09, 0x1c,
-	0xda, 0xbe, 0xec, 0x60, 0xea, 0x42, 0x6b, 0x1a, 0x07, 0x9c, 0xf0, 0x85, 0xd4, 0x57, 0xa6, 0x9b,
-	0xca, 0xb7, 0xec, 0x6e, 0x75, 0x59, 0x59, 0x2c, 0x17, 0xb7, 0x32, 0x26, 0xf0, 0xcd, 0x1a, 0x63,
-	0xa4, 0xfc, 0x04, 0x23, 0x54, 0xc4, 0xa5, 0x7c, 0xcf, 0x6a, 0x35, 0x5a, 0x13, 0x3f, 0xce, 0xfc,
-	0x0d, 0x1a, 0x1e, 0xaa, 0xe0, 0x82, 0xfb, 0x6f, 0x91, 0xc6, 0x29, 0xd5, 0xb3, 0x5a, 0x09, 0x5b,
-	0x09, 0x03, 0x68, 0x16, 0x59, 0x5d, 0x44, 0x3d, 0xad, 0xe6, 0x22, 0x64, 0xe7, 0x35, 0x84, 0x8d,
-	0x9b, 0xac, 0xb9, 0x5b, 0x31, 0x1e, 0x1c, 0xf7, 0xf5, 0x95, 0x92, 0x9a, 0x07, 0x63, 0x95, 0x8e,
-	0x22, 0x1e, 0x22, 0x7b, 0x50, 0xed, 0x62, 0x1e, 0x2c, 0x07, 0x4d, 0xf0, 0x9f, 0x14, 0x0d, 0x39,
-	0xe7, 0x1b, 0xc6, 0x4c, 0xd0, 0xc4, 0x5a, 0x19, 0x64, 0xaf, 0xe0, 0x24, 0xdb, 0x5d, 0x96, 0x67,
-	0xcf, 0x0b, 0x67, 0xa3, 0xe3, 0x33, 0x68, 0x63, 0x38, 0xed, 0xcc, 0x74, 0xb2, 0xe2, 0x4d, 0xe3,
-	0x30, 0xe1, 0x01, 0xee, 0x0f, 0x7c, 0x04, 0x47, 0x6b, 0xe9, 0x19, 0x06, 0xe5, 0x49, 0x36, 0xea,
-	0x3b, 0x27, 0xa5, 0xf1, 0x5a, 0xfe, 0x03, 0x8e, 0x3b, 0x3e, 0x89, 0x25, 0x27, 0x5c, 0x95, 0x68,
-	0xef, 0xb9, 0x47, 0xd0, 0xec, 0xe9, 0x28, 0x12, 0x74, 0x73, 0xd4, 0x18, 0x1a, 0x65, 0x57, 0xca,
-	0xbe, 0x55, 0x37, 0xe3, 0x7a, 0xdf, 0x5e, 0xa3, 0x31, 0x3c, 0x44, 0xe7, 0xeb, 0x92, 0x58, 0x51,
-	0x1f, 0x7c, 0xf9, 0xef, 0x17, 0x07, 0xec, 0x2f, 0x38, 0x1b, 0x22, 0x55, 0x04, 0xdb, 0xbb, 0x9b,
-	0x92, 0xa7, 0x70, 0xa7, 0xc7, 0x95, 0x8f, 0xb2, 0xa2, 0xdd, 0x06, 0xb6, 0xec, 0x8c, 0xdd, 0x19,
-	0xd9, 0x1f, 0xe2, 0xc6, 0x58, 0x0f, 0x4e, 0x26, 0xb8, 0xc4, 0x84, 0x6e, 0x13, 0xfa, 0x33, 0x34,
-	0x3c, 0xe2, 0x09, 0x8d, 0x23, 0x5f, 0x64, 0x07, 0x36, 0x3b, 0xab, 0x02, 0xc7, 0xaf, 0x7b, 0xa3,
-	0x2c, 0xee, 0x30, 0x37, 0xbb, 0xab, 0xdd, 0xec, 0xf7, 0xaa, 0xd5, 0xbf, 0x43, 0xc3, 0x13, 0x51,
-	0x2a, 0x39, 0x61, 0x47, 0xf2, 0x24, 0xaa, 0x67, 0x53, 0x11, 0xaf, 0xb3, 0xb1, 0xdb, 0x7a, 0x1c,
-	0x63, 0xc2, 0xb3, 0xfb, 0x39, 0xe3, 0xe5, 0x89, 0xa4, 0x71, 0x9c, 0xa0, 0x31, 0x83, 0xec, 0xd6,
-	0x67, 0xcc, 0xcd, 0x6f, 0x7f, 0x37, 0xff, 0x7a, 0x21, 0x24, 0x61, 0xb2, 0xf5, 0xb8, 0xf8, 0x05,
-	0x5a, 0x53, 0xb5, 0xbf, 0xfd, 0x25, 0x1c, 0x0e, 0x91, 0x06, 0xef, 0xe8, 0x0d, 0x97, 0x29, 0xb2,
-	0xfb, 0xd5, 0x55, 0xac, 0x49, 0xe5, 0x1a, 0xee, 0xba, 0xab, 0x07, 0x91, 0x3b, 0x41, 0x4a, 0x13,
-	0x95, 0xcb, 0x86, 0x0d, 0xe1, 0xd0, 0xdb, 0x4e, 0xf2, 0x3e, 0x24, 0x6d, 0x4b, 0x69, 0x0a, 0xcd,
-	0x21, 0x92, 0x27, 0x54, 0x28, 0xb1, 0x64, 0x5d, 0xcf, 0x59, 0xc4, 0x87, 0x58, 0xb0, 0xca, 0xbf,
-	0xe5, 0x77, 0x1f, 0x19, 0x61, 0x3b, 0x36, 0xcd, 0xae, 0xe6, 0x4f, 0x60, 0xbd, 0x4f, 0x62, 0xbd,
-	0x1a, 0xb6, 0x4b, 0xf0, 0x50, 0x27, 0xa1, 0xab, 0x63, 0x54, 0xbe, 0x4e, 0x02, 0xd7, 0x3e, 0xf9,
-	0x6a, 0x6f, 0xd9, 0xee, 0xe9, 0x9b, 0x3c, 0x5e, 0x7d, 0xc4, 0xfd, 0xfd, 0x3c, 0x14, 0xb4, 0x48,
-	0x67, 0xd9, 0xb6, 0x68, 0x97, 0x04, 0xfb, 0x68, 0x7c, 0x54, 0x3e, 0x21, 0x9f, 0xb6, 0x43, 0x5d,
-	0x7f, 0x31, 0xcf, 0xbe, 0xca, 0xd5, 0x27, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xbd, 0x54, 0xa5,
-	0xf6, 0x59, 0x0b, 0x00, 0x00,
+	// 905 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x97, 0xdb, 0x6e, 0x1b, 0x37,
+	0x13, 0xc7, 0xe1, 0xef, 0x03, 0x7a, 0x31, 0xb6, 0x25, 0x9b, 0xb5, 0x9d, 0x62, 0x8d, 0xa6, 0x69,
+	0x72, 0xd3, 0x9b, 0xac, 0x8a, 0x04, 0x49, 0x7a, 0x40, 0xd1, 0xea, 0x14, 0x45, 0xad, 0xd3, 0x55,
+	0xb5, 0x51, 0x50, 0xf4, 0xc6, 0xa0, 0x56, 0xa3, 0x15, 0x11, 0x2e, 0xb9, 0x25, 0x67, 0xe5, 0xe4,
+	0x0d, 0xfa, 0x40, 0x7d, 0xc0, 0x62, 0x4f, 0x92, 0x56, 0x91, 0x92, 0xc8, 0xf6, 0x9d, 0x38, 0x7f,
+	0xce, 0x6f, 0x86, 0x33, 0x5c, 0x92, 0x82, 0x07, 0x73, 0x2d, 0x69, 0xc6, 0x2f, 0x63, 0xa3, 0x49,
+	0xdb, 0x06, 0x9f, 0xf0, 0x98, 0xd0, 0x5c, 0x5a, 0x34, 0x73, 0x11, 0xa0, 0x9b, 0x99, 0x59, 0x7d,
+	0xcd, 0xec, 0x9c, 0x87, 0x5a, 0x87, 0x12, 0x1b, 0x99, 0x3c, 0x4e, 0xa6, 0x0d, 0x8c, 0x62, 0x7a,
+	0x97, 0xcf, 0x76, 0x9c, 0x2a, 0x32, 0xd0, 0x51, 0xa4, 0x55, 0xa1, 0xdd, 0x5b, 0xd7, 0x0c, 0x5e,
+	0x16, 0xf0, 0xcd, 0xde, 0x13, 0x5c, 0xe6, 0xe1, 0xdc, 0xad, 0x6a, 0xf8, 0x96, 0x50, 0x59, 0xa1,
+	0x95, 0xdd, 0xec, 0x3b, 0x43, 0x2e, 0x69, 0xb6, 0x59, 0xcb, 0x47, 0x85, 0xf6, 0x65, 0x55, 0xd3,
+	0x51, 0x20, 0x2e, 0x09, 0x2d, 0x6d, 0x76, 0xc5, 0x39, 0x2a, 0x2a, 0x42, 0x3e, 0xfa, 0xf7, 0x14,
+	0x6a, 0xcd, 0x7c, 0x01, 0x7e, 0x5e, 0x1c, 0xf6, 0x33, 0xd4, 0x7b, 0x48, 0x2f, 0xb2, 0xe0, 0x3e,
+	0x71, 0x4a, 0x2c, 0x63, 0x6e, 0x51, 0x85, 0xb6, 0x56, 0x0a, 0x03, 0x12, 0x5a, 0x39, 0x27, 0x6e,
+	0x91, 0xdf, 0xea, 0xcc, 0x6f, 0xf6, 0xbe, 0xdd, 0x63, 0x4f, 0x60, 0xbf, 0x39, 0xd1, 0x31, 0x75,
+	0xb2, 0xb5, 0xb3, 0x9a, 0x5b, 0x14, 0x21, 0x1f, 0x3b, 0x67, 0x6e, 0x5e, 0x7d, 0xb7, 0xac, 0xbe,
+	0xdb, 0x4d, 0xab, 0xcf, 0xbe, 0x87, 0xfa, 0x10, 0x03, 0xad, 0x02, 0x21, 0x71, 0x47, 0xd7, 0xa7,
+	0x70, 0xd0, 0x41, 0x89, 0xb4, 0xab, 0xdf, 0x33, 0x38, 0xec, 0x08, 0xcb, 0xc7, 0x3b, 0x07, 0xfc,
+	0x0e, 0x6a, 0x43, 0xec, 0xaa, 0x6b, 0x78, 0x3e, 0x85, 0x83, 0x21, 0x8e, 0xb5, 0xa6, 0xdd, 0x23,
+	0xfa, 0x28, 0xa7, 0xaf, 0xd0, 0xee, 0xea, 0xd9, 0x82, 0xa3, 0x1e, 0x92, 0x37, 0x8d, 0xf3, 0x79,
+	0x7d, 0x35, 0xd5, 0xef, 0xf9, 0xde, 0x75, 0x2b, 0x5b, 0xd9, 0xbf, 0x12, 0x14, 0xcc, 0xda, 0x3c,
+	0xe6, 0x63, 0x21, 0x45, 0xde, 0x9b, 0xf6, 0x4c, 0xc8, 0x49, 0x3e, 0xfd, 0x42, 0x5b, 0xfa, 0xe4,
+	0xf0, 0x8f, 0x00, 0xf2, 0x42, 0x0d, 0xb4, 0x21, 0x76, 0x50, 0x7a, 0xa5, 0xa3, 0xad, 0x3e, 0x8f,
+	0x61, 0xbf, 0xe8, 0xcb, 0x0e, 0x4e, 0x2d, 0xa8, 0x8f, 0xe2, 0x09, 0x27, 0x7c, 0x2e, 0xf5, 0x95,
+	0x6d, 0x25, 0xf2, 0x0d, 0xbb, 0x53, 0x5d, 0x56, 0x6a, 0xcb, 0xc4, 0xad, 0x8c, 0x21, 0x7c, 0xb1,
+	0xc2, 0xe8, 0xab, 0xc0, 0x60, 0x84, 0x8a, 0xb8, 0x94, 0xef, 0xd8, 0x5a, 0x8d, 0x56, 0xc4, 0x0f,
+	0x33, 0x7f, 0x81, 0x43, 0x1f, 0xd5, 0x64, 0xc0, 0x83, 0x37, 0x48, 0x5e, 0x42, 0xeb, 0x59, 0x2d,
+	0x84, 0xad, 0x84, 0x2e, 0xd4, 0xf2, 0xac, 0x06, 0x51, 0x5b, 0xab, 0xa9, 0x08, 0xd9, 0xf9, 0x1a,
+	0xa2, 0xb0, 0xdb, 0xb4, 0xb9, 0x5b, 0x31, 0x3e, 0x1c, 0x75, 0xf4, 0x95, 0x92, 0x9a, 0x4f, 0x3c,
+	0x95, 0xf4, 0x23, 0x1e, 0x22, 0xbb, 0x5f, 0xed, 0x62, 0x66, 0x2c, 0x27, 0x0d, 0xf1, 0xef, 0x04,
+	0x2d, 0x39, 0xe7, 0x1b, 0xe6, 0x0c, 0xd1, 0xc6, 0x5a, 0x59, 0x64, 0x17, 0x70, 0x9c, 0xee, 0xae,
+	0x82, 0x57, 0x9c, 0x17, 0xce, 0x46, 0x8f, 0x4f, 0xa0, 0x79, 0x70, 0xd2, 0x1c, 0x6b, 0xb3, 0xe0,
+	0x8d, 0xe2, 0xd0, 0xf0, 0x09, 0x5e, 0x1f, 0xf8, 0x10, 0x0e, 0x56, 0xd2, 0xb3, 0x0c, 0xca, 0x93,
+	0xac, 0xdf, 0x71, 0x8e, 0x4b, 0xc7, 0xa5, 0xfc, 0x1b, 0x1c, 0x35, 0x03, 0x12, 0x73, 0x4e, 0xb8,
+	0x28, 0xd1, 0xb5, 0x63, 0xf7, 0xa1, 0xd6, 0xd6, 0x51, 0x24, 0xe8, 0xe6, 0x28, 0x0f, 0x0e, 0xcb,
+	0xae, 0x94, 0x7d, 0xab, 0x6e, 0xc6, 0xd5, 0xbe, 0xbd, 0x44, 0x6b, 0x79, 0x88, 0xce, 0x69, 0x49,
+	0xac, 0xa8, 0xf7, 0xff, 0xff, 0xcf, 0xff, 0xf6, 0xd8, 0x9f, 0x70, 0xd6, 0x43, 0xaa, 0x08, 0x45,
+	0xef, 0x6e, 0x4a, 0x1e, 0xc1, 0xe7, 0x6d, 0xae, 0x02, 0x94, 0x15, 0xed, 0x36, 0xb0, 0x65, 0x67,
+	0x8a, 0x9d, 0x91, 0x7e, 0x10, 0x37, 0xc6, 0xfa, 0x70, 0x3c, 0xc4, 0x39, 0x1a, 0xba, 0x4d, 0xe8,
+	0x8f, 0x70, 0xe8, 0x13, 0x37, 0xe4, 0x45, 0x81, 0x48, 0x0f, 0x6c, 0x76, 0x56, 0x05, 0x7a, 0x2f,
+	0xdb, 0xfd, 0xd4, 0xee, 0x30, 0x37, 0xbd, 0xab, 0xdd, 0xf4, 0xf7, 0xa2, 0xd5, 0xbf, 0xc2, 0xa1,
+	0x2f, 0xa2, 0x44, 0x72, 0xc2, 0xa6, 0xe4, 0x26, 0x5a, 0xcf, 0xa6, 0x22, 0x2e, 0xb3, 0x29, 0xb6,
+	0xb5, 0x17, 0xa3, 0xe1, 0xe9, 0xfd, 0x9c, 0xf2, 0xb2, 0x44, 0x92, 0x38, 0x36, 0x68, 0x6d, 0x37,
+	0xbd, 0xf5, 0x19, 0x73, 0xb3, 0xdb, 0xdf, 0xcd, 0x46, 0xcf, 0x85, 0x24, 0x34, 0x5b, 0x8f, 0x8b,
+	0x9f, 0xa0, 0x3e, 0x52, 0xd7, 0x77, 0x7f, 0x01, 0xfb, 0x3d, 0xa4, 0xee, 0x5b, 0x7a, 0xcd, 0x65,
+	0x82, 0xec, 0x5e, 0x75, 0x15, 0x2b, 0x52, 0xb9, 0x86, 0x3b, 0xee, 0xe2, 0x41, 0xe4, 0x0e, 0x91,
+	0x12, 0xa3, 0x32, 0xd9, 0xb2, 0x1e, 0xec, 0xfb, 0xdb, 0x49, 0xfe, 0xfb, 0xa4, 0x6d, 0x29, 0x8d,
+	0xa0, 0xd6, 0x43, 0xf2, 0x85, 0x0a, 0x25, 0x96, 0xac, 0x65, 0xcc, 0xdc, 0xde, 0xc3, 0x9c, 0x55,
+	0x7e, 0x96, 0x5f, 0x7f, 0x60, 0x46, 0xd1, 0xb1, 0x51, 0x7a, 0x35, 0x7f, 0x04, 0xeb, 0x7f, 0x14,
+	0xeb, 0xaf, 0x63, 0x7f, 0x80, 0xa3, 0xe2, 0x12, 0xf4, 0x54, 0xb2, 0xfb, 0x5b, 0x2a, 0xbf, 0x74,
+	0x77, 0x77, 0xfd, 0x03, 0xce, 0x96, 0x61, 0x7d, 0x34, 0x82, 0xcb, 0xdf, 0x93, 0x68, 0x8c, 0x86,
+	0x7d, 0xb5, 0x72, 0x5e, 0xae, 0x0a, 0x9e, 0xf2, 0x2e, 0x5e, 0x0d, 0xb4, 0xda, 0x8a, 0x1c, 0xc0,
+	0xe9, 0x22, 0x9b, 0x5b, 0x21, 0xb6, 0x08, 0x1e, 0x68, 0x13, 0xba, 0x3a, 0x46, 0x15, 0x68, 0x33,
+	0x71, 0x8b, 0xe7, 0xf0, 0xda, 0x3b, 0xbf, 0x75, 0xf2, 0x3a, 0xb3, 0x57, 0x1f, 0xb8, 0x7f, 0x3d,
+	0x0b, 0x05, 0xcd, 0x92, 0x71, 0xfa, 0xc9, 0x34, 0x4a, 0x42, 0xf1, 0xa0, 0x7e, 0x58, 0x3e, 0xaf,
+	0x9f, 0x34, 0x42, 0xbd, 0xfe, 0x6f, 0x62, 0xfc, 0x59, 0xa6, 0x3e, 0xfe, 0x2f, 0x00, 0x00, 0xff,
+	0xff, 0xab, 0x79, 0xdb, 0x21, 0x75, 0x0c, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -152,6 +155,10 @@
 	SetExtValue(ctx context.Context, in *core_adapter.SetExtValueMessage, opts ...grpc.CallOption) (*empty.Empty, error)
 	GetSingleValue(ctx context.Context, in *extension.SingleGetValueRequest, opts ...grpc.CallOption) (*extension.SingleGetValueResponse, error)
 	SetSingleValue(ctx context.Context, in *extension.SingleSetValueRequest, opts ...grpc.CallOption) (*extension.SingleSetValueResponse, error)
+	DisableOnuDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error)
+	EnableOnuDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error)
+	DisableOnuSerialNumber(ctx context.Context, in *voltha.OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error)
+	EnableOnuSerialNumber(ctx context.Context, in *voltha.OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error)
 }
 
 type adapterServiceClient struct {
@@ -504,6 +511,42 @@
 	return out, nil
 }
 
+func (c *adapterServiceClient) DisableOnuDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error) {
+	out := new(empty.Empty)
+	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/DisableOnuDevice", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) EnableOnuDevice(ctx context.Context, in *voltha.Device, opts ...grpc.CallOption) (*empty.Empty, error) {
+	out := new(empty.Empty)
+	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/EnableOnuDevice", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) DisableOnuSerialNumber(ctx context.Context, in *voltha.OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error) {
+	out := new(empty.Empty)
+	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/DisableOnuSerialNumber", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *adapterServiceClient) EnableOnuSerialNumber(ctx context.Context, in *voltha.OnuSerialNumberOnOLTPon, opts ...grpc.CallOption) (*empty.Empty, error) {
+	out := new(empty.Empty)
+	err := c.cc.Invoke(ctx, "/adapter_service.AdapterService/EnableOnuSerialNumber", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // AdapterServiceServer is the server API for AdapterService service.
 type AdapterServiceServer interface {
 	// GetHealthStatus is used by an AdapterService client to verify connectivity
@@ -553,6 +596,10 @@
 	SetExtValue(context.Context, *core_adapter.SetExtValueMessage) (*empty.Empty, error)
 	GetSingleValue(context.Context, *extension.SingleGetValueRequest) (*extension.SingleGetValueResponse, error)
 	SetSingleValue(context.Context, *extension.SingleSetValueRequest) (*extension.SingleSetValueResponse, error)
+	DisableOnuDevice(context.Context, *voltha.Device) (*empty.Empty, error)
+	EnableOnuDevice(context.Context, *voltha.Device) (*empty.Empty, error)
+	DisableOnuSerialNumber(context.Context, *voltha.OnuSerialNumberOnOLTPon) (*empty.Empty, error)
+	EnableOnuSerialNumber(context.Context, *voltha.OnuSerialNumberOnOLTPon) (*empty.Empty, error)
 }
 
 // UnimplementedAdapterServiceServer can be embedded to have forward compatible implementations.
@@ -664,6 +711,18 @@
 func (*UnimplementedAdapterServiceServer) SetSingleValue(ctx context.Context, req *extension.SingleSetValueRequest) (*extension.SingleSetValueResponse, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method SetSingleValue not implemented")
 }
+func (*UnimplementedAdapterServiceServer) DisableOnuDevice(ctx context.Context, req *voltha.Device) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method DisableOnuDevice not implemented")
+}
+func (*UnimplementedAdapterServiceServer) EnableOnuDevice(ctx context.Context, req *voltha.Device) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method EnableOnuDevice not implemented")
+}
+func (*UnimplementedAdapterServiceServer) DisableOnuSerialNumber(ctx context.Context, req *voltha.OnuSerialNumberOnOLTPon) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method DisableOnuSerialNumber not implemented")
+}
+func (*UnimplementedAdapterServiceServer) EnableOnuSerialNumber(ctx context.Context, req *voltha.OnuSerialNumberOnOLTPon) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method EnableOnuSerialNumber not implemented")
+}
 
 func RegisterAdapterServiceServer(s *grpc.Server, srv AdapterServiceServer) {
 	s.RegisterService(&_AdapterService_serviceDesc, srv)
@@ -1307,6 +1366,78 @@
 	return interceptor(ctx, in, info, handler)
 }
 
+func _AdapterService_DisableOnuDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.Device)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).DisableOnuDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/adapter_service.AdapterService/DisableOnuDevice",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).DisableOnuDevice(ctx, req.(*voltha.Device))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_EnableOnuDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.Device)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).EnableOnuDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/adapter_service.AdapterService/EnableOnuDevice",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).EnableOnuDevice(ctx, req.(*voltha.Device))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_DisableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.OnuSerialNumberOnOLTPon)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).DisableOnuSerialNumber(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/adapter_service.AdapterService/DisableOnuSerialNumber",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).DisableOnuSerialNumber(ctx, req.(*voltha.OnuSerialNumberOnOLTPon))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _AdapterService_EnableOnuSerialNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voltha.OnuSerialNumberOnOLTPon)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(AdapterServiceServer).EnableOnuSerialNumber(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/adapter_service.AdapterService/EnableOnuSerialNumber",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(AdapterServiceServer).EnableOnuSerialNumber(ctx, req.(*voltha.OnuSerialNumberOnOLTPon))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 var _AdapterService_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "adapter_service.AdapterService",
 	HandlerType: (*AdapterServiceServer)(nil),
@@ -1447,6 +1578,22 @@
 			MethodName: "SetSingleValue",
 			Handler:    _AdapterService_SetSingleValue_Handler,
 		},
+		{
+			MethodName: "DisableOnuDevice",
+			Handler:    _AdapterService_DisableOnuDevice_Handler,
+		},
+		{
+			MethodName: "EnableOnuDevice",
+			Handler:    _AdapterService_EnableOnuDevice_Handler,
+		},
+		{
+			MethodName: "DisableOnuSerialNumber",
+			Handler:    _AdapterService_DisableOnuSerialNumber_Handler,
+		},
+		{
+			MethodName: "EnableOnuSerialNumber",
+			Handler:    _AdapterService_EnableOnuSerialNumber_Handler,
+		},
 	},
 	Streams: []grpc.StreamDesc{
 		{
