POST /v2/catalog/object

Creates or updates the target CatalogObject.

Servers

Request headers

Name Type Required Description
Content-Type String Yes The media type of the request body.

Default value: "application/json"

Request body fields

Name Type Required Description
object Object Yes

The wrapper object for the Catalog entries of a given object type.

The type of a particular CatalogObject is determined by the value of the type attribute and only the corresponding data attribute can be set on the CatalogObject instance. For example, the following list shows some instances of CatalogObject of a given type and their corresponding data attribute that can be set:

  • For a CatalogObject of the ITEM type, set the item_data attribute to yield the CatalogItem object.
  • For a CatalogObject of the ITEM_VARIATION type, set the item_variation_data attribute to yield the CatalogItemVariation object.
  • For a CatalogObject of the MODIFIER type, set the modifier_data attribute to yield the CatalogModifier object.
  • For a CatalogObject of the MODIFIER_LIST type, set the modifier_list_data attribute to yield the CatalogModifierList object.
  • For a CatalogObject of the CATEGORY type, set the category_data attribute to yield the CatalogCategory object.
  • For a CatalogObject of the DISCOUNT type, set the discount_data attribute to yield the CatalogDiscount object.
  • For a CatalogObject of the TAX type, set the tax_data attribute to yield the CatalogTax object.
  • For a CatalogObject of the IMAGE type, set the image_data attribute to yield the CatalogImageData object.
  • For a CatalogObject of the QUICK_AMOUNTS_SETTINGS type, set the quick_amounts_settings_data attribute to yield the CatalogQuickAmountsSettings object.
  • For a CatalogObject of the PRICING_RULE type, set the pricing_rule_data attribute to yield the CatalogPricingRule object.
  • For a CatalogObject of the TIME_PERIOD type, set the time_period_data attribute to yield the CatalogTimePeriod object.
  • For a CatalogObject of the PRODUCT_SET type, set the product_set_data attribute to yield the CatalogProductSet object.
  • For a CatalogObject of the SUBSCRIPTION_PLAN type, set the subscription_plan_data attribute to yield the CatalogSubscriptionPlan object.

For a more detailed discussion of the Catalog data model, please see the Design a Catalog guide.

object.tax_data Object No

A tax applicable to an item.

object.tax_data.percentage String No

The percentage of the tax in decimal form, using a '.' as the decimal separator and without a '%' sign. A value of 7.5 corresponds to 7.5%.

object.tax_data.applies_to_custom_amounts Boolean No

If true, the fee applies to custom amounts entered into the Square Point of Sale app that are not associated with a particular CatalogItem.

object.tax_data.name String No

The tax's name. This is a searchable attribute for use in applicable query filters, and its value length is of Unicode code points.

object.tax_data.inclusion_type String No

Whether the tax is ADDITIVE or INCLUSIVE.

object.tax_data.enabled Boolean No

A Boolean flag to indicate whether the tax is displayed as enabled (true) in the Square Point of Sale app or not (false).

object.tax_data.calculation_phase String No

Whether the tax is calculated based on a payment's subtotal or total.

object.item_variation_data Object No

An item variation (i.e., product) in the Catalog object model. Each item may have a maximum of 250 item variations.

object.item_variation_data.service_duration Integer No

If the CatalogItem that owns this item variation is of type APPOINTMENTS_SERVICE, then this is the duration of the service in milliseconds. For example, a 30 minute appointment would have the value 1800000, which is equal to 30 (minutes) * 60 (seconds per minute) * 1000 (milliseconds per second).

object.item_variation_data.team_member_ids[] Array No

Tokens of employees that can perform the service represented by this variation. Only valid for variations of type APPOINTMENTS_SERVICE.

object.item_variation_data.location_overrides[] Array No

Per-location price and inventory overrides.

object.item_variation_data.location_overrides[].location_id String No

The ID of the Location. This can include locations that are deactivated.

object.item_variation_data.location_overrides[].price_money Object No

Represents an amount of money. Money fields can be signed or unsigned. Fields that do not explicitly define whether they are signed or unsigned are considered unsigned and can only hold positive amounts. For signed fields, the sign of the value indicates the purpose of the money transfer. See Working with Monetary Amounts for more information.

object.item_variation_data.location_overrides[].price_money.amount Integer No

The amount of money, in the smallest denomination of the currency indicated by currency. For example, when currency is USD, amount is in cents. Monetary amounts can be positive or negative. See the specific field description to determine the meaning of the sign in a particular case.

object.item_variation_data.location_overrides[].price_money.currency String No

The type of currency, in ISO 4217 format. For example, the currency code for US dollars is USD.

See Currency for possible values.

object.item_variation_data.location_overrides[].inventory_alert_threshold Integer No

If the inventory quantity for the variation is less than or equal to this value and inventory_alert_type is LOW_QUANTITY, the variation displays an alert in the merchant dashboard.

This value is always an integer.

object.item_variation_data.location_overrides[].inventory_alert_type String No

