pokepay_partner_ruby_sdk 0.3.2 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release-pr.yml +18 -0
  3. data/Gemfile.lock +1 -1
  4. data/docs/README.md +269 -0
  5. data/docs/account.md +159 -0
  6. data/docs/bank_pay.md +235 -0
  7. data/docs/bill.md +365 -0
  8. data/docs/bulk.md +121 -0
  9. data/docs/campaign.md +1749 -0
  10. data/docs/cashtray.md +318 -0
  11. data/docs/check.md +883 -0
  12. data/docs/coupon.md +724 -0
  13. data/docs/customer.md +1042 -0
  14. data/docs/error-response.csv +839 -0
  15. data/docs/event.md +308 -0
  16. data/docs/index.md +1279 -305
  17. data/docs/organization.md +292 -0
  18. data/docs/private_money.md +213 -0
  19. data/docs/responses.md +711 -0
  20. data/docs/shop.md +678 -0
  21. data/docs/transaction.md +2021 -0
  22. data/docs/transfer.md +686 -0
  23. data/docs/user.md +3 -0
  24. data/docs/user_device.md +134 -0
  25. data/docs/webhook.md +231 -0
  26. data/lib/pokepay_partner_ruby_sdk/request/activate_user_device.rb +15 -0
  27. data/lib/pokepay_partner_ruby_sdk/request/create_bank.rb +17 -0
  28. data/lib/pokepay_partner_ruby_sdk/request/create_bank_topup_transaction.rb +18 -0
  29. data/lib/pokepay_partner_ruby_sdk/request/create_coupon.rb +19 -0
  30. data/lib/pokepay_partner_ruby_sdk/request/create_external_transaction.rb +2 -2
  31. data/lib/pokepay_partner_ruby_sdk/request/create_transaction_with_cashtray.rb +16 -0
  32. data/lib/pokepay_partner_ruby_sdk/request/create_user_device.rb +15 -0
  33. data/lib/pokepay_partner_ruby_sdk/request/delete_webhook.rb +15 -0
  34. data/lib/pokepay_partner_ruby_sdk/request/get_check.rb +15 -0
  35. data/lib/pokepay_partner_ruby_sdk/request/get_coupon.rb +1 -1
  36. data/lib/pokepay_partner_ruby_sdk/request/get_external_transaction_by_request_id.rb +15 -0
  37. data/lib/pokepay_partner_ruby_sdk/request/get_user_device.rb +15 -0
  38. data/lib/pokepay_partner_ruby_sdk/request/list_banks.rb +15 -0
  39. data/lib/pokepay_partner_ruby_sdk/request/list_checks.rb +15 -0
  40. data/lib/pokepay_partner_ruby_sdk/request/list_organizations.rb +15 -0
  41. data/lib/pokepay_partner_ruby_sdk/request/refund_external_transaction.rb +2 -2
  42. data/lib/pokepay_partner_ruby_sdk/request/update_check.rb +15 -0
  43. data/lib/pokepay_partner_ruby_sdk/request/update_coupon.rb +15 -0
  44. data/lib/pokepay_partner_ruby_sdk/response/bank.rb +28 -0
  45. data/lib/pokepay_partner_ruby_sdk/response/bank_registering_info.rb +13 -0
  46. data/lib/pokepay_partner_ruby_sdk/response/banks.rb +13 -0
  47. data/lib/pokepay_partner_ruby_sdk/response/campaign.rb +6 -0
  48. data/lib/pokepay_partner_ruby_sdk/response/check.rb +2 -0
  49. data/lib/pokepay_partner_ruby_sdk/response/external_transaction_detail.rb +34 -0
  50. data/lib/pokepay_partner_ruby_sdk/response/organization_summary.rb +4 -0
  51. data/lib/pokepay_partner_ruby_sdk/response/paginated_checks.rb +16 -0
  52. data/lib/pokepay_partner_ruby_sdk/response/paginated_organizations.rb +16 -0
  53. data/lib/pokepay_partner_ruby_sdk/response/private_money_summary.rb +4 -0
  54. data/lib/pokepay_partner_ruby_sdk/response/product.rb +2 -0
  55. data/lib/pokepay_partner_ruby_sdk/response/user_device.rb +18 -0
  56. data/lib/pokepay_partner_ruby_sdk/version.rb +1 -1
  57. data/lib/pokepay_partner_ruby_sdk.rb +26 -4
  58. data/partner.yaml +1578 -216
  59. metadata +46 -2
