1<?php
2
3// File generated from our OpenAPI spec
4
5namespace Stripe\Service;
6
7class SkuService extends \Stripe\Service\AbstractService
8{
9    /**
10     * Returns a list of your SKUs. The SKUs are returned sorted by creation date, with
11     * the most recently created SKUs appearing first.
12     *
13     * @param null|array $params
14     * @param null|array|\Stripe\Util\RequestOptions $opts
15     *
16     * @throws \Stripe\Exception\ApiErrorException if the request fails
17     *
18     * @return \Stripe\Collection
19     */
20    public function all($params = null, $opts = null)
21    {
22        return $this->requestCollection('get', '/v1/skus', $params, $opts);
23    }
24
25    /**
26     * Creates a new SKU associated with a product.
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\SKU
34     */
35    public function create($params = null, $opts = null)
36    {
37        return $this->request('post', '/v1/skus', $params, $opts);
38    }
39
40    /**
41     * Delete a SKU. Deleting a SKU is only possible until it has been used in an
42     * order.
43     *
44     * @param string $id
45     * @param null|array $params
46     * @param null|array|\Stripe\Util\RequestOptions $opts
47     *
48     * @throws \Stripe\Exception\ApiErrorException if the request fails
49     *
50     * @return \Stripe\SKU
51     */
52    public function delete($id, $params = null, $opts = null)
53    {
54        return $this->request('delete', $this->buildPath('/v1/skus/%s', $id), $params, $opts);
55    }
56
57    /**
58     * Retrieves the details of an existing SKU. Supply the unique SKU identifier from
59     * either a SKU creation request or from the product, and Stripe will return the
60     * corresponding SKU information.
61     *
62     * @param string $id
63     * @param null|array $params
64     * @param null|array|\Stripe\Util\RequestOptions $opts
65     *
66     * @throws \Stripe\Exception\ApiErrorException if the request fails
67     *
68     * @return \Stripe\SKU
69     */
70    public function retrieve($id, $params = null, $opts = null)
71    {
72        return $this->request('get', $this->buildPath('/v1/skus/%s', $id), $params, $opts);
73    }
74
75    /**
76     * Updates the specific SKU by setting the values of the parameters passed. Any
77     * parameters not provided will be left unchanged.
78     *
79     * Note that a SKU’s <code>attributes</code> are not editable. Instead, you would
80     * need to deactivate the existing SKU and create a new one with the new attribute
81     * values.
82     *
83     * @param string $id
84     * @param null|array $params
85     * @param null|array|\Stripe\Util\RequestOptions $opts
86     *
87     * @throws \Stripe\Exception\ApiErrorException if the request fails
88     *
89     * @return \Stripe\SKU
90     */
91    public function update($id, $params = null, $opts = null)
92    {
93        return $this->request('post', $this->buildPath('/v1/skus/%s', $id), $params, $opts);
94    }
95}
96