1<?php
2
3// File generated from our OpenAPI spec
4
5namespace Stripe\Service;
6
7class PlanService extends \Stripe\Service\AbstractService
8{
9    /**
10     * Returns a list of your plans.
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/plans', $params, $opts);
22    }
23
24    /**
25     * You can now model subscriptions more flexibly using the <a href="#prices">Prices
26     * API</a>. It replaces the Plans API and is backwards compatible to simplify your
27     * migration.
28     *
29     * @param null|array $params
30     * @param null|array|\Stripe\Util\RequestOptions $opts
31     *
32     * @throws \Stripe\Exception\ApiErrorException if the request fails
33     *
34     * @return \Stripe\Plan
35     */
36    public function create($params = null, $opts = null)
37    {
38        return $this->request('post', '/v1/plans', $params, $opts);
39    }
40
41    /**
42     * Deleting plans means new subscribers can’t be added. Existing subscribers aren’t
43     * affected.
44     *
45     * @param string $id
46     * @param null|array $params
47     * @param null|array|\Stripe\Util\RequestOptions $opts
48     *
49     * @throws \Stripe\Exception\ApiErrorException if the request fails
50     *
51     * @return \Stripe\Plan
52     */
53    public function delete($id, $params = null, $opts = null)
54    {
55        return $this->request('delete', $this->buildPath('/v1/plans/%s', $id), $params, $opts);
56    }
57
58    /**
59     * Retrieves the plan with the given ID.
60     *
61     * @param string $id
62     * @param null|array $params
63     * @param null|array|\Stripe\Util\RequestOptions $opts
64     *
65     * @throws \Stripe\Exception\ApiErrorException if the request fails
66     *
67     * @return \Stripe\Plan
68     */
69    public function retrieve($id, $params = null, $opts = null)
70    {
71        return $this->request('get', $this->buildPath('/v1/plans/%s', $id), $params, $opts);
72    }
73
74    /**
75     * Updates the specified plan by setting the values of the parameters passed. Any
76     * parameters not provided are left unchanged. By design, you cannot change a
77     * plan’s ID, amount, currency, or billing cycle.
78     *
79     * @param string $id
80     * @param null|array $params
81     * @param null|array|\Stripe\Util\RequestOptions $opts
82     *
83     * @throws \Stripe\Exception\ApiErrorException if the request fails
84     *
85     * @return \Stripe\Plan
86     */
87    public function update($id, $params = null, $opts = null)
88    {
89        return $this->request('post', $this->buildPath('/v1/plans/%s', $id), $params, $opts);
90    }
91}
92