Class: Stigg::Resources::V1::Customers

Inherits:
Object
  • Object
show all
Defined in:
lib/stigg/resources/v1/customers.rb,
lib/stigg/resources/v1/customers/integrations.rb,
lib/stigg/resources/v1/customers/payment_method.rb,
lib/stigg/resources/v1/customers/promotional_entitlements.rb

Defined Under Namespace

Classes: Integrations, PaymentMethod, PromotionalEntitlements

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client:) ⇒ Customers

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Customers.

Parameters:



291
292
293
294
295
296
# File 'lib/stigg/resources/v1/customers.rb', line 291

def initialize(client:)
  @client = client
  @payment_method = Stigg::Resources::V1::Customers::PaymentMethod.new(client: client)
  @promotional_entitlements = Stigg::Resources::V1::Customers::PromotionalEntitlements.new(client: client)
  @integrations = Stigg::Resources::V1::Customers::Integrations.new(client: client)
end

Instance Attribute Details

#integrationsStigg::Resources::V1::Customers::Integrations (readonly)



16
17
18
# File 'lib/stigg/resources/v1/customers.rb', line 16

def integrations
  @integrations
end

#payment_methodStigg::Resources::V1::Customers::PaymentMethod (readonly)

Operations related to customers



9
10
11
# File 'lib/stigg/resources/v1/customers.rb', line 9

def payment_method
  @payment_method
end

#promotional_entitlementsStigg::Resources::V1::Customers::PromotionalEntitlements (readonly)

Operations related to promotional entitlements



13
14
15
# File 'lib/stigg/resources/v1/customers.rb', line 13

def promotional_entitlements
  @promotional_entitlements
end

Instance Method Details

#archive(id, request_options: {}) ⇒ Stigg::Models::V1::CustomerResponse

Archives a customer, preventing new subscriptions. Optionally cancels existing subscriptions.