Indicates whether the CatalogItemVariation displays an alert when its inventory quantity is less than or equal to its inventory_alert_threshold.

object.item_variation_data.location_overrides[].pricing_type String No

The pricing type (fixed or variable) for the CatalogItemVariation at the given Location.

object.item_variation_data.location_overrides[].track_inventory Boolean No

If true, inventory tracking is active for the CatalogItemVariation at this Location.

object.item_variation_data.user_data String No

Arbitrary user metadata to associate with the item variation. This attribute value length is of Unicode code points.

object.item_variation_data.available_for_booking Boolean No

If the CatalogItem that owns this item variation is of type APPOINTMENTS_SERVICE, a bool representing whether this service is available for booking.

object.item_variation_data.ordinal Integer No

The order in which this item variation should be displayed. This value is read-only. On writes, the ordinal for each item variation within a parent CatalogItem is set according to the item variations's position. On reads, the value is not guaranteed to be sequential or unique.

object.item_variation_data.inventory_alert_threshold Integer No

If the inventory quantity for the variation is less than or equal to this value and inventory_alert_type is LOW_QUANTITY, the variation displays an alert in the merchant dashboard.

This value is always an integer.

object.item_variation_data.inventory_alert_type String No

Indicates whether the item variation displays an alert when its inventory quantity is less than or equal to its inventory_alert_threshold.

object.item_variation_data.pricing_type String No

Indicates whether the item variation's price is fixed or determined at the time of sale.

object.item_variation_data.measurement_unit_id String No

ID of the ‘CatalogMeasurementUnit’ that is used to measure the quantity sold of this item variation. If left unset, the item will be sold in whole quantities.

object.item_variation_data.track_inventory Boolean No

If true, inventory tracking is active for the variation.

object.item_variation_data.price_money Object No

Represents an amount of money. Money fields can be signed or unsigned. Fields that do not explicitly define whether they are signed or unsigned are considered unsigned and can only hold positive amounts. For signed fields, the sign of the value indicates the purpose of the money transfer. See Working with Monetary Amounts for more information.

object.item_variation_data.price_money.amount Integer No

The amount of money, in the smallest denomination of the currency indicated by currency. For example, when currency is USD, amount is in cents. Monetary amounts can be positive or negative. See the specific field description to determine the meaning of the sign in a particular case.

object.item_variation_data.price_money.currency String No

The type of currency, in ISO 4217 format. For example, the currency code for US dollars is USD.

See Currency for possible values.

object.item_variation_data.name String No

The item variation's name. This is a searchable attribute for use in applicable query filters, and its value length is of Unicode code points.

object.item_variation_data.sku String No

The item variation's SKU, if any. This is a searchable attribute for use in applicable query filters.

object.item_variation_data.item_option_values[] Array No

List of item option values associated with this item variation. Listed in the same order as the item options of the parent item.

object.item_variation_data.item_option_values[].item_option_id String No

The unique id of an item option.

object.item_variation_data.item_option_values[].item_option_value_id String No

The unique id of the selected value for the item option.

object.item_variation_data.stockable_conversion Object No

Represents the rule of conversion between a stockable CatalogItemVariation and a non-stockable sell-by or receive-by CatalogItemVariation that share the same underlying stock.

object.item_variation_data.stockable_conversion.stockable_item_variation_id String Yes

References to the stockable CatalogItemVariation for this stock conversion. Selling, receiving or recounting the non-stockable CatalogItemVariation defined with a stock conversion results in adjustments of this stockable CatalogItemVariation. This immutable field must reference a stockable CatalogItemVariation that shares the parent CatalogItem of the converted CatalogItemVariation.

object.item_variation_data.stockable_conversion.stockable_quantity String Yes

The quantity of the stockable item variation (as identified by stockable_item_variation_id) equivalent to the non-stockable item variation quantity (as specified in nonstockable_quantity) as defined by this stock conversion. It accepts a decimal number in a string format that can take up to 10 digits before the decimal point and up to 5 digits after the decimal point.

object.item_variation_data.stockable_conversion.nonstockable_quantity String Yes

The converted equivalent quantity of the non-stockable CatalogItemVariation in its measurement unit. The stockable_quantity value and this nonstockable_quantity value together define the conversion ratio between stockable item variation and the non-stockable item variation. It accepts a decimal number in a string format that can take up to 10 digits before the decimal point and up to 5 digits after the decimal point.

object.item_variation_data.upc String No

The universal product code (UPC) of the item variation, if any. This is a searchable attribute for use in applicable query filters.

The value of this attribute should be a number of 12-14 digits long. This restriction is enforced on the Square Seller Dashboard, Square Point of Sale or Retail Point of Sale apps, where this attribute shows in the GTIN field. If a non-compliant UPC value is assigned to this attribute using the API, the value is not editable on the Seller Dashboard, Square Point of Sale or Retail Point of Sale apps unless it is updated to fit the expected format.

