SEO. JSONLD. AggregateOffer
(SEO v0.3.0-rc.0)
View Source
When a single product is associated with multiple offers (for example, the same pair of shoes is offered by different merchants), then AggregateOffer can be used.
Note: AggregateOffers are normally expected to associate multiple offers that all share the same defined businessFunction value, or default to http://purl.org/goodrelations/v1#Sell if businessFunction is not explicitly defined.
Helper for building a Schema.org AggregateOffer JSON-LD structure.
Summary
Types
A JSON-LD map ready to be nested or rendered. String-keyed, always
includes "@type" set to "AggregateOffer", plus any camelCased
field keys the caller provided (see build/1). "@context" is added
at render time by SEO.JSONLD.meta/1 on the top-level node only.
Functions
Build a AggregateOffer JSON-LD map.
Types
@type attrs() :: %{ optional(:high_price) => String.t() | number(), optional(:low_price) => String.t() | number(), optional(:offer_count) => integer(), optional(:offers) => SEO.JSONLD.Offer.t() | map() | SEO.JSONLD.Demand.t(), optional(:accepted_payment_method) => SEO.JSONLD.PaymentMethod.t() | map() | SEO.JSONLD.LoanOrCredit.t() | String.t(), optional(:add_on) => SEO.JSONLD.Offer.t() | map(), optional(:additional_property) => SEO.JSONLD.PropertyValue.t() | map(), optional(:advance_booking_requirement) => SEO.JSONLD.QuantitativeValue.t() | map(), optional(:aggregate_rating) => SEO.JSONLD.AggregateRating.t() | map(), optional(:area_served) => SEO.JSONLD.GeoShape.t() | map() | SEO.JSONLD.AdministrativeArea.t() | SEO.JSONLD.Place.t() | String.t(), optional(:asin) => String.t() | URI.t(), optional(:availability) => :back_order | :discontinued | :in_stock | :in_store_only | :limited_availability | :made_to_order | :online_only | :out_of_stock | :pre_order | :pre_sale | :reserved | :sold_out, optional(:availability_ends) => DateTime.t() | NaiveDateTime.t() | String.t() | Time.t() | Date.t(), optional(:availability_starts) => Date.t() | String.t() | DateTime.t() | NaiveDateTime.t() | Time.t(), optional(:available_at_or_from) => SEO.JSONLD.Place.t() | map(), optional(:available_delivery_method) => :locker_delivery | :on_site_pickup | :parcel_service, optional(:business_function) => term(), optional(:category) => String.t() | URI.t() | SEO.JSONLD.Thing.t() | map() | :aerobic_activity | :anaerobic_activity | :balance | :flexibility | :leisure_time_activity | :occupational_activity | :strength_training | SEO.JSONLD.CategoryCode.t(), optional(:checkout_page_url_template) => String.t(), optional(:delivery_lead_time) => SEO.JSONLD.QuantitativeValue.t() | map(), optional(:eligible_customer_type) => term(), optional(:eligible_duration) => SEO.JSONLD.QuantitativeValue.t() | map(), optional(:eligible_quantity) => SEO.JSONLD.QuantitativeValue.t() | map(), optional(:eligible_region) => SEO.JSONLD.Place.t() | map() | String.t() | SEO.JSONLD.GeoShape.t(), optional(:eligible_transaction_volume) => SEO.JSONLD.PriceSpecification.t() | map(), optional(:gtin) => String.t() | URI.t(), optional(:gtin12) => String.t(), optional(:gtin13) => String.t(), optional(:gtin14) => String.t(), optional(:gtin8) => String.t(), optional(:has_adult_consideration) => :alcohol_consideration | :dangerous_good_consideration | :healthcare_consideration | :narcotic_consideration | :reduced_relevance_for_children_consideration | :sexual_content_consideration | :tobacco_nicotine_consideration | :unclassified_adult_consideration | :violence_consideration | :weapon_consideration, optional(:has_gs1_digital_link) => URI.t() | String.t(), optional(:has_measurement) => SEO.JSONLD.QuantitativeValue.t() | map(), optional(:has_merchant_return_policy) => SEO.JSONLD.MerchantReturnPolicy.t() | map(), optional(:includes_object) => SEO.JSONLD.TypeAndQuantityNode.t() | map(), optional(:ineligible_region) => SEO.JSONLD.Place.t() | map() | String.t() | SEO.JSONLD.GeoShape.t(), optional(:inventory_level) => SEO.JSONLD.QuantitativeValue.t() | map(), optional(:is_family_friendly) => boolean(), optional(:item_condition) => :damaged_condition | :new_condition | :refurbished_condition | :used_condition, optional(:item_offered) => SEO.JSONLD.MenuItem.t() | map() | SEO.JSONLD.Trip.t() | SEO.JSONLD.Event.t() | SEO.JSONLD.CreativeWork.t() | SEO.JSONLD.Product.t() | SEO.JSONLD.Service.t() | t(), optional(:lease_length) => SEO.JSONLD.QuantitativeValue.t() | map() | Duration.t() | String.t(), optional(:mobile_url) => String.t(), optional(:mpn) => String.t(), optional(:offered_by) => SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(), optional(:price) => String.t() | number(), optional(:price_currency) => String.t(), optional(:price_specification) => SEO.JSONLD.PriceSpecification.t() | map(), optional(:price_valid_until) => Date.t() | String.t(), optional(:review) => SEO.JSONLD.Review.t() | map(), optional(:reviews) => SEO.JSONLD.Review.t() | map(), optional(:seller) => SEO.JSONLD.Person.t() | map() | SEO.JSONLD.Organization.t(), optional(:serial_number) => String.t(), optional(:shipping_details) => SEO.JSONLD.OfferShippingDetails.t() | map(), optional(:sku) => String.t(), optional(:valid_for_member_tier) => SEO.JSONLD.MemberProgramTier.t() | map(), optional(:valid_from) => DateTime.t() | NaiveDateTime.t() | String.t() | Date.t(), optional(:valid_through) => DateTime.t() | NaiveDateTime.t() | String.t() | Date.t(), optional(:warranty) => SEO.JSONLD.WarrantyPromise.t() | map(), optional(:additional_type) => String.t() | URI.t(), optional(:alternate_name) => String.t(), optional(:description) => SEO.JSONLD.TextObject.t() | map() | String.t(), optional(:disambiguating_description) => String.t(), optional(:identifier) => String.t() | URI.t() | SEO.JSONLD.PropertyValue.t() | map(), optional(:image) => URI.t() | String.t() | SEO.JSONLD.ImageObject.t() | map(), optional(:main_entity_of_page) => SEO.JSONLD.CreativeWork.t() | map() | URI.t() | String.t(), optional(:name) => String.t(), optional(:owner) => SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(), optional(:potential_action) => SEO.JSONLD.Action.t() | map(), optional(:same_as) => URI.t() | String.t(), optional(:subject_of) => SEO.JSONLD.Event.t() | map() | SEO.JSONLD.CreativeWork.t(), optional(:url) => URI.t() | String.t() } | [ high_price: String.t() | number(), low_price: String.t() | number(), offer_count: integer(), offers: SEO.JSONLD.Offer.t() | map() | SEO.JSONLD.Demand.t(), accepted_payment_method: SEO.JSONLD.PaymentMethod.t() | map() | SEO.JSONLD.LoanOrCredit.t() | String.t(), add_on: SEO.JSONLD.Offer.t() | map(), additional_property: SEO.JSONLD.PropertyValue.t() | map(), advance_booking_requirement: SEO.JSONLD.QuantitativeValue.t() | map(), aggregate_rating: SEO.JSONLD.AggregateRating.t() | map(), area_served: SEO.JSONLD.GeoShape.t() | map() | SEO.JSONLD.AdministrativeArea.t() | SEO.JSONLD.Place.t() | String.t(), asin: String.t() | URI.t(), availability: :back_order | :discontinued | :in_stock | :in_store_only | :limited_availability | :made_to_order | :online_only | :out_of_stock | :pre_order | :pre_sale | :reserved | :sold_out, availability_ends: DateTime.t() | NaiveDateTime.t() | String.t() | Time.t() | Date.t(), availability_starts: Date.t() | String.t() | DateTime.t() | NaiveDateTime.t() | Time.t(), available_at_or_from: SEO.JSONLD.Place.t() | map(), available_delivery_method: :locker_delivery | :on_site_pickup | :parcel_service, business_function: term(), category: String.t() | URI.t() | SEO.JSONLD.Thing.t() | map() | :aerobic_activity | :anaerobic_activity | :balance | :flexibility | :leisure_time_activity | :occupational_activity | :strength_training | SEO.JSONLD.CategoryCode.t(), checkout_page_url_template: String.t(), delivery_lead_time: SEO.JSONLD.QuantitativeValue.t() | map(), eligible_customer_type: term(), eligible_duration: SEO.JSONLD.QuantitativeValue.t() | map(), eligible_quantity: SEO.JSONLD.QuantitativeValue.t() | map(), eligible_region: SEO.JSONLD.Place.t() | map() | String.t() | SEO.JSONLD.GeoShape.t(), eligible_transaction_volume: SEO.JSONLD.PriceSpecification.t() | map(), gtin: String.t() | URI.t(), gtin12: String.t(), gtin13: String.t(), gtin14: String.t(), gtin8: String.t(), has_adult_consideration: :alcohol_consideration | :dangerous_good_consideration | :healthcare_consideration | :narcotic_consideration | :reduced_relevance_for_children_consideration | :sexual_content_consideration | :tobacco_nicotine_consideration | :unclassified_adult_consideration | :violence_consideration | :weapon_consideration, has_gs1_digital_link: URI.t() | String.t(), has_measurement: SEO.JSONLD.QuantitativeValue.t() | map(), has_merchant_return_policy: SEO.JSONLD.MerchantReturnPolicy.t() | map(), includes_object: SEO.JSONLD.TypeAndQuantityNode.t() | map(), ineligible_region: SEO.JSONLD.Place.t() | map() | String.t() | SEO.JSONLD.GeoShape.t(), inventory_level: SEO.JSONLD.QuantitativeValue.t() | map(), is_family_friendly: boolean(), item_condition: :damaged_condition | :new_condition | :refurbished_condition | :used_condition, item_offered: SEO.JSONLD.MenuItem.t() | map() | SEO.JSONLD.Trip.t() | SEO.JSONLD.Event.t() | SEO.JSONLD.CreativeWork.t() | SEO.JSONLD.Product.t() | SEO.JSONLD.Service.t() | t(), lease_length: SEO.JSONLD.QuantitativeValue.t() | map() | Duration.t() | String.t(), mobile_url: String.t(), mpn: String.t(), offered_by: SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(), price: String.t() | number(), price_currency: String.t(), price_specification: SEO.JSONLD.PriceSpecification.t() | map(), price_valid_until: Date.t() | String.t(), review: SEO.JSONLD.Review.t() | map(), reviews: SEO.JSONLD.Review.t() | map(), seller: SEO.JSONLD.Person.t() | map() | SEO.JSONLD.Organization.t(), serial_number: String.t(), shipping_details: SEO.JSONLD.OfferShippingDetails.t() | map(), sku: String.t(), valid_for_member_tier: SEO.JSONLD.MemberProgramTier.t() | map(), valid_from: DateTime.t() | NaiveDateTime.t() | String.t() | Date.t(), valid_through: DateTime.t() | NaiveDateTime.t() | String.t() | Date.t(), warranty: SEO.JSONLD.WarrantyPromise.t() | map(), additional_type: String.t() | URI.t(), alternate_name: String.t(), description: SEO.JSONLD.TextObject.t() | map() | String.t(), disambiguating_description: String.t(), identifier: String.t() | URI.t() | SEO.JSONLD.PropertyValue.t() | map(), image: URI.t() | String.t() | SEO.JSONLD.ImageObject.t() | map(), main_entity_of_page: SEO.JSONLD.CreativeWork.t() | map() | URI.t() | String.t(), name: String.t(), owner: SEO.JSONLD.Organization.t() | map() | SEO.JSONLD.Person.t(), potential_action: SEO.JSONLD.Action.t() | map(), same_as: URI.t() | String.t(), subject_of: SEO.JSONLD.Event.t() | map() | SEO.JSONLD.CreativeWork.t(), url: URI.t() | String.t() ]
A JSON-LD map ready to be nested or rendered. String-keyed, always
includes "@type" set to "AggregateOffer", plus any camelCased
field keys the caller provided (see build/1). "@context" is added
at render time by SEO.JSONLD.meta/1 on the top-level node only.
Functions
Build a AggregateOffer JSON-LD map.
Fields
:high_price- The highest price of all offers available.
Usage guidelines:
- Use values from 0123456789 (Unicode 'DIGIT ZERO' (U+0030) to 'DIGIT NINE' (U+0039)) rather than superficially similar Unicode symbols.
- Use '.' (Unicode 'FULL STOP' (U+002E)) rather than ',' to indicate a decimal point. Avoid using these symbols as a readability separator.
:low_price- The lowest price of all offers available.
Usage guidelines:
- Use values from 0123456789 (Unicode 'DIGIT ZERO' (U+0030) to 'DIGIT NINE' (U+0039)) rather than superficially similar Unicode symbols.
- Use '.' (Unicode 'FULL STOP' (U+002E)) rather than ',' to indicate a decimal point. Avoid using these symbols as a readability separator.
:offer_count- The number of offers for the product.:offers- An offer to provide this item—for example, an offer to sell a product, rent the DVD of a movie, perform a service, or give away tickets to an event. UsebusinessFunctionto indicate the kind of transaction offered, i.e. sell, lease, etc. This property can also be used to describe aSEO.JSONLD.Demand. While this property is listed as expected on a number of common types, it can be used in others. In that case, using a second type, such as Product or a subtype of Product, can clarify the nature of the offer.
Inherited properties
Additional properties are available through the inheritance chain. See each ancestor's docs for its properties: