# Products

This is an object representing a product to be ordered by a customer. Every order has a cart comprised of one or more ordered products. Those products may be printable tickets, physical goods or donations.

# The product object

# Attributes

  • id integer - Globally unique identifier for the object
  • name string - Full name of the product
  • abbreviation string - Short abbreviation of the product name (max length of 10, will be converted to uppercase)
  • number string - Optional product number
  • description string - Description of the product
  • image string - Optional image to be displayed on the ticket/product page
  • price integer - A positive integer equal to the base price for the product in the smallest currency unit (opens new window)
  • product_fees integer - A positive integer equal to the product fees for the product in the smallest currency unit (opens new window)
  • shipping_fees integer - A positive integer equal to the shipping fees for the product in the smallest currency unit (opens new window)
  • price_door integer - A positive integer equal to the door price for the product in the smallest currency unit (opens new window)
  • price_early integer - A positive integer equal to the early-bird price for the product in the smallest currency unit (opens new window)
  • price_early_ends_at integer - Unix timestamp on or after which the early-bird price expires and base price takes effect
  • inventory integer - The quantity available to purchase
  • enforce_inventory boolean - Dictates whether the inventory availability by quantity above is enforced or not
  • is_shipped boolean - Dictates whether the product is to be shipped
  • starts_at integer - Unix timestamp on or after which the product becomes available to purchase
  • ends_at integer - Unix timestamp on or after which the product becomes unavailable to purchase
  • enforce_timeframe boolean - Dictates whether the product availability by time period above is enforced or not
  • type integer - Type code of product
  • type_name string - Type name of product
  • category integer | object - ID of the category that this product belongs to expandable
  • test_data boolean - Indicates whether the product is intended to be used only for testing
  • bg_color string - Hexadecimal color of the product's background
  • text_color string - Hexadecimal color of the product's text
  • sort_order integer - Sort order
  • status integer - Status code for the product
  • status_name string - Status name for the product
  • currency integer | object - Currency of the product's payment expandable
  • client integer | object - ID of the client that this product belongs to expandable
  • event integer | object - ID of the event that this product belongs to expandable
  • created_at integer - Unix timestamp at which the product was created
  • updated_at integer - Unix timestamp at which the product was last updated
  • printed_ticket_data object optional - HTML data to be displayed on the printed ticket
    • printed_ticket_data.date_and_time string optional - The date and time of the event for this ticket
    • printed_ticket_data.location string optional - The location of the event for this ticket
    • printed_ticket_data.body string optional - The body/disclaimer text for this ticket

# Statuses

  1. Active - Product is able to be displayed on the ticket/product page
  2. Inactive - Product is not able to be displayed on the ticket/product page

# Types

  1. Ticket - A redeemable ticket that displays a QR and/or bar code to the customer
  2. Good - A physical good that is not redeemed but may likely be shipped
  3. Donation - A monetary donation that is neither redeemed nor shipped

# Example object

{
    "id": 41941,
    "name": "GA Saturday Ticket",
    "abbreviation": "GA-SAT",
    "number": "ABCD-GA-SAT1",
    "description": "All GA tickets include OPEN BAR, spectacular performances, amazing DJ's and more! Only 250 tickets available.",
    "image": null,
    "price": 1000,
    "product_fees": 75,
    "shipping_fees": 0,
    "price_door": 1500,
    "price_early": 750,
    "price_early_ends_at": 1626048169,
    "inventory": 250,
    "enforce_inventory": true,
    "is_shipped": false,
    "starts_at": null,
    "ends_at": null,
    "enforce_timeframe": false,
    "type": 1,
    "type_name": "Ticket",
    "category": {
        "id": 834,
        "name": "GA Tickets",
    },
    "test_data": false,
    "bg_color": "#ff0000",
    "text_color": "#ffffff",
    "sort_order": 1,
    "status": 1,
    "status_name": "Active",
    "currency": 1,
    "client": 735,
    "event": 9614,
    "created_at": 1626043169,
    "updated_at": 1626043264,
    "printed_ticket_data": {
        "date_and_time": "12:00 PM to 4:00 PM<br>Saturday & Sunday<br>November 20th-21st, 2021",
        "location": "Ft Lauderdale Beach Park<br>1100 Seabreeze Blvd<br>Fort Lauderdale, FL 33316",
        "body": "<p>We appreciate your choice to join in the ABCD Festival Fort Lauderdale 2021. Please bring this print out with you to gain access at the Festival.</p><p><br></p><p><strong>THIS IS YOUR TICKET. TREAT IT WITH CARE</strong></p><p>Ticket will be scanned for Authenticity. Do not make copies of this ticket. The first ticket scanned will be admitted. Duplicates will be rejected.</p><p><br></p><p><strong>WARNING</strong>: This ticket is for purchase or transfer by electronic means only. Purchase of this ticket from or sale by a third party is not authorized. Tickets not purchased electronically carry a great risk of being fraudulent. Venue Operator reserves the right to require photo I.D. for entry. Tickets are non-refundable. Event held rain or shine.</p><p><br></p><p><strong>Handicapped accessible</strong>. Policy prohibits animals, bicycles, skateboards, rollerblades, chairs, folding tables, coolers, smoking (including vaping devices) and non-Festival food/beverages on the Festival grounds. Sorry, no wheelchair rental available on site.Ticket Policy: Ticket holder voluntarily assumes all risks and danger incidental to any event for which this ticket is issued and waives all claims against the event sponsor, the owner of the facility, the ticket producer or issuer. Admission is subject to compliance with all laws and facility rules and the ticket holder consents to reasonable examinations and searches to ensure compliance. Failure to comply with the law or facility rules may result in refusal of admission or expulsion. No unauthorized recording of event where prohibited. Ticket holder cannot use photographs or any other recordings for commercial purposes. Ticket holder consents to have their image used in video and photo recordings for any purpose, including commercial use. No Refunds or Exchanges. Tickets are not for resale. No pets allowed. Only certified service animals allowed. No weapons allowed. Event will be held rain or shine.</p><p><br></p><p style=\"text-align: center;\"><strong>ABCD is Not Responsible for Lost or Stolen Articles. No Refunds.</strong></p><p style=\"text-align: center;\"><strong>By purchasing this ticket, the ticket holder agrees to the posted policies of ABCD.</strong></p>",
    }
}

