Item bundles

Resource description

With bundles, you can specify products that are included within other products. There are two premier use cases of this:

  • Package discounts. For example, you could offer a discounted package that includes three tickets but can only be bought as a whole. With a bundle including three times the usual product, the package will automatically pull three sub-items into the cart, making sure of correct quota calculation and issuance of the correct number of tickets.
  • Tax splitting. For example, if your conference ticket includes a part that is subject to different taxation and that you need to put on the invoice separately. When you putting a “designated price” on a bundled sub-item, pretix will use that price to show a split taxation.

The bundles resource contains the following public fields:

Field Type Description
id integer Internal ID of the bundling configuration
bundled_item integer Internal ID of the item that is included.
bundled_variation integer Internal ID of the variation of the item (or null).
count integer Number of items included
designated_price money (string) Designated price of the bundled product. This will be used to split the price of the base item e.g. for mixed taxation. This is not added to the price.

Changed in version 2.6: This resource has been added.

Endpoints

GET /api/v1/organizers/(organizer)/events/(event)/items/(item)/bundles/

Returns a list of all bundles for a given item.

Example request:

GET /api/v1/organizers/bigevents/events/sampleconf/items/11/bundles/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript

Example response:

HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json

{
  "count": 2,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 3,
      "bundled_item": 3,
      "bundled_variation": null,
      "count": 1,
      "designated_price": "0.00"
    },
    {
      "id": 3,
      "bundled_item": 3,
      "bundled_variation": null,
      "count": 2,
      "designated_price": "1.50"
    }
  ]
}
Query Parameters:
 
  • page (integer) – The page number in case of a multi-page result set, default is 1
Parameters:
  • organizer – The slug field of the organizer to fetch
  • event – The slug field of the event to fetch
  • item – The id field of the item to fetch
Status Codes:
  • 200 OK – no error
  • 401 Unauthorized – Authentication failure
  • 403 Forbidden – The requested organizer/event/item does not exist or you have no permission to view this resource.
GET /api/v1/organizers/(organizer)/events/(event)/items/(item)/bundles/(id)/

Returns information on one bundle configuration, identified by its ID.

Example request:

GET /api/v1/organizers/bigevents/events/sampleconf/items/1/bundles/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript

Example response:

HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json

{
  "id": 3,
  "bundled_item": 3,
  "bundled_variation": null,
  "count": 2,
  "designated_price": "1.50"
}
Parameters:
  • organizer – The slug field of the organizer to fetch
  • event – The slug field of the event to fetch
  • item – The id field of the item to fetch
  • id – The id field of the bundle to fetch
Status Codes:
  • 200 OK – no error
  • 401 Unauthorized – Authentication failure
  • 403 Forbidden – The requested organizer/event does not exist or you have no permission to view this resource.
POST /api/v1/organizers/bigevents/events/sampleconf/items/1/bundles/

Creates a new bundle configuration

Example request:

POST /api/v1/organizers/(organizer)/events/(event)/items/(item)/bundles/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content: application/json

{
  "bundled_item": 3,
  "bundled_variation": null,
  "count": 2,
  "designated_price": "1.50"
}

Example response:

HTTP/1.1 201 Created
Vary: Accept
Content-Type: application/json

{
  "id": 3,
  "bundled_item": 3,
  "bundled_variation": null,
  "count": 2,
  "designated_price": "1.50"
}
Parameters:
  • organizer – The slug field of the organizer of the event/item to create a bundle-configuration for
  • event – The slug field of the event to create a bundle configuration for
  • item – The id field of the item to create a bundle configuration for
Status Codes:
PATCH /api/v1/organizers/(organizer)/events/(event)/items/(item)/bundles/(id)/

Update a bundle configuration. You can also use PUT instead of PATCH. With PUT, you have to provide all fields of the resource, other fields will be reset to default. With PATCH, you only need to provide the fields that you want to change.

You can change all fields of the resource except the id field.

Example request:

PATCH /api/v1/organizers/bigevents/events/sampleconf/items/1/bundles/3/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json
Content-Length: 94

{
  "count": 2
}

Example response:

HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json

{
  "id": 3,
  "bundled_item": 3,
  "bundled_variation": null,
  "count": 2,
  "designated_price": "1.50"
}
Parameters:
  • organizer – The slug field of the organizer to modify
  • event – The slug field of the event to modify
  • item – The id field of the item to modify
  • id – The id field of the bundle to modify
Status Codes:
  • 200 OK – no error
  • 400 Bad Request – The bundle configuration could not be modified due to invalid submitted data
  • 401 Unauthorized – Authentication failure
  • 403 Forbidden – The requested organizer/event does not exist or you have no permission to change this resource.
DELETE /api/v1/organizers/(organizer)/events/(event)/items/(id)/bundles/(id)/

Delete a bundle configuration.

Example request:

DELETE /api/v1/organizers/bigevents/events/sampleconf/items/1/bundles/1/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript

Example response:

HTTP/1.1 204 No Content
Vary: Accept
Parameters:
  • organizer – The slug field of the organizer to modify
  • event – The slug field of the event to modify
  • id – The id field of the item to modify
  • id – The id field of the bundle to delete
Status Codes: