Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
169 changes: 169 additions & 0 deletions src/main/java/com/stripe/ApiVersions.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
package com.stripe;

/**
* Constants for all known Stripe API versions.
*
* <p>Use these constants when you need to reference a specific API version — for example, when
* creating a {@link com.stripe.param.WebhookEndpointCreateParams webhook endpoint} pinned to a
* particular version, or when comparing against {@link Stripe#API_VERSION}.
*
* <pre>{@code
* WebhookEndpointCreateParams params = WebhookEndpointCreateParams.builder()
* .setUrl("https://example.com/webhook")
* .addEnabledEvent(WebhookEndpointCreateParams.EnabledEvent.CHARGE__SUCCEEDED)
* .build();
* }</pre>
*
* <p>The {@link #LATEST} constant always points to the version this SDK was built against (same as
* {@link Stripe#API_VERSION}). For a full changelog, see <a
* href="https://docs.stripe.com/upgrades#api-versions">Stripe API Versions</a>.
*
* @see <a href="https://github.com/stripe/stripe-java/issues/2001">stripe-java#2001</a>
*/
public final class ApiVersions {
private ApiVersions() {}

// ---- alias for the current SDK version ----

/** The API version this SDK release was built against. Same as {@link Stripe#API_VERSION}. */
public static final String LATEST = ApiVersion.CURRENT;

// ---- individual versions (chronological) ----

public static final String VERSION_2011_01_01 = "2011-01-01";
public static final String VERSION_2011_06_21 = "2011-06-21";
public static final String VERSION_2011_06_28 = "2011-06-28";
public static final String VERSION_2011_08_01 = "2011-08-01";
public static final String VERSION_2011_09_15 = "2011-09-15";
public static final String VERSION_2011_11_17 = "2011-11-17";

public static final String VERSION_2012_02_23 = "2012-02-23";
public static final String VERSION_2012_03_25 = "2012-03-25";
public static final String VERSION_2012_06_18 = "2012-06-18";
public static final String VERSION_2012_06_28 = "2012-06-28";
public static final String VERSION_2012_07_09 = "2012-07-09";
public static final String VERSION_2012_09_24 = "2012-09-24";
public static final String VERSION_2012_10_26 = "2012-10-26";
public static final String VERSION_2012_11_07 = "2012-11-07";

public static final String VERSION_2013_02_11 = "2013-02-11";
public static final String VERSION_2013_02_13 = "2013-02-13";
public static final String VERSION_2013_07_05 = "2013-07-05";
public static final String VERSION_2013_08_12 = "2013-08-12";
public static final String VERSION_2013_08_13 = "2013-08-13";
public static final String VERSION_2013_10_29 = "2013-10-29";
public static final String VERSION_2013_12_03 = "2013-12-03";

public static final String VERSION_2014_01_31 = "2014-01-31";
public static final String VERSION_2014_03_13 = "2014-03-13";
public static final String VERSION_2014_03_28 = "2014-03-28";
public static final String VERSION_2014_05_19 = "2014-05-19";
public static final String VERSION_2014_06_13 = "2014-06-13";
public static final String VERSION_2014_06_17 = "2014-06-17";
public static final String VERSION_2014_07_22 = "2014-07-22";
public static final String VERSION_2014_07_26 = "2014-07-26";
public static final String VERSION_2014_08_04 = "2014-08-04";
public static final String VERSION_2014_08_20 = "2014-08-20";
public static final String VERSION_2014_09_08 = "2014-09-08";
public static final String VERSION_2014_10_07 = "2014-10-07";
public static final String VERSION_2014_11_05 = "2014-11-05";
public static final String VERSION_2014_11_20 = "2014-11-20";
public static final String VERSION_2014_12_08 = "2014-12-08";
public static final String VERSION_2014_12_17 = "2014-12-17";
public static final String VERSION_2014_12_22 = "2014-12-22";

public static final String VERSION_2015_01_11 = "2015-01-11";
public static final String VERSION_2015_01_26 = "2015-01-26";
public static final String VERSION_2015_02_10 = "2015-02-10";
public static final String VERSION_2015_02_16 = "2015-02-16";
public static final String VERSION_2015_02_18 = "2015-02-18";
public static final String VERSION_2015_03_24 = "2015-03-24";
public static final String VERSION_2015_04_07 = "2015-04-07";
public static final String VERSION_2015_06_15 = "2015-06-15";
public static final String VERSION_2015_07_07 = "2015-07-07";
public static final String VERSION_2015_07_13 = "2015-07-13";
public static final String VERSION_2015_07_28 = "2015-07-28";
public static final String VERSION_2015_08_07 = "2015-08-07";
public static final String VERSION_2015_08_19 = "2015-08-19";
public static final String VERSION_2015_09_03 = "2015-09-03";
public static final String VERSION_2015_09_08 = "2015-09-08";
public static final String VERSION_2015_09_23 = "2015-09-23";
public static final String VERSION_2015_10_01 = "2015-10-01";
public static final String VERSION_2015_10_12 = "2015-10-12";
public static final String VERSION_2015_10_16 = "2015-10-16";

public static final String VERSION_2016_02_03 = "2016-02-03";
public static final String VERSION_2016_02_19 = "2016-02-19";
public static final String VERSION_2016_02_22 = "2016-02-22";
public static final String VERSION_2016_02_23 = "2016-02-23";
public static final String VERSION_2016_02_29 = "2016-02-29";
public static final String VERSION_2016_03_07 = "2016-03-07";
public static final String VERSION_2016_06_15 = "2016-06-15";
public static final String VERSION_2016_07_06 = "2016-07-06";
public static final String VERSION_2016_10_19 = "2016-10-19";

public static final String VERSION_2017_01_27 = "2017-01-27";
public static final String VERSION_2017_02_14 = "2017-02-14";
public static final String VERSION_2017_04_06 = "2017-04-06";
public static final String VERSION_2017_05_25 = "2017-05-25";
public static final String VERSION_2017_06_05 = "2017-06-05";
public static final String VERSION_2017_08_15 = "2017-08-15";
public static final String VERSION_2017_12_14 = "2017-12-14";

public static final String VERSION_2018_01_23 = "2018-01-23";
public static final String VERSION_2018_02_05 = "2018-02-05";
public static final String VERSION_2018_02_06 = "2018-02-06";
public static final String VERSION_2018_02_28 = "2018-02-28";
public static final String VERSION_2018_05_21 = "2018-05-21";
public static final String VERSION_2018_07_27 = "2018-07-27";
public static final String VERSION_2018_08_23 = "2018-08-23";
public static final String VERSION_2018_09_06 = "2018-09-06";
public static final String VERSION_2018_09_24 = "2018-09-24";
public static final String VERSION_2018_10_31 = "2018-10-31";
public static final String VERSION_2018_11_08 = "2018-11-08";

public static final String VERSION_2019_02_11 = "2019-02-11";
public static final String VERSION_2019_02_19 = "2019-02-19";
public static final String VERSION_2019_03_14 = "2019-03-14";
public static final String VERSION_2019_05_16 = "2019-05-16";
public static final String VERSION_2019_08_14 = "2019-08-14";
public static final String VERSION_2019_09_09 = "2019-09-09";
public static final String VERSION_2019_10_08 = "2019-10-08";
public static final String VERSION_2019_10_17 = "2019-10-17";
public static final String VERSION_2019_11_05 = "2019-11-05";
public static final String VERSION_2019_12_03 = "2019-12-03";

public static final String VERSION_2020_03_02 = "2020-03-02";
public static final String VERSION_2020_08_27 = "2020-08-27";

public static final String VERSION_2022_08_01 = "2022-08-01";
public static final String VERSION_2022_11_15 = "2022-11-15";

public static final String VERSION_2023_08_16 = "2023-08-16";
public static final String VERSION_2023_10_16 = "2023-10-16";

public static final String VERSION_2024_04_10 = "2024-04-10";
public static final String VERSION_2024_06_20 = "2024-06-20";
public static final String VERSION_2024_09_30_ACACIA = "2024-09-30.acacia";
public static final String VERSION_2024_10_28_ACACIA = "2024-10-28.acacia";
public static final String VERSION_2024_11_20_ACACIA = "2024-11-20.acacia";
public static final String VERSION_2024_12_18_ACACIA = "2024-12-18.acacia";

public static final String VERSION_2025_01_27_ACACIA = "2025-01-27.acacia";
public static final String VERSION_2025_02_24_ACACIA = "2025-02-24.acacia";
public static final String VERSION_2025_03_01_DASHBOARD = "2025-03-01.dashboard";
public static final String VERSION_2025_03_31_BASIL = "2025-03-31.basil";
public static final String VERSION_2025_04_30_BASIL = "2025-04-30.basil";
public static final String VERSION_2025_05_28_BASIL = "2025-05-28.basil";
public static final String VERSION_2025_06_30_BASIL = "2025-06-30.basil";
public static final String VERSION_2025_07_30_BASIL = "2025-07-30.basil";
public static final String VERSION_2025_08_27_BASIL = "2025-08-27.basil";
public static final String VERSION_2025_09_30_CLOVER = "2025-09-30.clover";
public static final String VERSION_2025_10_29_CLOVER = "2025-10-29.clover";
public static final String VERSION_2025_11_17_CLOVER = "2025-11-17.clover";
public static final String VERSION_2025_12_15_CLOVER = "2025-12-15.clover";

public static final String VERSION_2026_01_28_CLOVER = "2026-01-28.clover";
public static final String VERSION_2026_02_25_CLOVER = "2026-02-25.clover";
public static final String VERSION_2026_03_25_DAHLIA = "2026-03-25.dahlia";
}
44 changes: 44 additions & 0 deletions src/test/java/com/stripe/ApiVersionsTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.stripe;

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;

