From f873651930bad10202b32724ece491e08674e713 Mon Sep 17 00:00:00 2001
From: Prabhu Ram <pganapat@adobe.com>
Date: Thu, 6 May 2021 11:01:34 -0500
Subject: [PATCH 1/3] Add Storefront properties for Product Attributes

---
 .../graph-ql/coverage/eav/EavGraphQl.graphqls | 42 +++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100644 design-documents/graph-ql/coverage/eav/EavGraphQl.graphqls

diff --git a/design-documents/graph-ql/coverage/eav/EavGraphQl.graphqls b/design-documents/graph-ql/coverage/eav/EavGraphQl.graphqls
new file mode 100644
index 000000000..4bbd6e522
--- /dev/null
+++ b/design-documents/graph-ql/coverage/eav/EavGraphQl.graphqls
@@ -0,0 +1,42 @@
+# Copyright © Magento, Inc. All rights reserved.
+# See COPYING.txt for license details.
+
+type Query {
+    customAttributeMetadata(attributes: [AttributeInput!]!): CustomAttributeMetadata @resolver(class: "Magento\\EavGraphQl\\Model\\Resolver\\CustomAttributeMetadata") @doc(description: "The customAttributeMetadata query returns the attribute type, given an attribute code and entity type") @cache(cacheable: false)
+}
+
+type CustomAttributeMetadata @doc(description: "CustomAttributeMetadata defines an array of attribute_codes and entity_types") {
+    items: [Attribute] @doc(description: "An array of attributes")
+}
+
+type Attribute @doc(description: "Attribute contains the attribute_type of the specified attribute_code and entity_type") {
+    attribute_code: String @doc(description: "The unique identifier for an attribute code. This value should be in lowercase letters without spaces.")
+    entity_type: String @doc(description: "The type of entity that defines the attribute")
+    attribute_type: String @doc(description: "The data type of the attribute")
+    input_type: String @doc(description: "The frontend input type of the attribute")
+    attribute_options: [AttributeOption] @resolver(class: "Magento\\EavGraphQl\\Model\\Resolver\\AttributeOptions") @doc(description: "Attribute options list.")
+    storefront_properties: StorefrontProperties
+}
+
+type StorefrontProperties {
+   used_in_product_listing: Boolean
+   position: Int
+   visible_on_catalog_storefront: Boolean
+   use_in_layered_navigation: UseInLayeredNavigationOptions
+}
+
+enum UseInLayeredNavigationOptions {
+  NO
+  FILTERABLE_WTH_RESULTS
+  FILTERABLE_NO_RESULT
+}
+
+type AttributeOption @doc(description: "Attribute option.") {
+    label: String @doc(description: "Attribute option label.")
+    value: String @doc(description: "Attribute option value.")
+}
+
+input AttributeInput @doc(description: "AttributeInput specifies the attribute_code and entity_type to search") {
+    attribute_code: String @doc(description: "The unique identifier for an attribute code. This value should be in lowercase letters without spaces.")
+    entity_type: String @doc(description: "The type of entity that defines the attribute")
+}

From 0294d2c4de0e320caed929edbbf7e7a6b1429e93 Mon Sep 17 00:00:00 2001
From: Prabhu Ram <pganapat@adobe.com>
Date: Mon, 10 May 2021 11:44:11 -0500
Subject: [PATCH 2/3] Update EavGraphQl.graphqls

---
 .../graph-ql/coverage/eav/EavGraphQl.graphqls            | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/design-documents/graph-ql/coverage/eav/EavGraphQl.graphqls b/design-documents/graph-ql/coverage/eav/EavGraphQl.graphqls
index 4bbd6e522..fc26ec6a9 100644
--- a/design-documents/graph-ql/coverage/eav/EavGraphQl.graphqls
+++ b/design-documents/graph-ql/coverage/eav/EavGraphQl.graphqls
@@ -23,11 +23,13 @@ type StorefrontProperties {
    position: Int
    visible_on_catalog_storefront: Boolean
    use_in_layered_navigation: UseInLayeredNavigationOptions
+   use_in_search_results_layered_navigation: Boolean
+   use_in_search: Boolean
 }
 
 enum UseInLayeredNavigationOptions {
   NO
-  FILTERABLE_WTH_RESULTS
+  FILTERABLE_WITH_RESULTS
   FILTERABLE_NO_RESULT
 }
 
@@ -40,3 +42,8 @@ input AttributeInput @doc(description: "AttributeInput specifies the attribute_c
     attribute_code: String @doc(description: "The unique identifier for an attribute code. This value should be in lowercase letters without spaces.")
     entity_type: String @doc(description: "The type of entity that defines the attribute")
 }
+
+# Additional changes made in CatalogGraphQl schema
+type Aggregation @doc(description: "A bucket that contains information for each filterable option (such as price, category `UID`, and custom attributes).") {
+    position: Int @doc(description: "The position of attribute in layered navigation block.")
+}

From a9e590ec2c96ec1d18534261e8bc8b499233c08e Mon Sep 17 00:00:00 2001
From: Prabhu Ram <pganapat@adobe.com>
Date: Tue, 11 May 2021 15:59:54 -0500
Subject: [PATCH 3/3] Updated based on review comments

---
 design-documents/graph-ql/coverage/eav/EavGraphQl.graphqls | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/design-documents/graph-ql/coverage/eav/EavGraphQl.graphqls b/design-documents/graph-ql/coverage/eav/EavGraphQl.graphqls
index fc26ec6a9..a77a00b47 100644
--- a/design-documents/graph-ql/coverage/eav/EavGraphQl.graphqls
+++ b/design-documents/graph-ql/coverage/eav/EavGraphQl.graphqls
@@ -19,12 +19,11 @@ type Attribute @doc(description: "Attribute contains the attribute_type of the s
 }
 
 type StorefrontProperties {
-   used_in_product_listing: Boolean
+   use_in_product_listing: Boolean
    position: Int
-   visible_on_catalog_storefront: Boolean
+   visible_on_catalog_pages: Boolean
    use_in_layered_navigation: UseInLayeredNavigationOptions
    use_in_search_results_layered_navigation: Boolean
-   use_in_search: Boolean
 }
 
 enum UseInLayeredNavigationOptions {