Skip to content

Conversation

@wscourge
Copy link
Contributor

@wscourge wscourge commented Dec 1, 2025

Updates the List Sources and Retrieve a Source to support requesting additional fields with the following query params:

  • with_processing_status=true
  • with_auto_churn_subscription_setting=true
  • with_invoice_handling_setting=true

Using SDK code:

1) List Sources

data_sources = ChartMogul::DataSource.all(
  with_processing_status: true,
  with_auto_churn_subscription_setting: true,
  with_invoice_handling_setting: true,
)

2) Retrieve a Source

data_source = ChartMogul::DataSource.retrieve('ds_5ee8bf93-b0b4-4722-8a17-6b624a3af072',
  with_processing_status: true,
  with_auto_churn_subscription_setting: true,
  with_invoice_handling_setting: true,
)

@wscourge wscourge force-pushed the wiktor/ome-356-expose-source-settings-via-api branch from e35614e to 22516d0 Compare December 2, 2025 10:25
@wscourge wscourge requested a review from Copilot December 2, 2025 14:58
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds support for fetching additional DataSource fields through query parameters when listing or retrieving data sources. The implementation allows users to request processing_status, auto_churn_subscription_setting, and invoice_handling_setting by passing boolean flags to the API methods.

Key changes:

  • Added three new query parameters to support requesting additional fields
  • Introduced new model classes to represent the additional field structures
  • Updated the test suite to verify the new functionality

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
spec/spec_helper.rb Added pry debugging tool to test dependencies
spec/fixtures/vcr_cassettes/ChartMogul_DataSource/API_Interactions/correctly_interracts_with_the_API.yml Updated VCR cassette with new API responses containing additional fields
spec/chartmogul/data_source_spec.rb Added comprehensive test coverage for the new query parameters and response fields
lib/chartmogul/data_source_settings/processing_status.rb Created model for processing status with processed, pending, and failed counts
lib/chartmogul/data_source_settings/invoice_handling_settings.rb Created model for invoice handling configuration options
lib/chartmogul/data_source_settings/invoice_handling_setting.rb Created model wrapping manual and automatic invoice handling settings
lib/chartmogul/data_source.rb Added support for new fields and overrode retrieve method to pass query parameters
lib/chartmogul/concerns/processing_status.rb Created concern for including processing_status attribute in models
lib/chartmogul/concerns/invoice_handling_setting.rb Created concern for including invoice_handling_setting attribute in models
lib/chartmogul.rb Added requires for new model and concern files

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@wscourge wscourge force-pushed the wiktor/ome-356-expose-source-settings-via-api branch from 22516d0 to c1db724 Compare December 2, 2025 15:03
@wscourge wscourge marked this pull request as ready for review December 3, 2025 09:23
@wscourge wscourge requested a review from J-ad December 15, 2025 11:33
@wscourge
Copy link
Contributor Author

During the tests it turned out that response format for invoice_handling_setting varies significantly.

Example:

