chartmogul-ruby 0.1.1

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 (105) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -0
  5. data/ChartMogul_Metrics_MRRChurnRate/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +40 -0
  6. data/ChartMogul_Metrics_MRRChurnRate/behaves_like_Metrics_API_resource/should_have_entries.yml +40 -0
  7. data/Gemfile +4 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +82 -0
  10. data/Rakefile +6 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/changelog.md +8 -0
  14. data/chartmogul-ruby.gemspec +29 -0
  15. data/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_interracts_with_the_API.yml +189 -0
  16. data/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_raises_errors_on_404.yml +46 -0
  17. data/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_raises_errors_on_422.yml +48 -0
  18. data/fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/adds_custom_attributes.yml +80 -0
  19. data/fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/adds_required_tags.yml +79 -0
  20. data/fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/raises_404_if_no_customers_found.yml +38 -0
  21. data/fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/removes_custom_attributes.yml +80 -0
  22. data/fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/removes_tags.yml +80 -0
  23. data/fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/returns_all_customers_through_list_all_endpoint.yml +47 -0
  24. data/fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/returns_customer_through_retrieve_endpoint.yml +42 -0
  25. data/fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/returns_right_customers_through_search_endpoint.yml +43 -0
  26. data/fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/updates_custom_attributes.yml +82 -0
  27. data/fixtures/vcr_cassettes/ChartMogul_Import_Customer/API_Interactions/correctly_handles_a_422_response.yml +50 -0
  28. data/fixtures/vcr_cassettes/ChartMogul_Import_Customer/API_Interactions/correctly_interracts_with_the_API.yml +240 -0
  29. data/fixtures/vcr_cassettes/ChartMogul_Import_CustomerInvoices/API_Interactions/correctly_interracts_with_the_API.yml +298 -0
  30. data/fixtures/vcr_cassettes/ChartMogul_Import_DataSource/API_Interactions/correctly_interracts_with_the_API.yml +189 -0
  31. data/fixtures/vcr_cassettes/ChartMogul_Import_DataSource/API_Interactions/correctly_raises_errors_on_404.yml +46 -0
  32. data/fixtures/vcr_cassettes/ChartMogul_Import_DataSource/API_Interactions/correctly_raises_errors_on_422.yml +48 -0
  33. data/fixtures/vcr_cassettes/ChartMogul_Import_Plan/API_Interractions/correctly_handles_a_422_error.yml +51 -0
  34. data/fixtures/vcr_cassettes/ChartMogul_Import_Plan/API_Interractions/correctly_interracts_with_the_API.yml +152 -0
  35. data/fixtures/vcr_cassettes/ChartMogul_Import_Subscription/API_Interactions/correctly_interracts_with_the_API.yml +340 -0
  36. data/fixtures/vcr_cassettes/ChartMogul_Import_Transactions_Payment/API_Interactions/correctly_interracts_with_the_API.yml +243 -0
  37. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARPA/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +42 -0
  38. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARPA/behaves_like_Metrics_API_resource/should_have_entries.yml +42 -0
  39. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARR/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +42 -0
  40. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARR/behaves_like_Metrics_API_resource/should_have_entries.yml +42 -0
  41. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ASP/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +40 -0
  42. data/fixtures/vcr_cassettes/ChartMogul_Metrics_ASP/behaves_like_Metrics_API_resource/should_have_entries.yml +40 -0
  43. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Activity/behaves_like_Pageable/should_be_pageable.yml +41 -0
  44. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Activity/should_have_Activity_entries.yml +41 -0
  45. data/fixtures/vcr_cassettes/ChartMogul_Metrics_AllKeyMetric/should_have_entries.yml +42 -0
  46. data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerChurnRate/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +40 -0
  47. data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerChurnRate/behaves_like_Metrics_API_resource/should_have_entries.yml +40 -0
  48. data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerCount/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +42 -0
  49. data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerCount/behaves_like_Metrics_API_resource/should_have_entries.yml +42 -0
  50. data/fixtures/vcr_cassettes/ChartMogul_Metrics_LTV/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +40 -0
  51. data/fixtures/vcr_cassettes/ChartMogul_Metrics_LTV/behaves_like_Metrics_API_resource/should_have_entries.yml +40 -0
  52. data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRR/behaves_like_Summary/should_have_summary.yml +42 -0
  53. data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRR/should_have_entries.yml +42 -0
  54. data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRRChurnRate/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +40 -0
  55. data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRRChurnRate/behaves_like_Metrics_API_resource/should_have_entries.yml +40 -0
  56. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Subscription/behaves_like_Pageable/should_be_pageable.yml +40 -0
  57. data/fixtures/vcr_cassettes/ChartMogul_Metrics_Subscription/should_have_Subscription_entries.yml +40 -0
  58. data/lib/chartmogul.rb +77 -0
  59. data/lib/chartmogul/api/actions/all.rb +28 -0
  60. data/lib/chartmogul/api/actions/create.rb +39 -0
  61. data/lib/chartmogul/api/actions/custom.rb +42 -0
  62. data/lib/chartmogul/api/actions/destroy.rb +14 -0
  63. data/lib/chartmogul/api/actions/update.rb +19 -0
  64. data/lib/chartmogul/api_resource.rb +57 -0
  65. data/lib/chartmogul/concerns/entries.rb +37 -0
  66. data/lib/chartmogul/concerns/pageable.rb +14 -0
  67. data/lib/chartmogul/concerns/summary.rb +20 -0
  68. data/lib/chartmogul/config_attributes.rb +15 -0
  69. data/lib/chartmogul/configuration.rb +6 -0
  70. data/lib/chartmogul/enrichment/customer.rb +114 -0
  71. data/lib/chartmogul/errors/chartmogul_error.rb +19 -0
  72. data/lib/chartmogul/errors/configuration_error.rb +4 -0
  73. data/lib/chartmogul/errors/forbidden_error.rb +4 -0
  74. data/lib/chartmogul/errors/not_found_error.rb +4 -0
  75. data/lib/chartmogul/errors/resource_invalid_error.rb +4 -0
  76. data/lib/chartmogul/errors/schema_invalid_error.rb +4 -0
  77. data/lib/chartmogul/import/customer.rb +38 -0
  78. data/lib/chartmogul/import/customer_invoices.rb +40 -0
  79. data/lib/chartmogul/import/data_source.rb +19 -0
  80. data/lib/chartmogul/import/invoice.rb +64 -0
  81. data/lib/chartmogul/import/line_items/one_time.rb +25 -0
  82. data/lib/chartmogul/import/line_items/subscription.rb +31 -0
  83. data/lib/chartmogul/import/plan.rb +21 -0
  84. data/lib/chartmogul/import/subscription.rb +30 -0
  85. data/lib/chartmogul/import/transactions/payment.rb +26 -0
  86. data/lib/chartmogul/import/transactions/refund.rb +26 -0
  87. data/lib/chartmogul/metrics/activity.rb +32 -0
  88. data/lib/chartmogul/metrics/all_key_metrics.rb +25 -0
  89. data/lib/chartmogul/metrics/arpa.rb +19 -0
  90. data/lib/chartmogul/metrics/arr.rb +19 -0
  91. data/lib/chartmogul/metrics/asp.rb +19 -0
  92. data/lib/chartmogul/metrics/base.rb +56 -0
  93. data/lib/chartmogul/metrics/customer_churn_rate.rb +19 -0
  94. data/lib/chartmogul/metrics/customer_count.rb +19 -0
  95. data/lib/chartmogul/metrics/ltv.rb +19 -0
  96. data/lib/chartmogul/metrics/mrr.rb +26 -0
  97. data/lib/chartmogul/metrics/mrr_churn_rate.rb +19 -0
  98. data/lib/chartmogul/metrics/subscription.rb +35 -0
  99. data/lib/chartmogul/object.rb +119 -0
  100. data/lib/chartmogul/resource_path.rb +42 -0
  101. data/lib/chartmogul/summary.rb +7 -0
  102. data/lib/chartmogul/utils/hash_snake_caser.rb +50 -0
  103. data/lib/chartmogul/utils/json_parser.rb +11 -0
  104. data/lib/chartmogul/version.rb +3 -0
  105. metadata +232 -0
