diff --git a/src/main/java/com/stripe/ApiVersions.java b/src/main/java/com/stripe/ApiVersions.java new file mode 100644 index 00000000000..36540f288b8 --- /dev/null +++ b/src/main/java/com/stripe/ApiVersions.java @@ -0,0 +1,169 @@ +package com.stripe; + +/** + * Constants for all known Stripe API versions. + * + *
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}. + * + *
{@code
+ * WebhookEndpointCreateParams params = WebhookEndpointCreateParams.builder()
+ * .setUrl("https://example.com/webhook")
+ * .addEnabledEvent(WebhookEndpointCreateParams.EnabledEvent.CHARGE__SUCCEEDED)
+ * .build();
+ * }
+ *
+ * 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 Stripe API Versions. + * + * @see stripe-java#2001 + */ +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"; +} diff --git a/src/test/java/com/stripe/ApiVersionsTest.java b/src/test/java/com/stripe/ApiVersionsTest.java new file mode 100644 index 00000000000..c993bfad114 --- /dev/null +++ b/src/test/java/com/stripe/ApiVersionsTest.java @@ -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); + } +}