# Retrieve a product

Retrieves the details of an existing product by the unique product identifier.

# Parameters

none

# Returns

Returns a product if a valid identifier was provided, and returns an error otherwise.

# Example request

# GET /v1/products/41941

curl https://api.ee4.events/v1/products/41941 \
  -u sk_test_4eC39HqLyjWDarjtT1zdp7dc:

# Example response

{
    "id": 41941,
    "name": "GA Saturday Ticket",
    "abbreviation": "GA-SAT",
    "number": "ABCD-GA-SAT1",
    "description": "All GA tickets include OPEN BAR, spectacular performances, amazing DJ's and more! Only 250 tickets available.",
    "image": null,
    "price": 1000,
    "product_fees": 75,
    "shipping_fees": 0,
    "price_door": 1500,
    "price_early": 750,
    "price_early_ends_at": 1626048169,
    "inventory": 250,
    "enforce_inventory": true,
    "is_shipped": false,
    "starts_at": null,
    "ends_at": null,
    "enforce_timeframe": false,
    "type": 1,
    "type_name": "Ticket",
    "category": {
        "id": 834,
        "name": "GA Tickets",
    },
    "test_data": false,
    "bg_color": "#ff0000",
    "text_color": "#ffffff",
    "sort_order": 1,
    "status": 1,
    "status_name": "Active",
    "currency": 1,
    "client": 735,
    "event": 9614,
    "created_at": 1626043169,
    "updated_at": 1626043264,
    "printed_ticket_data": {
        "date_and_time": "12:00 PM to 4:00 PM<br>Saturday & Sunday<br>November 20th-21st, 2021",
        "location": "Ft Lauderdale Beach Park<br>1100 Seabreeze Blvd<br>Fort Lauderdale, FL 33316",
        "body": "<p>We appreciate your choice to join in the ABCD Festival Fort Lauderdale 2021. Please bring this print out with you to gain access at the Festival.</p><p><br></p><p><strong>THIS IS YOUR TICKET. TREAT IT WITH CARE</strong></p><p>Ticket will be scanned for Authenticity. Do not make copies of this ticket. The first ticket scanned will be admitted. Duplicates will be rejected.</p><p><br></p><p><strong>WARNING</strong>: This ticket is for purchase or transfer by electronic means only. Purchase of this ticket from or sale by a third party is not authorized. Tickets not purchased electronically carry a great risk of being fraudulent. Venue Operator reserves the right to require photo I.D. for entry. Tickets are non-refundable. Event held rain or shine.</p><p><br></p><p><strong>Handicapped accessible</strong>. Policy prohibits animals, bicycles, skateboards, rollerblades, chairs, folding tables, coolers, smoking (including vaping devices) and non-Festival food/beverages on the Festival grounds. Sorry, no wheelchair rental available on site.Ticket Policy: Ticket holder voluntarily assumes all risks and danger incidental to any event for which this ticket is issued and waives all claims against the event sponsor, the owner of the facility, the ticket producer or issuer. Admission is subject to compliance with all laws and facility rules and the ticket holder consents to reasonable examinations and searches to ensure compliance. Failure to comply with the law or facility rules may result in refusal of admission or expulsion. No unauthorized recording of event where prohibited. Ticket holder cannot use photographs or any other recordings for commercial purposes. Ticket holder consents to have their image used in video and photo recordings for any purpose, including commercial use. No Refunds or Exchanges. Tickets are not for resale. No pets allowed. Only certified service animals allowed. No weapons allowed. Event will be held rain or shine.</p><p><br></p><p style=\"text-align: center;\"><strong>ABCD is Not Responsible for Lost or Stolen Articles. No Refunds.</strong></p><p style=\"text-align: center;\"><strong>By purchasing this ticket, the ticket holder agrees to the posted policies of ABCD.</strong></p>",
    }
}

