1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
//! Request struct for the Batch Upsert Catalog Objects API
use serde::Serialize;
use super::CatalogObjectBatch;
/// This is a model class for BatchUpsertCatalogObjectsRequest type.
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize)]
pub struct BatchUpsertCatalogObjectsRequest {
/// 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](https://developer.squareup.com/docs/basics/api101/idempotency) for more
/// information.
pub idempotency_key: Option<String>,
/// A batch of CatalogObjects to be inserted/updated atomically. The objects within a batch will
/// be inserted in an all-or-nothing fashion, i.e., if an error occurs attempting to insert or
/// update an object within a batch, the entire batch will be rejected. However, an error in one
/// batch will not affect other batches within the same request.
///
/// For each object, its `updated_at` field is ignored and replaced with a current timestamp,
/// and its `is_deleted` field must not be set to `true`.
///
/// To modify an existing object, supply its ID. To create a new object, use an ID starting with
/// `#`. These IDs may be used to create relationships between an object and attributes of other
/// objects that reference it. For example, you can create a CatalogItem with ID `#ABC` and a
/// CatalogItemVariation with its `item_id` attribute set to `#ABC` in order to associate the
/// CatalogItemVariation with its parent CatalogItem.
///
/// Any `#`-prefixed IDs are valid only within a single atomic batch, and will be replaced by
/// server-generated IDs.
///
/// Each batch may contain up to 1,000 objects. The total number of objects across all batches
/// for a single request may not exceed 10,000. If either of these limits is violated, an error
/// will be returned and no objects will be inserted or updated.
pub batches: Vec<CatalogObjectBatch>,
}