FeatureStore: Add D-Bus interface YAML

This interface handles Get/Set Features for storage resources,
transferring raw proto binary over byte arrays.

Design-Doc: go/bmc-redfish-nvme-get-set-features
Google-Bug-Id: 405609473
Change-Id: Idc4bbbcfd25989ea6a346d7b785c6890afff295d
Signed-off-by: Guangzong Chen <guangzong@google.com>
diff --git a/yaml/xyz/openbmc_project/NVMe/FeatureStore.interface.yaml b/yaml/xyz/openbmc_project/NVMe/FeatureStore.interface.yaml
new file mode 100644
index 0000000..de77d22
--- /dev/null
+++ b/yaml/xyz/openbmc_project/NVMe/FeatureStore.interface.yaml
@@ -0,0 +1,59 @@
+description: >
+    Dbus NVMe Feature Store handles Get/Set Features for a storage resource,
+    transferring raw proto binary over byte arrays.
+
+properties:
+    - name: ProtoLibraryVersion
+      type: string
+      flags:
+          - const
+      description: >
+          The static version of the compiled Protocol Buffer library used by the
+          nvmed daemon (e.g., "2.0"). This maps directly to the
+          DataProto.Revision field in the Redfish payload.
+    - name: FeatureCollection
+      type: array[struct[string, string, string]]
+      flags:
+          - const
+      description: >
+          A static collection of tuples representing all supported NVMe Features
+          for the component. Each tuple is formatted as [FeatureName, FeatureId,
+          ProtoClassName] (e.g., ["VolatileWriteCache_Current", "0x06",
+          "google.gbmc.nvme.base.VolatileWriteCache"]).
+
+methods:
+    - name: GetFeature
+      description: >
+          Read the data of an individual NVMe Feature directly from the device.
+      parameters:
+          - name: FeatureName
+            type: string
+            description: >
+                The Identifier for the requested Feature (e.g.,
+                "VolatileWriteCache_Current").
+      returns:
+          - name: Ret
+            type: array[byte]
+            description: >
+                A byte array containing the raw proto binary response payload.
+      errors:
+          - xyz.openbmc_project.Common.Error.InvalidArgument
+          - xyz.openbmc_project.Common.Error.Unavailable
+
+    - name: SetFeature
+      description: >
+          Configure an individual NVMe Feature on the device.
+      parameters:
+          - name: FeatureName
+            type: string
+            description: >
+                The Identifier for the Feature being patched (e.g.,
+                "VolatileWriteCache_Current").
+          - name: Data
+            type: array[byte]
+            description: >
+                A byte array containing the raw proto binary payload to apply.
+      returns: []
+      errors:
+          - xyz.openbmc_project.Common.Error.InvalidArgument
+          - xyz.openbmc_project.Common.Error.Unavailable