object.item_variation_data.item_id String No

The ID of the CatalogItem associated with this item variation.

object.item_variation_data.stockable Boolean No

Whether stock is counted directly on this variation (TRUE) or only on its components (FALSE). For backward compatibility missing values will be interpreted as TRUE.

object.present_at_all_locations Boolean No

If true, this object is present at all locations (including future locations), except where specified in the absent_at_location_ids field. If false, this object is not present at any locations (including future locations), except where specified in the present_at_location_ids field. If not specified, defaults to true.

object.time_period_data Object No

Represents a time period - either a single period or a repeating period.

object.time_period_data.event String No

An iCalendar (RFC 5545) event, which specifies the name, timing, duration and recurrence of this time period.

Example:

DTSTART:20190707T180000
DURATION:P2H
RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR

Only SUMMARY, DTSTART, DURATION and RRULE fields are supported. DTSTART must be in local (unzoned) time format. Note that while BEGIN:VEVENT and END:VEVENT is not required in the request. The response will always include them.

object.updated_at String No

Last modification timestamp in RFC 3339 format, e.g., "2016-08-15T23:59:33.123Z" would indicate the UTC time (denoted by Z) of August 15, 2016 at 23:59:33 and 123 milliseconds.

object.discount_data Object No

A discount applicable to items.

object.discount_data.label_color String No

The color of the discount display label in the Square Point of Sale app. This must be a valid hex color code.

object.discount_data.percentage String No

The percentage of the discount as a string representation of a decimal number, using a . as the decimal separator and without a % sign. A value of 7.5 corresponds to 7.5%. Specify a percentage of 0 if discount_type is VARIABLE_PERCENTAGE.

Do not use this field for amount-based or variable discounts.

object.discount_data.name String No

The discount name. This is a searchable attribute for use in applicable query filters, and its value length is of Unicode code points.

object.discount_data.pin_required Boolean No

Indicates whether a mobile staff member needs to enter their PIN to apply the discount to a payment in the Square Point of Sale app.

object.discount_data.modify_tax_basis String No

Indicates whether this discount should reduce the price used to calculate tax.

Most discounts should use MODIFY_TAX_BASIS. However, in some circumstances taxes must be calculated based on an item's price, ignoring a particular discount. For example, in many US jurisdictions, a manufacturer coupon or instant rebate reduces the price a customer pays but does not reduce the sale price used to calculate how much sales tax is due. In this case, the discount representing that manufacturer coupon should have DO_NOT_MODIFY_TAX_BASIS for this field.

If you are unsure whether you need to use this field, consult your tax professional.

object.discount_data.discount_type String No

Indicates whether the discount is a fixed amount or percentage, or entered at the time of sale.

object.discount_data.amount_money Object No

Represents an amount of money. Money fields can be signed or unsigned. Fields that do not explicitly define whether they are signed or unsigned are considered unsigned and can only hold positive amounts. For signed fields, the sign of the value indicates the purpose of the money transfer. See Working with Monetary Amounts for more information.

object.discount_data.amount_money.amount Integer No

The amount of money, in the smallest denomination of the currency indicated by currency. For example, when currency is USD, amount is in cents. Monetary amounts can be positive or negative. See the specific field description to determine the meaning of the sign in a particular case.

object.discount_data.amount_money.currency String No

The type of currency, in ISO 4217 format. For example, the currency code for US dollars is USD.

See Currency for possible values.

object.id String Yes

An identifier to reference this object in the catalog. When a new CatalogObject is inserted, the client should set the id to a temporary identifier starting with a "#" character. Other objects being inserted or updated within the same request may use this identifier to refer to the new object.

When the server receives the new object, it will supply a unique identifier that replaces the temporary identifier for all future references.

object.item_data Object No

A CatalogObject instance of the ITEM type, also referred to as an item, in the catalog.

object.item_data.abbreviation String No

The text of the item's display label in the Square Point of Sale app. Only up to the first five characters of the string are used. This attribute is searchable, and its value length is of Unicode code points.

object.item_data.variations[] Array No

A list of CatalogItemVariation objects for this item. An item must have at least one variation.

object.item_data.description String No

The item's description. This is a searchable attribute for use in applicable query filters, and its value length is of Unicode code points.

object.item_data.available_electronically Boolean No

If true, the item can be added to electronically fulfilled orders from the merchant's online store.

object.item_data.product_type String No

The product type of the item. May not be changed once an item has been created.

Only items of product type REGULAR or APPOINTMENTS_SERVICE may be created by this API; items with other product types are read-only.

object.item_data.sort_name String No

A name to sort the item by. If this name is unspecified, namely, the sort_name field is absent, the regular name field is used for sorting.

It is currently supported for sellers of the Japanese locale only.

object.item_data.skip_modifier_screen Boolean No

If false, the Square Point of Sale app will present the CatalogItem's details screen immediately, allowing the merchant to choose CatalogModifiers before adding the item to the cart. This is the default behavior.

