# This file was auto-generated by Fern from our API Definition.

import typing_extensions
from .custom_attribute import CustomAttributeParams
import typing_extensions
import typing


class BulkUpsertLocationCustomAttributesRequestLocationCustomAttributeUpsertRequestParams(typing_extensions.TypedDict):
    """
    Represents an individual upsert request in a [BulkUpsertLocationCustomAttributes](api-endpoint:LocationCustomAttributes-BulkUpsertLocationCustomAttributes)
    request. An individual request contains a location ID, the custom attribute to create or update,
    and an optional idempotency key.
    """

    location_id: str
    """
    The ID of the target [location](entity:Location).
    """

    custom_attribute: CustomAttributeParams
    """
    The custom attribute to create or update, with following fields:
    - `key`. This key must match the `key` of a custom attribute definition in the Square seller
    account. If the requesting application is not the definition owner, you must provide the qualified key.
    - `value`. This value must conform to the `schema` specified by the definition.
    For more information, see [Supported data types](https://developer.squareup.com/docs/devtools/customattributes/overview#supported-data-types)..
    - `version`. To enable [optimistic concurrency](https://developer.squareup.com/docs/build-basics/common-api-patterns/optimistic-concurrency)
    control, specify the current version of the custom attribute. 
    If this is not important for your application, `version` can be set to -1.
    """

    idempotency_key: typing_extensions.NotRequired[typing.Optional[str]]
    """
    A unique identifier for this individual upsert request, used to ensure idempotency.
    For more information, see [Idempotency](https://developer.squareup.com/docs/build-basics/common-api-patterns/idempotency).
    """