data/docs/campaign.md ADDED
@@ -0,0 +1,1749 @@
1
+ # Campaign
2
+
3
+ <a name="list-campaigns"></a>
4
+ ## ListCampaigns: キャンペーン一覧を取得する
5
+ マネーIDを指定してキャンペーンを取得します。
6
+ 発行体の組織マネージャ権限で、自組織が発行するマネーのキャンペーンについてのみ閲覧可能です。
7
+ 閲覧権限がない場合は unpermitted_admin_user エラー(422)が返ります。
8
+
9
+ ```RUBY
10
+ response = $client.send(Pokepay::Request::ListCampaigns.new(
11
+ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", # private_money_id: マネーID
12
+ is_ongoing: false, # 現在適用可能なキャンペーンかどうか
13
+ available_from: "2020-06-05T02:44:45.000000Z", # 指定された日時以降に適用可能期間が含まれているか
14
+ available_to: "2022-07-22T06:25:55.000000Z", # 指定された日時以前に適用可能期間が含まれているか
15
+ page: 1, # ページ番号
16
+ per_page: 20 # 1ページ分の取得数
17
+ ))
18
+ ```
19
+
20
+
21
+
22
+ ### Parameters
23
+ **`private_money_id`**
24
+
25
+
26
+ マネーIDです。
27
+
28
+ フィルターとして使われ、指定したマネーでのキャンペーンのみ一覧に表示されます。
29
+
30
+ ```json
31
+ {
32
+ "type": "string",
33
+ "format": "uuid"
34
+ }
35
+ ```
36
+
37
+ **`is_ongoing`**
38
+
39
+
40
+ 有効化されており、現在キャンペーン期間内にあるキャンペーンをフィルターするために使われます。
41
+ 真であれば適用可能なもののみを抽出し、偽であれば適用不可なもののみを抽出します。
42
+ デフォルトでは未指定(フィルターなし)です。
43
+
44
+ ```json
45
+ {
46
+ "type": "boolean"
47
+ }
48
+ ```
49
+
50
+ **`available_from`**
51
+
52
+
53
+ キャンペーン終了日時が指定された日時以降であるキャンペーンをフィルターするために使われます。
54
+ デフォルトでは未指定(フィルターなし)です。
55
+
56
+ ```json
57
+ {
58
+ "type": "string",
59
+ "format": "date-time"
60
+ }
61
+ ```
62
+
63
+ **`available_to`**
64
+
65
+
66
+ キャンペーン開始日時が指定された日時以前であるキャンペーンをフィルターするために使われます。
67
+ デフォルトでは未指定(フィルターなし)です。
68
+
69
+ ```json
70
+ {
71
+ "type": "string",
72
+ "format": "date-time"
73
+ }
74
+ ```
75
+
76
+ **`page`**
77
+
78
+
79
+ 取得したいページ番号です。
80
+
81
+ ```json
82
+ {
83
+ "type": "integer",
84
+ "minimum": 1
85
+ }
86
+ ```
87
+
88
+ **`per_page`**
89
+
90
+
91
+ 1ページ分の取得数です。デフォルトでは 20 になっています。
92
+
93
+ ```json
94
+ {
95
+ "type": "integer",
96
+ "minimum": 1,
97
+ "maximum": 50
98
+ }
99
+ ```
100
+
101
+
102
+
103
+ 成功したときは
104
+ [PaginatedCampaigns](./responses.md#paginated-campaigns)
105
+ を返します
106
+
107
+ ### Error Responses
108
+ |status|type|ja|en|
109
+ |---|---|---|---|
110
+ |403|unpermitted_admin_user|この管理ユーザには権限がありません|Admin does not have permission|
111
+
112
+
113
+
114
+ ---
115
+
116
+
117
+ <a name="create-campaign"></a>
118
+ ## CreateCampaign: ポイント付与キャンペーンを作る
119
+ ポイント付与キャンペーンを作成します。
120
+
121
+
122
+ ```RUBY
123
+ response = $client.send(Pokepay::Request::CreateCampaign.new(
124
+ "NRGCHkqW6b190Xf2yHeAyBqIIySMiYLD3kq3Znz8pepfEmpSiLZTFdERWScAwFtubDUWmymMiDwFFfcNNLAfTp6G3m2S11HDiNC2T6Z1NRFWi9xNJqHv5TG4qAHZdsob31RGFcTjCHIRk", # name: キャンペーン名
125
+ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", # private_money_id: マネーID
126
+ "2023-08-28T11:39:58.000000Z", # starts_at: キャンペーン開始日時
127
+ "2021-01-19T17:11:18.000000Z", # ends_at: キャンペーン終了日時
128
+ 7052, # priority: キャンペーンの適用優先度
129
+ "payment", # event: イベント種別
130
+ bear_point_shop_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", # ポイント負担先店舗ID
131
+ description: "OKDYDfh7IyYBfS", # キャンペーンの説明文
132
+ status: "enabled", # キャンペーン作成時の状態
133
+ point_expires_at: "2022-11-15T14:41:54.000000Z", # ポイント有効期限(絶対日時指定)
134
+ point_expires_in_days: 8986, # ポイント有効期限(相対日数指定)
135
+ is_exclusive: true, # キャンペーンの重複設定
136
+ subject: "all", # ポイント付与の対象金額の種別
137
+ amount_based_point_rules: [{
138
+ "point_amount": 5,
139
+ "point_amount_unit": "percent",
140
+ "subject_more_than_or_equal": 1000,
141
+ "subject_less_than": 5000
142
+ }], # 取引金額ベースのポイント付与ルール
143
+ product_based_point_rules: [{
144
+ "point_amount": 5,
145
+ "point_amount_unit": "percent",
146
+ "product_code": "4912345678904",
147
+ "is_multiply_by_count": true,
148
+ "required_count": 2
149
+ }, {
150
+ "point_amount": 5,
151
+ "point_amount_unit": "percent",
152
+ "product_code": "4912345678904",
153
+ "is_multiply_by_count": true,
154
+ "required_count": 2
155
+ }], # 商品情報ベースのポイント付与ルール
156
+ blacklisted_product_rules: [{
157
+ "product_code": "4912345678904",
158
+ "classification_code": "c123"
159
+ }, {
160
+ "product_code": "4912345678904",
161
+ "classification_code": "c123"
162
+ }, {
163
+ "product_code": "4912345678904",
164
+ "classification_code": "c123"
165
+ }], # 商品情報ベースのキャンペーンで除外対象にする商品リスト
166
+ applicable_days_of_week: [5], # キャンペーンを適用する曜日 (複数指定)
167
+ applicable_time_ranges: [{
168
+ "from": "12:00",
169
+ "to": "23:59"
170
+ }, {
171
+ "from": "12:00",
172
+ "to": "23:59"
173
+ }, {
174
+ "from": "12:00",
175
+ "to": "23:59"
176
+ }], # キャンペーンを適用する時間帯 (複数指定)
177
+ applicable_shop_ids: ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"], # キャンペーン適用対象となる店舗IDのリスト
178
+ blacklisted_shop_ids: ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"], # キャンペーン適用対象外となる店舗IDのリスト(ブラックリスト方式)
179
+ minimum_number_of_products: 3677, # キャンペーンを適用する1会計内の商品個数の下限
180
+ minimum_number_of_amount: 9333, # キャンペーンを適用する1会計内の商品総額の下限
181
+ minimum_number_for_combination_purchase: 1069, # 複数種類の商品を同時購入するときの商品種別数の下限
182
+ exist_in_each_product_groups: true, # 複数の商品グループにつき1種類以上の商品購入によって発火するキャンペーンの指定フラグ
183
+ max_point_amount: 7906, # キャンペーンによって付与されるポイントの上限
184
+ max_total_point_amount: 1642, # キャンペーンによって付与されるの1人当たりの累計ポイントの上限
185
+ dest_private_money_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", # ポイント付与先となるマネーID
186
+ applicable_account_metadata: {
187
+ "key": "sex",
188
+ "value": "male"
189
+ }, # ウォレットに紐付くメタデータが特定の値を持つときにのみ発火するキャンペーンを登録します。
190
+ applicable_transaction_metadata: {
191
+ "key": "rank",
192
+ "value": "bronze"
193
+ }, # 取引時に指定するメタデータが特定の値を持つときにのみ発火するキャンペーンを登録します。
194
+ budget_caps_amount: 1315895000 # キャンペーン予算上限
195
+ ))
196
+ ```
197
+
198
+
199
+
200
+ ### Parameters
201
+ **`name`**
202
+
203
+
204
+ キャンペーン名です(必須項目)。
205
+
206
+ ポイント付与によってできるチャージ取引の説明文に転記されます。取引説明文はエンドユーザーからも確認できます。
207
+
208
+ ```json
209
+ {
210
+ "type": "string",
211
+ "maxLength": 256
212
+ }
213
+ ```
214
+
215
+ **`private_money_id`**
216
+
217
+
218
+ キャンペーン対象のマネーのIDです(必須項目)。
219
+
220
+ ```json
221
+ {
222
+ "type": "string",
223
+ "format": "uuid"
224
+ }
225
+ ```
226
+
227
+ **`starts_at`**
228
+
229
+
230
+ キャンペーン開始日時です(必須項目)。
231
+ キャンペーン期間中のみポイントが付与されます。
232
+ 開始日時よりも終了日時が前のときはcampaign_invalid_periodエラー(422)になります。
233
+
234
+ ```json
235
+ {
236
+ "type": "string",
237
+ "format": "date-time"
238
+ }
239
+ ```
240
+
241
+ **`ends_at`**
242
+
243
+
244
+ キャンペーン終了日時です(必須項目)。
245
+ キャンペーン期間中のみポイントが付与されます。
246
+ 開始日時よりも終了日時が前のときはcampaign_invalid_periodエラー(422)になります。
247
+
248
+ ```json
249
+ {
250
+ "type": "string",
251
+ "format": "date-time"
252
+ }
253
+ ```
254
+
255
+ **`priority`**
256
+
257
+
258
+ キャンペーンの適用優先度です。
259
+
260
+ 優先度が大きいものから順に適用判定されていきます。
261
+ キャンペーン期間が重なっている同一の優先度のキャンペーンが存在するとcampaign_period_overlapsエラー(422)になります。
262
+
263
+ ```json
264
+ {
265
+ "type": "integer"
266
+ }
267
+ ```
268
+
269
+ **`event`**
270
+
271
+
272
+ キャンペーンのトリガーとなるイベントの種類を指定します(必須項目)。
273
+
274
+ 以下のいずれかを指定できます。
275
+
276
+ 1. topup
277
+ 店舗からエンドユーザーへの送金取引(チャージ)
278
+ 2. payment
279
+ エンドユーザーから店舗への送金取引(支払い)
280
+ 3. external-transaction
281
+ ポケペイ外の取引(現金決済など)
282
+
283
+ ```json
284
+ {
285
+ "type": "string",
286
+ "enum": [
287
+ "topup",
288
+ "payment",
289
+ "external-transaction"
290
+ ]
291
+ }
292
+ ```
293
+
294
+ **`bear_point_shop_id`**
295
+
296
+
297
+ ポイントを負担する店舗のIDです。デフォルトではマネー発行体の本店が設定されます。
298
+ ポイント負担先店舗は後から更新することはできません。
299
+
300
+ ```json
301
+ {
302
+ "type": "string",
303
+ "format": "uuid"
304
+ }
305
+ ```
306
+
307
+ **`description`**
308
+
309
+
310
+ キャンペーンの内容を記載します。管理画面などでキャンペーンを管理するための説明文になります。
311
+
312
+ ```json
313
+ {
314
+ "type": "string",
315
+ "maxLength": 200
316
+ }
317
+ ```
318
+
319
+ **`status`**
320
+
321
+
322
+ キャンペーン作成時の状態を指定します。デフォルトではenabledです。
323
+
324
+ 以下のいずれかを指定できます。
325
+
326
+ 1. enabled
327
+ 有効
328
+ 2. disabled
329
+ 無効
330
+
331
+ ```json
332
+ {
333
+ "type": "string",
334
+ "enum": [
335
+ "enabled",
336
+ "disabled"
337
+ ]
338
+ }
339
+ ```
340
+
341
+ **`point_expires_at`**
342
+
343
+
344
+ キャンペーンによって付与されるポイントの有効期限を絶対日時で指定します。
345
+ 省略した場合はマネーに設定された有効期限と同じものがポイントの有効期限となります。
346
+
347
+ ```json
348
+ {
349
+ "type": "string",
350
+ "format": "date-time"
351
+ }
352
+ ```
353
+
354
+ **`point_expires_in_days`**
355
+
356
+
357
+ キャンペーンによって付与されるポイントの有効期限を相対日数で指定します。
358
+ 省略した場合はマネーに設定された有効期限と同じものがポイントの有効期限となります。
359
+
360
+ ```json
361
+ {
362
+ "type": "integer",
363
+ "minimum": 1
364
+ }
365
+ ```
366
+
367
+ **`is_exclusive`**
368
+
369
+
370
+ キャンペーンの重ね掛けを行うかどうかのフラグです。
371
+
372
+ これにtrueを指定すると他のキャンペーンと同時適用されません。デフォルト値はtrueです。
373
+ falseを指定すると次の優先度の重ね掛け可能なキャンペーンの適用判定に進みます。
374
+
375
+ ```json
376
+ {
377
+ "type": "boolean"
378
+ }
379
+ ```
380
+
381
+ **`subject`**
382
+
383
+
384
+ ポイント付与額を計算する対象となる金額の種類を指定します。デフォルト値はallです。
385
+ eventとしてexternal-transactionを指定した場合はポイントとマネーの区別がないためsubjectの指定に関わらず常にallとなります。
386
+
387
+ 以下のいずれかを指定できます。
388
+
389
+ 1. money
390
+ moneyを指定すると決済額の中で「マネー」を使って支払った額を対象にします
391
+
392
+ 2. all
393
+ all を指定すると決済額全体を対象にします (「ポイント」での取引額を含む)
394
+ 注意: event を topup にしたときはポイントの付与に対しても適用されます
395
+
396
+ ```json
397
+ {
398
+ "type": "string",
399
+ "enum": [
400
+ "money",
401
+ "all"
402
+ ]
403
+ }
404
+ ```
405
+
406
+ **`amount_based_point_rules`**
407
+
408
+
409
+ 金額をベースとしてポイント付与を行うルールを指定します。
410
+ amount_based_point_rules と product_based_point_rules はどちらか一方しか指定できません。
411
+ 各ルールは一つのみ適用され、条件に重複があった場合は先に記載されたものが優先されます。
412
+
413
+ 例:
414
+ ```javascript
415
+ [
416
+ // 1000円以上、5000円未満の決済には 5%
417
+ {
418
+ "point_amount": 5,
419
+ "point_amount_unit": "percent",
420
+ "subject_more_than_or_equal": 1000,
421
+ "subject_less_than": 5000
422
+ },
423
+ // 5000円以上の決済には 10%
424
+ {
425
+ "point_amount": 10,
426
+ "point_amount_unit": "percent",
427
+ "subject_more_than_or_equal": 5000
428
+ },
429
+ ]
430
+ ```
431
+
432
+ ```json
433
+ {
434
+ "type": "array",
435
+ "items": {
436
+ "type": "object"
437
+ }
438
+ }
439
+ ```
440
+
441
+ **`product_based_point_rules`**
442
+
443
+
444
+ 商品情報をベースとしてポイント付与を行うルールを指定します。
445
+ ルールは商品ごとに設定可能で、ルールの配列として指定します。
446
+ amount_based_point_rules と product_based_point_rules はどちらか一方しか指定できません。
447
+ event が payment か external-transaction の時のみ有効です。
448
+ 各ルールの順序は問わず、適用可能なものは全て適用されます。
449
+ 一つの決済の中で複数の商品がキャンペーン適用可能な場合はそれぞれの商品についてのルールが適用され、ポイント付与額はその合算になります。
450
+
451
+ 例:
452
+ ```javascript
453
+ [
454
+ // 対象商品の購入額から5%ポイント付与。複数購入時は単価の5%が付与される。
455
+ {
456
+ "point_amount": 5,
457
+ "point_amount_unit": "percent",
458
+ "product_code": "4912345678904",
459
+ },
460
+ // 対象商品の購入額から5%ポイント付与。複数購入時は購入総額の5%が付与される。
461
+ {
462
+ "point_amount": 5,
463
+ "point_amount_unit": "percent",
464
+ "product_code": "4912345678904",
465
+ "is_multiply_by_count": true,
466
+ },
467
+ // 対象商品を2つ以上購入したら500ポイント付与(固定額付与)
468
+ {
469
+ "point_amount": 500,
470
+ "point_amount_unit": "absolute",
471
+ "product_code": "4912345678904",
472
+ "required_count": 2
473
+ },
474
+ // 書籍は10%ポイント付与
475
+ // ※ISBNの形式はレジがポケペイに送信する形式に準じます
476
+ {
477
+ "point_amount": 10,
478
+ "point_amount_unit": "percent",
479
+ "product_code": "978-%",
480
+ },
481
+ // 一部の出版社の書籍は10%ポイント付与
482
+ {
483
+ "point_amount": 10,
484
+ "point_amount_unit": "percent",
485
+ "product_code": "978-4-01-%", // 旺文社
486
+ }
487
+ ]
488
+ ```
489
+
490
+ ```json
491
+ {
492
+ "type": "array",
493
+ "items": {
494
+ "type": "object"
495
+ }
496
+ }
497
+ ```
498
+
499
+ **`blacklisted_product_rules`**
500
+
501
+
502
+ 商品情報をベースとしてポイント付与を行う際に、事前に除外対象とする商品リストを指定します。
503
+ 除外対象の商品コード、または分類コードのパターンの配列として指定します。
504
+ 取引時には、まずここで指定した除外対象商品が除かれ、残った商品に対して `product_based_point_rules` のルール群が適用されます。
505
+
506
+ ```json
507
+ {
508
+ "type": "array",
509
+ "items": {
510
+ "type": "object"
511
+ }
512
+ }
513
+ ```
514
+
515
+ **`applicable_days_of_week`**
516
+
517
+
518
+ キャンペーンを適用する曜日を指定します (複数指定)。
519
+ 曜日は整数で表します。月曜を 0 とし、日曜を 6 とします。
520
+ 指定しなかった場合は全日を対象にします (曜日による適用条件なし)
521
+
522
+ ```json
523
+ {
524
+ "type": "array",
525
+ "items": {
526
+ "type": "integer",
527
+ "minimum": 0,
528
+ "maximum": 6
529
+ }
530
+ }
531
+ ```
532
+
533
+ **`applicable_time_ranges`**
534
+
535
+
536
+ キャンペーンを適用する時間帯を指定します (複数指定可)。
537
+ 時間帯はfromとtoからなるオブジェクトで指定します。
538
+ fromとtoは両方必要です。
539
+
540
+ ```json
541
+ {
542
+ "type": "array",
543
+ "items": {
544
+ "type": "object"
545
+ }
546
+ }
547
+ ```
548
+
549
+ **`applicable_shop_ids`**
550
+
551
+
552
+ キャンペーンを適用する店舗IDを指定します (複数指定)。
553
+ 指定しなかった場合は全店舗が対象になります。
554
+
555
+ ```json
556
+ {
557
+ "type": "array",
558
+ "items": {
559
+ "type": "string",
560
+ "format": "uuid"
561
+ }
562
+ }
563
+ ```
564
+
565
+ **`blacklisted_shop_ids`**
566
+
567
+
568
+ キャンペーンの適用対象外となる店舗IDをブラックリスト方式で指定します (複数指定可)。
569
+ このパラメータが指定されている場合、blacklisted_shop_idsに含まれていない店舗全てがキャンペーンの適用対象になります。
570
+ blacklisted_shop_idsとapplicable_shop_idsは同時には指定できません。ホワイトリスト方式を使うときはapplicable_shop_idsを指定してください。
571
+
572
+ ```json
573
+ {
574
+ "type": "array",
575
+ "items": {
576
+ "type": "string",
577
+ "format": "uuid"
578
+ }
579
+ }
580
+ ```
581
+
582
+ **`minimum_number_of_products`**
583
+
584
+
585
+ このパラメータを指定すると、取引時の1会計内のルールに適合する商品個数がminimum_number_of_productsを超えたときにのみキャンペーンが発火するようになります。
586
+
587
+ ```json
588
+ {
589
+ "type": "integer",
590
+ "minimum": 1
591
+ }
592
+ ```
593
+
594
+ **`minimum_number_of_amount`**
595
+
596
+
597
+ このパラメータを指定すると、取引時の1会計内のルールに適合する商品総額がminimum_number_of_amountを超えたときにのみキャンペーンが発火するようになります。
598
+
599
+ ```json
600
+ {
601
+ "type": "integer",
602
+ "minimum": 1
603
+ }
604
+ ```
605
+
606
+ **`minimum_number_for_combination_purchase`**
607
+
608
+
609
+ 複数種別の商品を同時購入したとき、同時購入キャンペーンの対象となる商品種別数の下限です。デフォルトでは未指定で、指定する場合は1以上の整数を指定します。
610
+
611
+ このパラメータを指定するときは product_based_point_rules で商品毎のルールが指定されている必要があります。
612
+ 例えば、A商品とB商品とC商品のうち、キャンペーンの発火のために2商品以上が同時購入される必要があるときは 2 を指定します。
613
+
614
+ 例1: 商品A, Bが同時購入されたときに固定ポイント額(200ポイント)付与
615
+ ```javascript
616
+ {
617
+ minimum_number_for_combination_purchase: 2,
618
+ product_based_point_rules: [
619
+ {
620
+ "point_amount": 100,
621
+ "point_amount_unit": "absolute",
622
+ "product_code": "商品Aの商品コード"
623
+ },
624
+ {
625
+ "point_amount": 100,
626
+ "point_amount_unit": "absolute",
627
+ "product_code": "商品Bの商品コード"
628
+ }
629
+ ]
630
+ }
631
+ ```
632
+
633
+ 例2: 商品A, Bが3個ずつ以上同時購入されたときに固定ポイント額(200ポイント)付与
634
+ ```javascript
635
+ {
636
+ minimum_number_for_combination_purchase: 2,
637
+ product_based_point_rules: [
638
+ {
639
+ "point_amount": 100,
640
+ "point_amount_unit": "absolute",
641
+ "product_code": "商品Aの商品コード",
642
+ "required_count": 3
643
+ },
644
+ {
645
+ "point_amount": 100,
646
+ "point_amount_unit": "absolute",
647
+ "product_code": "商品Bの商品コード",
648
+ "required_count": 3
649
+ }
650
+ ]
651
+ }
652
+ ```
653
+
654
+ 例2: 商品A, B, Cのうち2商品以上が同時購入されたときに総額の10%ポイントが付与
655
+ ```javascript
656
+ {
657
+ minimum_number_for_combination_purchase: 2,
658
+ product_based_point_rules: [
659
+ {
660
+ "point_amount": 10,
661
+ "point_amount_unit": "percent",
662
+ "product_code": "商品Aの商品コード",
663
+ "is_multiply_by_count": true,
664
+ },
665
+ {
666
+ "point_amount": 10,
667
+ "point_amount_unit": "percent",
668
+ "product_code": "商品Bの商品コード",
669
+ "is_multiply_by_count": true,
670
+ },
671
+ {
672
+ "point_amount": 10,
673
+ "point_amount_unit": "percent",
674
+ "product_code": "商品Cの商品コード",
675
+ "is_multiply_by_count": true,
676
+ }
677
+ ]
678
+ }
679
+ ```
680
+
681
+ ```json
682
+ {
683
+ "type": "integer",
684
+ "minimum": 1
685
+ }
686
+ ```
687
+
688
+ **`exist_in_each_product_groups`**
689
+
690
+
691
+ 複数の商品グループの各グループにつき1種類以上の商品が購入されることによって発火するキャンペーンであるときに真を指定します。デフォルトは偽です。
692
+
693
+ このパラメータを指定するときは product_based_point_rules で商品毎のルールが指定され、さらにその中でgroup_idが指定されている必要があります。group_idは正の整数です。
694
+ exist_in_each_product_groupsが指定されているにも関わらず商品毎のルールでgroup_idが指定されていないものが含まれている場合はinvalid_parametersエラー(missing group_id, エラーコード400)が返ります。
695
+
696
+ 例えば、商品グループA(商品コードa1, a2)、商品グループB(商品コードb1, b2)の2つの商品グループがあるとします。
697
+ このとき、各商品グループからそれぞれ少なくとも1種類以上の商品が購入されることにより発火するキャンペーンに対するリクエストパラメータは以下のようなものになります。
698
+
699
+ ```javascript
700
+ {
701
+ exist_in_each_product_groups: true,
702
+ product_based_point_rules: [
703
+ {
704
+ "point_amount": 100,
705
+ "point_amount_unit": "absolute",
706
+ "product_code": "a1",
707
+ "group_id": 1
708
+ },
709
+ {
710
+ "point_amount": 100,
711
+ "point_amount_unit": "absolute",
712
+ "product_code": "a2",
713
+ "group_id": 1
714
+ },
715
+ {
716
+ "point_amount": 200,
717
+ "point_amount_unit": "absolute",
718
+ "product_code": "b1",
719
+ "group_id": 2
720
+ },
721
+ {
722
+ "point_amount": 200,
723
+ "point_amount_unit": "absolute",
724
+ "product_code": "b2",
725
+ "group_id": 2
726
+ }
727
+ ]
728
+ }
729
+ ```
730
+
731
+ このキャンペーンが設定された状態で、商品a1、b1が同時に購入された場合、各商品に対する個別のルールが適用された上での総和がポイント付与値になります。つまり100 + 200=300がポイント付与値になります。商品a1、a2、 b1、b2が同時に購入された場合は100 + 100 + 200 + 200=600がポイント付与値になります。 商品a1、a2が同時に購入された場合は全商品グループから1種以上購入されるという条件を満たしていないためポイントは付与されません。
732
+
733
+ ポイント付与値を各商品毎のルールの総和ではなく固定値にしたい場合には、max_point_amountを指定します。
734
+ 例えば以下のようなリクエストパラメータ指定の場合を考えます。
735
+
736
+ ```javascript
737
+ {
738
+ max_point_amount: 100,
739
+ exist_in_each_product_groups: true,
740
+ product_based_point_rules: [
741
+ {
742
+ "point_amount": 100,
743
+ "point_amount_unit": "absolute",
744
+ "product_code": "a1",
745
+ "group_id": 1
746
+ },
747
+ {
748
+ "point_amount": 100,
749
+ "point_amount_unit": "absolute",
750
+ "product_code": "a2",
751
+ "group_id": 1
752
+ },
753
+ {
754
+ "point_amount": 100,
755
+ "point_amount_unit": "absolute",
756
+ "product_code": "b1",
757
+ "group_id": 2
758
+ },
759
+ {
760
+ "point_amount": 100,
761
+ "point_amount_unit": "absolute",
762
+ "product_code": "b2",
763
+ "group_id": 2
764
+ }
765
+ ]
766
+ }
767
+ ```
768
+
769
+ このキャンペーンが設定された状態で、商品a1、b1が同時に購入された場合、各商品に対する個別のルールが適用された上での総和がポイント付与値になりますが、付与値の上限が100ポイントになります。つまり100 + 200=300と計算されますが上限額の100ポイントが実際の付与値になります。商品a1、a2、 b1、b2が同時に購入された場合は100 + 100 + 200 + 200=600ですが上限額の100がポイント付与値になります。 商品a1、a2が同時に購入された場合は全商品グループから1種以上購入されるという条件を満たしていないためポイントは付与されません。
770
+
771
+ ```json
772
+ {
773
+ "type": "boolean"
774
+ }
775
+ ```
776
+
777
+ **`max_point_amount`**
778
+
779
+
780
+ キャンペーンによって付与されるポイントの上限を指定します。デフォルトは未指定です。
781
+
782
+ このパラメータが指定されている場合、amount_based_point_rules や product_based_point_rules によって計算されるポイント付与値がmax_point_amountを越えている場合、max_point_amountの値がポイント付与値となり、越えていない場合はその値がポイント付与値となります。
783
+
784
+ ```json
785
+ {
786
+ "type": "integer",
787
+ "minimum": 1
788
+ }
789
+ ```
790
+
791
+ **`max_total_point_amount`**
792
+
793
+
794
+ キャンペーンによって付与される1人当たりの累計ポイント数の上限を指定します。デフォルトは未指定です。
795
+
796
+ このパラメータが指定されている場合、各ユーザに対してそのキャンペーンによって過去付与されたポイントの累積値が記録されるようになります。
797
+ 累積ポイント数がmax_total_point_amountを超えない限りにおいてキャンペーンで算出されたポイントが付与されます。
798
+
799
+ ```json
800
+ {
801
+ "type": "integer",
802
+ "minimum": 1
803
+ }
804
+ ```
805
+
806
+ **`dest_private_money_id`**
807
+
808
+
809
+ キャンペーンを駆動するイベントのマネーとは「別のマネー」に対してポイントを付けたいときに、そのマネーIDを指定します。
810
+
811
+ ポイント付与先のマネーはキャンペーンを駆動するイベントのマネーと同一発行体が発行しているものに限ります。その他のマネーIDが指定された場合は private_money_not_found (422) が返ります。
812
+ エンドユーザー、店舗、ポイント負担先店舗はポイント付与先マネーのウォレットを持っている必要があります。持っていない場合はポイントは付きません。
813
+ 元のイベントのマネーと異なる複数のマネーに対して同時にポイントを付与することはできません。重複可能に設定されている複数のキャンペーンで別々のポイント付与先マネーを指定した場合は最も優先度の高いものが処理され、残りは無視されます。
814
+ キャンペーンのポイント付与先マネーは後から更新することはできません。
815
+ デフォルトではポイント付与先はキャンペーンを駆動するイベントのマネー(private_money_idで指定したマネー)になります。
816
+
817
+ 別マネーに対するポイント付与は別のtransactionとなります。 RefundTransaction で元のイベントをキャンセルしたときはポイント付与のtransactionもキャンセルされ、逆にポイント付与のtransactionをキャンセルしたときは連動して元のイベントがキャンセルされます。
818
+
819
+ ```json
820
+ {
821
+ "type": "string",
822
+ "format": "uuid"
823
+ }
824
+ ```
825
+
826
+ **`applicable_account_metadata`**
827
+
828
+
829
+ ウォレットに紐付くメタデータが特定の値を持つときにのみ発火するキャンペーンを登録します。
830
+ メタデータの属性名 key とメタデータの値 value の組をオブジェクトとして指定します。
831
+ ウォレットのメタデータはCreateUserAccountやUpdateCustomerAccountで登録できます。
832
+
833
+ オプショナルパラメータtestによって比較方法を指定することができます。
834
+ デフォルトは equal で、その他に not-equalを指定可能です。
835
+
836
+ 例1: 取引が行なわれたウォレットのメタデータに住所として東京が指定されているときのみ発火
837
+
838
+ ```javascript
839
+ {
840
+ "key": "prefecture",
841
+ "value": "tokyo"
842
+ }
843
+ ```
844
+
845
+ 例2: 取引が行なわれたウォレットのメタデータに住所として東京以外が指定されているときのみ発火
846
+
847
+ ```javascript
848
+ {
849
+ "key": "prefecture",
850
+ "value": "tokyo",
851
+ "test": "not-equal"
852
+ }
853
+ ```
854
+
855
+ ```json
856
+ {
857
+ "type": "object"
858
+ }
859
+ ```
860
+
861
+ **`applicable_transaction_metadata`**
862
+
863
+
864
+ 取引時に指定するメタデータが特定の値を持つときにのみ発火するキャンペーンを登録します。
865
+ メタデータの属性名 key とメタデータの値 value の組をオブジェクトとして指定します。
866
+ 取引のメタデータはCreatePaymentTransactionやCreateExternalTransactionで登録できます。
867
+
868
+ オプショナルパラメータtestによって比較方法を指定することができます。
869
+ デフォルトは equal で、その他に not-equalを指定可能です。
870
+
871
+ 例1: 取引のメタデータに会員ランクとしてbronzeが指定されているときのみ発火
872
+
873
+ ```javascript
874
+ {
875
+ "key": "rank",
876
+ "value": "bronze"
877
+ }
878
+ ```
879
+
880
+ 例2: 取引のメタデータに会員ランクとしてbronze以外が指定されているときのみ発火
881
+
882
+ ```javascript
883
+ {
884
+ "key": "rank",
885
+ "value": "bronze",
886
+ "test": "not-equal"
887
+ }
888
+ ```
889
+
890
+ ```json
891
+ {
892
+ "type": "object"
893
+ }
894
+ ```
895
+
896
+ **`budget_caps_amount`**
897
+
898
+
899
+ キャンペーンの予算上限を指定します。デフォルトは未指定です。
900
+
901
+ このパラメータが指定されている場合、このキャンペーンの適用により付与されたポイント全体を定期的に集計し、その合計が上限を越えていた場合にはキャンペーンを無効にします。
902
+ 一度この値を越えて無効となったキャンペーンを再度有効にすることは出来ません。
903
+
904
+ ```json
905
+ {
906
+ "type": "integer",
907
+ "minimum": 1,
908
+ "maximum": 10000000000
909
+ }
910
+ ```
911
+
912
+
913
+
914
+ 成功したときは
915
+ [Campaign](./responses.md#campaign)
916
+ を返します
917
+
918
+ ### Error Responses
919
+ |status|type|ja|en|
920
+ |---|---|---|---|
921
+ |400|invalid_parameters|項目が無効です|Invalid parameters|
922
+ |403|unpermitted_admin_user|この管理ユーザには権限がありません|Admin does not have permission|
923
+ |422|campaign_overlaps|同期間に開催されるキャンペーン間で優先度が重複してます|The campaign period overlaps under the same private-money / type / priority|
924
+ |422|shop_account_not_found||The shop account is not found|
925
+ |422|campaign_period_overlaps|同期間に開催されるキャンペーン間で優先度が重複してます|The campaign period overlaps under the same private-money / type / priority|
926
+ |422|campaign_invalid_period||Invalid campaign period starts_at later than ends_at|
927
+ |422|shop_user_not_found|店舗が見つかりません|The shop user is not found|
928
+ |422|private_money_not_found||Private money not found|
929
+
930
+
931
+
932
+ ---
933
+
934
+
935
+ <a name="get-campaign"></a>
936
+ ## GetCampaign: キャンペーンを取得する
937
+ IDを指定してキャンペーンを取得します。
938
+ 発行体の組織マネージャ権限で、自組織が発行するマネーのキャンペーンについてのみ閲覧可能です。
939
+ 閲覧権限がない場合は unpermitted_admin_user エラー(422)が返ります。
940
+
941
+ ```RUBY
942
+ response = $client.send(Pokepay::Request::GetCampaign.new(
943
+ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" # campaign_id: キャンペーンID
944
+ ))
945
+ ```
946
+
947
+
948
+
949
+ ### Parameters
950
+ **`campaign_id`**
951
+
952
+
953
+ キャンペーンIDです。
954
+
955
+ 指定したIDのキャンペーンを取得します。存在しないIDを指定した場合は404エラー(NotFound)が返ります。
956
+
957
+ ```json
958
+ {
959
+ "type": "string",
960
+ "format": "uuid"
961
+ }
962
+ ```
963
+
964
+
965
+
966
+ 成功したときは
967
+ [Campaign](./responses.md#campaign)
968
+ を返します
969
+
970
+
971
+
972
+ ---
973
+
974
+
975
+ <a name="update-campaign"></a>
976
+ ## UpdateCampaign: ポイント付与キャンペーンを更新する
977
+ ポイント付与キャンペーンを更新します。
978
+
979
+
980
+ ```RUBY
981
+ response = $client.send(Pokepay::Request::UpdateCampaign.new(
982
+ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", # campaign_id: キャンペーンID
983
+ name: "kYeLppJ33CkMXXFMJbGPqbgq29Gzz59vVOvin5VZAtZIBDPoHNl5n64I544K0pgRwqKcwLRpyfhvSp3huvf9ISSZ1V5b6lHxDKXrcl2EVGtJV2Ntce9IqiVZ5m5eyekXLeKtBuImxNnX45R5ZNI", # キャンペーン名
984
+ starts_at: "2020-12-10T15:59:33.000000Z", # キャンペーン開始日時
985
+ ends_at: "2020-07-21T16:40:09.000000Z", # キャンペーン終了日時
986
+ priority: 7436, # キャンペーンの適用優先度
987
+ event: "topup", # イベント種別
988
+ description: "w9LWlkrqUcz43dBm26Or7FE7oxXwqyeP95WFsrDTZsTHaLMAx4xhJmPNb", # キャンペーンの説明文
989
+ status: "enabled", # キャンペーン作成時の状態
990
+ point_expires_at: "2022-08-19T17:52:52.000000Z", # ポイント有効期限(絶対日時指定)
991
+ point_expires_in_days: 8960, # ポイント有効期限(相対日数指定)
992
+ is_exclusive: false, # キャンペーンの重複設定
993
+ subject: "all", # ポイント付与の対象金額の種別
994
+ amount_based_point_rules: [{
995
+ "point_amount": 5,
996
+ "point_amount_unit": "percent",
997
+ "subject_more_than_or_equal": 1000,
998
+ "subject_less_than": 5000
999
+ }, {
1000
+ "point_amount": 5,
1001
+ "point_amount_unit": "percent",
1002
+ "subject_more_than_or_equal": 1000,
1003
+ "subject_less_than": 5000
1004
+ }], # 取引金額ベースのポイント付与ルール
1005
+ product_based_point_rules: [{
1006
+ "point_amount": 5,
1007
+ "point_amount_unit": "percent",
1008
+ "product_code": "4912345678904",
1009
+ "is_multiply_by_count": true,
1010
+ "required_count": 2
1011
+ }], # 商品情報ベースのポイント付与ルール
1012
+ blacklisted_product_rules: [{
1013
+ "product_code": "4912345678904",
1014
+ "classification_code": "c123"
1015
+ }, {
1016
+ "product_code": "4912345678904",
1017
+ "classification_code": "c123"
1018
+ }, {
1019
+ "product_code": "4912345678904",
1020
+ "classification_code": "c123"
1021
+ }], # 商品情報ベースのキャンペーンで除外対象にする商品リスト
1022
+ applicable_days_of_week: [6, 5, 4], # キャンペーンを適用する曜日 (複数指定)
1023
+ applicable_time_ranges: [{
1024
+ "from": "12:00",
1025
+ "to": "23:59"
1026
+ }, {
1027
+ "from": "12:00",
1028
+ "to": "23:59"
1029
+ }, {
1030
+ "from": "12:00",
1031
+ "to": "23:59"
1032
+ }], # キャンペーンを適用する時間帯 (複数指定)
1033
+ applicable_shop_ids: ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"], # キャンペーン適用対象となる店舗IDのリスト
1034
+ blacklisted_shop_ids: ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"], # キャンペーン適用対象外となる店舗IDのリスト(ブラックリスト方式)
1035
+ minimum_number_of_products: 4846, # キャンペーンを適用する1会計内の商品個数の下限
1036
+ minimum_number_of_amount: 692, # キャンペーンを適用する1会計内の商品総額の下限
1037
+ minimum_number_for_combination_purchase: 9839, # 複数種類の商品を同時購入するときの商品種別数の下限
1038
+ exist_in_each_product_groups: true, # 複数の商品グループにつき1種類以上の商品購入によって発火するキャンペーンの指定フラグ
1039
+ max_point_amount: 5024, # キャンペーンによって付与されるポイントの上限
1040
+ max_total_point_amount: 2550, # キャンペーンによって付与されるの1人当たりの累計ポイントの上限
1041
+ applicable_account_metadata: {
1042
+ "key": "sex",
1043
+ "value": "male"
1044
+ }, # ウォレットに紐付くメタデータが特定の値を持つときにのみ発火するキャンペーンを登録します。
1045
+ applicable_transaction_metadata: {
1046
+ "key": "rank",
1047
+ "value": "bronze"
1048
+ }, # 取引時に指定するメタデータが特定の値を持つときにのみ発火するキャンペーンを登録します。
1049
+ budget_caps_amount: 992917404 # キャンペーン予算上限
1050
+ ))
1051
+ ```
1052
+
1053
+
1054
+
1055
+ ### Parameters
1056
+ **`campaign_id`**
1057
+
1058
+
1059
+ キャンペーンIDです。
1060
+
1061
+ 指定したIDのキャンペーンを更新します。存在しないIDを指定した場合は404エラー(NotFound)が返ります。
1062
+
1063
+ ```json
1064
+ {
1065
+ "type": "string",
1066
+ "format": "uuid"
1067
+ }
1068
+ ```
1069
+
1070
+ **`name`**
1071
+
1072
+
1073
+ キャンペーン名です。
1074
+
1075
+ ポイント付与によってできるチャージ取引の説明文に転記されます。取引説明文はエンドユーザーからも確認できます。
1076
+
1077
+ ```json
1078
+ {
1079
+ "type": "string",
1080
+ "maxLength": 256
1081
+ }
1082
+ ```
1083
+
1084
+ **`starts_at`**
1085
+
1086
+
1087
+ キャンペーン開始日時です。
1088
+ キャンペーン期間中のみポイントが付与されます。
1089
+ 開始日時よりも終了日時が前のときはcampaign_invalid_periodエラー(422)になります。
1090
+
1091
+ ```json
1092
+ {
1093
+ "type": "string",
1094
+ "format": "date-time"
1095
+ }
1096
+ ```
1097
+
1098
+ **`ends_at`**
1099
+
1100
+
1101
+ キャンペーン終了日時です。
1102
+ キャンペーン期間中のみポイントが付与されます。
1103
+ 開始日時よりも終了日時が前のときはcampaign_invalid_periodエラー(422)になります。
1104
+
1105
+ ```json
1106
+ {
1107
+ "type": "string",
1108
+ "format": "date-time"
1109
+ }
1110
+ ```
1111
+
1112
+ **`priority`**
1113
+
1114
+
1115
+ キャンペーンの適用優先度です。
1116
+
1117
+ 優先度が大きいものから順に適用判定されていきます。
1118
+ キャンペーン期間が重なっている同一の優先度のキャンペーンが存在するとcampaign_period_overlapsエラー(422)になります。
1119
+
1120
+ ```json
1121
+ {
1122
+ "type": "integer"
1123
+ }
1124
+ ```
1125
+
1126
+ **`event`**
1127
+
1128
+
1129
+ キャンペーンのトリガーとなるイベントの種類を指定します。
1130
+
1131
+ 以下のいずれかを指定できます。
1132
+
1133
+ 1. topup
1134
+ 店舗からエンドユーザーへの送金取引(チャージ)
1135
+ 2. payment
1136
+ エンドユーザーから店舗への送金取引(支払い)
1137
+ 3. external-transaction
1138
+ ポケペイ外の取引(現金決済など)
1139
+
1140
+ ```json
1141
+ {
1142
+ "type": "string",
1143
+ "enum": [
1144
+ "topup",
1145
+ "payment",
1146
+ "external-transaction"
1147
+ ]
1148
+ }
1149
+ ```
1150
+
1151
+ **`description`**
1152
+
1153
+
1154
+ キャンペーンの内容を記載します。管理画面などでキャンペーンを管理するための説明文になります。
1155
+
1156
+ ```json
1157
+ {
1158
+ "type": "string",
1159
+ "maxLength": 200
1160
+ }
1161
+ ```
1162
+
1163
+ **`status`**
1164
+
1165
+
1166
+ キャンペーン作成時の状態を指定します。デフォルトではenabledです。
1167
+
1168
+ 以下のいずれかを指定できます。
1169
+
1170
+ 1. enabled
1171
+ 有効
1172
+ 2. disabled
1173
+ 無効
1174
+
1175
+ ```json
1176
+ {
1177
+ "type": "string",
1178
+ "enum": [
1179
+ "enabled",
1180
+ "disabled"
1181
+ ]
1182
+ }
1183
+ ```
1184
+
1185
+ **`point_expires_at`**
1186
+
1187
+
1188
+ キャンペーンによって付与されるポイントの有効期限を絶対日時で指定します。
1189
+ 省略した場合はマネーに設定された有効期限と同じものがポイントの有効期限となります。
1190
+
1191
+ ```json
1192
+ {
1193
+ "type": "string",
1194
+ "format": "date-time"
1195
+ }
1196
+ ```
1197
+
1198
+ **`point_expires_in_days`**
1199
+
1200
+
1201
+ キャンペーンによって付与されるポイントの有効期限を相対日数で指定します。
1202
+ 省略した場合はマネーに設定された有効期限と同じものがポイントの有効期限となります。
1203
+
1204
+ ```json
1205
+ {
1206
+ "type": "integer",
1207
+ "minimum": 1
1208
+ }
1209
+ ```
1210
+
1211
+ **`is_exclusive`**
1212
+
1213
+
1214
+ キャンペーンの重ね掛けを行うかどうかのフラグです。
1215
+
1216
+ これにtrueを指定すると他のキャンペーンと同時適用されません。デフォルト値はtrueです。
1217
+ falseを指定すると次の優先度の重ね掛け可能なキャンペーンの適用判定に進みます。
1218
+
1219
+ ```json
1220
+ {
1221
+ "type": "boolean"
1222
+ }
1223
+ ```
1224
+
1225
+ **`subject`**
1226
+
1227
+
1228
+ ポイント付与額を計算する対象となる金額の種類を指定します。デフォルト値はallです。
1229
+ eventとしてexternal-transactionを指定した場合はポイントとマネーの区別がないためsubjectの指定に関わらず常にallとなります。
1230
+
1231
+ 以下のいずれかを指定できます。
1232
+
1233
+ 1. money
1234
+ moneyを指定すると決済額の中で「マネー」を使って支払った額を対象にします
1235
+
1236
+ 2. all
1237
+ all を指定すると決済額全体を対象にします (「ポイント」での取引額を含む)
1238
+ 注意: event を topup にしたときはポイントの付与に対しても適用されます
1239
+
1240
+ ```json
1241
+ {
1242
+ "type": "string",
1243
+ "enum": [
1244
+ "money",
1245
+ "all"
1246
+ ]
1247
+ }
1248
+ ```
1249
+
1250
+ **`amount_based_point_rules`**
1251
+
1252
+
1253
+ 金額をベースとしてポイント付与を行うルールを指定します。
1254
+ amount_based_point_rules と product_based_point_rules はどちらか一方しか指定できません。
1255
+ 各ルールは一つのみ適用され、条件に重複があった場合は先に記載されたものが優先されます。
1256
+
1257
+ 例:
1258
+ ```javascript
1259
+ [
1260
+ // 1000円以上、5000円未満の決済には 5%
1261
+ {
1262
+ "point_amount": 5,
1263
+ "point_amount_unit": "percent",
1264
+ "subject_more_than_or_equal": 1000,
1265
+ "subject_less_than": 5000
1266
+ },
1267
+ // 5000円以上の決済には 10%
1268
+ {
1269
+ "point_amount": 10,
1270
+ "point_amount_unit": "percent",
1271
+ "subject_more_than_or_equal": 5000
1272
+ },
1273
+ ]
1274
+ ```
1275
+
1276
+ ```json
1277
+ {
1278
+ "type": "array",
1279
+ "items": {
1280
+ "type": "object"
1281
+ }
1282
+ }
1283
+ ```
1284
+
1285
+ **`product_based_point_rules`**
1286
+
1287
+
1288
+ 商品情報をベースとしてポイント付与を行うルールを指定します。
1289
+ ルールは商品ごとに設定可能で、ルールの配列として指定します。
1290
+ amount_based_point_rules と product_based_point_rules はどちらか一方しか指定できません。
1291
+ event が payment か external-transaction の時のみ有効です。
1292
+ 各ルールの順序は問わず、適用可能なものは全て適用されます。
1293
+ 一つの決済の中で複数の商品がキャンペーン適用可能な場合はそれぞれの商品についてのルールが適用され、ポイント付与額はその合算になります。
1294
+
1295
+ 例:
1296
+ ```javascript
1297
+ [
1298
+ // 対象商品の購入額から5%ポイント付与。複数購入時は単価の5%が付与される。
1299
+ {
1300
+ "point_amount": 5,
1301
+ "point_amount_unit": "percent",
1302
+ "product_code": "4912345678904",
1303
+ },
1304
+ // 対象商品の購入額から5%ポイント付与。複数購入時は購入総額の5%が付与される。
1305
+ {
1306
+ "point_amount": 5,
1307
+ "point_amount_unit": "percent",
1308
+ "product_code": "4912345678904",
1309
+ "is_multiply_by_count": true,
1310
+ },
1311
+ // 対象商品を2つ以上購入したら500ポイント付与(固定額付与)
1312
+ {
1313
+ "point_amount": 500,
1314
+ "point_amount_unit": "absolute",
1315
+ "product_code": "4912345678904",
1316
+ "required_count": 2
1317
+ },
1318
+ // 書籍は10%ポイント付与
1319
+ // ※ISBNの形式はレジがポケペイに送信する形式に準じます
1320
+ {
1321
+ "point_amount": 10,
1322
+ "point_amount_unit": "percent",
1323
+ "product_code": "978-%",
1324
+ },
1325
+ // 一部の出版社の書籍は10%ポイント付与
1326
+ {
1327
+ "point_amount": 10,
1328
+ "point_amount_unit": "percent",
1329
+ "product_code": "978-4-01-%", // 旺文社
1330
+ }
1331
+ ]
1332
+ ```
1333
+
1334
+ ```json
1335
+ {
1336
+ "type": "array",
1337
+ "items": {
1338
+ "type": "object"
1339
+ }
1340
+ }
1341
+ ```
1342
+
1343
+ **`blacklisted_product_rules`**
1344
+
1345
+
1346
+ 商品情報をベースとしてポイント付与を行う際に、事前に除外対象とする商品リストを指定します。
1347
+ 除外対象の商品コード、または分類コードのパターンの配列として指定します。
1348
+ 取引時には、まずここで指定した除外対象商品が除かれ、残った商品に対して `product_based_point_rules` のルール群が適用されます。
1349
+
1350
+ ```json
1351
+ {
1352
+ "type": "array",
1353
+ "items": {
1354
+ "type": "object"
1355
+ }
1356
+ }
1357
+ ```
1358
+
1359
+ **`applicable_days_of_week`**
1360
+
1361
+
1362
+ キャンペーンを適用する曜日を指定します (複数指定)。
1363
+ 曜日は整数で表します。月曜を 0 とし、日曜を 6 とします。
1364
+ 指定しなかった場合は全日を対象にします (曜日による適用条件なし)
1365
+
1366
+ ```json
1367
+ {
1368
+ "type": "array",
1369
+ "items": {
1370
+ "type": "integer",
1371
+ "minimum": 0,
1372
+ "maximum": 6
1373
+ }
1374
+ }
1375
+ ```
1376
+
1377
+ **`applicable_time_ranges`**
1378
+
1379
+
1380
+ キャンペーンを適用する時間帯を指定します (複数指定可)。
1381
+ 時間帯はfromとtoからなるオブジェクトで指定します。
1382
+ fromとtoは両方必要です。
1383
+
1384
+ ```json
1385
+ {
1386
+ "type": "array",
1387
+ "items": {
1388
+ "type": "object"
1389
+ }
1390
+ }
1391
+ ```
1392
+
1393
+ **`applicable_shop_ids`**
1394
+
1395
+
1396
+ キャンペーンを適用する店舗IDを指定します (複数指定)。
1397
+ 指定しなかった場合は全店舗が対象になります。
1398
+
1399
+ ```json
1400
+ {
1401
+ "type": "array",
1402
+ "items": {
1403
+ "type": "string",
1404
+ "format": "uuid"
1405
+ }
1406
+ }
1407
+ ```
1408
+
1409
+ **`blacklisted_shop_ids`**
1410
+
1411
+
1412
+ キャンペーンの適用対象外となる店舗IDをブラックリスト方式で指定します (複数指定可)。
1413
+ このパラメータが指定されている場合、blacklisted_shop_idsに含まれていない店舗全てがキャンペーンの適用対象になります。
1414
+ blacklisted_shop_idsとapplicable_shop_idsは同時には指定できません。ホワイトリスト方式を使うときはapplicable_shop_idsを指定してください。
1415
+
1416
+ ```json
1417
+ {
1418
+ "type": "array",
1419
+ "items": {
1420
+ "type": "string",
1421
+ "format": "uuid"
1422
+ }
1423
+ }
1424
+ ```
1425
+
1426
+ **`minimum_number_of_products`**
1427
+
1428
+
1429
+ このパラメータを指定すると、取引時の1会計内のルールに適合する商品個数がminimum_number_of_productsを超えたときにのみキャンペーンが発火するようになります。
1430
+
1431
+ ```json
1432
+ {
1433
+ "type": "integer",
1434
+ "minimum": 1
1435
+ }
1436
+ ```
1437
+
1438
+ **`minimum_number_of_amount`**
1439
+
1440
+
1441
+ このパラメータを指定すると、取引時の1会計内のルールに適合する商品総額がminimum_number_of_amountを超えたときにのみキャンペーンが発火するようになります。
1442
+
1443
+ ```json
1444
+ {
1445
+ "type": "integer",
1446
+ "minimum": 1
1447
+ }
1448
+ ```
1449
+
1450
+ **`minimum_number_for_combination_purchase`**
1451
+
1452
+
1453
+ 複数種別の商品を同時購入したとき、同時購入キャンペーンの対象となる商品種別数の下限です。
1454
+
1455
+ このパラメータを指定するときは product_based_point_rules で商品毎のルールが指定されている必要があります。
1456
+ 例えば、A商品とB商品とC商品のうち、キャンペーンの発火のために2商品以上が同時購入される必要があるときは 2 を指定します。
1457
+
1458
+ 例1: 商品A, Bが同時購入されたときに固定ポイント額(200ポイント)付与
1459
+ ```javascript
1460
+ {
1461
+ minimum_number_for_combination_purchase: 2,
1462
+ product_based_point_rules: [
1463
+ {
1464
+ "point_amount": 100,
1465
+ "point_amount_unit": "absolute",
1466
+ "product_code": "商品Aの商品コード"
1467
+ },
1468
+ {
1469
+ "point_amount": 100,
1470
+ "point_amount_unit": "absolute",
1471
+ "product_code": "商品Bの商品コード"
1472
+ }
1473
+ ]
1474
+ }
1475
+ ```
1476
+
1477
+ 例2: 商品A, Bが3個ずつ以上同時購入されたときに固定ポイント額(200ポイント)付与
1478
+ ```javascript
1479
+ {
1480
+ minimum_number_for_combination_purchase: 2,
1481
+ product_based_point_rules: [
1482
+ {
1483
+ "point_amount": 100,
1484
+ "point_amount_unit": "absolute",
1485
+ "product_code": "商品Aの商品コード",
1486
+ "required_count": 3
1487
+ },
1488
+ {
1489
+ "point_amount": 100,
1490
+ "point_amount_unit": "absolute",
1491
+ "product_code": "商品Bの商品コード",
1492
+ "required_count": 3
1493
+ }
1494
+ ]
1495
+ }
1496
+ ```
1497
+
1498
+ 例2: 商品A, B, Cのうち2商品以上が同時購入されたときに総額の10%ポイントが付与
1499
+ ```javascript
1500
+ {
1501
+ minimum_number_for_combination_purchase: 2,
1502
+ product_based_point_rules: [
1503
+ {
1504
+ "point_amount": 10,
1505
+ "point_amount_unit": "percent",
1506
+ "product_code": "商品Aの商品コード",
1507
+ "is_multiply_by_count": true,
1508
+ },
1509
+ {
1510
+ "point_amount": 10,
1511
+ "point_amount_unit": "percent",
1512
+ "product_code": "商品Bの商品コード",
1513
+ "is_multiply_by_count": true,
1514
+ },
1515
+ {
1516
+ "point_amount": 10,
1517
+ "point_amount_unit": "percent",
1518
+ "product_code": "商品Cの商品コード",
1519
+ "is_multiply_by_count": true,
1520
+ }
1521
+ ]
1522
+ }
1523
+ ```
1524
+
1525
+ ```json
1526
+ {
1527
+ "type": "integer",
1528
+ "minimum": 1
1529
+ }
1530
+ ```
1531
+
1532
+ **`exist_in_each_product_groups`**
1533
+
1534
+
1535
+ 複数の商品グループの各グループにつき1種類以上の商品が購入されることによって発火するキャンペーンであるときに真を指定します。デフォルトは偽です。
1536
+
1537
+ このパラメータを指定するときは product_based_point_rules で商品毎のルールが指定され、さらにその中でgroup_idが指定されている必要があります。group_idは正の整数です。
1538
+ exist_in_each_product_groupsが指定されているにも関わらず商品毎のルールでgroup_idが指定されていないものが含まれている場合はinvalid_parametersエラー(missing group_id, エラーコード400)が返ります。
1539
+
1540
+ 例えば、商品グループA(商品コードa1, a2)、商品グループB(商品コードb1, b2)の2つの商品グループがあるとします。
1541
+ このとき、各商品グループからそれぞれ少なくとも1種類以上の商品が購入されることにより発火するキャンペーンに対するリクエストパラメータは以下のようなものになります。
1542
+
1543
+ ```javascript
1544
+ {
1545
+ exist_in_each_product_groups: true,
1546
+ product_based_point_rules: [
1547
+ {
1548
+ "point_amount": 100,
1549
+ "point_amount_unit": "absolute",
1550
+ "product_code": "a1",
1551
+ "group_id": 1
1552
+ },
1553
+ {
1554
+ "point_amount": 100,
1555
+ "point_amount_unit": "absolute",
1556
+ "product_code": "a2",
1557
+ "group_id": 1
1558
+ },
1559
+ {
1560
+ "point_amount": 200,
1561
+ "point_amount_unit": "absolute",
1562
+ "product_code": "b1",
1563
+ "group_id": 2
1564
+ },
1565
+ {
1566
+ "point_amount": 200,
1567
+ "point_amount_unit": "absolute",
1568
+ "product_code": "b2",
1569
+ "group_id": 2
1570
+ }
1571
+ ]
1572
+ }
1573
+ ```
1574
+
1575
+ このキャンペーンが設定された状態で、商品a1、b1が同時に購入された場合、各商品に対する個別のルールが適用された上での総和がポイント付与値になります。つまり100 + 200=300がポイント付与値になります。商品a1、a2、 b1、b2が同時に購入された場合は100 + 100 + 200 + 200=600がポイント付与値になります。 商品a1、a2が同時に購入された場合は全商品グループから1種以上購入されるという条件を満たしていないためポイントは付与されません。
1576
+
1577
+ ポイント付与値を各商品毎のルールの総和ではなく固定値にしたい場合には、max_point_amountを指定します。
1578
+ 例えば以下のようなリクエストパラメータ指定の場合を考えます。
1579
+
1580
+ ```javascript
1581
+ {
1582
+ max_point_amount: 100,
1583
+ exist_in_each_product_groups: true,
1584
+ product_based_point_rules: [
1585
+ {
1586
+ "point_amount": 100,
1587
+ "point_amount_unit": "absolute",
1588
+ "product_code": "a1",
1589
+ "group_id": 1
1590
+ },
1591
+ {
1592
+ "point_amount": 100,
1593
+ "point_amount_unit": "absolute",
1594
+ "product_code": "a2",
1595
+ "group_id": 1
1596
+ },
1597
+ {
1598
+ "point_amount": 100,
1599
+ "point_amount_unit": "absolute",
1600
+ "product_code": "b1",
1601
+ "group_id": 2
1602
+ },
1603
+ {
1604
+ "point_amount": 100,
1605
+ "point_amount_unit": "absolute",
1606
+ "product_code": "b2",
1607
+ "group_id": 2
1608
+ }
1609
+ ]
1610
+ }
1611
+ ```
1612
+
1613
+ このキャンペーンが設定された状態で、商品a1、b1が同時に購入された場合、各商品に対する個別のルールが適用された上での総和がポイント付与値になりますが、付与値の上限が100ポイントになります。つまり100 + 200=300と計算されますが上限額の100ポイントが実際の付与値になります。商品a1、a2、 b1、b2が同時に購入された場合は100 + 100 + 200 + 200=600ですが上限額の100がポイント付与値になります。 商品a1、a2が同時に購入された場合は全商品グループから1種以上購入されるという条件を満たしていないためポイントは付与されません。
1614
+
1615
+ ```json
1616
+ {
1617
+ "type": "boolean"
1618
+ }
1619
+ ```
1620
+
1621
+ **`max_point_amount`**
1622
+
1623
+
1624
+ キャンペーンによって付与される1取引当たりのポイント数の上限を指定します。デフォルトは未指定です。
1625
+
1626
+ このパラメータが指定されている場合、amount_based_point_rules や product_based_point_rules によって計算されるポイント付与値がmax_point_amountを越えている場合、max_point_amountの値がポイント付与値となり、越えていない場合はその値がポイント付与値となります。
1627
+
1628
+ ```json
1629
+ {
1630
+ "type": "integer",
1631
+ "minimum": 1
1632
+ }
1633
+ ```
1634
+
1635
+ **`max_total_point_amount`**
1636
+
1637
+
1638
+ キャンペーンによって付与される1人当たりの累計ポイント数の上限を指定します。デフォルトは未指定です。
1639
+
1640
+ このパラメータが指定されている場合、各ユーザに対してそのキャンペーンによって過去付与されたポイントの累積値が記録されるようになります。
1641
+ 累積ポイント数がmax_total_point_amountを超えない限りにおいてキャンペーンで算出されたポイントが付与されます。
1642
+
1643
+ ```json
1644
+ {
1645
+ "type": "integer",
1646
+ "minimum": 1
1647
+ }
1648
+ ```
1649
+
1650
+ **`applicable_account_metadata`**
1651
+
1652
+
1653
+ ウォレットに紐付くメタデータが特定の値を持つときにのみ発火するキャンペーンを登録します。
1654
+ メタデータの属性名 key とメタデータの値 value の組をオブジェクトとして指定します。
1655
+ ウォレットのメタデータはCreateUserAccountやUpdateCustomerAccountで登録できます。
1656
+
1657
+ オプショナルパラメータtestによって比較方法を指定することができます。
1658
+ デフォルトは equal で、その他に not-equalを指定可能です。
1659
+
1660
+ 例1: 取引が行なわれたウォレットのメタデータに住所として東京が指定されているときのみ発火
1661
+
1662
+ ```javascript
1663
+ {
1664
+ "key": "prefecture",
1665
+ "value": "tokyo"
1666
+ }
1667
+ ```
1668
+
1669
+ 例2: 取引が行なわれたウォレットのメタデータに住所として東京以外が指定されているときのみ発火
1670
+
1671
+ ```javascript
1672
+ {
1673
+ "key": "prefecture",
1674
+ "value": "tokyo",
1675
+ "test": "not-equal"
1676
+ }
1677
+ ```
1678
+
1679
+ ```json
1680
+ {
1681
+ "type": "object"
1682
+ }
1683
+ ```
1684
+
1685
+ **`applicable_transaction_metadata`**
1686
+
1687
+
1688
+ 取引時に指定するメタデータが特定の値を持つときにのみ発火するキャンペーンを登録します。
1689
+ メタデータの属性名 key とメタデータの値 value の組をオブジェクトとして指定します。
1690
+ 取引のメタデータはCreatePaymentTransactionやCreateExternalTransactionで登録できます。
1691
+
1692
+ オプショナルパラメータtestによって比較方法を指定することができます。
1693
+ デフォルトは equal で、その他に not-equalを指定可能です。
1694
+
1695
+ 例1: 取引のメタデータに会員ランクとしてbronzeが指定されているときのみ発火
1696
+
1697
+ ```javascript
1698
+ {
1699
+ "key": "rank",
1700
+ "value": "bronze"
1701
+ }
1702
+ ```
1703
+
1704
+ 例2: 取引のメタデータに会員ランクとしてbronze以外が指定されているときのみ発火
1705
+
1706
+ ```javascript
1707
+ {
1708
+ "key": "rank",
1709
+ "value": "bronze",
1710
+ "test": "not-equal"
1711
+ }
1712
+ ```
1713
+
1714
+ ```json
1715
+ {
1716
+ "type": "object"
1717
+ }
1718
+ ```
1719
+
1720
+ **`budget_caps_amount`**
1721
+
1722
+
1723
+ キャンペーンの予算上限を指定します。
1724
+
1725
+ キャンペーン予算上限が設定されておらずこのパラメータに数値が指定されている場合、このキャンペーンの適用により付与されたポイント全体を定期的に集計し、その合計が上限を越えていた場合にはキャンペーンを無効にします。
1726
+ 一度この値を越えて無効となったキャンペーンを再度有効にすることは出来ません。
1727
+ キャンペーン予算上限が設定されておらずこのパラメータにnullが指定されている場合、何も発生しない。
1728
+ キャンペーン予算上限が設定されておりこのパラメータにnullが指定された場合、キャンペーン予算上限は止まります。
1729
+
1730
+ ```json
1731
+ {
1732
+ "type": "integer",
1733
+ "minimum": 1,
1734
+ "maximum": 10000000000
1735
+ }
1736
+ ```
1737
+
1738
+
1739
+
1740
+ 成功したときは
1741
+ [Campaign](./responses.md#campaign)
1742
+ を返します
1743
+
1744
+
1745
+
1746
+ ---
1747
+
1748
+
1749
+