If true, the Square Point of Sale app will immediately add the item to the cart with the pre-selected modifiers, and merchants can edit modifiers by drilling down onto the item's details.

Third-party clients are encouraged to implement similar behaviors.

object.item_data.available_online Boolean No

If true, the item can be added to shipping orders from the merchant's online store.

object.item_data.available_for_pickup Boolean No

If true, the item can be added to pickup orders from the merchant's online store.

object.item_data.label_color String No

The color of the item's display label in the Square Point of Sale app. This must be a valid hex color code.

object.item_data.modifier_list_info[] Array No

A set of CatalogItemModifierListInfo objects representing the modifier lists that apply to this item, along with the overrides and min and max limits that are specific to this item. Modifier lists may also be added to or deleted from an item using UpdateItemModifierLists.

object.item_data.modifier_list_info[].min_selected_modifiers Integer No

If 0 or larger, the smallest number of CatalogModifiers that must be selected from this CatalogModifierList.

object.item_data.modifier_list_info[].modifier_overrides[] Array No

A set of CatalogModifierOverride objects that override whether a given CatalogModifier is enabled by default.

object.item_data.modifier_list_info[].modifier_overrides[].on_by_default Boolean No

If true, this CatalogModifier should be selected by default for this CatalogItem.

object.item_data.modifier_list_info[].modifier_overrides[].modifier_id String Yes

The ID of the CatalogModifier whose default behavior is being overridden.

object.item_data.modifier_list_info[].modifier_list_id String Yes

The ID of the CatalogModifierList controlled by this CatalogModifierListInfo.

object.item_data.modifier_list_info[].enabled Boolean No

If true, enable this CatalogModifierList. The default value is true.

object.item_data.modifier_list_info[].max_selected_modifiers Integer No

If 0 or larger, the largest number of CatalogModifiers that can be selected from this CatalogModifierList.

object.item_data.name String No

The item's name. This is a searchable attribute for use in applicable query filters, its value must not be empty, and the length is of Unicode code points.

object.item_data.item_options[] Array No

List of item options IDs for this item. Used to manage and group item variations in a specified order.

Maximum: 6 item options.

object.item_data.item_options[].item_option_id String No

The unique id of the item option, used to form the dimensions of the item option matrix in a specified order.

object.item_data.category_id String No

The ID of the item's category, if any.

object.item_data.tax_ids[] Array No

A set of IDs indicating the taxes enabled for this item. When updating an item, any taxes listed here will be added to the item. Taxes may also be added to or deleted from an item using UpdateItemTaxes.

object.measurement_unit_data Object No

Represents the unit used to measure a CatalogItemVariation and specifies the precision for decimal quantities.

object.measurement_unit_data.measurement_unit Object No

Represents a unit of measurement to use with a quantity, such as ounces or inches. Exactly one of the following fields are required: custom_unit, area_unit, length_unit, volume_unit, and weight_unit.

object.measurement_unit_data.measurement_unit.length_unit String No

Represents a standard length unit.

object.measurement_unit_data.measurement_unit.volume_unit String No

Represents a standard volume unit.

object.measurement_unit_data.measurement_unit.time_unit String No

Represents a standard unit of time.

object.measurement_unit_data.measurement_unit.generic_unit String No

Reserved for API integrations that lack the ability to specify a real measurement unit

object.measurement_unit_data.measurement_unit.type String No

Represents the type of the measurement unit.

object.measurement_unit_data.measurement_unit.area_unit String No

Represents a standard area unit.

object.measurement_unit_data.measurement_unit.custom_unit Object No

The information needed to define a custom unit, provided by the seller.

object.measurement_unit_data.measurement_unit.custom_unit.abbreviation String Yes

The abbreviation of the custom unit, such as "bsh" (bushel). This appears in the cart for the Point of Sale app, and in reports.

object.measurement_unit_data.measurement_unit.custom_unit.name String Yes

The name of the custom unit, for example "bushel".

object.measurement_unit_data.measurement_unit.weight_unit String No

Represents a standard unit of weight or mass.

object.measurement_unit_data.precision Integer No

An integer between 0 and 5 that represents the maximum number of positions allowed after the decimal in quantities measured with this unit. For example:

  • if the precision is 0, the quantity can be 1, 2, 3, etc.
  • if the precision is 1, the quantity can be 0.1, 0.2, etc.
  • if the precision is 2, the quantity can be 0.01, 0.12, etc.

Default: 3

object.absent_at_location_ids[] Array No

A list of locations where the object is not present, even if present_at_all_locations is true. This can include locations that are deactivated.

object.item_option_value_data Object No

An enumerated value that can link a CatalogItemVariation to an item option as one of its item option values.

object.item_option_value_data.item_option_id String No

Unique ID of the associated item option.

object.item_option_value_data.name String No

Name of this item option value. This is a searchable attribute for use in applicable query filters.

object.item_option_value_data.description String No

