Class: LemonSqueezy::Subscription

Inherits:
Object
  • Object
show all
Defined in:
lib/lemon_squeezy/models/subscription.rb

Class Method Summary collapse

Methods inherited from Object

#initialize, #to_ostruct

Constructor Details

This class inherits a constructor from LemonSqueezy::Object

Class Method Details

.cancel(id:) ⇒ Object



60
61
62
63
# File 'lib/lemon_squeezy/models/subscription.rb', line 60

def cancel(id:)
  response = Client.delete_request("subscriptions/#{id}")
  Subscription.new(response.body["data"]) if response.success?
end

.change_plan(id:, plan_id:, variant_id:, invoice_immediately: false, disable_prorations: false) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/lemon_squeezy/models/subscription.rb', line 80

def change_plan(id:, plan_id:, variant_id:, invoice_immediately: false, disable_prorations: false)
  body = {
    data: {
      type: "subscriptions",
      id: id.to_s,
      attributes: {
        product_id: plan_id,
        variant_id: variant_id,
        invoice_immediately: invoice_immediately,
        disable_prorations: disable_prorations
      }
    }
  }

  response = Client.patch_request("subscriptions/#{id}", body: body.to_json)
  Subscription.new(response.body["data"]) if response.success?
end

.list(**params) ⇒ Object



6
7
8
9
# File 'lib/lemon_squeezy/models/subscription.rb', line 6

def list(**params)
  response = Client.get_request("subscriptions", params: {filter: params})
  Collection.from_response(response, type: Subscription)
end

.pause(id:, kind:, resumes_at: nil) ⇒ Object

Kind: void or free



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/lemon_squeezy/models/subscription.rb', line 30

def pause(id:, kind:, resumes_at: nil)
  body = {
    data: {
      type: "subscriptions",
      id: id.to_s,
      attributes: {
        pause: {mode: kind, resumes_at: resumes_at}
      }
    }
  }

  response = Client.patch_request("subscriptions/#{id}", body: body.to_json)
  Subscription.new(response.body["data"]) if response.success?
end

.retrieve(id:) ⇒ Object



11
12
13
14
# File 'lib/lemon_squeezy/models/subscription.rb', line 11

def retrieve(id:)
  response = Client.get_request("subscriptions/#{id}")
  Subscription.new(response.body["data"]) if response.success?
end

.uncancel(id:) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/lemon_squeezy/models/subscription.rb', line 65

def uncancel(id:)
  body = {
    data: {
      type: "subscriptions",
      id: id.to_s,
      attributes: {
        cancelled: false
      }
    }
  }

  response = Client.patch_request("subscriptions/#{id}", body: body.to_json)
  Subscription.new(response.body["data"]) if response.success?
end

.unpause(id:) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/lemon_squeezy/models/subscription.rb', line 45

def unpause(id:)
  body = {
    data: {
      type: "subscriptions",
      id: id.to_s,
      attributes: {
        pause: nil
      }
    }
  }

  response = Client.patch_request("subscriptions/#{id}", body: body.to_json)
  Subscription.new(response.body["data"]) if response.success?
end

.update(id:, **attributes) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/lemon_squeezy/models/subscription.rb', line 16

def update(id:, **attributes)
  body = {
    data: {
      type: "subscriptions",
      id: id.to_s,
      attributes: attributes
    }
  }

  response = Client.patch_request("subscriptions/#{id}", body: body.to_json)
  Subscription.new(response.body["data"]) if response.success?
end