Automattic\WooCommerce\StoreApi\Schemas\V1

ProductSchema::get_properties()publicWC 1.0

Product schema properties.

Method of the class: ProductSchema{}

No Hooks.

Return

Array.

Usage

$ProductSchema = new ProductSchema();
$ProductSchema->get_properties();

ProductSchema::get_properties() code WC 8.6.1

public function get_properties() {
	return [
		'id'                  => [
			'description' => __( 'Unique identifier for the resource.', 'woocommerce' ),
			'type'        => 'integer',
			'context'     => [ 'view', 'edit' ],
			'readonly'    => true,
		],
		'name'                => [
			'description' => __( 'Product name.', 'woocommerce' ),
			'type'        => 'string',
			'context'     => [ 'view', 'edit' ],
		],
		'slug'                => [
			'description' => __( 'Product slug.', 'woocommerce' ),
			'type'        => 'string',
			'context'     => [ 'view', 'edit' ],
		],
		'parent'              => [
			'description' => __( 'ID of the parent product, if applicable.', 'woocommerce' ),
			'type'        => 'integer',
			'context'     => [ 'view', 'edit' ],
			'readonly'    => true,
		],
		'type'                => [
			'description' => __( 'Product type.', 'woocommerce' ),
			'type'        => 'string',
			'context'     => [ 'view', 'edit' ],
			'readonly'    => true,
		],
		'variation'           => [
			'description' => __( 'Product variation attributes, if applicable.', 'woocommerce' ),
			'type'        => 'string',
			'context'     => [ 'view', 'edit' ],
		],
		'permalink'           => [
			'description' => __( 'Product URL.', 'woocommerce' ),
			'type'        => 'string',
			'format'      => 'uri',
			'context'     => [ 'view', 'edit' ],
			'readonly'    => true,
		],
		'short_description'   => [
			'description' => __( 'Product short description in HTML format.', 'woocommerce' ),
			'type'        => 'string',
			'context'     => [ 'view', 'edit' ],
		],
		'description'         => [
			'description' => __( 'Product full description in HTML format.', 'woocommerce' ),
			'type'        => 'string',
			'context'     => [ 'view', 'edit' ],
		],
		'on_sale'             => [
			'description' => __( 'Is the product on sale?', 'woocommerce' ),
			'type'        => 'boolean',
			'context'     => [ 'view', 'edit' ],
			'readonly'    => true,
		],
		'sku'                 => [
			'description' => __( 'Unique identifier.', 'woocommerce' ),
			'type'        => 'string',
			'context'     => [ 'view', 'edit' ],
		],
		'prices'              => [
			'description' => __( 'Price data provided using the smallest unit of the currency.', 'woocommerce' ),
			'type'        => 'object',
			'context'     => [ 'view', 'edit' ],
			'readonly'    => true,
			'properties'  => array_merge(
				$this->get_store_currency_properties(),
				[
					'price'         => [
						'description' => __( 'Current product price.', 'woocommerce' ),
						'type'        => 'string',
						'context'     => [ 'view', 'edit' ],
						'readonly'    => true,
					],
					'regular_price' => [
						'description' => __( 'Regular product price.', 'woocommerce' ),
						'type'        => 'string',
						'context'     => [ 'view', 'edit' ],
						'readonly'    => true,
					],
					'sale_price'    => [
						'description' => __( 'Sale product price, if applicable.', 'woocommerce' ),
						'type'        => 'string',
						'context'     => [ 'view', 'edit' ],
						'readonly'    => true,
					],
					'price_range'   => [
						'description' => __( 'Price range, if applicable.', 'woocommerce' ),
						'type'        => [ 'object', 'null' ],
						'context'     => [ 'view', 'edit' ],
						'readonly'    => true,
						'properties'  => [
							'min_amount' => [
								'description' => __( 'Price amount.', 'woocommerce' ),
								'type'        => 'string',
								'context'     => [ 'view', 'edit' ],
								'readonly'    => true,
							],
							'max_amount' => [
								'description' => __( 'Price amount.', 'woocommerce' ),
								'type'        => 'string',
								'context'     => [ 'view', 'edit' ],
								'readonly'    => true,
							],
						],
					],
				]
			),
		],
		'price_html'          => array(
			'description' => __( 'Price string formatted as HTML.', 'woocommerce' ),
			'type'        => 'string',
			'context'     => array( 'view', 'edit' ),
			'readonly'    => true,
		),
		'average_rating'      => [
			'description' => __( 'Reviews average rating.', 'woocommerce' ),
			'type'        => 'string',
			'context'     => [ 'view', 'edit' ],
			'readonly'    => true,
		],
		'review_count'        => [
			'description' => __( 'Amount of reviews that the product has.', 'woocommerce' ),
			'type'        => 'integer',
			'context'     => [ 'view', 'edit' ],
			'readonly'    => true,
		],
		'images'              => [
			'description' => __( 'List of images.', 'woocommerce' ),
			'type'        => 'array',
			'context'     => [ 'view', 'edit' ],
			'items'       => [
				'type'       => 'object',
				'properties' => $this->image_attachment_schema->get_properties(),
			],
		],
		'categories'          => [
			'description' => __( 'List of categories, if applicable.', 'woocommerce' ),
			'type'        => 'array',
			'context'     => [ 'view', 'edit' ],
			'items'       => [
				'type'       => 'object',
				'properties' => [
					'id'   => [
						'description' => __( 'Category ID', 'woocommerce' ),
						'type'        => 'number',
						'context'     => [ 'view', 'edit' ],
						'readonly'    => true,
					],
					'name' => [
						'description' => __( 'Category name', 'woocommerce' ),
						'type'        => 'string',
						'context'     => [ 'view', 'edit' ],
						'readonly'    => true,
					],
					'slug' => [
						'description' => __( 'Category slug', 'woocommerce' ),
						'type'        => 'string',
						'context'     => [ 'view', 'edit' ],
						'readonly'    => true,
					],
					'link' => [
						'description' => __( 'Category link', 'woocommerce' ),
						'type'        => 'string',
						'context'     => [ 'view', 'edit' ],
						'readonly'    => true,
					],
				],
			],
		],
		'tags'                => [
			'description' => __( 'List of tags, if applicable.', 'woocommerce' ),
			'type'        => 'array',
			'context'     => [ 'view', 'edit' ],
			'items'       => [
				'type'       => 'object',
				'properties' => [
					'id'   => [
						'description' => __( 'Tag ID', 'woocommerce' ),
						'type'        => 'number',
						'context'     => [ 'view', 'edit' ],
						'readonly'    => true,
					],
					'name' => [
						'description' => __( 'Tag name', 'woocommerce' ),
						'type'        => 'string',
						'context'     => [ 'view', 'edit' ],
						'readonly'    => true,
					],
					'slug' => [
						'description' => __( 'Tag slug', 'woocommerce' ),
						'type'        => 'string',
						'context'     => [ 'view', 'edit' ],
						'readonly'    => true,
					],
					'link' => [
						'description' => __( 'Tag link', 'woocommerce' ),
						'type'        => 'string',
						'context'     => [ 'view', 'edit' ],
						'readonly'    => true,
					],
				],
			],
		],
		'attributes'          => [
			'description' => __( 'List of attributes (taxonomy terms) assigned to the product. For variable products, these are mapped to variations (see the `variations` field).', 'woocommerce' ),
			'type'        => 'array',
			'context'     => [ 'view', 'edit' ],
			'items'       => [
				'type'       => 'object',
				'properties' => [
					'id'             => [
						'description' => __( 'The attribute ID, or 0 if the attribute is not taxonomy based.', 'woocommerce' ),
						'type'        => 'integer',
						'context'     => [ 'view', 'edit' ],
						'readonly'    => true,
					],
					'name'           => [
						'description' => __( 'The attribute name.', 'woocommerce' ),
						'type'        => 'string',
						'context'     => [ 'view', 'edit' ],
						'readonly'    => true,
					],
					'taxonomy'       => [
						'description' => __( 'The attribute taxonomy, or null if the attribute is not taxonomy based.', 'woocommerce' ),
						'type'        => 'string',
						'context'     => [ 'view', 'edit' ],
						'readonly'    => true,
					],
					'has_variations' => [
						'description' => __( 'True if this attribute is used by product variations.', 'woocommerce' ),
						'type'        => 'boolean',
						'context'     => [ 'view', 'edit' ],
						'readonly'    => true,
					],
					'terms'          => [
						'description' => __( 'List of assigned attribute terms.', 'woocommerce' ),
						'type'        => 'array',
						'context'     => [ 'view', 'edit' ],
						'items'       => [
							'type'       => 'object',
							'properties' => [
								'id'      => [
									'description' => __( 'The term ID, or 0 if the attribute is not a global attribute.', 'woocommerce' ),
									'type'        => 'integer',
									'context'     => [ 'view', 'edit' ],
									'readonly'    => true,
								],
								'name'    => [
									'description' => __( 'The term name.', 'woocommerce' ),
									'type'        => 'string',
									'context'     => [ 'view', 'edit' ],
									'readonly'    => true,
								],
								'slug'    => [
									'description' => __( 'The term slug.', 'woocommerce' ),
									'type'        => 'string',
									'context'     => [ 'view', 'edit' ],
									'readonly'    => true,
								],
								'default' => [
									'description' => __( 'If this is a default attribute', 'woocommerce' ),
									'type'        => 'boolean',
									'context'     => [ 'view', 'edit' ],
									'readonly'    => true,
								],
							],
						],
					],
				],
			],
		],
		'variations'          => [
			'description' => __( 'List of variation IDs, if applicable.', 'woocommerce' ),
			'type'        => 'array',
			'context'     => [ 'view', 'edit' ],
			'items'       => [
				'type'       => 'object',
				'properties' => [
					'id'         => [
						'description' => __( 'The attribute ID, or 0 if the attribute is not taxonomy based.', 'woocommerce' ),
						'type'        => 'integer',
						'context'     => [ 'view', 'edit' ],
						'readonly'    => true,
					],
					'attributes' => [
						'description' => __( 'List of variation attributes.', 'woocommerce' ),
						'type'        => 'array',
						'context'     => [ 'view', 'edit' ],
						'items'       => [
							'type'       => 'object',
							'properties' => [
								'name'  => [
									'description' => __( 'The attribute name.', 'woocommerce' ),
									'type'        => 'string',
									'context'     => [ 'view', 'edit' ],
									'readonly'    => true,
								],
								'value' => [
									'description' => __( 'The assigned attribute.', 'woocommerce' ),
									'type'        => 'string',
									'context'     => [ 'view', 'edit' ],
									'readonly'    => true,
								],
							],
						],
					],
				],
			],
		],
		'has_options'         => [
			'description' => __( 'Does the product have additional options before it can be added to the cart?', 'woocommerce' ),
			'type'        => 'boolean',
			'context'     => [ 'view', 'edit' ],
			'readonly'    => true,
		],
		'is_purchasable'      => [
			'description' => __( 'Is the product purchasable?', 'woocommerce' ),
			'type'        => 'boolean',
			'context'     => [ 'view', 'edit' ],
			'readonly'    => true,
		],
		'is_in_stock'         => [
			'description' => __( 'Is the product in stock?', 'woocommerce' ),
			'type'        => 'boolean',
			'context'     => [ 'view', 'edit' ],
			'readonly'    => true,
		],
		'is_on_backorder'     => [
			'description' => __( 'Is the product stock backordered? This will also return false if backorder notifications are turned off.', 'woocommerce' ),
			'type'        => 'boolean',
			'context'     => [ 'view', 'edit' ],
			'readonly'    => true,
		],
		'low_stock_remaining' => [
			'description' => __( 'Quantity left in stock if stock is low, or null if not applicable.', 'woocommerce' ),
			'type'        => [ 'integer', 'null' ],
			'context'     => [ 'view', 'edit' ],
			'readonly'    => true,
		],
		'sold_individually'   => [
			'description' => __( 'If true, only one item of this product is allowed for purchase in a single order.', 'woocommerce' ),
			'type'        => 'boolean',
			'context'     => [ 'view', 'edit' ],
			'readonly'    => true,
		],
		'add_to_cart'         => [
			'description' => __( 'Add to cart button parameters.', 'woocommerce' ),
			'type'        => 'object',
			'context'     => [ 'view', 'edit' ],
			'readonly'    => true,
			'properties'  => [
				'text'        => [
					'description' => __( 'Button text.', 'woocommerce' ),
					'type'        => 'string',
					'context'     => [ 'view', 'edit' ],
					'readonly'    => true,
				],
				'description' => [
					'description' => __( 'Button description.', 'woocommerce' ),
					'type'        => 'string',
					'context'     => [ 'view', 'edit' ],
					'readonly'    => true,
				],
				'url'         => [
					'description' => __( 'Add to cart URL.', 'woocommerce' ),
					'type'        => 'string',
					'context'     => [ 'view', 'edit' ],
					'readonly'    => true,
				],
				'minimum'     => [
					'description' => __( 'The minimum quantity that can be added to the cart.', 'woocommerce' ),
					'type'        => 'integer',
					'context'     => [ 'view', 'edit' ],
					'readonly'    => true,
				],
				'maximum'     => [
					'description' => __( 'The maximum quantity that can be added to the cart.', 'woocommerce' ),
					'type'        => 'integer',
					'context'     => [ 'view', 'edit' ],
					'readonly'    => true,
				],
				'multiple_of' => [
					'description' => __( 'The amount that quantities increment by. Quantity must be an multiple of this value.', 'woocommerce' ),
					'type'        => 'integer',
					'context'     => [ 'view', 'edit' ],
					'readonly'    => true,
					'default'     => 1,
				],
			],
		],
		self::EXTENDING_KEY   => $this->get_extended_schema( self::IDENTIFIER ),
	];
}