Class: Dodopayments::Resources::CreditEntitlements
- Inherits:
-
Object
- Object
- Dodopayments::Resources::CreditEntitlements
- Defined in:
- lib/dodopayments/resources/credit_entitlements.rb,
lib/dodopayments/resources/credit_entitlements/balances.rb
Defined Under Namespace
Classes: Balances
Instance Attribute Summary collapse
Instance Method Summary collapse
-
#create(name:, overage_enabled:, precision:, rollover_enabled:, unit:, currency: nil, description: nil, expires_after_days: nil, max_rollover_count: nil, overage_behavior: nil, overage_limit: nil, price_per_unit: nil, rollover_percentage: nil, rollover_timeframe_count: nil, rollover_timeframe_interval: nil, request_options: {}) ⇒ Dodopayments::Models::CreditEntitlement
Some parameter documentations has been truncated, see Models::CreditEntitlementCreateParams for more details.
- #delete(id, request_options: {}) ⇒ nil
-
#initialize(client:) ⇒ CreditEntitlements
constructor
private
A new instance of CreditEntitlements.
-
#list(deleted: nil, page_number: nil, page_size: nil, request_options: {}) ⇒ Dodopayments::Internal::DefaultPageNumberPagination<Dodopayments::Models::CreditEntitlement>
Returns a paginated list of credit entitlements, allowing filtering of deleted entitlements.
-
#retrieve(id, request_options: {}) ⇒ Dodopayments::Models::CreditEntitlement
Returns the full details of a single credit entitlement including all configuration settings for expiration, rollover, and overage policies.
-
#undelete(id, request_options: {}) ⇒ nil
Undeletes a soft-deleted credit entitlement by clearing ‘deleted_at`, making it available again through standard list and get endpoints.
-
#update(id, currency: nil, description: nil, expires_after_days: nil, max_rollover_count: nil, name: nil, overage_behavior: nil, overage_enabled: nil, overage_limit: nil, price_per_unit: nil, rollover_enabled: nil, rollover_percentage: nil, rollover_timeframe_count: nil, rollover_timeframe_interval: nil, unit: nil, request_options: {}) ⇒ nil
Allows partial updates to a credit entitlement’s configuration.
Constructor Details
#initialize(client:) ⇒ CreditEntitlements
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 CreditEntitlements.
385 386 387 388 |
# File 'lib/dodopayments/resources/credit_entitlements.rb', line 385 def initialize(client:) @client = client @balances = Dodopayments::Resources::CreditEntitlements::Balances.new(client: client) end |
Instance Attribute Details
#balances ⇒ Dodopayments::Resources::CreditEntitlements::Balances (readonly)
7 8 9 |
# File 'lib/dodopayments/resources/credit_entitlements.rb', line 7 def balances @balances end |
Instance Method Details
#create(name:, overage_enabled:, precision:, rollover_enabled:, unit:, currency: nil, description: nil, expires_after_days: nil, max_rollover_count: nil, overage_behavior: nil, overage_limit: nil, price_per_unit: nil, rollover_percentage: nil, rollover_timeframe_count: nil, rollover_timeframe_interval: nil, request_options: {}) ⇒ Dodopayments::Models::CreditEntitlement
Some parameter documentations has been truncated, see Models::CreditEntitlementCreateParams for more details.
Credit entitlements define reusable credit templates that can be attached to products. Each entitlement defines how credits behave in terms of expiration, rollover, and overage.
# Authentication
Requires an API key with ‘Editor` role.
# Request Body
-
‘name` - Human-readable name of the credit entitlement (1-255 characters, required)
-
‘description` - Optional description (max 1000 characters)
-
‘precision` - Decimal precision for credit amounts (0-10 decimal places)
-
‘unit` - Unit of measurement for the credit (e.g., “API Calls”, “Tokens”, “Credits”)
-
‘expires_after_days` - Number of days after which credits expire (optional)
-
‘rollover_enabled` - Whether unused credits can rollover to the next period
-
‘rollover_percentage` - Percentage of unused credits that rollover (0-100)
-
‘rollover_timeframe_count` - Count of timeframe periods for rollover limit
-
‘rollover_timeframe_interval` - Interval type (day, week, month, year)
-
‘max_rollover_count` - Maximum number of times credits can be rolled over
-
‘overage_enabled` - Whether overage charges apply when credits run out (requires price_per_unit)
-
‘overage_limit` - Maximum overage units allowed (optional)
-
‘currency` - Currency for pricing (required if price_per_unit is set)
-
‘price_per_unit` - Price per credit unit (decimal)
# Responses
-
‘201 Created` - Credit entitlement created successfully, returns the full entitlement object
-
‘422 Unprocessable Entity` - Invalid request parameters or validation failure
-
‘500 Internal Server Error` - Database or server error
# Business Logic
-
A unique ID with prefix ‘cde_` is automatically generated for the entitlement
-
Created and updated timestamps are automatically set
-
Currency is required when price_per_unit is set
-
price_per_unit is required when overage_enabled is true
-
rollover_timeframe_count and rollover_timeframe_interval must both be set or both be null
93 94 95 96 97 98 99 100 101 102 |
# File 'lib/dodopayments/resources/credit_entitlements.rb', line 93 def create(params) parsed, = Dodopayments::CreditEntitlementCreateParams.dump_request(params) @client.request( method: :post, path: "credit-entitlements", body: parsed, model: Dodopayments::CreditEntitlement, options: ) end |
#delete(id, request_options: {}) ⇒ nil
314 315 316 317 318 319 320 321 |
# File 'lib/dodopayments/resources/credit_entitlements.rb', line 314 def delete(id, params = {}) @client.request( method: :delete, path: ["credit-entitlements/%1$s", id], model: NilClass, options: params[:request_options] ) end |
#list(deleted: nil, page_number: nil, page_size: nil, request_options: {}) ⇒ Dodopayments::Internal::DefaultPageNumberPagination<Dodopayments::Models::CreditEntitlement>
Returns a paginated list of credit entitlements, allowing filtering of deleted entitlements. By default, only non-deleted entitlements are returned.
# Authentication
Requires an API key with ‘Viewer` role or higher.
# Query Parameters
-
‘page_size` - Number of items per page (default: 10, max: 100)
-
‘page_number` - Zero-based page number (default: 0)
-
‘deleted` - Boolean flag to list deleted entitlements instead of active ones (default: false)
# Responses
-
‘200 OK` - Returns a list of credit entitlements wrapped in a response object
-
‘422 Unprocessable Entity` - Invalid query parameters (e.g., page_size > 100)
-
‘500 Internal Server Error` - Database or server error
# Business Logic
-
Results are ordered by creation date in descending order (newest first)
-
Only entitlements belonging to the authenticated business are returned
-
The ‘deleted` parameter controls visibility of soft-deleted entitlements
-
Pagination uses offset-based pagination (offset = page_number * page_size)
292 293 294 295 296 297 298 299 300 301 302 303 |
# File 'lib/dodopayments/resources/credit_entitlements.rb', line 292 def list(params = {}) parsed, = Dodopayments::CreditEntitlementListParams.dump_request(params) query = Dodopayments::Internal::Util.encode_query_params(parsed) @client.request( method: :get, path: "credit-entitlements", query: query, page: Dodopayments::Internal::DefaultPageNumberPagination, model: Dodopayments::CreditEntitlement, options: ) end |
#retrieve(id, request_options: {}) ⇒ Dodopayments::Models::CreditEntitlement
Returns the full details of a single credit entitlement including all configuration settings for expiration, rollover, and overage policies.
# Authentication
Requires an API key with ‘Viewer` role or higher.
# Path Parameters
-
‘id` - The unique identifier of the credit entitlement (format: `cde_…`)
# Responses
-
‘200 OK` - Returns the full credit entitlement object
-
‘404 Not Found` - Credit entitlement does not exist or does not belong to the authenticated business
-
‘500 Internal Server Error` - Database or server error
# Business Logic
-
Only non-deleted credit entitlements can be retrieved through this endpoint
-
The entitlement must belong to the authenticated business (business_id check)
-
Deleted entitlements return a 404 error and must be retrieved via the list endpoint with ‘deleted=true`
138 139 140 141 142 143 144 145 |
# File 'lib/dodopayments/resources/credit_entitlements.rb', line 138 def retrieve(id, params = {}) @client.request( method: :get, path: ["credit-entitlements/%1$s", id], model: Dodopayments::CreditEntitlement, options: params[:request_options] ) end |
#undelete(id, request_options: {}) ⇒ nil
Undeletes a soft-deleted credit entitlement by clearing ‘deleted_at`, making it available again through standard list and get endpoints.
# Authentication
Requires an API key with ‘Editor` role.
# Path Parameters
-
‘id` - The unique identifier of the credit entitlement to restore (format: `cde_…`)
# Responses
-
‘200 OK` - Credit entitlement restored successfully
-
‘500 Internal Server Error` - Database error, entitlement not found, or entitlement is not deleted
# Business Logic
-
Only deleted credit entitlements can be restored
-
The query filters for ‘deleted_at IS NOT NULL`, so non-deleted entitlements will result in 0 rows affected
-
If no rows are affected (entitlement doesn’t exist, doesn’t belong to business, or is not deleted), returns 500
-
The ‘updated_at` timestamp is automatically updated on successful restoration
-
Once restored, the entitlement becomes immediately available in the standard list and get endpoints
-
All configuration settings are preserved during delete/restore operations
# Error Handling
This endpoint returns 500 Internal Server Error in several cases:
-
The credit entitlement does not exist
-
The credit entitlement belongs to a different business
-
The credit entitlement is not currently deleted (already active)
Callers should verify the entitlement exists and is deleted before calling this endpoint.
373 374 375 376 377 378 379 380 |
# File 'lib/dodopayments/resources/credit_entitlements.rb', line 373 def undelete(id, params = {}) @client.request( method: :post, path: ["credit-entitlements/%1$s/undelete", id], model: NilClass, options: params[:request_options] ) end |
#update(id, currency: nil, description: nil, expires_after_days: nil, max_rollover_count: nil, name: nil, overage_behavior: nil, overage_enabled: nil, overage_limit: nil, price_per_unit: nil, rollover_enabled: nil, rollover_percentage: nil, rollover_timeframe_count: nil, rollover_timeframe_interval: nil, unit: nil, request_options: {}) ⇒ nil
Allows partial updates to a credit entitlement’s configuration. Only the fields provided in the request body will be updated; all other fields remain unchanged. This endpoint supports nullable fields using the double option pattern.
# Authentication
Requires an API key with ‘Editor` role.
# Path Parameters
-
‘id` - The unique identifier of the credit entitlement to update (format: `cde_…`)
# Request Body (all fields optional)
-
‘name` - Human-readable name of the credit entitlement (1-255 characters)
-
‘description` - Optional description (max 1000 characters)
-
‘unit` - Unit of measurement for the credit (1-50 characters)
Note: ‘precision` cannot be modified after creation as it would invalidate existing grants.
-
‘expires_after_days` - Number of days after which credits expire (use `null` to remove expiration)
-
‘rollover_enabled` - Whether unused credits can rollover to the next period
-
‘rollover_percentage` - Percentage of unused credits that rollover (0-100, nullable)
-
‘rollover_timeframe_count` - Count of timeframe periods for rollover limit (nullable)
-
‘rollover_timeframe_interval` - Interval type (day, week, month, year, nullable)
-
‘max_rollover_count` - Maximum number of times credits can be rolled over (nullable)
-
‘overage_enabled` - Whether overage charges apply when credits run out
-
‘overage_limit` - Maximum overage units allowed (nullable)
-
‘currency` - Currency for pricing (nullable)
-
‘price_per_unit` - Price per credit unit (decimal, nullable)
# Responses
-
‘200 OK` - Credit entitlement updated successfully
-
‘404 Not Found` - Credit entitlement does not exist or does not belong to the authenticated business
-
‘422 Unprocessable Entity` - Invalid request parameters or validation failure
-
‘500 Internal Server Error` - Database or server error
# Business Logic
-
Only non-deleted credit entitlements can be updated
-
Fields set to ‘null` explicitly will clear the database value (using double option pattern)
-
The ‘updated_at` timestamp is automatically updated on successful modification
-
Changes take effect immediately but do not retroactively affect existing credit grants
-
The merged state is validated: currency required with price, rollover timeframe fields together, price required for overage
241 242 243 244 245 246 247 248 249 250 |
# File 'lib/dodopayments/resources/credit_entitlements.rb', line 241 def update(id, params = {}) parsed, = Dodopayments::CreditEntitlementUpdateParams.dump_request(params) @client.request( method: :patch, path: ["credit-entitlements/%1$s", id], body: parsed, model: NilClass, options: ) end |