/** Tests for {@link ApiVersions}. */
public class ApiVersionsTest {

@Test
public void testLatestMatchesStripeApiVersion() {
assertEquals(
Stripe.API_VERSION,
ApiVersions.LATEST,
"ApiVersions.LATEST should match Stripe.API_VERSION");
}

@Test
public void testCurrentVersionConstantExists() {
// The constant for the current SDK version should exist and match LATEST
assertEquals(ApiVersions.VERSION_2026_03_25_DAHLIA, ApiVersions.LATEST);
}

@Test
public void testVersionStringsAreWellFormed() {
// Spot-check a few constants across different eras
assertEquals("2011-01-01", ApiVersions.VERSION_2011_01_01);
assertEquals("2019-05-16", ApiVersions.VERSION_2019_05_16);
assertEquals("2022-11-15", ApiVersions.VERSION_2022_11_15);
assertEquals("2024-09-30.acacia", ApiVersions.VERSION_2024_09_30_ACACIA);
assertEquals("2025-03-31.basil", ApiVersions.VERSION_2025_03_31_BASIL);
assertEquals("2025-09-30.clover", ApiVersions.VERSION_2025_09_30_CLOVER);
assertEquals("2026-03-25.dahlia", ApiVersions.VERSION_2026_03_25_DAHLIA);
}

@Test
public void testVersionConstantsAreNotNull() {
// Ensure none of the constants are null (compile-time check mostly, but belt-and-suspenders)
assertNotNull(ApiVersions.LATEST);
assertNotNull(ApiVersions.VERSION_2011_01_01);
assertNotNull(ApiVersions.VERSION_2020_08_27);
assertNotNull(ApiVersions.VERSION_2026_03_25_DAHLIA);
}
}