Update Credit Entitlement

Update an existing credit entitlement with partial data.

provided in the request body will be updated; all other fields remain unchanged. This supports nullable fields using the double option pattern.

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

Request

use dodopayments_rust::{
    models::PatchCreditEntitlementRequest, to_pretty_json, DodoPaymentsClientBuilder,
};

#[tokio::main]

async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let api_key = std::env::var("DODO_API_KEY")?;

    let client = DodoPaymentsClientBuilder::new()
        .bearer_token(&api_key)
        .enviroment("test_mode")
        .build()?;

    let entitlement_id = "ent_xxxxxxxxxx";

    let resp = client
        .credit_entitlements()
        .id(entitlement_id)
        .update()
        .body(PatchCreditEntitlementRequest {
            name: Some("Updated Credits".to_string()),
            description: Some("Updated credit allocation".to_string()),
            unit: Some("credits".to_string()),
            price_per_unit: Some("1.00".to_string()),
            currency: None,
            expires_after_days: None,
            max_rollover_count: None,
            overage_behavior: None,
            overage_enabled: None,
            overage_limit: None,
            rollover_enabled: None,
            rollover_percentage: None,
            rollover_timeframe_count: None,
            rollover_timeframe_interval: None,
        })
        .send()
        .await?;

    println!("{}", to_pretty_json(&resp)?);

    Ok(())
}

Path Parameters

ParameterTypeDescription
idstringCredit Entitlement ID

Body

FieldTypeDescription
currencyobject
descriptionobjectOptional description of the credit entitlement
expires_after_daysobjectNumber of days after which credits expire
max_rollover_countobjectMaximum number of times credits can be rolled over
nameobjectName of the credit entitlement
overage_behaviorobject
overage_enabledobjectWhether overage charges are enabled when credits run out
overage_limitobjectMaximum overage units allowed
price_per_unitobjectPrice per credit unit
rollover_enabledobjectWhether rollover is enabled for unused credits
rollover_percentageobjectPercentage of unused credits that can rollover (0-100)
rollover_timeframe_countobjectCount of timeframe periods for rollover limit
rollover_timeframe_intervalobject
unitobjectUnit of measurement for the credit (e.g., "API Calls", "Tokens", "Credits")

Responses

200 Status

Credit entitlement updated successfully

404 Status

Credit entitlement not found

422 Status

Invalid Request Object or Parameters

500 Status

Something went wrong :(