A human-readable description for the option value. This is a searchable attribute for use in applicable query filters.

object.item_option_value_data.ordinal Integer No

Determines where this option value appears in a list of option values.

object.item_option_value_data.color String No

The HTML-supported hex color for the item option (e.g., "#ff8d4e85"). Only displayed if show_colors is enabled on the parent ItemOption. When left unset, color defaults to white ("#ffffff") when show_colors is enabled on the parent ItemOption.

object.type String Yes

The type of this object. Each object type has expected properties expressed in a structured format within its corresponding *_data field below.

object.pricing_rule_data Object No

Defines how discounts are automatically applied to a set of items that match the pricing rule during the active time period.

object.pricing_rule_data.valid_until_local_time String No

Represents the local time the pricing rule should be valid until. Represented in RFC 3339 partial-time format (HH:MM:SS). Partial seconds will be truncated.

object.pricing_rule_data.valid_until_date String No

Represents the date the Pricing Rule is valid until. Represented in RFC 3339 full-date format (YYYY-MM-DD).

object.pricing_rule_data.name String No

User-defined name for the pricing rule. For example, "Buy one get one free" or "10% off".

object.pricing_rule_data.customer_group_ids_any[] Array No

A list of IDs of customer groups, the members of which are eligible for discounts specified in this pricing rule. Notice that a group ID is generated by the Customers API. If this field is not set, the specified discount applies to matched products sold to anyone whether the buyer has a customer profile created or not. If this customer_group_ids_any field is set, the specified discount applies only to matched products sold to customers belonging to the specified customer groups.

object.pricing_rule_data.exclude_products_id String No

CatalogProductSet to exclude from the pricing rule. An exclude rule matches within the subset of the cart that fits the match rules (the match set). An exclude rule can only match once in the match set. If not supplied, the pricing will be applied to all products in the match set. Other products retain their base price, or a price generated by other rules.

object.pricing_rule_data.valid_from_local_time String No

Represents the local time the pricing rule should be valid from. Represented in RFC 3339 partial-time format (HH:MM:SS). Partial seconds will be truncated.

object.pricing_rule_data.apply_products_id String No

Deprecated: Please use the exclude_products_id field to apply an exclude set instead. Exclude sets allow better control over quantity ranges and offer more flexibility for which matched items receive a discount.

CatalogProductSet to apply the pricing to. An apply rule matches within the subset of the cart that fits the match rules (the match set). An apply rule can only match once in the match set. If not supplied, the pricing will be applied to all products in the match set. Other products retain their base price, or a price generated by other rules.

object.pricing_rule_data.match_products_id String No

Unique ID for the CatalogProductSet that will be matched by this rule. A match rule matches within the entire cart, and can match multiple times. This field will always be set.

object.pricing_rule_data.discount_id String No

Unique ID for the CatalogDiscount to take off the price of all matched items.

object.pricing_rule_data.exclude_strategy String No

If an exclude_products_id was given, controls which subset of matched products is excluded from any discounts.

Default value: LEAST_EXPENSIVE

object.pricing_rule_data.valid_from_date String No

Represents the date the Pricing Rule is valid from. Represented in RFC 3339 full-date format (YYYY-MM-DD).

object.pricing_rule_data.time_period_ids[] Array No

A list of unique IDs for the catalog time periods when this pricing rule is in effect. If left unset, the pricing rule is always in effect.

object.product_set_data Object No

Represents a collection of catalog objects for the purpose of applying a PricingRule. Including a catalog object will include all of its subtypes. For example, including a category in a product set will include all of its items and associated item variations in the product set. Including an item in a product set will also include its item variations.

object.product_set_data.all_products Boolean No

If set to true, the product set will include every item in the catalog. Only one of product_ids_all, product_ids_any, or all_products can be set.

object.product_set_data.name String No

User-defined name for the product set. For example, "Clearance Items" or "Winter Sale Items".

object.product_set_data.product_ids_any[] Array No

Unique IDs for any CatalogObject included in this product set. Any number of these catalog objects can be in an order for a pricing rule to apply.

This can be used with product_ids_all in a parent CatalogProductSet to match groups of products for a bulk discount, such as a discount for an entree and side combo.

Only one of product_ids_all, product_ids_any, or all_products can be set.

Max: 500 catalog object IDs.

object.product_set_data.quantity_exact Integer No

If set, there must be exactly this many items from products_any or products_all in the cart for the discount to apply.

Cannot be combined with either quantity_min or quantity_max.

object.product_set_data.product_ids_all[] Array No

Unique IDs for any CatalogObject included in this product set. All objects in this set must be included in an order for a pricing rule to apply.

Only one of product_ids_all, product_ids_any, or all_products can be set.

Max: 500 catalog object IDs.

object.product_set_data.quantity_min Integer No

If set, there must be at least this many items from products_any or products_all in a cart for the discount to apply. See quantity_exact. Defaults to 0 if quantity_exact, quantity_min and quantity_max are all unspecified.