# Create a product

Create a new product.

# Parameters

  • currency string | integer - Currency of the product, defaults to USD (1) if ommitted
  • client_id integer required - ID of the client that this product belongs to
  • event_id integer - ID of the event that this product belongs to, defaults to the next upcoming event if ommitted

# Returns

Returns a product if creation was successful, and returns an error otherwise.

# Example request

# POST /v1/products

curl https://api.ee4.events/v1/products \
  -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
  -d client_id=735 \
  -d event_id=9614 \
  -d currency=usd \
  -d price=1000 \
  -d price_door=1500 \
  -d inventory=250 \
  -d enforce_inventory=1 \
  -d name="GA Saturday Ticket" \
  -d abbreviation="GA-SAT" \
  -d number="ABCD-GA-SAT1" \
  -d description="All GA tickets include OPEN BAR, spectacular performances, amazing DJ's and more! Only 250 tickets available." \
  -d type=1 \
  -d bg_color="#ff0000" \
  -d text_color="#ffffff" \
  -d sort_order=1

# Example response

{
    "id": 41941,
    "name": "GA Saturday Ticket",
    "abbreviation": "GA-SAT",
    "number": "ABCD-GA-SAT1",
    "description": "All GA tickets include OPEN BAR, spectacular performances, amazing DJ's and more! Only 250 tickets available.",
    "image": null,
    "price": 1000,
    "product_fees": 75,
    "shipping_fees": 0,
    "price_door": 1500,
    "price_early": null,
    "price_early_ends_at": null,
    "inventory": 250,
    "enforce_inventory": true,
    "is_shipped": false,
    "starts_at": null,
    "ends_at": null,
    "enforce_timeframe": false,
    "type": 1,
    "type_name": "Ticket",
    "category": {
        "id": 834,
        "name": "GA Tickets",
    },
    "test_data": false,
    "bg_color": "#ff0000",
    "text_color": "#ffffff",
    "sort_order": 1,
    "status": 1,
    "status_name": "Active",
    "currency": 1,
    "client": 735,
    "event": 9614,
    "created_at": 1626043169,
    "updated_at": null,
}

# Update a product

Updates product properties/cart contents without completing. When payment is ready to be processed, complete the product.

# Parameters

  • name string required - Full name of the product
  • abbreviation string - Short abbreviation of the product name (max length of 10, will be converted to uppercase)
  • number string - Optional product number
  • description string - Description of the product
  • image string - Optional image to be displayed on the ticket/product page
  • price integer required - A positive integer equal to the base price for the product in the smallest currency unit (opens new window)
  • product_fees integer - A positive integer equal to the product fees for the product in the smallest currency unit (opens new window)
  • shipping_fees integer - A positive integer equal to the shipping fees for the product in the smallest currency unit (opens new window)
  • price_door integer - A positive integer equal to the door price for the product in the smallest currency unit (opens new window)
  • price_early integer - A positive integer equal to the early-bird price for the product in the smallest currency unit (opens new window)
  • price_early_ends_at integer - Unix timestamp on or after which the early-bird price expires and base price takes effect
  • inventory integer - The quantity available to purchase
  • enforce_inventory boolean - Dictates whether the inventory availability by quantity above is enforced or not
  • is_shipped boolean - Dictates whether the product is to be shipped
  • starts_at integer - Unix timestamp on or after which the product becomes available to purchase
  • ends_at integer - Unix timestamp on or after which the product becomes unavailable to purchase
  • enforce_timeframe boolean - Dictates whether the product availability by time period above is enforced or not
  • type integer required - Type code of product
  • category_id integer required - ID of the category that this product belongs to expandable
  • test_data boolean - Indicates whether the product is intended to be used only for testing
  • bg_color string - Hexadecimal color of the product's background
  • text_color string - Hexadecimal color of the product's text
  • sort_order integer - Sort order
  • status integer required - Status code for the product
  • currency integer | object - Currency of the product expandable
  • printed_ticket_data object optional - HTML data to be displayed on the printed ticket
    • printed_ticket_data.date_and_time string optional - The date and time of the event for this ticket
    • printed_ticket_data.location string optional - The location of the event for this ticket
    • printed_ticket_data.body string optional - The body/disclaimer text for this ticket

