Create a new product
Content
Resource URL
https://apps.ticketmatic.com/api/1/{accountname}/settings/products
Examples
Creating a simple product
In this example we’ll be creating a simple product: a t-shirt with different sizes. The default price of the t-shirt is 25 euro. The small t-shirts costs 20 euro, and the large t-shirt costs 30 euro.
It will be for sale from 2017 till 2025 in saleschannels 1 and 2.
Request
1use Ticketmatic\Endpoints\Settings\Products;
2
3$result = Products::create($client, array(
4 "typeid" => 26001,
5 "name" => "T-shirt",
6 "description" => "Show us some love with our latest shirt, available in 3 sizes.",
7 "instancevalues" => array(
8 "default" => array(
9 "price" => 25,
10 ),
11 "exceptions" => array(
12 array(
13 "properties" => array(
14 "size" => array(
15 "S",
16 ),
17 ),
18 "value" => array(
19 "price" => 20,
20 ),
21 ),
22 array(
23 "properties" => array(
24 "size" => array(
25 "M",
26 ),
27 ),
28 "value" => array(
29 "price" => 25,
30 ),
31 ),
32 array(
33 "properties" => array(
34 "size" => array(
35 "L",
36 ),
37 ),
38 "value" => array(
39 "price" => 30,
40 ),
41 ),
42 ),
43 ),
44 "properties" => array(
45 array(
46 "name" => "Size",
47 "description" => "Size of the T-Shirt",
48 "key" => "size",
49 "values" => array(
50 array(
51 "key" => "S",
52 "value" => "Small",
53 ),
54 array(
55 "key" => "M",
56 "value" => "Medium",
57 ),
58 array(
59 "key" => "L",
60 "value" => "Large",
61 ),
62 ),
63 ),
64 ),
65 "saleendts" => "2025-01-01 00:00:00",
66 "saleschannels" => array(
67 1,
68 2,
69 ),
70 "salestartts" => "2017-01-01 00:00:00",
71));
Response
1object(\Ticketmatic\Model\Product) (11) {
2 ["id"]=>
3 int(0)
4 ["typeid"]=>
5 int(0)
6 ["name"]=>
7 string(7) "T-shirt"
8 ["code"]=>
9 string(12) "781736175845"
10 ["description"]=>
11 string(62) "Show us some love with our latest shirt, available in 3 sizes."
12 ["instancevalues"]=>
13 object(\Ticketmatic\Model\ProductInstancevalues) (2) {
14 ["default"]=>
15 object(\Ticketmatic\Model\ProductInstanceValue) (1) {
16 ["price"]=>
17 float(25.000000)
18 }
19 ["exceptions"]=>
20 array(3) {
21 [0]=>
22 object(\Ticketmatic\Model\ProductInstanceException) (2) {
23 ["properties"]=>
24 array(1) {
25 ["size"]=>
26 array(1) {
27 [0]=>
28 string(1) "S"
29 }
30 }
31 ["value"]=>
32 object(\Ticketmatic\Model\ProductInstanceValue) (1) {
33 ["price"]=>
34 float(20.000000)
35 }
36 }
37 [1]=>
38 object(\Ticketmatic\Model\ProductInstanceException) (2) {
39 ["properties"]=>
40 array(1) {
41 ["size"]=>
42 array(1) {
43 [0]=>
44 string(1) "M"
45 }
46 }
47 ["value"]=>
48 object(\Ticketmatic\Model\ProductInstanceValue) (1) {
49 ["price"]=>
50 float(25.000000)
51 }
52 }
53 [2]=>
54 object(\Ticketmatic\Model\ProductInstanceException) (2) {
55 ["properties"]=>
56 array(1) {
57 ["size"]=>
58 array(1) {
59 [0]=>
60 string(1) "L"
61 }
62 }
63 ["value"]=>
64 object(\Ticketmatic\Model\ProductInstanceValue) (1) {
65 ["price"]=>
66 float(30.000000)
67 }
68 }
69 }
70 }
71 ["properties"]=>
72 array(1) {
73 [0]=>
74 object(\Ticketmatic\Model\ProductProperty) (4) {
75 ["name"]=>
76 string(4) "Size"
77 ["description"]=>
78 string(19) "Size of the T-Shirt"
79 ["key"]=>
80 string(4) "size"
81 ["values"]=>
82 array(3) {
83 [0]=>
84 object(\Ticketmatic\Model\KeyValueItem) (2) {
85 ["key"]=>
86 string(1) "S"
87 ["value"]=>
88 string(5) "Small"
89 }
90 [1]=>
91 object(\Ticketmatic\Model\KeyValueItem) (2) {
92 ["key"]=>
93 string(1) "M"
94 ["value"]=>
95 string(6) "Medium"
96 }
97 [2]=>
98 object(\Ticketmatic\Model\KeyValueItem) (2) {
99 ["key"]=>
100 string(1) "L"
101 ["value"]=>
102 string(5) "Large"
103 }
104 }
105 }
106 }
107 ["saleendts"]=>
108 object(\DateTime) (3) {
109 ["date"]=>
110 string(26) "2025-01-01 00:00:00.000000"
111 ["timezone_type"]=>
112 int(3)
113 ["timezone"]=>
114 string(3) "UTC"
115 }
116 ["saleschannels"]=>
117 array(2) {
118 [0]=>
119 int(0)
120 [1]=>
121 int(0)
122 }
123 ["salestartts"]=>
124 object(\DateTime) (3) {
125 ["date"]=>
126 string(26) "2017-01-01 00:00:00j.000000"
127 ["timezone_type"]=>
128 int(3)
129 ["timezone"]=>
130 string(3) "UTC"
131 }
132 ["isarchived"]=>
133 bool(false)
134}
Request
1import (
2 "github.com/ticketmatic/tm-go/ticketmatic"
3 "github.com/ticketmatic/tm-go/ticketmatic/settings/products"
4)
5
6result, err := products.Create(client, &ticketmatic.Product{
7 Typeid: 26001,
8 Name: "T-shirt",
9 Description: "Show us some love with our latest shirt, available in 3 sizes.",
10 Instancevalues: &ticketmatic.ProductInstancevalues{
11 Default: &ticketmatic.ProductInstanceValue{
12 Price: 25,
13 },
14 Exceptions: []*ticketmatic.ProductInstanceException{
15 &ticketmatic.ProductInstanceException{
16 Properties: map[string][]string{
17 "size": []string{
18 "S",
19 },
20 },
21 Value: &ticketmatic.ProductInstanceValue{
22 Price: 20,
23 },
24 },
25 &ticketmatic.ProductInstanceException{
26 Properties: map[string][]string{
27 "size": []string{
28 "M",
29 },
30 },
31 Value: &ticketmatic.ProductInstanceValue{
32 Price: 25,
33 },
34 },
35 &ticketmatic.ProductInstanceException{
36 Properties: map[string][]string{
37 "size": []string{
38 "L",
39 },
40 },
41 Value: &ticketmatic.ProductInstanceValue{
42 Price: 30,
43 },
44 },
45 },
46 },
47 Properties: []*ticketmatic.ProductProperty{
48 &ticketmatic.ProductProperty{
49 Name: "Size",
50 Description: "Size of the T-Shirt",
51 Key: "size",
52 Values: []*ticketmatic.KeyValueItem{
53 &ticketmatic.KeyValueItem{
54 Key: "S",
55 Value: "Small",
56 },
57 &ticketmatic.KeyValueItem{
58 Key: "M",
59 Value: "Medium",
60 },
61 &ticketmatic.KeyValueItem{
62 Key: "L",
63 Value: "Large",
64 },
65 },
66 },
67 },
68 Saleendts: ticketmatic.NewTime(ticketmatic.MustParseTime("2025-01-01 00:00:00")),
69 Saleschannels: []int64{
70 1,
71 2,
72 },
73 Salestartts: ticketmatic.NewTime(ticketmatic.MustParseTime("2017-01-01 00:00:00")),
74})
Response
1result := &ticketmatic.Product{
2 Id: 10149,
3 Typeid: 26001,
4 Name: "T-shirt",
5 Code: "781736175845",
6 Description: "Show us some love with our latest shirt, available in 3 sizes.",
7 Instancevalues: &ticketmatic.ProductInstancevalues{
8 Default: &ticketmatic.ProductInstanceValue{
9 Price: 25,
10 },
11 Exceptions: []*ticketmatic.ProductInstanceException{
12 &ticketmatic.ProductInstanceException{
13 Properties: map[string][]string{
14 "size": []string{
15 "S",
16 },
17 },
18 Value: &ticketmatic.ProductInstanceValue{
19 Price: 20,
20 },
21 },
22 &ticketmatic.ProductInstanceException{
23 Properties: map[string][]string{
24 "size": []string{
25 "M",
26 },
27 },
28 Value: &ticketmatic.ProductInstanceValue{
29 Price: 25,
30 },
31 },
32 &ticketmatic.ProductInstanceException{
33 Properties: map[string][]string{
34 "size": []string{
35 "L",
36 },
37 },
38 Value: &ticketmatic.ProductInstanceValue{
39 Price: 30,
40 },
41 },
42 },
43 },
44 Properties: []*ticketmatic.ProductProperty{
45 &ticketmatic.ProductProperty{
46 Name: "Size",
47 Description: "Size of the T-Shirt",
48 Key: "size",
49 Values: []*ticketmatic.KeyValueItem{
50 &ticketmatic.KeyValueItem{
51 Key: "S",
52 Value: "Small",
53 },
54 &ticketmatic.KeyValueItem{
55 Key: "M",
56 Value: "Medium",
57 },
58 &ticketmatic.KeyValueItem{
59 Key: "L",
60 Value: "Large",
61 },
62 },
63 },
64 },
65 Saleendts: ticketmatic.NewTime(ticketmatic.MustParseTime("2025-01-01 00:00:00")),
66 Saleschannels: []int64{
67 1,
68 2,
69 },
70 Salestartts: ticketmatic.NewTime(ticketmatic.MustParseTime("2017-01-01 00:00:00j")),
71 Isarchived: false,
72}
Request
1POST /api/1/{accountname}/settings/products HTTP/1.1
2Content-Type: application/json
3
4{
5 "typeid": 26001,
6 "name": "T-shirt",
7 "description": "Show us some love with our latest shirt, available in 3 sizes.",
8 "instancevalues": {
9 "default": {
10 "price": 25.000000
11 },
12 "exceptions": [
13 {
14 "properties": {
15 "size": [
16 "S"
17 ]
18 },
19 "value": {
20 "price": 20.000000
21 }
22 },
23 {
24 "properties": {
25 "size": [
26 "M"
27 ]
28 },
29 "value": {
30 "price": 25.000000
31 }
32 },
33 {
34 "properties": {
35 "size": [
36 "L"
37 ]
38 },
39 "value": {
40 "price": 30.000000
41 }
42 }
43 ]
44 },
45 "properties": [
46 {
47 "name": "Size",
48 "description": "Size of the T-Shirt",
49 "key": "size",
50 "values": [
51 {
52 "key": "S",
53 "value": "Small"
54 },
55 {
56 "key": "M",
57 "value": "Medium"
58 },
59 {
60 "key": "L",
61 "value": "Large"
62 }
63 ]
64 }
65 ],
66 "saleendts": "2025-01-01 00:00:00",
67 "saleschannels": [ 1, 2 ],
68 "salestartts": "2017-01-01 00:00:00"
69}
Response
1HTTP/1.1 200 OK
2Content-Type: application/json
3
4{
5 "id": 10149,
6 "typeid": 26001,
7 "name": "T-shirt",
8 "code": "781736175845",
9 "description": "Show us some love with our latest shirt, available in 3 sizes.",
10 "instancevalues": {
11 "default": {
12 "price": 25.000000
13 },
14 "exceptions": [
15 {
16 "properties": {
17 "size": [
18 "S"
19 ]
20 },
21 "value": {
22 "price": 20.000000
23 }
24 },
25 {
26 "properties": {
27 "size": [
28 "M"
29 ]
30 },
31 "value": {
32 "price": 25.000000
33 }
34 },
35 {
36 "properties": {
37 "size": [
38 "L"
39 ]
40 },
41 "value": {
42 "price": 30.000000
43 }
44 }
45 ]
46 },
47 "properties": [
48 {
49 "name": "Size",
50 "description": "Size of the T-Shirt",
51 "key": "size",
52 "values": [
53 {
54 "key": "S",
55 "value": "Small"
56 },
57 {
58 "key": "M",
59 "value": "Medium"
60 },
61 {
62 "key": "L",
63 "value": "Large"
64 }
65 ]
66 }
67 ],
68 "saleendts": "2025-01-01 00:00:00",
69 "saleschannels": [ 1, 2 ],
70 "salestartts": "2017-01-01 00:00:00j",
71 "isarchived": false
72}
Creating a voucher product
To sell vouchers, a voucher product needs to be created.
In this example a voucher product that sells payment vouchers is created. You can find a sample to create a payment voucher here.
The default voucher amount is 20 euro for a price of 20 euro. There is also a voucher of 10 euro (for the same price) and a promotional price of 50 euro for a voucher with an amount of 60 euro.
Note: Although it’s possible to create multiple products that sell the same voucher via the API, the backoffice management UI has no support for multiple products that link to the same voucher. Keep this in mind while creating voucher products.
Request
1use Ticketmatic\Endpoints\Settings\Products;
2
3$result = Products::create($client, array(
4 "typeid" => 26002,
5 "name" => "Voucher",
6 "description" => "Give a gift! Remember that for 50 euro you get a voucher of 60 euro!",
7 "instancevalues" => array(
8 "default" => array(
9 "price" => 20,
10 "voucher" => array(
11 "amount" => 20,
12 "voucherid" => 10001,
13 ),
14 ),
15 "exceptions" => array(
16 array(
17 "properties" => array(
18 "money" => array(
19 "money_10",
20 ),
21 ),
22 "value" => array(
23 "price" => 10,
24 "voucher" => array(
25 "amount" => 10,
26 "voucherid" => 10001,
27 ),
28 ),
29 ),
30 array(
31 "properties" => array(
32 "money" => array(
33 "money_20",
34 ),
35 ),
36 "value" => array(
37 "price" => 20,
38 "voucher" => array(
39 "amount" => 20,
40 "voucherid" => 10001,
41 ),
42 ),
43 ),
44 array(
45 "properties" => array(
46 "money" => array(
47 "money_50",
48 ),
49 ),
50 "value" => array(
51 "price" => 50,
52 "voucher" => array(
53 "amount" => 60,
54 "voucherid" => 10001,
55 ),
56 ),
57 ),
58 ),
59 ),
60 "properties" => array(
61 array(
62 "name" => "Monetary value",
63 "description" => "The monetary value of your voucher",
64 "key" => "money",
65 "values" => array(
66 array(
67 "key" => "money_10",
68 "value" => "Value of 10 euro",
69 ),
70 array(
71 "key" => "money_20",
72 "value" => "Value of 20 euro",
73 ),
74 array(
75 "key" => "money_50",
76 "value" => "Value of 50+10 euro",
77 ),
78 ),
79 ),
80 ),
81 "saleendts" => "2025-01-01 00:00:00",
82 "saleschannels" => array(
83 1,
84 2,
85 ),
86 "salestartts" => "2017-01-01 00:00:00",
87));
Response
1object(\Ticketmatic\Model\Product) (11) {
2 ["id"]=>
3 int(0)
4 ["typeid"]=>
5 int(0)
6 ["name"]=>
7 string(7) "Voucher"
8 ["code"]=>
9 string(12) "455961222916"
10 ["description"]=>
11 string(68) "Give a gift! Remember that for 50 euro you get a voucher of 60 euro!"
12 ["instancevalues"]=>
13 object(\Ticketmatic\Model\ProductInstancevalues) (2) {
14 ["default"]=>
15 object(\Ticketmatic\Model\ProductInstanceValue) (2) {
16 ["price"]=>
17 float(20.000000)
18 ["voucher"]=>
19 object(\Ticketmatic\Model\ProductVoucherValue) (2) {
20 ["amount"]=>
21 float(20.000000)
22 ["voucherid"]=>
23 int(0)
24 }
25 }
26 ["exceptions"]=>
27 array(3) {
28 [0]=>
29 object(\Ticketmatic\Model\ProductInstanceException) (2) {
30 ["properties"]=>
31 array(1) {
32 ["money"]=>
33 array(1) {
34 [0]=>
35 string(8) "money_10"
36 }
37 }
38 ["value"]=>
39 object(\Ticketmatic\Model\ProductInstanceValue) (2) {
40 ["price"]=>
41 float(10.000000)
42 ["voucher"]=>
43 object(\Ticketmatic\Model\ProductVoucherValue) (2) {
44 ["amount"]=>
45 float(10.000000)
46 ["voucherid"]=>
47 int(0)
48 }
49 }
50 }
51 [1]=>
52 object(\Ticketmatic\Model\ProductInstanceException) (2) {
53 ["properties"]=>
54 array(1) {
55 ["money"]=>
56 array(1) {
57 [0]=>
58 string(8) "money_20"
59 }
60 }
61 ["value"]=>
62 object(\Ticketmatic\Model\ProductInstanceValue) (2) {
63 ["price"]=>
64 float(20.000000)
65 ["voucher"]=>
66 object(\Ticketmatic\Model\ProductVoucherValue) (2) {
67 ["amount"]=>
68 float(20.000000)
69 ["voucherid"]=>
70 int(0)
71 }
72 }
73 }
74 [2]=>
75 object(\Ticketmatic\Model\ProductInstanceException) (2) {
76 ["properties"]=>
77 array(1) {
78 ["money"]=>
79 array(1) {
80 [0]=>
81 string(8) "money_50"
82 }
83 }
84 ["value"]=>
85 object(\Ticketmatic\Model\ProductInstanceValue) (2) {
86 ["price"]=>
87 float(50.000000)
88 ["voucher"]=>
89 object(\Ticketmatic\Model\ProductVoucherValue) (2) {
90 ["amount"]=>
91 float(60.000000)
92 ["voucherid"]=>
93 int(0)
94 }
95 }
96 }
97 }
98 }
99 ["properties"]=>
100 array(1) {
101 [0]=>
102 object(\Ticketmatic\Model\ProductProperty) (4) {
103 ["name"]=>
104 string(14) "Monetary value"
105 ["description"]=>
106 string(34) "The monetary value of your voucher"
107 ["key"]=>
108 string(5) "money"
109 ["values"]=>
110 array(3) {
111 [0]=>
112 object(\Ticketmatic\Model\KeyValueItem) (2) {
113 ["key"]=>
114 string(8) "money_10"
115 ["value"]=>
116 string(16) "Value of 10 euro"
117 }
118 [1]=>
119 object(\Ticketmatic\Model\KeyValueItem) (2) {
120 ["key"]=>
121 string(8) "money_20"
122 ["value"]=>
123 string(16) "Value of 20 euro"
124 }
125 [2]=>
126 object(\Ticketmatic\Model\KeyValueItem) (2) {
127 ["key"]=>
128 string(8) "money_50"
129 ["value"]=>
130 string(19) "Value of 50+10 euro"
131 }
132 }
133 }
134 }
135 ["saleendts"]=>
136 object(\DateTime) (3) {
137 ["date"]=>
138 string(26) "2025-01-01 00:00:00.000000"
139 ["timezone_type"]=>
140 int(3)
141 ["timezone"]=>
142 string(3) "UTC"
143 }
144 ["saleschannels"]=>
145 array(2) {
146 [0]=>
147 int(0)
148 [1]=>
149 int(0)
150 }
151 ["salestartts"]=>
152 object(\DateTime) (3) {
153 ["date"]=>
154 string(26) "2017-01-01 00:00:00.000000"
155 ["timezone_type"]=>
156 int(3)
157 ["timezone"]=>
158 string(3) "UTC"
159 }
160 ["isarchived"]=>
161 bool(false)
162}
Request
1import (
2 "github.com/ticketmatic/tm-go/ticketmatic"
3 "github.com/ticketmatic/tm-go/ticketmatic/settings/products"
4)
5
6result, err := products.Create(client, &ticketmatic.Product{
7 Typeid: 26002,
8 Name: "Voucher",
9 Description: "Give a gift! Remember that for 50 euro you get a voucher of 60 euro!",
10 Instancevalues: &ticketmatic.ProductInstancevalues{
11 Default: &ticketmatic.ProductInstanceValue{
12 Price: 20,
13 Voucher: &ticketmatic.ProductVoucherValue{
14 Amount: 20,
15 Voucherid: 10001,
16 },
17 },
18 Exceptions: []*ticketmatic.ProductInstanceException{
19 &ticketmatic.ProductInstanceException{
20 Properties: map[string][]string{
21 "money": []string{
22 "money_10",
23 },
24 },
25 Value: &ticketmatic.ProductInstanceValue{
26 Price: 10,
27 Voucher: &ticketmatic.ProductVoucherValue{
28 Amount: 10,
29 Voucherid: 10001,
30 },
31 },
32 },
33 &ticketmatic.ProductInstanceException{
34 Properties: map[string][]string{
35 "money": []string{
36 "money_20",
37 },
38 },
39 Value: &ticketmatic.ProductInstanceValue{
40 Price: 20,
41 Voucher: &ticketmatic.ProductVoucherValue{
42 Amount: 20,
43 Voucherid: 10001,
44 },
45 },
46 },
47 &ticketmatic.ProductInstanceException{
48 Properties: map[string][]string{
49 "money": []string{
50 "money_50",
51 },
52 },
53 Value: &ticketmatic.ProductInstanceValue{
54 Price: 50,
55 Voucher: &ticketmatic.ProductVoucherValue{
56 Amount: 60,
57 Voucherid: 10001,
58 },
59 },
60 },
61 },
62 },
63 Properties: []*ticketmatic.ProductProperty{
64 &ticketmatic.ProductProperty{
65 Name: "Monetary value",
66 Description: "The monetary value of your voucher",
67 Key: "money",
68 Values: []*ticketmatic.KeyValueItem{
69 &ticketmatic.KeyValueItem{
70 Key: "money_10",
71 Value: "Value of 10 euro",
72 },
73 &ticketmatic.KeyValueItem{
74 Key: "money_20",
75 Value: "Value of 20 euro",
76 },
77 &ticketmatic.KeyValueItem{
78 Key: "money_50",
79 Value: "Value of 50+10 euro",
80 },
81 },
82 },
83 },
84 Saleendts: ticketmatic.NewTime(ticketmatic.MustParseTime("2025-01-01 00:00:00")),
85 Saleschannels: []int64{
86 1,
87 2,
88 },
89 Salestartts: ticketmatic.NewTime(ticketmatic.MustParseTime("2017-01-01 00:00:00")),
90})
Response
1result := &ticketmatic.Product{
2 Id: 10153,
3 Typeid: 26002,
4 Name: "Voucher",
5 Code: "455961222916",
6 Description: "Give a gift! Remember that for 50 euro you get a voucher of 60 euro!",
7 Instancevalues: &ticketmatic.ProductInstancevalues{
8 Default: &ticketmatic.ProductInstanceValue{
9 Price: 20,
10 Voucher: &ticketmatic.ProductVoucherValue{
11 Amount: 20,
12 Voucherid: 10001,
13 },
14 },
15 Exceptions: []*ticketmatic.ProductInstanceException{
16 &ticketmatic.ProductInstanceException{
17 Properties: map[string][]string{
18 "money": []string{
19 "money_10",
20 },
21 },
22 Value: &ticketmatic.ProductInstanceValue{
23 Price: 10,
24 Voucher: &ticketmatic.ProductVoucherValue{
25 Amount: 10,
26 Voucherid: 10001,
27 },
28 },
29 },
30 &ticketmatic.ProductInstanceException{
31 Properties: map[string][]string{
32 "money": []string{
33 "money_20",
34 },
35 },
36 Value: &ticketmatic.ProductInstanceValue{
37 Price: 20,
38 Voucher: &ticketmatic.ProductVoucherValue{
39 Amount: 20,
40 Voucherid: 10001,
41 },
42 },
43 },
44 &ticketmatic.ProductInstanceException{
45 Properties: map[string][]string{
46 "money": []string{
47 "money_50",
48 },
49 },
50 Value: &ticketmatic.ProductInstanceValue{
51 Price: 50,
52 Voucher: &ticketmatic.ProductVoucherValue{
53 Amount: 60,
54 Voucherid: 10001,
55 },
56 },
57 },
58 },
59 },
60 Properties: []*ticketmatic.ProductProperty{
61 &ticketmatic.ProductProperty{
62 Name: "Monetary value",
63 Description: "The monetary value of your voucher",
64 Key: "money",
65 Values: []*ticketmatic.KeyValueItem{
66 &ticketmatic.KeyValueItem{
67 Key: "money_10",
68 Value: "Value of 10 euro",
69 },
70 &ticketmatic.KeyValueItem{
71 Key: "money_20",
72 Value: "Value of 20 euro",
73 },
74 &ticketmatic.KeyValueItem{
75 Key: "money_50",
76 Value: "Value of 50+10 euro",
77 },
78 },
79 },
80 },
81 Saleendts: ticketmatic.NewTime(ticketmatic.MustParseTime("2025-01-01 00:00:00")),
82 Saleschannels: []int64{
83 1,
84 2,
85 },
86 Salestartts: ticketmatic.NewTime(ticketmatic.MustParseTime("2017-01-01 00:00:00")),
87 Isarchived: false,
88}
Request
1POST /api/1/{accountname}/settings/products HTTP/1.1
2Content-Type: application/json
3
4{
5 "typeid": 26002,
6 "name": "Voucher",
7 "description": "Give a gift! Remember that for 50 euro you get a voucher of 60 euro!",
8 "instancevalues": {
9 "default": {
10 "price": 20.000000,
11 "voucher": {
12 "amount": 20.000000,
13 "voucherid": 10001
14 }
15 },
16 "exceptions": [
17 {
18 "properties": {
19 "money": [
20 "money_10"
21 ]
22 },
23 "value": {
24 "price": 10.000000,
25 "voucher": {
26 "amount": 10.000000,
27 "voucherid": 10001
28 }
29 }
30 },
31 {
32 "properties": {
33 "money": [
34 "money_20"
35 ]
36 },
37 "value": {
38 "price": 20.000000,
39 "voucher": {
40 "amount": 20.000000,
41 "voucherid": 10001
42 }
43 }
44 },
45 {
46 "properties": {
47 "money": [
48 "money_50"
49 ]
50 },
51 "value": {
52 "price": 50.000000,
53 "voucher": {
54 "amount": 60.000000,
55 "voucherid": 10001
56 }
57 }
58 }
59 ]
60 },
61 "properties": [
62 {
63 "name": "Monetary value",
64 "description": "The monetary value of your voucher",
65 "key": "money",
66 "values": [
67 {
68 "key": "money_10",
69 "value": "Value of 10 euro"
70 },
71 {
72 "key": "money_20",
73 "value": "Value of 20 euro"
74 },
75 {
76 "key": "money_50",
77 "value": "Value of 50+10 euro"
78 }
79 ]
80 }
81 ],
82 "saleendts": "2025-01-01 00:00:00",
83 "saleschannels": [ 1, 2 ],
84 "salestartts": "2017-01-01 00:00:00"
85}
Response
1HTTP/1.1 200 OK
2Content-Type: application/json
3
4{
5 "id": 10153,
6 "typeid": 26002,
7 "name": "Voucher",
8 "code": "455961222916",
9 "description": "Give a gift! Remember that for 50 euro you get a voucher of 60 euro!",
10 "instancevalues": {
11 "default": {
12 "price": 20.000000,
13 "voucher": {
14 "amount": 20.000000,
15 "voucherid": 10001
16 }
17 },
18 "exceptions": [
19 {
20 "properties": {
21 "money": [
22 "money_10"
23 ]
24 },
25 "value": {
26 "price": 10.000000,
27 "voucher": {
28 "amount": 10.000000,
29 "voucherid": 10001
30 }
31 }
32 },
33 {
34 "properties": {
35 "money": [
36 "money_20"
37 ]
38 },
39 "value": {
40 "price": 20.000000,
41 "voucher": {
42 "amount": 20.000000,
43 "voucherid": 10001
44 }
45 }
46 },
47 {
48 "properties": {
49 "money": [
50 "money_50"
51 ]
52 },
53 "value": {
54 "price": 50.000000,
55 "voucher": {
56 "amount": 60.000000,
57 "voucherid": 10001
58 }
59 }
60 }
61 ]
62 },
63 "properties": [
64 {
65 "name": "Monetary value",
66 "description": "The monetary value of your voucher",
67 "key": "money",
68 "values": [
69 {
70 "key": "money_10",
71 "value": "Value of 10 euro"
72 },
73 {
74 "key": "money_20",
75 "value": "Value of 20 euro"
76 },
77 {
78 "key": "money_50",
79 "value": "Value of 50+10 euro"
80 }
81 ]
82 }
83 ],
84 "saleendts": "2025-01-01 00:00:00",
85 "saleschannels": [ 1, 2 ],
86 "salestartts": "2017-01-01 00:00:00",
87 "isarchived": false
88}
Creating a fixed bundle product
In this example a fixed bundle which contains two tickets for two events is created. The price of the bundle itself is 0 euro but the tickettypeprices have prices configured. The result is that the total price is equal to the sum of the prices for the tickets.
The bundle will be for sale from 2017 untill 2025 in saleschannels 1 and 2.
In this example the fixedbundle product has no variants (and thus no properties) but if desired multiple variants of a fixed bundle can be created. Each variant can contain different tickettypeprices.
Request
1use Ticketmatic\Endpoints\Settings\Products;
2
3$result = Products::create($client, array(
4 "typeid" => 26003,
5 "name" => "Classical bundle",
6 "description" => "Come see all our classical concert at a reduced price!",
7 "instancevalues" => array(
8 "default" => array(
9 "price" => 0,
10 "tickettypeprices" => array(
11 645,
12 693,
13 ),
14 ),
15 ),
16 "properties" => array(
17 ),
18 "saleendts" => "2025-01-01 00:00:00",
19 "saleschannels" => array(
20 1,
21 2,
22 ),
23 "salestartts" => "2017-01-01 00:00:00",
24));
Response
1object(\Ticketmatic\Model\Product) (11) {
2 ["id"]=>
3 int(0)
4 ["typeid"]=>
5 int(0)
6 ["name"]=>
7 string(16) "Classical bundle"
8 ["code"]=>
9 string(12) "446504504544"
10 ["description"]=>
11 string(54) "Come see all our classical concert at a reduced price!"
12 ["instancevalues"]=>
13 object(\Ticketmatic\Model\ProductInstancevalues) (1) {
14 ["default"]=>
15 object(\Ticketmatic\Model\ProductInstanceValue) (2) {
16 ["price"]=>
17 float(0.000000)
18 ["tickettypeprices"]=>
19 array(2) {
20 [0]=>
21 int(0)
22 [1]=>
23 int(0)
24 }
25 }
26 }
27 ["properties"]=>
28 array(0) {
29 }
30 ["saleendts"]=>
31 object(\DateTime) (3) {
32 ["date"]=>
33 string(26) "2025-01-01 00:00:00.000000"
34 ["timezone_type"]=>
35 int(3)
36 ["timezone"]=>
37 string(3) "UTC"
38 }
39 ["saleschannels"]=>
40 array(2) {
41 [0]=>
42 int(0)
43 [1]=>
44 int(0)
45 }
46 ["salestartts"]=>
47 object(\DateTime) (3) {
48 ["date"]=>
49 string(26) "2017-01-01 00:00:00.000000"
50 ["timezone_type"]=>
51 int(3)
52 ["timezone"]=>
53 string(3) "UTC"
54 }
55 ["isarchived"]=>
56 bool(false)
57}
Request
1import (
2 "github.com/ticketmatic/tm-go/ticketmatic"
3 "github.com/ticketmatic/tm-go/ticketmatic/settings/products"
4)
5
6result, err := products.Create(client, &ticketmatic.Product{
7 Typeid: 26003,
8 Name: "Classical bundle",
9 Description: "Come see all our classical concert at a reduced price!",
10 Instancevalues: &ticketmatic.ProductInstancevalues{
11 Default: &ticketmatic.ProductInstanceValue{
12 Price: 0,
13 Tickettypeprices: []int64{
14 645,
15 693,
16 },
17 },
18 },
19 Properties: []*ticketmatic.ProductProperty{
20 },
21 Saleendts: ticketmatic.NewTime(ticketmatic.MustParseTime("2025-01-01 00:00:00")),
22 Saleschannels: []int64{
23 1,
24 2,
25 },
26 Salestartts: ticketmatic.NewTime(ticketmatic.MustParseTime("2017-01-01 00:00:00")),
27})
Response
1result := &ticketmatic.Product{
2 Id: 10160,
3 Typeid: 26003,
4 Name: "Classical bundle",
5 Code: "446504504544",
6 Description: "Come see all our classical concert at a reduced price!",
7 Instancevalues: &ticketmatic.ProductInstancevalues{
8 Default: &ticketmatic.ProductInstanceValue{
9 Price: 0,
10 Tickettypeprices: []int64{
11 645,
12 693,
13 },
14 },
15 },
16 Properties: []*ticketmatic.ProductProperty{
17 },
18 Saleendts: ticketmatic.NewTime(ticketmatic.MustParseTime("2025-01-01 00:00:00")),
19 Saleschannels: []int64{
20 1,
21 2,
22 },
23 Salestartts: ticketmatic.NewTime(ticketmatic.MustParseTime("2017-01-01 00:00:00")),
24 Isarchived: false,
25}
Request
1POST /api/1/{accountname}/settings/products HTTP/1.1
2Content-Type: application/json
3
4{
5 "typeid": 26003,
6 "name": "Classical bundle",
7 "description": "Come see all our classical concert at a reduced price!",
8 "instancevalues": {
9 "default": {
10 "price": 0.000000,
11 "tickettypeprices": [ 645, 693 ]
12 }
13 },
14 "properties": [],
15 "saleendts": "2025-01-01 00:00:00",
16 "saleschannels": [ 1, 2 ],
17 "salestartts": "2017-01-01 00:00:00"
18}
Response
1HTTP/1.1 200 OK
2Content-Type: application/json
3
4{
5 "id": 10160,
6 "typeid": 26003,
7 "name": "Classical bundle",
8 "code": "446504504544",
9 "description": "Come see all our classical concert at a reduced price!",
10 "instancevalues": {
11 "default": {
12 "price": 0.000000,
13 "tickettypeprices": [ 645, 693 ]
14 }
15 },
16 "properties": [],
17 "saleendts": "2025-01-01 00:00:00",
18 "saleschannels": [ 1, 2 ],
19 "salestartts": "2017-01-01 00:00:00",
20 "isarchived": false
21}
Creating an optionbundle product
In this example an optionbundle product is created. Depending on how many tickets are added to this optionbundle, the price changes.
The ranges are 0-1,2-3,4+. The bundle itself has price 0 thus the total price of the bundle is the sum of the prices for the tickets.
In this example the optionbundle product has no variants (and thus no properties) but if desired multiple variants of an optionbundle can be created.
Request
1use Ticketmatic\Endpoints\Settings\Products;
2
3$result = Products::create($client, array(
4 "typeid" => 26005,
5 "name" => "Option bundle",
6 "description" => "Select the events you want to see and get a reduced price if you buy more than 1 ticket",
7 "instancevalues" => array(
8 "default" => array(
9 "price" => 0,
10 "pricetypes" => array(
11 array(
12 "id" => 10,
13 "from" => 0,
14 ),
15 array(
16 "id" => 11,
17 "from" => 2,
18 ),
19 array(
20 "id" => 12,
21 "from" => 4,
22 ),
23 ),
24 ),
25 ),
26 "properties" => array(
27 ),
28 "saleendts" => "2025-01-01 00:00:00",
29 "saleschannels" => array(
30 1,
31 2,
32 ),
33 "salestartts" => "2017-01-01 00:00:00",
34));
Response
1object(\Ticketmatic\Model\Product) (11) {
2 ["id"]=>
3 int(0)
4 ["typeid"]=>
5 int(0)
6 ["name"]=>
7 string(13) "Option bundle"
8 ["code"]=>
9 string(12) "120128357495"
10 ["description"]=>
11 string(87) "Select the events you want to see and get a reduced price if you buy more than 1 ticket"
12 ["instancevalues"]=>
13 object(\Ticketmatic\Model\ProductInstancevalues) (1) {
14 ["default"]=>
15 object(\Ticketmatic\Model\ProductInstanceValue) (2) {
16 ["price"]=>
17 float(0.000000)
18 ["pricetypes"]=>
19 array(3) {
20 [0]=>
21 object(\Ticketmatic\Model\ProductInstancePricetypeValue) (2) {
22 ["id"]=>
23 int(0)
24 ["from"]=>
25 int(0)
26 }
27 [1]=>
28 object(\Ticketmatic\Model\ProductInstancePricetypeValue) (2) {
29 ["id"]=>
30 int(0)
31 ["from"]=>
32 int(0)
33 }
34 [2]=>
35 object(\Ticketmatic\Model\ProductInstancePricetypeValue) (2) {
36 ["id"]=>
37 int(0)
38 ["from"]=>
39 int(0)
40 }
41 }
42 }
43 }
44 ["properties"]=>
45 array(0) {
46 }
47 ["saleendts"]=>
48 object(\DateTime) (3) {
49 ["date"]=>
50 string(26) "2025-01-01 00:00:00.000000"
51 ["timezone_type"]=>
52 int(3)
53 ["timezone"]=>
54 string(3) "UTC"
55 }
56 ["saleschannels"]=>
57 array(2) {
58 [0]=>
59 int(0)
60 [1]=>
61 int(0)
62 }
63 ["salestartts"]=>
64 object(\DateTime) (3) {
65 ["date"]=>
66 string(26) "2017-01-01 00:00:00.000000"
67 ["timezone_type"]=>
68 int(3)
69 ["timezone"]=>
70 string(3) "UTC"
71 }
72 ["isarchived"]=>
73 bool(false)
74}
Request
1import (
2 "github.com/ticketmatic/tm-go/ticketmatic"
3 "github.com/ticketmatic/tm-go/ticketmatic/settings/products"
4)
5
6result, err := products.Create(client, &ticketmatic.Product{
7 Typeid: 26005,
8 Name: "Option bundle",
9 Description: "Select the events you want to see and get a reduced price if you buy more than 1 ticket",
10 Instancevalues: &ticketmatic.ProductInstancevalues{
11 Default: &ticketmatic.ProductInstanceValue{
12 Price: 0,
13 Pricetypes: []*ticketmatic.ProductInstancePricetypeValue{
14 &ticketmatic.ProductInstancePricetypeValue{
15 Id: 10,
16 From: 0,
17 },
18 &ticketmatic.ProductInstancePricetypeValue{
19 Id: 11,
20 From: 2,
21 },
22 &ticketmatic.ProductInstancePricetypeValue{
23 Id: 12,
24 From: 4,
25 },
26 },
27 },
28 },
29 Properties: []*ticketmatic.ProductProperty{
30 },
31 Saleendts: ticketmatic.NewTime(ticketmatic.MustParseTime("2025-01-01 00:00:00")),
32 Saleschannels: []int64{
33 1,
34 2,
35 },
36 Salestartts: ticketmatic.NewTime(ticketmatic.MustParseTime("2017-01-01 00:00:00")),
37})
Response
1result := &ticketmatic.Product{
2 Id: 10161,
3 Typeid: 26004,
4 Name: "Option bundle",
5 Code: "120128357495",
6 Description: "Select the events you want to see and get a reduced price if you buy more than 1 ticket",
7 Instancevalues: &ticketmatic.ProductInstancevalues{
8 Default: &ticketmatic.ProductInstanceValue{
9 Price: 0,
10 Pricetypes: []*ticketmatic.ProductInstancePricetypeValue{
11 &ticketmatic.ProductInstancePricetypeValue{
12 Id: 10,
13 From: 0,
14 },
15 &ticketmatic.ProductInstancePricetypeValue{
16 Id: 11,
17 From: 2,
18 },
19 &ticketmatic.ProductInstancePricetypeValue{
20 Id: 12,
21 From: 4,
22 },
23 },
24 },
25 },
26 Properties: []*ticketmatic.ProductProperty{
27 },
28 Saleendts: ticketmatic.NewTime(ticketmatic.MustParseTime("2025-01-01 00:00:00")),
29 Saleschannels: []int64{
30 1,
31 2,
32 },
33 Salestartts: ticketmatic.NewTime(ticketmatic.MustParseTime("2017-01-01 00:00:00")),
34 Isarchived: false,
35}
Request
1POST /api/1/{accountname}/settings/products HTTP/1.1
2Content-Type: application/json
3
4{
5 "typeid": 26005,
6 "name": "Option bundle",
7 "description": "Select the events you want to see and get a reduced price if you buy more than 1 ticket",
8 "instancevalues": {
9 "default": {
10 "price": 0.000000,
11 "pricetypes": [
12 {
13 "id": 10,
14 "from": 0
15 },
16 {
17 "id": 11,
18 "from": 2
19 },
20 {
21 "id": 12,
22 "from": 4
23 }
24 ]
25 }
26 },
27 "properties": [],
28 "saleendts": "2025-01-01 00:00:00",
29 "saleschannels": [ 1, 2 ],
30 "salestartts": "2017-01-01 00:00:00"
31}
Response
1HTTP/1.1 200 OK
2Content-Type: application/json
3
4{
5 "id": 10161,
6 "typeid": 26004,
7 "name": "Option bundle",
8 "code": "120128357495",
9 "description": "Select the events you want to see and get a reduced price if you buy more than 1 ticket",
10 "instancevalues": {
11 "default": {
12 "price": 0.000000,
13 "pricetypes": [
14 {
15 "id": 10,
16 "from": 0
17 },
18 {
19 "id": 11,
20 "from": 2
21 },
22 {
23 "id": 12,
24 "from": 4
25 }
26 ]
27 }
28 },
29 "properties": [],
30 "saleendts": "2025-01-01 00:00:00",
31 "saleschannels": [ 1, 2 ],
32 "salestartts": "2017-01-01 00:00:00",
33 "isarchived": false
34}
Request body fields
Field | Description |
---|---|
typeid int (required) | Type ID Example value:26001 |
categoryid int | Category for the product. Categories can be managed in account parameters and indicate the labels for a single and multiple product and also what labels to use for the holders of the product. If not set, the UI will fallback to default labels. Example value:1 |
layoutid int | Optional layout for the product. If not specified, there will be no ticket generated for the product Example value:1 |
name mlstring (required) | Name for the product Example value:"T-shirt" |
asksubscribers bool | If true, subscriber info is requested for each bundle in websales. Example value:true |
code string | Unique 12-digit for the product Example value:"123412341234" |
description | Description for the product Example value:"Longer product description" |
groupbycustomfield int | The customfield that is used to group the option bundle in the UI (websales and backoffice) Example value:10003 |
instancevalues ProductInstancevalues (required) | Instancevalues control the price for a product and for non simple products it also controls the content of the product. All products should have a default instancevalue and a set of exceptions (if there are any). If no specific exception is found for the selected product, the default instancevalue is used. Example value:{ "default": { "price": 25.000000, "voucher": { "amount": 10.000000, "voucherid": 123 } }, "exceptions": [ { "properties": { "colour": [ "red" ], "size": [ "S" ] }, "value": { "price": 15.000000, "voucher": { "amount": 10.000000, "voucherid": 123 } } }, { "properties": { "colour": [ "red" ], "size": [ "M" ] }, "value": { "price": 17.000000, "voucher": { "amount": 30.000000, "voucherid": 124 } } } ] } |
maxadditionaltickets int | The amount of individual tickets per event that can be purchased alongside this bundle. Example value:3 |
printtickets bool | If true, tickets for items that belong to the product will be printed when printing the product. Example value:true |
properties | Definition of possible properties for the product. A product can have one or more properties. Properties can be used to introduce variants of a product (sizes of a t-shirt for example). Example value:[ { "name": "Size", "description": "Size of the t-shirt", "key": "size", "values": [ { "key": "S", "value": "Small" }, { "key": "M", "value": "Medium" }, { "key": "L", "value": "Large" } ] }, { "name": "Colour", "description": "Colour of the t-shirt", "key": "colour", "values": [ { "key": "red", "value": "Red" }, { "key": "green", "value": "Green" } ] } ] |
queuetoken int | Queue ID See rate limiting for more info. Example value:421 |
saleendts timestamp | End of sales Example value:"2016-01-01 00:00:00" |
saleschannels int[] | Sales is active for these saleschannels Example value:[ 1, 2, 3 ] |
salestartts timestamp | Start of sales Example value:"2016-01-01 00:00:00" |
salestatusmessagesid int | Sale status messages in use for this product Example value:1 |
shortdescription | Short description for the product Example value:"The new t-shirt is made of 100% cotton" |
translations map<string, string> | Translations for the product properties Example value:{ "properties:size:L:nl": "Groot", "properties:size:S:nl": "Klein" } |
Type reference: Product
Result fields
Field | Description |
---|---|
id int | Unique ID Example value:123 |
typeid int | Type ID Example value:26001 |
categoryid int | Category for the product. Categories can be managed in account parameters and indicate the labels for a single and multiple product and also what labels to use for the holders of the product. If not set, the UI will fallback to default labels. Example value:1 |
layoutid int | Optional layout for the product. If not specified, there will be no ticket generated for the product Example value:1 |
name | Name for the product Example value:"T-shirt" |
asksubscribers bool | If true, subscriber info is requested for each bundle in websales. Example value:true |
code string | Unique 12-digit for the product Example value:"123412341234" |
description | Description for the product Example value:"Longer product description" |
groupbycustomfield int | The customfield that is used to group the option bundle in the UI (websales and backoffice) Example value:10003 |
image string | Reference to product image Example value:"/products/1282/image.5b3a145b576ab.jpg" |
instancevalues | Instancevalues control the price for a product and for non simple products it also controls the content of the product. All products should have a default instancevalue and a set of exceptions (if there are any). If no specific exception is found for the selected product, the default instancevalue is used. Example value:{ "default": { "price": 25.000000, "voucher": { "amount": 10.000000, "voucherid": 123 } }, "exceptions": [ { "properties": { "colour": [ "red" ], "size": [ "S" ] }, "value": { "price": 15.000000, "voucher": { "amount": 10.000000, "voucherid": 123 } } }, { "properties": { "colour": [ "red" ], "size": [ "M" ] }, "value": { "price": 17.000000, "voucher": { "amount": 30.000000, "voucherid": 124 } } } ] } |
maxadditionaltickets int | The amount of individual tickets per event that can be purchased alongside this bundle. Example value:3 |
printtickets bool | If true, tickets for items that belong to the product will be printed when printing the product. Example value:true |
properties | Definition of possible properties for the product. A product can have one or more properties. Properties can be used to introduce variants of a product (sizes of a t-shirt for example). Example value:[ { "name": "Size", "description": "Size of the t-shirt", "key": "size", "values": [ { "key": "S", "value": "Small" }, { "key": "M", "value": "Medium" }, { "key": "L", "value": "Large" } ] }, { "name": "Colour", "description": "Colour of the t-shirt", "key": "colour", "values": [ { "key": "red", "value": "Red" }, { "key": "green", "value": "Green" } ] } ] |
queuetoken int | Queue ID See rate limiting for more info. Example value:421 |
saleendts timestamp | End of sales Example value:"2016-01-01 00:00:00" |
saleschannels int[] | Sales is active for these saleschannels Example value:[ 1, 2, 3 ] |
salestartts timestamp | Start of sales Example value:"2016-01-01 00:00:00" |
salestatusmessagesid int | Sale status messages in use for this product Example value:1 |
shortdescription | Short description for the product Example value:"The new t-shirt is made of 100% cotton" |
translations map<string, string> | Translations for the product properties Example value:{ "properties:size:L:nl": "Groot", "properties:size:S:nl": "Klein" } |
isarchived bool | Whether or not this item is archived |
createdts timestamp | Created timestamp Example value:"2014-09-26 15:24:36" |
lastupdatets timestamp | Last updated timestamp Example value:"2014-09-26 15:24:36" |
Type reference: Product