object.product_set_data.quantity_max Integer No

If set, the pricing rule will apply to a maximum of this many items from products_any or products_all.

object.category_data Object No

A category to which a CatalogItem instance belongs.

object.category_data.name String No

The category name. This is a searchable attribute for use in applicable query filters, and its value length is of Unicode code points.

object.custom_attribute_definition_data Object No

Contains information defining a custom attribute. Custom attributes are intended to store additional information about a catalog object or to associate a catalog object with an entity in another system. Do not use custom attributes to store any sensitive information (personally identifiable information, card details, etc.). Read more about custom attributes

object.custom_attribute_definition_data.selection_config Object No

Configuration associated with SELECTION-type custom attribute definitions.

object.custom_attribute_definition_data.selection_config.max_allowed_selections Integer No

The maximum number of selections that can be set. The maximum value for this attribute is 100. The default value is 1. The value can be modified, but changing the value will not affect existing custom attribute values on objects. Clients need to handle custom attributes with more selected values than allowed by this limit.

object.custom_attribute_definition_data.selection_config.allowed_selections[] Array No

The set of valid CatalogCustomAttributeSelections. Up to a maximum of 100 selections can be defined. Can be modified.

object.custom_attribute_definition_data.selection_config.allowed_selections[].name String Yes

Selection name, unique within allowed_selections.

object.custom_attribute_definition_data.selection_config.allowed_selections[].uid String No

Unique ID set by Square.

object.custom_attribute_definition_data.name String Yes

The name of this definition for API and seller-facing UI purposes. The name must be unique within the (merchant, application) pair. Required. May not be empty and may not exceed 255 characters. Can be modified after creation.

object.custom_attribute_definition_data.custom_attribute_usage_count Integer No

Read-only. The number of custom attributes that reference this custom attribute definition. Set by the server in response to a ListCatalog request with include_counts set to true. If the actual count is greater than 100, custom_attribute_usage_count will be set to 100.

object.custom_attribute_definition_data.description String No

Seller-oriented description of the meaning of this Custom Attribute, any constraints that the seller should observe, etc. May be displayed as a tooltip in Square UIs.

object.custom_attribute_definition_data.key String No

The name of the desired custom attribute key that can be used to access the custom attribute value on catalog objects. Cannot be modified after the custom attribute definition has been created. Must be between 1 and 60 characters, and may only contain the characters [a-zA-Z0-9_-].

object.custom_attribute_definition_data.allowed_object_types[] Array Yes

The set of Catalog Object Types that this Custom Attribute may be applied to. Currently, only ITEM and ITEM_VARIATION are allowed. At least one type must be included.

object.custom_attribute_definition_data.source_application Object No

Provides information about the application used to generate a change.

object.custom_attribute_definition_data.source_application.name String No

Read-only display name assigned to the application (e.g. "Custom Application", "Square POS 4.74 for Android").

object.custom_attribute_definition_data.source_application.application_id String No

Read-only Square ID assigned to the application. Only used for Product type EXTERNAL_API.

object.custom_attribute_definition_data.source_application.product String No

Read-only Product type for the application.

object.custom_attribute_definition_data.string_config Object No

Configuration associated with Custom Attribute Definitions of type STRING.

object.custom_attribute_definition_data.string_config.enforce_uniqueness Boolean No

If true, each Custom Attribute instance associated with this Custom Attribute Definition must have a unique value within the seller's catalog. For example, this may be used for a value like a SKU that should not be duplicated within a seller's catalog. May not be modified after the definition has been created.

object.custom_attribute_definition_data.seller_visibility String No

The visibility of a custom attribute in seller-facing UIs (including Square Point of Sale applications and Square Dashboard). May be modified.

object.custom_attribute_definition_data.type String Yes

The type of this custom attribute. Cannot be modified after creation. Required.

object.custom_attribute_definition_data.app_visibility String No

The visibility of a custom attribute to applications other than the application that created the attribute.

object.custom_attribute_definition_data.number_config Object No
object.custom_attribute_definition_data.number_config.precision Integer No

An integer between 0 and 5 that represents the maximum number of positions allowed after the decimal in number custom attribute values For example:

  • if the precision is 0, the quantity can be 1, 2, 3, etc.
  • if the precision is 1, the quantity can be 0.1, 0.2, etc.
  • if the precision is 2, the quantity can be 0.01, 0.12, etc.

Default: 5

object.modifier_data Object No

A modifier applicable to items at the time of sale.

object.modifier_data.price_money Object No

Represents an amount of money. Money fields can be signed or unsigned. Fields that do not explicitly define whether they are signed or unsigned are considered unsigned and can only hold positive amounts. For signed fields, the sign of the value indicates the purpose of the money transfer. See Working with Monetary Amounts for more information.

object.modifier_data.price_money.amount Integer No

The amount of money, in the smallest denomination of the currency indicated by currency. For example, when currency is USD, amount is in cents. Monetary amounts can be positive or negative. See the specific field description to determine the meaning of the sign in a particular case.

