1<?php
2
3// File generated from our OpenAPI spec
4
5namespace Stripe\Service;
6
7class PromotionCodeService extends \Stripe\Service\AbstractService
8{
9    /**
10     * Returns a list of your promotion codes.
11     *
12     * @param null|array $params
13     * @param null|array|\Stripe\Util\RequestOptions $opts
14     *
15     * @throws \Stripe\Exception\ApiErrorException if the request fails
16     *
17     * @return \Stripe\Collection
18     */
19    public function all($params = null, $opts = null)
20    {
21        return $this->requestCollection('get', '/v1/promotion_codes', $params, $opts);
22    }
23
24    /**
25     * A promotion code points to a coupon. You can optionally restrict the code to a
26     * specific customer, redemption limit, and expiration date.
27     *
28     * @param null|array $params
29     * @param null|array|\Stripe\Util\RequestOptions $opts
30     *
31     * @throws \Stripe\Exception\ApiErrorException if the request fails
32     *
33     * @return \Stripe\PromotionCode
34     */
35    public function create($params = null, $opts = null)
36    {
37        return $this->request('post', '/v1/promotion_codes', $params, $opts);
38    }
39
40    /**
41     * Retrieves the promotion code with the given ID.
42     *
43     * @param string $id
44     * @param null|array $params
45     * @param null|array|\Stripe\Util\RequestOptions $opts
46     *
47     * @throws \Stripe\Exception\ApiErrorException if the request fails
48     *
49     * @return \Stripe\PromotionCode
50     */
51    public function retrieve($id, $params = null, $opts = null)
52    {
53        return $this->request('get', $this->buildPath('/v1/promotion_codes/%s', $id), $params, $opts);
54    }
55
56    /**
57     * Updates the specified promotion code by setting the values of the parameters
58     * passed. Most fields are, by design, not editable.
59     *
60     * @param string $id
61     * @param null|array $params
62     * @param null|array|\Stripe\Util\RequestOptions $opts
63     *
64     * @throws \Stripe\Exception\ApiErrorException if the request fails
65     *
66     * @return \Stripe\PromotionCode
67     */
68    public function update($id, $params = null, $opts = null)
69    {
70        return $this->request('post', $this->buildPath('/v1/promotion_codes/%s', $id), $params, $opts);
71    }
72}
73