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.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/ChartMogul_Metrics_MRRChurnRate/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +40 -0
- data/ChartMogul_Metrics_MRRChurnRate/behaves_like_Metrics_API_resource/should_have_entries.yml +40 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +82 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/changelog.md +8 -0
- data/chartmogul-ruby.gemspec +29 -0
- data/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_interracts_with_the_API.yml +189 -0
- data/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_raises_errors_on_404.yml +46 -0
- data/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_raises_errors_on_422.yml +48 -0
- data/fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/adds_custom_attributes.yml +80 -0
- data/fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/adds_required_tags.yml +79 -0
- data/fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/raises_404_if_no_customers_found.yml +38 -0
- data/fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/removes_custom_attributes.yml +80 -0
- data/fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/removes_tags.yml +80 -0
- data/fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/returns_all_customers_through_list_all_endpoint.yml +47 -0
- data/fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/returns_customer_through_retrieve_endpoint.yml +42 -0
- data/fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/returns_right_customers_through_search_endpoint.yml +43 -0
- data/fixtures/vcr_cassettes/ChartMogul_Enrichment_Customer/API_Interactions/updates_custom_attributes.yml +82 -0
- data/fixtures/vcr_cassettes/ChartMogul_Import_Customer/API_Interactions/correctly_handles_a_422_response.yml +50 -0
- data/fixtures/vcr_cassettes/ChartMogul_Import_Customer/API_Interactions/correctly_interracts_with_the_API.yml +240 -0
- data/fixtures/vcr_cassettes/ChartMogul_Import_CustomerInvoices/API_Interactions/correctly_interracts_with_the_API.yml +298 -0
- data/fixtures/vcr_cassettes/ChartMogul_Import_DataSource/API_Interactions/correctly_interracts_with_the_API.yml +189 -0
- data/fixtures/vcr_cassettes/ChartMogul_Import_DataSource/API_Interactions/correctly_raises_errors_on_404.yml +46 -0
- data/fixtures/vcr_cassettes/ChartMogul_Import_DataSource/API_Interactions/correctly_raises_errors_on_422.yml +48 -0
- data/fixtures/vcr_cassettes/ChartMogul_Import_Plan/API_Interractions/correctly_handles_a_422_error.yml +51 -0
- data/fixtures/vcr_cassettes/ChartMogul_Import_Plan/API_Interractions/correctly_interracts_with_the_API.yml +152 -0
- data/fixtures/vcr_cassettes/ChartMogul_Import_Subscription/API_Interactions/correctly_interracts_with_the_API.yml +340 -0
- data/fixtures/vcr_cassettes/ChartMogul_Import_Transactions_Payment/API_Interactions/correctly_interracts_with_the_API.yml +243 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARPA/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +42 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARPA/behaves_like_Metrics_API_resource/should_have_entries.yml +42 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARR/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +42 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_ARR/behaves_like_Metrics_API_resource/should_have_entries.yml +42 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_ASP/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +40 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_ASP/behaves_like_Metrics_API_resource/should_have_entries.yml +40 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_Activity/behaves_like_Pageable/should_be_pageable.yml +41 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_Activity/should_have_Activity_entries.yml +41 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_AllKeyMetric/should_have_entries.yml +42 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerChurnRate/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +40 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerChurnRate/behaves_like_Metrics_API_resource/should_have_entries.yml +40 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerCount/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +42 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_CustomerCount/behaves_like_Metrics_API_resource/should_have_entries.yml +42 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_LTV/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +40 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_LTV/behaves_like_Metrics_API_resource/should_have_entries.yml +40 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRR/behaves_like_Summary/should_have_summary.yml +42 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRR/should_have_entries.yml +42 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRRChurnRate/behaves_like_Metrics_API_resource/behaves_like_Summary/should_have_summary.yml +40 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_MRRChurnRate/behaves_like_Metrics_API_resource/should_have_entries.yml +40 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_Subscription/behaves_like_Pageable/should_be_pageable.yml +40 -0
- data/fixtures/vcr_cassettes/ChartMogul_Metrics_Subscription/should_have_Subscription_entries.yml +40 -0
- data/lib/chartmogul.rb +77 -0
- data/lib/chartmogul/api/actions/all.rb +28 -0
- data/lib/chartmogul/api/actions/create.rb +39 -0
- data/lib/chartmogul/api/actions/custom.rb +42 -0
- data/lib/chartmogul/api/actions/destroy.rb +14 -0
- data/lib/chartmogul/api/actions/update.rb +19 -0
- data/lib/chartmogul/api_resource.rb +57 -0
- data/lib/chartmogul/concerns/entries.rb +37 -0
- data/lib/chartmogul/concerns/pageable.rb +14 -0
- data/lib/chartmogul/concerns/summary.rb +20 -0
- data/lib/chartmogul/config_attributes.rb +15 -0
- data/lib/chartmogul/configuration.rb +6 -0
- data/lib/chartmogul/enrichment/customer.rb +114 -0
- data/lib/chartmogul/errors/chartmogul_error.rb +19 -0
- data/lib/chartmogul/errors/configuration_error.rb +4 -0
- data/lib/chartmogul/errors/forbidden_error.rb +4 -0
- data/lib/chartmogul/errors/not_found_error.rb +4 -0
- data/lib/chartmogul/errors/resource_invalid_error.rb +4 -0
- data/lib/chartmogul/errors/schema_invalid_error.rb +4 -0
- data/lib/chartmogul/import/customer.rb +38 -0
- data/lib/chartmogul/import/customer_invoices.rb +40 -0
- data/lib/chartmogul/import/data_source.rb +19 -0
- data/lib/chartmogul/import/invoice.rb +64 -0
- data/lib/chartmogul/import/line_items/one_time.rb +25 -0
- data/lib/chartmogul/import/line_items/subscription.rb +31 -0
- data/lib/chartmogul/import/plan.rb +21 -0
- data/lib/chartmogul/import/subscription.rb +30 -0
- data/lib/chartmogul/import/transactions/payment.rb +26 -0
- data/lib/chartmogul/import/transactions/refund.rb +26 -0
- data/lib/chartmogul/metrics/activity.rb +32 -0
- data/lib/chartmogul/metrics/all_key_metrics.rb +25 -0
- data/lib/chartmogul/metrics/arpa.rb +19 -0
- data/lib/chartmogul/metrics/arr.rb +19 -0
- data/lib/chartmogul/metrics/asp.rb +19 -0
- data/lib/chartmogul/metrics/base.rb +56 -0
- data/lib/chartmogul/metrics/customer_churn_rate.rb +19 -0
- data/lib/chartmogul/metrics/customer_count.rb +19 -0
- data/lib/chartmogul/metrics/ltv.rb +19 -0
- data/lib/chartmogul/metrics/mrr.rb +26 -0
- data/lib/chartmogul/metrics/mrr_churn_rate.rb +19 -0
- data/lib/chartmogul/metrics/subscription.rb +35 -0
- data/lib/chartmogul/object.rb +119 -0
- data/lib/chartmogul/resource_path.rb +42 -0
- data/lib/chartmogul/summary.rb +7 -0
- data/lib/chartmogul/utils/hash_snake_caser.rb +50 -0
- data/lib/chartmogul/utils/json_parser.rb +11 -0
- data/lib/chartmogul/version.rb +3 -0
- 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
|
+
|