object.modifier_data.price_money.currency String No

The type of currency, in ISO 4217 format. For example, the currency code for US dollars is USD.

See Currency for possible values.

object.modifier_data.name String No

The modifier name. This is a searchable attribute for use in applicable query filters, and its value length is of Unicode code points.

object.modifier_data.modifier_list_id String No

The ID of the CatalogModifierList associated with this modifier.

object.modifier_data.ordinal Integer No

Determines where this CatalogModifier appears in the CatalogModifierList.

object.item_option_data Object No

A group of variations for a CatalogItem.

object.item_option_data.values[] Array No

A list of CatalogObjects containing the CatalogItemOptionValues for this item.

object.item_option_data.name String No

The item option's display name for the seller. Must be unique across all item options. This is a searchable attribute for use in applicable query filters.

object.item_option_data.description String No

The item option's human-readable description. Displayed in the Square Point of Sale app for the seller and in the Online Store or on receipts for the buyer. This is a searchable attribute for use in applicable query filters.

object.item_option_data.display_name String No

The item option's display name for the customer. This is a searchable attribute for use in applicable query filters.

object.item_option_data.show_colors Boolean No

If true, display colors for entries in values when present.

object.is_deleted Boolean No

If true, the object has been deleted from the database. Must be false for new objects being inserted. When deleted, the updated_at field will equal the deletion time.

object.present_at_location_ids[] Array No

A list of locations where the object is present, even if present_at_all_locations is false. This can include locations that are deactivated.

object.quick_amounts_settings_data Object No

A parent Catalog Object model represents a set of Quick Amounts and the settings control the amounts.

object.quick_amounts_settings_data.option String Yes

Represents the option seller currently uses on Quick Amounts.

object.quick_amounts_settings_data.eligible_for_auto_amounts Boolean No

Represents location's eligibility for auto amounts The boolean should be consistent with whether there are AUTO amounts in the amounts.

object.quick_amounts_settings_data.amounts[] Array No

Represents a set of Quick Amounts at this location.

object.quick_amounts_settings_data.amounts[].score Integer No

Describes the ranking of the Quick Amount provided by machine learning model, in the range [0, 100]. MANUAL type amount will always have score = 100.

object.quick_amounts_settings_data.amounts[].amount Object Yes

Represents an amount of money. Money fields can be signed or unsigned. Fields that do not explicitly define whether they are signed or unsigned are considered unsigned and can only hold positive amounts. For signed fields, the sign of the value indicates the purpose of the money transfer. See Working with Monetary Amounts for more information.

object.quick_amounts_settings_data.amounts[].amount.amount Integer No

The amount of money, in the smallest denomination of the currency indicated by currency. For example, when currency is USD, amount is in cents. Monetary amounts can be positive or negative. See the specific field description to determine the meaning of the sign in a particular case.

object.quick_amounts_settings_data.amounts[].amount.currency String No

The type of currency, in ISO 4217 format. For example, the currency code for US dollars is USD.

See Currency for possible values.

object.quick_amounts_settings_data.amounts[].ordinal Integer No

The order in which this Quick Amount should be displayed.

object.quick_amounts_settings_data.amounts[].type String Yes

Represents the type of the Quick Amount.

object.catalog_v1_ids[] Array No

The Connect v1 IDs for this object at each location where it is present, where they differ from the object's Connect V2 ID. The field will only be present for objects that have been created or modified by legacy APIs.

object.catalog_v1_ids[].location_id String No

The ID of the Location this Connect V1 ID is associated with.

object.catalog_v1_ids[].catalog_v1_id String No

The ID for an object used in the Square API V1, if the object ID differs from the Square API V2 object ID.

object.modifier_list_data Object No

A list of modifiers applicable to items at the time of sale.

For example, a "Condiments" modifier list applicable to a "Hot Dog" item may contain "Ketchup", "Mustard", and "Relish" modifiers. Use the selection_type field to specify whether or not multiple selections from the modifier list are allowed.

object.modifier_list_data.modifiers[] Array No

The options included in the CatalogModifierList. You must include at least one CatalogModifier. Each CatalogObject must have type MODIFIER and contain CatalogModifier data.

object.modifier_list_data.name String No

The name for the CatalogModifierList instance. This is a searchable attribute for use in applicable query filters, and its value length is of Unicode code points.

object.modifier_list_data.ordinal Integer No

Determines where this modifier list appears in a list of CatalogModifierList values.

object.modifier_list_data.selection_type String No

Indicates whether multiple options from the modifier list can be applied to a single CatalogItem.

object.image_id String No

Identifies the CatalogImage attached to this CatalogObject.

object.version Integer No

The version of the object. When updating an object, the version supplied must match the version in the database, otherwise the write will be rejected as conflicting.

object.custom_attribute_values Object No