Parameters:

  • id (String)

    The unique identifier of the entity

  • request_options (Stigg::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



128
129
130
131
132
133
134
135
# File 'lib/stigg/resources/v1/customers.rb', line 128

def archive(id, params = {})
  @client.request(
    method: :post,
    path: ["api/v1/customers/%1$s/archive", id],
    model: Stigg::V1::CustomerResponse,
    options: params[:request_options]
  )
end

#import(customers:, integration_id: nil, request_options: {}) ⇒ Stigg::Models::V1::CustomerImportResponse

Imports multiple customers in bulk. Used for migrating customer data from external systems.

Parameters:

Returns:

See Also:



151
152
153
154
155
156
157
158
159
160
# File 'lib/stigg/resources/v1/customers.rb', line 151

def import(params)
  parsed, options = Stigg::V1::CustomerImportParams.dump_request(params)
  @client.request(
    method: :post,
    path: "api/v1/customers/import",
    body: parsed,
    model: Stigg::Models::V1::CustomerImportResponse,
    options: options
  )
end

#list(after: nil, before: nil, created_at: nil, email: nil, limit: nil, name: nil, request_options: {}) ⇒ Stigg::Internal::MyCursorIDPage<Stigg::Models::V1::CustomerListResponse>

Retrieves a paginated list of customers in the environment.

Parameters:

  • after (String)

    Return items that come after this cursor

  • before (String)

    Return items that come before this cursor

  • created_at (Stigg::Models::V1::CustomerListParams::CreatedAt)

    Filter by creation date using range operators: gt, gte, lt, lte

  • email (String)

    Filter by exact customer email address

  • limit (Integer)

    Maximum number of items to return

  • name (String)

    Filter by exact customer name

  • request_options (Stigg::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/stigg/resources/v1/customers.rb', line 103

def list(params = {})
  parsed, options = Stigg::V1::CustomerListParams.dump_request(params)
  query = Stigg::Internal::Util.encode_query_params(parsed)
  @client.request(
    method: :get,
    path: "api/v1/customers",
    query: query.transform_keys(created_at: "createdAt"),
    page: Stigg::Internal::MyCursorIDPage,
    model: Stigg::Models::V1::CustomerListResponse,
    options: options
  )
end

#list_resources(id, after: nil, before: nil, limit: nil, request_options: {}) ⇒ Stigg::Internal::MyCursorIDPage<Stigg::Models::V1::CustomerListResourcesResponse>

Retrieves a paginated list of resources within the same customer.

Parameters:

  • id (String)

    The unique identifier of the entity

  • after (String)

    Return items that come after this cursor

  • before (String)

    Return items that come before this cursor

  • limit (Integer)

    Maximum number of items to return

  • request_options (Stigg::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



179
180
181
182
183
184
185
186
187
188
189
190
# File 'lib/stigg/resources/v1/customers.rb', line 179

def list_resources(id, params = {})
  parsed, options = Stigg::V1::CustomerListResourcesParams.dump_request(params)
  query = Stigg::Internal::Util.encode_query_params(parsed)
  @client.request(
    method: :get,
    path: ["api/v1/customers/%1$s/resources", id],
    query: query,
    page: Stigg::Internal::MyCursorIDPage,
    model: Stigg::Models::V1::CustomerListResourcesResponse,
    options: options
  )
end

#provision(id:, billing_currency: nil, billing_id: nil, coupon_id: nil, default_payment_method: nil, email: nil, integrations: nil, language: nil, metadata: nil, name: nil, passthrough: nil, timezone: nil, request_options: {}) ⇒ Stigg::Models::V1::CustomerResponse

Creates a new customer and optionally provisions an initial subscription in a single operation.

Parameters:

Returns:

See Also:



226
227
228
229
230
231
232
233
234
235
# File 'lib/stigg/resources/v1/customers.rb', line 226

def provision(params)
  parsed, options = Stigg::V1::CustomerProvisionParams.dump_request(params)
  @client.request(
    method: :post,
    path: "api/v1/customers",
    body: parsed,
    model: Stigg::V1::CustomerResponse,
    options: options
  )
end

#retrieve(id, request_options: {}) ⇒ Stigg::Models::V1::CustomerResponse

Retrieves a customer by their unique identifier, including billing information and subscription status.

Parameters:

  • id (String)

    The unique identifier of the entity

  • request_options (Stigg::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



30
31
32
33
34
35
36
37
# File 'lib/stigg/resources/v1/customers.rb', line 30

def retrieve(id, params = {})
  @client.request(
    method: :get,
    path: ["api/v1/customers/%1$s", id],
    model: Stigg::V1::CustomerResponse,
    options: params[:request_options]
  )
end

#retrieve_entitlements(id, resource_id: nil, request_options: {}) ⇒ Stigg::Models::V1::CustomerRetrieveEntitlementsResponse

Retrieves the effective entitlements for a customer or resource, including feature and credit entitlements.

Warning: This REST API endpoint lacks built-in client-side caching, fallback mechanisms, and low-latency guarantees. It is not recommended for hot-path entitlement checks. For production use, consider using the Stigg Node Server SDK with caching or the Sidecar for low-latency cached responses.

Parameters:

  • id (String)

    The unique identifier of the entity

  • resource_id (String)

    Resource ID to scope entitlements to a specific resource

  • request_options (Stigg::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



256
257
258
259
260
261
262
263
264
265
266
# File 'lib/stigg/resources/v1/customers.rb', line 256

def retrieve_entitlements(id, params = {})
  parsed, options = Stigg::V1::CustomerRetrieveEntitlementsParams.dump_request(params)
  query = Stigg::Internal::Util.encode_query_params(parsed)
  @client.request(
    method: :get,
    path: ["api/v1/customers/%1$s/entitlements", id],
    query: query.transform_keys(resource_id: "resourceId"),
    model: Stigg::Models::V1::CustomerRetrieveEntitlementsResponse,
    options: options
  )
end

#unarchive(id, request_options: {}) ⇒ Stigg::Models::V1::CustomerResponse

Restores an archived customer, allowing them to create new subscriptions again.

Parameters:

  • id (String)

    The unique identifier of the entity

  • request_options (Stigg::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



279
280
281
282
283
284
285
286
# File 'lib/stigg/resources/v1/customers.rb', line 279

def unarchive(id, params = {})
  @client.request(
    method: :post,
    path: ["api/v1/customers/%1$s/unarchive", id],
    model: Stigg::V1::CustomerResponse,
    options: params[:request_options]
  )
end

#update(id, billing_currency: nil, billing_id: nil, coupon_id: nil, email: nil, integrations: nil, language: nil, metadata: nil, name: nil, passthrough: nil, timezone: nil, request_options: {}) ⇒ Stigg::Models::V1::CustomerResponse

Updates an existing customer’s properties such as name, email, and billing information.

Parameters:

Returns:

See Also:



71
72
73
74
75
76
77
78
79
80
# File 'lib/stigg/resources/v1/customers.rb', line 71

def update(id, params = {})
  parsed, options = Stigg::V1::CustomerUpdateParams.dump_request(params)
  @client.request(
    method: :patch,
    path: ["api/v1/customers/%1$s", id],
    body: parsed,
    model: Stigg::V1::CustomerResponse,
    options: options
  )
end