# The attribute editable information.
type EditableProperty {
    # Whether the attribute is locked for editing.
    locked: Boolean!

    # The reason the attribute is locked for editing.
    reason: FormattedString
}

# Represents a generic custom attribute.
type Attribute {
    # Key or name of the attribute.
    key: String!

    # Value of the attribute.
    value: String
}

# Represents a typed custom attribute.
type TypedAttribute {
    # Key or name of the attribute.
    key: String!

    # Value of the attribute.
    value: String!
}

# A weight, which includes a numeric value and a unit of measurement.
type Weight {
    # The unit of measurement for value.
    unit: WeightUnit!

    # The weight value using the unit system specified with unit.
    value: Float!
}

# An auto-generated type for paginating through a list of Strings.
type StringConnection {
    # A list of edges.
    edges: [StringEdge!]!

    # Information to aid in pagination.
    pageInfo: PageInfo!
}

# An auto-generated type which holds one String and a cursor during pagination.
type StringEdge {
    # A cursor for use in pagination.
    cursor: String!

    # The item at the end of StringEdge.
    node: String!
}