@@ -0,0 +1,31 @@
1
+ module ChartMogul
2
+ module Import
3
+ module LineItems
4
+ class Subscription < ChartMogul::Object
5
+ readonly_attr :uuid
6
+
7
+ writeable_attr :type, default: 'subscription'
8
+ writeable_attr :subscription_external_id
9
+ writeable_attr :service_period_start, type: :time
10
+ writeable_attr :service_period_end, type: :time
11
+ writeable_attr :amount_in_cents
12
+ writeable_attr :cancelled_at, type: :time
13
+ writeable_attr :prorated
14
+ writeable_attr :quantity
15
+ writeable_attr :discount_amount_in_cents
16
+ writeable_attr :discount_code
17
+ writeable_attr :tax_amount_in_cents
18
+ writeable_attr :external_id
19
+
20
+ readonly_attr :subscription_uuid
21
+ writeable_attr :invoice_uuid
22
+ writeable_attr :plan_uuid
23
+
24
+ def initialize(attributes = {})
25
+ super(attributes)
26
+ @type = 'subscription'
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,21 @@
1
+ module ChartMogul
2
+ module Import
3
+ class Plan < APIResource
4
+ set_resource_name 'Plan'
5
+ set_resource_path '/v1/import/plans'
6
+ set_resource_root_key :plans
7
+
8
+ readonly_attr :uuid
9
+
10
+ writeable_attr :name
11
+ writeable_attr :interval_count
12
+ writeable_attr :interval_unit
13
+ writeable_attr :external_id
14
+
15
+ writeable_attr :data_source_uuid
16
+
17
+ include API::Actions::All
18
+ include API::Actions::Create
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,30 @@
1
+ module ChartMogul
2
+ module Import
3
+ class Subscription < APIResource
4
+ set_resource_name 'Subscription'
5
+ set_resource_path '/v1/import/customers/:customer_uuid/subscriptions'
6
+ set_resource_root_key :subscriptions
7
+
8
+ readonly_attr :uuid
9
+ readonly_attr :external_id
10
+ readonly_attr :cancellation_dates, default: []
11
+
12
+ readonly_attr :plan_uuid
13
+ readonly_attr :data_source_uuid
14
+ writeable_attr :customer_uuid
15
+
16
+ include API::Actions::All
17
+ include API::Actions::Custom
18
+
19
+ def set_cancellation_dates(cancellation_dates_array)
20
+ @cancellation_dates = cancellation_dates_array.map do |cancellation_date|
21
+ Time.parse(cancellation_date)
22
+ end
23
+ end
24
+
25
+ def cancel(cancelled_at)
26
+ custom!(:patch, "/v1/import/subscriptions/#{uuid}", cancelled_at: cancelled_at)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,26 @@
1
+ module ChartMogul
2
+ module Import
3
+ module Transactions
4
+ class Payment < APIResource
5
+ set_resource_name 'Payment Transaction'
6
+ set_resource_path '/v1/import/invoices/:invoice_uuid/transactions'
7
+
8
+ readonly_attr :uuid
9
+
10
+ writeable_attr :type, default: 'payment'
11
+ writeable_attr :date, type: :time
12
+ writeable_attr :result
13
+ writeable_attr :external_id
14
+
15
+ writeable_attr :invoice_uuid
16
+
17
+ def initialize(attributes = {})
18
+ super(attributes)
19
+ @type = 'payment'
20
+ end
21
+
22
+ include API::Actions::Create
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ module ChartMogul
2
+ module Import
3
+ module Transactions
4
+ class Refund < APIResource
5
+ set_resource_name 'Refund Transaction'
6
+ set_resource_path '/v1/import/invoices/:invoice_uuid/transactions'
7
+
8
+ readonly_attr :uuid
9
+
10
+ writeable_attr :type, default: 'refund'
11
+ writeable_attr :date, type: :time
12
+ writeable_attr :result
13
+ writeable_attr :external_id
14
+
15
+ writeable_attr :invoice_uuid
16
+
17
+ def initialize(attributes = {})
18
+ super(attributes)
19
+ @type = 'refund'
20
+ end
21
+
22
+ include API::Actions::Create
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,32 @@
1
+ module ChartMogul
2
+ module Metrics
3
+ class Activity < ChartMogul::Object
4
+ readonly_attr :id
5
+ readonly_attr :description
6
+ readonly_attr :type
7
+ readonly_attr :date, type: :time
8
+ readonly_attr :activity_arr
9
+ readonly_attr :activity_mrr
10
+ readonly_attr :activity_mrr_movement
11
+ readonly_attr :currency
12
+ readonly_attr :currency_sign
13
+
14
+ def self.all(options = {})
15
+ ChartMogul::Metrics::Activities.all(options)
16
+ end
17
+ end
18
+
19
+ class Activities < APIResource
20
+ set_resource_name 'Activities'
21
+ set_resource_path '/v1/customers/:customer_uuid/activities'
22
+
23
+ writeable_attr :customer_uuid
24
+
25
+ include Concerns::Entries
26
+ include Concerns::Pageable
27
+
28
+ set_entry_class Activity
29
+ end
30
+ end
31
+ end
32
+
@@ -0,0 +1,25 @@
1
+ module ChartMogul
2
+ module Metrics
3
+ class AllKeyMetric < ChartMogul::Object
4
+ readonly_attr :date, type: :date
5
+ readonly_attr :arpa
6
+ readonly_attr :arr
7
+ readonly_attr :asp
8
+ readonly_attr :customer_churn_rate
9
+ readonly_attr :customers
10
+ readonly_attr :ltv
11
+ readonly_attr :mrr
12
+ readonly_attr :mrr_churn_rate
13
+ end
14
+
15
+ class AllKeyMetrics < APIResource
16
+ set_resource_name 'All Key Metrics'
17
+ set_resource_path '/v1/metrics/all'
18
+
19
+ include Concerns::Entries
20
+
21
+ set_entry_class AllKeyMetric
22
+ end
23
+ end
24
+ end
25
+
@@ -0,0 +1,19 @@
1
+ module ChartMogul
2
+ module Metrics
3
+ class ARPA < ChartMogul::Object
4
+ readonly_attr :date, type: :date
5
+ readonly_attr :arpa
6
+ end
7
+
8
+ class ARPAs < APIResource
9
+ set_resource_name 'ARPAs'
10
+ set_resource_path '/v1/metrics/arpa'
11
+
12
+ include Concerns::Entries
13
+ include Concerns::Summary
14
+
15
+ set_entry_class ARPA
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,19 @@
1
+ module ChartMogul
2
+ module Metrics
3
+ class ARR < ChartMogul::Object
4
+ readonly_attr :date, type: :date
5
+ readonly_attr :arr
6
+ end
7
+
8
+ class ARRs < APIResource
9
+ set_resource_name 'ARRs'
10
+ set_resource_path '/v1/metrics/arr'
11
+
12
+ include Concerns::Entries
13
+ include Concerns::Summary
14
+
15
+ set_entry_class ARR
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,19 @@
1
+ module ChartMogul
2
+ module Metrics
3
+ class ASP < ChartMogul::Object
4
+ readonly_attr :date, type: :date
5
+ readonly_attr :asp
6
+ end
7
+
8
+ class ASPs < APIResource
9
+ set_resource_name 'ASPs'
10
+ set_resource_path '/v1/metrics/asp'
11
+
12
+ include Concerns::Entries
13
+ include Concerns::Summary
14
+
15
+ set_entry_class ASP
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,56 @@
1
+ module ChartMogul
2
+ module Metrics
3
+
4
+ def self.all(options = {})
5
+ ChartMogul::Metrics::AllKeyMetrics.all(preprocess_params(options))
6
+ end
7
+
8
+ def self.arpa(options = {})
9
+ ChartMogul::Metrics::ARPAs.all(preprocess_params(options))
10
+ end
11
+
12
+ def self.arr(options = {})
13
+ ChartMogul::Metrics::ARRs.all(preprocess_params(options))
14
+ end
15
+
16
+ def self.asp(options = {})
17
+ ChartMogul::Metrics::ASPs.all(preprocess_params(options))
18
+ end
19
+
20
+ def self.customer_churn_rate(options = {})
21
+ ChartMogul::Metrics::CustomerChurnRates.all(preprocess_params(options))
22
+ end
23
+
24
+ def self.customer_count(options = {})
25
+ ChartMogul::Metrics::CustomerCounts.all(preprocess_params(options))
26
+ end
27
+
28
+ def self.mrr(options = {})
29
+ ChartMogul::Metrics::MRRs.all(preprocess_params(options))
30
+ end
31
+
32
+ def self.ltv(options = {})
33
+ ChartMogul::Metrics::LTVs.all(preprocess_params(options))
34
+ end
35
+
36
+ def self.mrr_churn_rate(options = {})
37
+ ChartMogul::Metrics::MRRChurnRates.all(preprocess_params(options))
38
+ end
39
+
40
+ private
41
+
42
+ def self.preprocess_params(options)
43
+ [:start_date, :end_date].each do |param_name|
44
+ options[param_name.to_s.gsub('_', '-')] = options.delete(param_name) if options[param_name]
45
+ end
46
+
47
+ [:geo, :plans].each do |param_name|
48
+ if options[param_name] && options[param_name].kind_of?(Array)
49
+ options[param_name] = options[param_name].join(',')
50
+ end
51
+ end
52
+ options
53
+ end
54
+ end
55
+ end
56
+
@@ -0,0 +1,19 @@
1
+ module ChartMogul
2
+ module Metrics
3
+ class CustomerChurnRate < ChartMogul::Object
4
+ readonly_attr :date, type: :date
5
+ readonly_attr :customer_churn_rate
6
+ end
7
+
8
+ class CustomerChurnRates < APIResource
9
+ set_resource_name 'Customer Churn Rates'
10
+ set_resource_path '/v1/metrics/customer-churn-rate'
11
+
12
+ include Concerns::Entries
13
+ include Concerns::Summary
14
+
15
+ set_entry_class CustomerChurnRate
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,19 @@
1
+ module ChartMogul
2
+ module Metrics
3
+ class CustomerCount < ChartMogul::Object
4
+ readonly_attr :date, type: :date
5
+ readonly_attr :customers
6
+ end
7
+
8
+ class CustomerCounts < APIResource
9
+ set_resource_name 'Customer Counts'
10
+ set_resource_path '/v1/metrics/customer-count'
11
+
12
+ include Concerns::Entries
13
+ include Concerns::Summary
14
+
15
+ set_entry_class CustomerCount
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,19 @@
1
+ module ChartMogul
2
+ module Metrics
3
+ class LTV < ChartMogul::Object
4
+ readonly_attr :date, type: :date
5
+ readonly_attr :ltv
6
+ end
7
+
8
+ class LTVs < APIResource
9
+ set_resource_name 'LTVs'
10
+ set_resource_path '/v1/metrics/ltv'
11
+
12
+ include Concerns::Entries
13
+ include Concerns::Summary
14
+
15
+ set_entry_class LTV
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,26 @@
1
+ module ChartMogul
2
+ module Metrics
3
+ class MRR < ChartMogul::Object
4
+ readonly_attr :date, type: :date
5
+ readonly_attr :mrr
6
+
7
+ readonly_attr :mrr_new_business
8
+
9
+ readonly_attr :mrr_expansion
10
+ readonly_attr :mrr_contraction
11
+
12
+ readonly_attr :mrr_churn
13
+ readonly_attr :mrr_reactivation
14
+ end
15
+
16
+ class MRRs < APIResource
17
+ set_resource_name 'MRRs'
18
+ set_resource_path '/v1/metrics/mrr'
19
+
20
+ include Concerns::Entries
21
+ include Concerns::Summary
22
+
23
+ set_entry_class MRR
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,19 @@
1
+ module ChartMogul
2
+ module Metrics
3
+ class MRRChurnRate < ChartMogul::Object
4
+ readonly_attr :date, type: :date
5
+ readonly_attr :mrr_churn_rate
6
+ end
7
+
8
+ class MRRChurnRates < APIResource
9
+ set_resource_name 'MRR Churn Rates'
10
+ set_resource_path '/v1/metrics/mrr-churn-rate'
11
+
12
+ include Concerns::Entries
13
+ include Concerns::Summary
14
+
15
+ set_entry_class MRRChurnRate
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,35 @@
1
+ module ChartMogul
2
+ module Metrics
3
+ class Subscription < ChartMogul::Object
4
+ readonly_attr :id
5
+ readonly_attr :plan
6
+ readonly_attr :quantity
7
+ readonly_attr :mrr
8
+ readonly_attr :arr
9
+ readonly_attr :status
10
+ readonly_attr :billing_cycle
11
+ readonly_attr :billing_cycle_count
12
+ readonly_attr :start_date, type: :time
13
+ readonly_attr :end_date, type: :time
14
+ readonly_attr :currency
15
+ readonly_attr :currency_sign
16
+
17
+ def self.all(options = {})
18
+ ChartMogul::Metrics::Subscriptions.all(options)
19
+ end
20
+ end
21
+
22
+ class Subscriptions < APIResource
23
+ set_resource_name 'Subscriptions'
24
+ set_resource_path '/v1/customers/:customer_uuid/subscriptions'
25
+
26
+ writeable_attr :customer_uuid
27
+
28
+ include Concerns::Entries
29
+ include Concerns::Pageable
30
+
31
+ set_entry_class Subscription
32
+ end
33
+ end
34
+ end
35
+