List of products with attributes and they values in product stream

This is how you can get a list of products with ALL attribute types, if you do not need all of them, simply remove any fragment that is not needed

query {
	productStream {
		pageInfo {
			hasNextPage
			endCursor
		}
		edges {
			node {
				sku
				attributeList {
					edges {
						node {
							...AttributeValue
						}
					}
				}
			}
		}
	}
}

fragment AttributeValue on AttributeValue {
	__typename
	attribute {
		code
		name {
			language
			value
		}
	}
	... on TextAttributeValue {
		textAttributeValueTranslations: translations {
			value
			language
		}
	}
	... on TextareaAttributeValue {
		textareaAttributeValueTranslations: translations {
			value
			language
		}
	}
	... on DateAttributeValue {
		dateAttributeValueTranslations: translations {
			value
			language
		}
	}
	... on UnitAttributeValue {
		unitAttribute: attribute {
			# unit might be useful in the value context
			unit {
				name
				symbol
			}
		}
		unitAttributeValueTranslations: translations {
			value
			language
		}
	}
	... on PriceAttributeValue {
		priceAttribute: attribute {
			# currency might be useful in the price context
			currency
		}
		priceAttributeValueTranslations: translations {
			value
			language
		}
	}
	... on NumberAttributeValue {
		numericAttributeValueTranslations: translations {
			value
			language
		}
	}
	... on ProductRelationAttributeValue {
		productRelationAttributeValueTranslations: translations {
			value {
				sku
			}
			language
		}
	}
	... on FileAttributeValue {
		fileAttributeValueTranslations: translations {
			value {
				...Multimedia
			}
			language
		}
	}
	... on GalleryAttributeValue {
		galleryAttributeValueTranslations: translations {
			value {
				...Multimedia
			}
			language
		}
	}
	... on ImageAttributeValue {
		imageAttributeValueTranslations: translations {
			value {
				...Multimedia
			}
			language
		}
	}
	... on MultiSelectAttributeValue {
		multiSelectAttributeValueTranslations: translations {
			translatedValue {
				...OptionTranslatedValue
			}
			language
		}
	}
	... on SelectAttributeValue {
		selectAttributeValueTranslations: translations {
			translatedValue {
				...OptionTranslatedValue
			}
			language
		}
	}
}
fragment Multimedia on Multimedia {
	path
	name
	extension
	mime
	size
	alt {
		value
		language
	}
	title {
		value
		language
	}
	url
}
fragment OptionTranslatedValue on OptionTranslatedValue {
	code
	name
	customFields {
		... on ImageCustomFieldTranslatedValue {
			customField {
				code
			}
			image: value {
				path
				name
				extension
				mime
				size
				alt {
					language
					value
				}
				title {
					language
					value
				}
				url
				folder {
					name
					path
				}
			}
		}
		... on TextCustomFieldTranslatedValue {
			customField {
				code
			}
			value
		}
		... on TextareaCustomFieldTranslatedValue {
			customField {
				code
			}
			value
		}
		... on TextareaRTECustomFieldTranslatedValue {
			customField {
				code
			}
			value
		}
	}
}

Last updated