{
  "data_sources": [
    {
      "invoice_handling_setting": {
        "manual": {
          "create_subscription_when_invoice_is": "open",
          "update_subscription_when_invoice_is": "open",
          "prevent_subscription_for_invoice_voided": true,
          "prevent_subscription_for_invoice_refunded": false,
          "prevent_subscription_for_invoice_written_off": true
        },
        "automatic": {
          "create_subscription_when_invoice_is": "open",
          "update_subscription_when_invoice_is": "open",
          "prevent_subscription_for_invoice_voided": true,
          "prevent_subscription_for_invoice_refunded": false,
          "prevent_subscription_for_invoice_written_off": true
        }
      }
    },
    {
      "invoice_handling_setting": {
        "create_subscription_when_invoice_is": "open",
        "update_subscription_when_invoice_is": "open",
        "prevent_subscription_for_invoice_voided": true,
        "prevent_subscription_for_invoice_refunded": false,
        "prevent_subscription_for_invoice_written_off": true
      }
    },
    {
      "invoice_handling_setting": {
        "manual": {
          "create_subscription_when_invoice_is": "open",
          "update_subscription_when_invoice_is": "open",
          "prevent_subscription_for_invoice_voided": true,
          "prevent_subscription_for_invoice_refunded": true,
          "prevent_subscription_for_invoice_written_off": true
        },
        "automatic": {
          "create_subscription_when_invoice_is": "paid",
          "update_subscription_when_invoice_is": "open",
          "prevent_subscription_for_invoice_voided": true,
          "prevent_subscription_for_invoice_refunded": true,
          "prevent_subscription_for_invoice_written_off": true
        }
      }
    },
    {
      "invoice_handling_setting": {
        "manual": {
          "create_subscription_when_invoice_is": "paid",
          "update_subscription_when_invoice_is": "open",
          "prevent_subscription_for_invoice_voided": true,
          "prevent_subscription_for_invoice_refunded": true,
          "prevent_subscription_for_invoice_written_off": true
        },
        "automatic": {
          "create_subscription_when_invoice_is": "paid",
          "update_subscription_when_invoice_is": "open",
          "prevent_subscription_for_invoice_voided": true,
          "prevent_subscription_for_invoice_refunded": true,
          "prevent_subscription_for_invoice_written_off": true
        },
        "create_subscription_when_invoice_is": "paid",
        "update_subscription_when_invoice_is": "open",
        "prevent_subscription_for_invoice_voided": true,
        "prevent_subscription_for_invoice_refunded": true,
        "prevent_subscription_for_invoice_written_off": true
      }
    },
    {
      "invoice_handling_setting": {}
    },
    {
      "invoice_handling_setting": {
        "manual": {
          "create_subscription_when_invoice_is": "open",
          "update_subscription_when_invoice_is": "open",
          "prevent_subscription_for_invoice_voided": true,
          "prevent_subscription_for_invoice_refunded": false,
          "prevent_subscription_for_invoice_written_off": true
        },
        "automatic": {
          "create_subscription_when_invoice_is": "open",
          "update_subscription_when_invoice_is": "open",
          "prevent_subscription_for_invoice_voided": true,
          "prevent_subscription_for_invoice_refunded": false,
          "prevent_subscription_for_invoice_written_off": true
        }
      }
    },
    {
      "invoice_handling_setting": {
        "manual": {
          "create_subscription_when_invoice_is": "open",
          "update_subscription_when_invoice_is": "open",
          "prevent_subscription_for_invoice_voided": true,
          "prevent_subscription_for_invoice_refunded": false,
          "prevent_subscription_for_invoice_written_off": true
        },
        "automatic": {
          "create_subscription_when_invoice_is": "open",
          "update_subscription_when_invoice_is": "open",
          "prevent_subscription_for_invoice_voided": true,
          "prevent_subscription_for_invoice_refunded": false,
          "prevent_subscription_for_invoice_written_off": true
        },
        "create_subscription_when_invoice_is": "open",
        "prevent_subscription_for_invoice_voided": true,
        "prevent_subscription_for_invoice_refunded": false,
        "prevent_subscription_for_invoice_written_off": true
      }
    },
    {
      "invoice_handling_setting": {
        "manual": {
          "create_subscription_when_invoice_is": "open",
          "update_subscription_when_invoice_is": "open",
          "prevent_subscription_for_invoice_voided": true,
          "prevent_subscription_for_invoice_refunded": false,
          "prevent_subscription_for_invoice_written_off": true
        },
        "automatic": {
          "create_subscription_when_invoice_is": "open",
          "update_subscription_when_invoice_is": "open",
          "prevent_subscription_for_invoice_voided": true,
          "prevent_subscription_for_invoice_refunded": false,
          "prevent_subscription_for_invoice_written_off": true
        },
        "create_subscription_when_invoice_is": "open",
        "prevent_subscription_for_invoice_voided": true,
        "prevent_subscription_for_invoice_refunded": false,
        "prevent_subscription_for_invoice_written_off": true
      }
    },
    {
      "invoice_handling_setting": {
        "manual": {
          "create_subscription_when_invoice_is": "open",
          "update_subscription_when_invoice_is": "open",
          "prevent_subscription_for_invoice_voided": true,
          "prevent_subscription_for_invoice_refunded": false,
          "prevent_subscription_for_invoice_written_off": true
        },
        "automatic": {
          "create_subscription_when_invoice_is": "open",
          "update_subscription_when_invoice_is": "open",
          "prevent_subscription_for_invoice_voided": true,
          "prevent_subscription_for_invoice_refunded": false,
          "prevent_subscription_for_invoice_written_off": true
        },
        "create_subscription_when_invoice_is": "open",
        "prevent_subscription_for_invoice_voided": true,
        "prevent_subscription_for_invoice_refunded": false,
        "prevent_subscription_for_invoice_written_off": true
      }
    },
    {
      "invoice_handling_setting": {
        "manual": {
          "create_subscription_when_invoice_is": "open",
          "update_subscription_when_invoice_is": "open",
          "prevent_subscription_for_invoice_voided": true,
          "prevent_subscription_for_invoice_refunded": false,
          "prevent_subscription_for_invoice_written_off": true
        },
        "automatic": {
          "create_subscription_when_invoice_is": "open",
          "update_subscription_when_invoice_is": "open",
          "prevent_subscription_for_invoice_voided": true,
          "prevent_subscription_for_invoice_refunded": false,
          "prevent_subscription_for_invoice_written_off": true
        },
        "create_subscription_when_invoice_is": "open",
        "update_subscription_when_invoice_is": "open",
        "prevent_subscription_for_invoice_voided": true,
        "prevent_subscription_for_invoice_refunded": false,
        "prevent_subscription_for_invoice_written_off": true
      }
    }
  ]
}

I spoke with Dijana and we agreed that the invoice_handling_setting must instead be as forgiving as possible so it is fully backwards-compatible.

@wscourge wscourge merged commit c67d61d into main Dec 17, 2025
4 checks passed
@wscourge wscourge deleted the wiktor/ome-356-expose-source-settings-via-api branch December 17, 2025 14:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants