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,
sig/dodopayments/resources/credit_entitlements.rbs,
sig/dodopayments/resources/credit_entitlements/balances.rbs
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 periodrollover_percentage- Percentage of unused credits that rollover (0-100)rollover_timeframe_count- Count of timeframe periods for rollover limitrollover_timeframe_interval- Interval type (day, week, month, year)max_rollover_count- Maximum number of times credits can be rolled overoverage_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 object422 Unprocessable Entity- Invalid request parameters or validation failure500 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 object422 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
deletedparameter 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 object404 Not Found- Credit entitlement does not exist or does not belong to the authenticated business500 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 successfully500 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_attimestamp 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 (usenullto remove expiration)rollover_enabled- Whether unused credits can rollover to the next periodrollover_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 outoverage_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 successfully404 Not Found- Credit entitlement does not exist or does not belong to the authenticated business422 Unprocessable Entity- Invalid request parameters or validation failure500 Internal Server Error- Database or server error
Business Logic
- Only non-deleted credit entitlements can be updated
- Fields set to
nullexplicitly will clear the database value (using double option pattern) - The
updated_attimestamp 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 |