A map (key-value pairs) of application-defined custom attribute values. The value of a key-value pair is a CatalogCustomAttributeValue object. The key is the key attribute value defined in the associated CatalogCustomAttributeDefinition object defined by the application making the request.

If the CatalogCustomAttributeDefinition object is defined by another application, the CatalogCustomAttributeDefinition's key attribute value is prefixed by the defining application ID. For example, if the CatalogCustomAttributeDefinition has a key attribute of "cocoa_brand" and the defining application ID is "abcd1234", the key in the map is "abcd1234:cocoa_brand" if the application making the request is different from the application defining the custom attribute definition. Otherwise, the key used in the map is simply "cocoa_brand".

Application-defined custom attributes that are set at a global (location-independent) level. Custom attribute values are intended to store additional information about a catalog object or associations with an entity in another system. Do not use custom attributes to store any sensitive information (personally identifiable information, card details, etc.).

object.custom_attribute_values.name Object No

An instance of a custom attribute. Custom attributes can be defined and added to ITEM and ITEM_VARIATION type catalog objects. Read more about custom attributes.

object.custom_attribute_values.name.selection_uid_values[] Array No

One or more choices from allowed_selections. Populated if type = SELECTION.

object.custom_attribute_values.name.custom_attribute_definition_id String No

Read-only. The id of the CatalogCustomAttributeDefinition this value belongs to.

object.custom_attribute_values.name.boolean_value Boolean No

A true or false value. Populated if type = BOOLEAN.

object.custom_attribute_values.name.name String No

The name of the custom attribute.

object.custom_attribute_values.name.key String No

Read-only. A copy of key from the associated CatalogCustomAttributeDefinition.

object.custom_attribute_values.name.number_value String No

Populated if type = NUMBER. Contains a string representation of a decimal number, using a . as the decimal separator.

object.custom_attribute_values.name.string_value String No

The string value of the custom attribute. Populated if type = STRING.

object.custom_attribute_values.name.type String No

Read-only. A copy of type from the associated CatalogCustomAttributeDefinition.

object.image_data Object No

An image file to use in Square catalogs. It can be associated with catalog items, item variations, and categories.

object.image_data.name String No

The internal name to identify this image in calls to the Square API. This is a searchable attribute for use in applicable query filters using the SearchCatalogObjects. It is not unique and should not be shown in a buyer facing context.

object.image_data.caption String No

A caption that describes what is shown in the image. Displayed in the Square Online Store. This is a searchable attribute for use in applicable query filters using the SearchCatalogObjects.

object.image_data.url String No

The URL of this image, generated by Square after an image is uploaded using the CreateCatalogImage endpoint.

object.subscription_plan_data Object No

Describes a subscription plan. For more information, see Set Up and Manage a Subscription Plan.

object.subscription_plan_data.name String Yes

The name of the plan.

object.subscription_plan_data.phases[] Array Yes

A list of SubscriptionPhase containing the SubscriptionPhase for this plan.

object.subscription_plan_data.phases[].recurring_price_money Object Yes

Represents an amount of money. Money fields can be signed or unsigned. Fields that do not explicitly define whether they are signed or unsigned are considered unsigned and can only hold positive amounts. For signed fields, the sign of the value indicates the purpose of the money transfer. See Working with Monetary Amounts for more information.

object.subscription_plan_data.phases[].recurring_price_money.amount Integer No

The amount of money, in the smallest denomination of the currency indicated by currency. For example, when currency is USD, amount is in cents. Monetary amounts can be positive or negative. See the specific field description to determine the meaning of the sign in a particular case.

object.subscription_plan_data.phases[].recurring_price_money.currency String No

The type of currency, in ISO 4217 format. For example, the currency code for US dollars is USD.

See Currency for possible values.

object.subscription_plan_data.phases[].uid String No

The Square-assigned ID of the subscription phase. This field cannot be changed after a SubscriptionPhase is created.

object.subscription_plan_data.phases[].ordinal Integer No

The position this phase appears in the sequence of phases defined for the plan, indexed from 0. This field cannot be changed after a SubscriptionPhase is created.

object.subscription_plan_data.phases[].cadence String Yes

The billing cadence of the phase. For example, weekly or monthly. This field cannot be changed after a SubscriptionPhase is created.

object.subscription_plan_data.phases[].periods Integer No

The number of cadences the phase lasts. If not set, the phase never ends. Only the last phase can be indefinite. This field cannot be changed after a SubscriptionPhase is created.

idempotency_key String Yes

A value you specify that uniquely identifies this request among all your requests. A common way to create a valid idempotency key is to use a Universally unique identifier (UUID).

If you're unsure whether a particular request was successful, you can reattempt it with the same idempotency key without worrying about creating duplicate objects.

See Idempotency for more information.

How to start integrating

  1. Add HTTP Task to your workflow definition.
  2. Search for the API you want to integrate with and click on the name.
    • This loads the API reference documentation and prepares the Http request settings.
  3. Click Test request to test run your request to the API and see the API's response.