Review data model

View field support, webhooks, and list parameters for each integration on the Supported Integrations page.

FieldTypeRequiredDescription
idstringNo
created_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
updated_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
item_idstringNoReference to the product being reviewed (reference to CommerceItem)
item_variant_idstringNoOptional reference to specific variant if applicable (reference to CommerceCommerceItemvariant)
location_idstringNo(reference to CommerceLocation)
ratingnumberNo1-5 rating
titlestringNo
contentstringNo
author_namestringNo
author_emailstringNo
author_avatar_urlstringNo
author_locationstringNo
verified_purchasebooleanNo
helpful_votesnumberNo
unhelpful_votesnumberNo
mediaCommerceItemMedia[]NoPhotosvideos attached to the review
media[].idstringNo
media[].urlstringYes
media[].altstringNo
media[].typeenumNoValues: image, video
media[].heightnumberNo
media[].widthnumberNo
media[].positionnumberNo1 is the first
media[].metadataCommerceMetadata[]No
media[].metadata[].idstringNo
media[].metadata[].valueobjectNo
media[].metadata[].namespacestringNo
media[].metadata[].formatenumNoValues: TEXT, NUMBER, DATE, BOOLEAN, FILE, TEXTAREA, SINGLE_SELECT, MULTIPLE_SELECT, MEASUREMENT, PRICE, YES_NO, CURRENCY, URL
media[].metadata[].extra_dataobjectNo
media[].metadata[].slugstringNo
media[].metadata[].descriptionstringNo
media[].metadata[].is_requiredbooleanNo
statusenumNoValues: PENDING, APPROVED, REJECTED, SPAM
is_verifiedbooleanNo
is_featuredbooleanNo
is_publicbooleanNo
commentsCommerceReviewComment[]No
comments[].idstringNo
comments[].created_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
comments[].updated_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
comments[].contentstringNo
comments[].author_namestringNo
comments[].author_emailstringNo
comments[].author_avatar_urlstringNo
comments[].author_locationstringNo
comments[].helpful_votesnumberNo
comments[].unhelpful_votesnumberNo
comments[].statusenumNoValues: PENDING, APPROVED, REJECTED, SPAM
comments[].is_verifiedbooleanNo
comments[].is_publicbooleanNo
comments[].metadataCommerceMetadata[]No
comments[].metadata[].idstringNo
comments[].metadata[].valueobjectNo
comments[].metadata[].namespacestringNo
comments[].metadata[].formatenumNoValues: TEXT, NUMBER, DATE, BOOLEAN, FILE, TEXTAREA, SINGLE_SELECT, MULTIPLE_SELECT, MEASUREMENT, PRICE, YES_NO, CURRENCY, URL
comments[].metadata[].extra_dataobjectNo
comments[].metadata[].slugstringNo
comments[].metadata[].descriptionstringNo
comments[].metadata[].is_requiredbooleanNo
metadataCommerceMetadata[]No
metadata[].idstringNo
metadata[].valueobjectNo
metadata[].namespacestringNo
metadata[].formatenumNoValues: TEXT, NUMBER, DATE, BOOLEAN, FILE, TEXTAREA, SINGLE_SELECT, MULTIPLE_SELECT, MEASUREMENT, PRICE, YES_NO, CURRENCY, URL
metadata[].extra_dataobjectNo
metadata[].slugstringNo
metadata[].descriptionstringNo
metadata[].is_requiredbooleanNo
urlstringNo

TypeScript

TypeScript
export type CommerceReview = {
	id?: string;
	created_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	updated_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	item_id?: string; // Reference to the product being reviewed (reference to CommerceItem)
	item_variant_id?: string; // Optional reference to specific variant if applicable (reference to CommerceCommerceItemvariant)
	location_id?: string; // (reference to CommerceLocation)
	rating?: number; // 1-5 rating
	title?: string;
	content?: string;
	author_name?: string;
	author_email?: string;
	author_avatar_url?: string;
	author_location?: string;
	verified_purchase?: boolean;
	helpful_votes?: number;
	unhelpful_votes?: number;
	media?: []; // Photosvideos attached to the review
	status?: 'PENDING' | 'APPROVED' | 'REJECTED' | 'SPAM';
	is_verified?: boolean;
	is_featured?: boolean;
	is_public?: boolean;
	comments?: [];
	metadata?: [];
	url?: string;
	raw?: any; // Original review data from source platform
} 

Zod

Zod
import { z } from 'zod';

export const ZodCommerceReview = z.object({
	id: z.string().optional(),
	created_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	updated_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	item_id: z.string().optional().describe("Reference to the product being reviewed (reference to CommerceItem)"),
	item_variant_id: z.string().optional().describe("Optional reference to specific variant if applicable (reference to CommerceCommerceItemvariant)"),
	location_id: z.string().optional().describe("(reference to CommerceLocation)"),
	rating: z.number().optional().describe("1-5 rating"),
	title: z.string().optional(),
	content: z.string().optional(),
	author_name: z.string().optional(),
	author_email: z.string().optional(),
	author_avatar_url: z.string().optional(),
	author_location: z.string().optional(),
	verified_purchase: z.boolean().optional(),
	helpful_votes: z.number().optional(),
	unhelpful_votes: z.number().optional(),
	media: z.array().optional().describe("Photosvideos attached to the review"),
	status: z.enum("PENDING", "APPROVED", "REJECTED", "SPAM").optional(),
	is_verified: z.boolean().optional(),
	is_featured: z.boolean().optional(),
	is_public: z.boolean().optional(),
	comments: z.array().optional(),
	metadata: z.array().optional(),
	url: z.string().optional(),

});

Python

Python
import dataclasses

@dataclasses.dataclass
class CommerceReviewStatus(str, Enum):
	PENDING = 'PENDING'
	APPROVED = 'APPROVED'
	REJECTED = 'REJECTED'
	SPAM = 'SPAM'

@dataclasses.dataclass
class CommerceReview:
	id: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	created_at: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	updated_at: Optional[str]
	"""Reference to the product being reviewed (reference to CommerceItem)"""
	item_id: Optional[str]
	"""Optional reference to specific variant if applicable (reference to CommerceCommerceItemvariant)"""
	item_variant_id: Optional[str]
	"""(reference to CommerceLocation)"""
	location_id: Optional[str]
	"""1-5 rating"""
	rating: Optional[int]
	title: Optional[str]
	content: Optional[str]
	author_name: Optional[str]
	author_email: Optional[str]
	author_avatar_url: Optional[str]
	author_location: Optional[str]
	verified_purchase: Optional[bool]
	helpful_votes: Optional[int]
	unhelpful_votes: Optional[int]
	"""Photosvideos attached to the review"""
	media: Optional[PropertyCommerceReviewMedia]
	status: Optional[CommerceReviewStatus]
	is_verified: Optional[bool]
	is_featured: Optional[bool]
	is_public: Optional[bool]
	comments: Optional[PropertyCommerceReviewComments]
	metadata: Optional[PropertyCommerceReviewMetadata]
	url: Optional[str]
Are we missing anything? Let us know
Was this page helpful?