# Returns

Returns the product.

# Example request

# POST /v1/products/41941

curl https://api.ee4.events/v1/products/41941 \
  -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
  -d price=1750 \
  -d price_door=2000 \
  -d name="GA Sunday Ticket" \
  -d abbreviation="GA-SUN" \
  -d number="ABCD-GA-SUN" \

# Example response

{
    "id": 41941,
    "name": "GA Sunday Ticket",
    "abbreviation": "GA-SUN",
    "number": "ABCD-GA-SUN",
    "description": "All GA tickets include OPEN BAR, spectacular performances, amazing DJ's and more! Only 250 tickets available.",
    "image": null,
    "price": 1750,
    "product_fees": 75,
    "shipping_fees": 0,
    "price_door": 2000,
    "price_early": null,
    "price_early_ends_at": null,
    "inventory": 250,
    "enforce_inventory": true,
    "is_shipped": false,
    "starts_at": null,
    "ends_at": null,
    "enforce_timeframe": false,
    "type": 1,
    "type_name": "Ticket",
    "category": {
        "id": 834,
        "name": "GA Tickets",
    },
    "test_data": false,
    "bg_color": "#ff0000",
    "text_color": "#ffffff",
    "sort_order": 1,
    "status": 1,
    "status_name": "Active",
    "currency": 1,
    "client": 735,
    "event": 9614,
    "created_at": 1626043169,
    "updated_at": null,
}

# Delete a product

Deletes a product. It cannot be undone. Existing orders with carts containing this product will still display the ordered product information for record-keeping.

# Parameters

  • none

# Returns

Returns an object with a deleted parameter on success. If the product ID does not exist, this call returns an error.

Unlike other objects, deleted products can still be retrieved through the API, in order to be able to track the history of orders while still preventing any further products to be purchased.

# Example request

# DELETE /v1/products/41941

curl https://api.ee4.events/v1/products/41941 \
  -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
  -X DELETE

# Example response

{
    "id": 41941,
    "object": "product",
    "deleted": true
}

# List all products

Returns a list of products created. The products are returned in sorted order, with the most recently created products appearing first.

# Parameters

  • limit integer optional - A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.
  • category_id string optional - Only return products for the category specified by this category ID.
  • ending_before string optional - A cursor for use in pagination. ending_before is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, starting with obj_bar, your subsequent call can include ending_before=obj_bar in product to fetch the previous page of the list.
  • starting_after string optional - A cursor for use in pagination. starting_after is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include starting_after=obj_foo in product to fetch the next page of the list.
  • event_id integer optional - Only return products belonging to the specified event.

# Returns

A dictionary with a data property that contains an array of up to limit products, starting after product starting_after. Each entry in the array is a separate product object. If no more products are available, the resulting array will be empty. If you provide a non-existent product ID, this call returns an error.

# Example request

# GET /v1/products

curl https://api.ee4.events/v1/products \
  -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
  -d limit=3 \
  -G

# Example response

{
    "object": "list",
    "url": "/v1/products",
    "has_more": false,
    "data": [
        {
            "id": 41941,
            "name": "GA Saturday Ticket",
            "abbreviation": "GA-SAT",
            "number": "ABCD-GA-SAT1",
            "description": "All GA tickets include OPEN BAR, spectacular performances, amazing DJ's and more! Only 250 tickets available.",
            "image": null,
            "price": 1000,
            "product_fees": 75,
            "shipping_fees": 0,
            "price_door": 1500,
            "price_early": null,
            "price_early_ends_at": null,
            "inventory": 250,
            "enforce_inventory": true,
            "is_shipped": false,
            "starts_at": null,
            "ends_at": null,
            "enforce_timeframe": false,
            "type": 1,
            "type_name": "Ticket",
            "category": {
                "id": 834,
                "name": "GA Tickets",
            },
            "test_data": false,
            "bg_color": "#ff0000",
            "text_color": "#ffffff",
            "sort_order": 1,
            "status": 1,
            "status_name": "Active",
            "currency": 1,
            "client": 735,
            "event": 9614,
            "created_at": 1626043169,
            "updated_at": null,
        },
        {...},
        {...}
    ]
}