Git Product home page Git Product logo

client-jvm's Issues

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -3409,4 +3409,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -3409,4 +3409,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}

background thread remains active

I have been using this lib to access polygon.io from my algo-trading platform (roboquant) and it works great of far (the integration is just a small prototype so far). But I noticed that somewhere remains one or more threads active since the main will not normally end.

I'm using the PolygonRestClient with default http provider and client.getAggregatesBlocking to get some data. When I checked your code seem to be using use() under the hood, so that should close the HttpClient after use. Is there anything else that is running on the background that I need to stop manually ?

My prototype code (very small) can be found here: https://github.com/neurallayer/roboquant/blob/main/roboquant-extra/src/polygon/PolygonHistoricFeed.kt

P.S roboquant is open source, so if you want to check it out: https://roboquant.org

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -1995,7 +1995,7 @@
     "/indices/AM": {
       "get": {
         "summary": "Aggregates (Per Minute)",
-        "description": "Stream real-time minute aggregates for a given index.\n",
+        "description": "Stream real-time minute aggregates for a given index ticker symbol.\n",
         "parameters": [
           {
             "name": "ticker",
@@ -2004,7 +2004,7 @@
             "required": true,
             "schema": {
               "type": "string",
-              "pattern": "/^([a-zA-Z]+)$/"
+              "pattern": "/^(I:[a-zA-Z0-9]+)$/"
             },
             "example": "*"
           }
@@ -3552,6 +3552,131 @@
       "CryptoReceivedTimestamp": {
         "type": "integer",
         "description": "The timestamp that the tick was received by Polygon."
+      },
+      "IndicesBaseAggregateEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "description": "The event type."
+          },
+          "sym": {
+            "type": "string",
+            "description": "The symbol representing the given index."
+          },
+          "op": {
+            "type": "number",
+            "format": "double",
+            "description": "Today's official opening value."
+          },
+          "o": {
+            "type": "number",
+            "format": "double",
+            "description": "The opening index value for this aggregate window."
+          },
+          "c": {
+            "type": "number",
+            "format": "double",
+            "description": "The closing index value for this aggregate window."
+          },
+          "h": {
+            "type": "number",
+            "format": "double",
+            "description": "The highest index value for this aggregate window."
+          },
+          "l": {
+            "type": "number",
+            "format": "double",
+            "description": "The lowest index value for this aggregate window."
+          },
+          "s": {
+            "type": "integer",
+            "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+          },
+          "e": {
+            "type": "integer",
+            "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+          }
+        }
+      },
+      "IndicesMinuteAggregateEvent": {
+        "allOf": [
+          {
+            "type": "object",
+            "properties": {
+              "ev": {
+                "description": "The event type."
+              },
+              "sym": {
+                "type": "string",
+                "description": "The symbol representing the given index."
+              },
+              "op": {
+                "type": "number",
+                "format": "double",
+                "description": "Today's official opening value."
+              },
+              "o": {
+                "type": "number",
+                "format": "double",
+                "description": "The opening index value for this aggregate window."
+              },
+              "c": {
+                "type": "number",
+                "format": "double",
+                "description": "The closing index value for this aggregate window."
+              },
+              "h": {
+                "type": "number",
+                "format": "double",
+                "description": "The highest index value for this aggregate window."
+              },
+              "l": {
+                "type": "number",
+                "format": "double",
+                "description": "The lowest index value for this aggregate window."
+              },
+              "s": {
+                "type": "integer",
+                "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+              },
+              "e": {
+                "type": "integer",
+                "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+              }
+            }
+          },
+          {
+            "properties": {
+              "ev": {
+                "enum": [
+                  "AM"
+                ],
+                "description": "The event type."
+              }
+            }
+          }
+        ]
+      },
+      "IndicesValueEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "type": "string",
+            "enum": [
+              "V"
+            ],
+            "description": "The event type."
+          },
+          "val": {
+            "description": "The value of the index."
+          },
+          "T": {
+            "description": "The assigned ticker of the index."
+          },
+          "t": {
+            "description": "The Timestamp in Unix MS."
+          }
+        }
       }
     },
     "parameters": {
@@ -3609,7 +3734,29 @@
           "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
         },
         "example": "*"
+      },
+      "IndicesIndexParam": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "*"
+      },
+      "IndicesIndexParamWithoutWildcard": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "I:SPX"
       }
     }
   }
-}
\ No newline at end of file
+}

Client update needed to match REST spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/rest.json
+++ https://api.polygon.io/openapi
@@ -150,7 +150,7 @@
       },
       "IndicesTickerPathParam": {
         "description": "The ticker symbol of Index.",
-        "example": "I:DJI",
+        "example": "I:NDX",
         "in": "path",
         "name": "indicesTicker",
         "required": true,
@@ -6339,7 +6339,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get exponential moving average (EMA) data.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -6485,16 +6485,16 @@
             "content": {
               "application/json": {
                 "example": {
-                  "next_url": "https://api.polygon.io/v1/indicators/ema/I:DJI?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTQwNDcuNDEwMDAwMDAwMDAwMyUyQyUyMmglMjIlM0EwJTJDJTIybCUyMiUzQTAlMkMlMjJ0JTIyJTNBMTY3ODA4MjQwMDAwMCU3RCZhcz0mZXhwYW5kX3VuZGVybHlpbmc9ZmFsc2UmbGltaXQ9MTAmb3JkZXI9ZGVzYyZzZXJpZXNfdHlwZT1jbG9zZSZ0aW1lc3Bhbj1kYXkmdGltZXN0YW1wLmx0PTE2NzgxNjUyMDAwMDAmd2luZG93PTU",
-                  "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3",
+                  "next_url": "https://api.polygon.io/v1/indicators/ema/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MjE5MjAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0xJm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2UmdGltZXNwYW49ZGF5JnRpbWVzdGFtcC5sdD0xNjg3MjM3MjAwMDAwJndpbmRvdz01MA",
+                  "request_id": "b9201816341441eed663a90443c0623a",
                   "results": {
                     "underlying": {
-                      "url": "https://api.polygon.io/v2/aggs/ticker/I:DJI/range/1/day/1063281600000/1678726291180?limit=35&sort=desc"
+                      "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366449650?limit=226&sort=desc"
                     },
                     "values": [
                       {
-                        "timestamp": 1681966800000,
-                        "value": 33355.64416487007
+                        "timestamp": 1687237200000,
+                        "value": 14452.002555459003
                       }
                     ]
                   },
@@ -8001,7 +7996,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get MACD data.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -8167,24 +8162,24 @@
             "content": {
               "application/json": {
                 "example": {
-                  "next_url": "https://api.polygon.io/v1/indicators/macd/I:DJI?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy",
-                  "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3",
+                  "next_url": "https://api.polygon.io/v1/indicators/macd/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MTUwODAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0yJmxvbmdfd2luZG93PTI2Jm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2Umc2hvcnRfd2luZG93PTEyJnNpZ25hbF93aW5kb3c9OSZ0aW1lc3Bhbj1kYXkmdGltZXN0YW1wLmx0PTE2ODcyMTkyMDAwMDA",
+                  "request_id": "2eeda0be57e83cbc64cc8d1a74e84dbd",
                   "results": {
                     "underlying": {
-                      "url": "https://api.polygon.io/v2/aggs/ticker/I:DJI/range/1/day/1063281600000/1678726155743?limit=129&sort=desc"
+                      "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366537196?limit=121&sort=desc"
                     },
                     "values": [
                       {
-                        "histogram": -48.29157370302107,
-                        "signal": 225.60959338746886,
-                        "timestamp": 1681966800000,
-                        "value": 177.3180196844478
+                        "histogram": -4.7646219788108795,
+                        "signal": 220.7596784587801,
+                        "timestamp": 1687237200000,
+                        "value": 215.9950564799692
                       },
                       {
-                        "histogram": -37.55634001543484,
-                        "signal": 237.6824868132241,
-                        "timestamp": 1681963200000,
-                        "value": 200.12614679778926
+                        "histogram": 3.4518937661882205,
+                        "signal": 221.9508339534828,
+                        "timestamp": 1687219200000,
+                        "value": 225.40272771967102
                       }
                     ]
                   },
@@ -9707,7 +9695,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get relative strength index (RSI) data.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -9853,16 +9841,16 @@
             "content": {
               "application/json": {
                 "example": {
-                  "next_url": "https://api.polygon.io/v1/indicators/rsi/I:DJI?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTQwNDcuNDEwMDAwMDAwMDAwMyUyQyUyMmglMjIlM0EwJTJDJTIybCUyMiUzQTAlMkMlMjJ0JTIyJTNBMTY3ODA4MjQwMDAwMCU3RCZhcz0mZXhwYW5kX3VuZGVybHlpbmc9ZmFsc2UmbGltaXQ9MTAmb3JkZXI9ZGVzYyZzZXJpZXNfdHlwZT1jbG9zZSZ0aW1lc3Bhbj1kYXkmdGltZXN0YW1wLmx0PTE2NzgxNjUyMDAwMDAmd2luZG93PTU",
-                  "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3",
+                  "next_url": "https://api.polygon.io/v1/indicators/rsi/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MjE5MjAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0xJm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2UmdGltZXNwYW49ZGF5JnRpbWVzdGFtcC5sdD0xNjg3MjM3MjAwMDAwJndpbmRvdz0xNA",
+                  "request_id": "28a8417f521f98e1d08f6ed7d1fbcad3",
                   "results": {
                     "underlying": {
-                      "url": "https://api.polygon.io/v2/aggs/ticker/I:DJI/range/1/day/1063281600000/1678725829099?limit=35&sort=desc"
+                      "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366658253?limit=66&sort=desc"
                     },
                     "values": [
                       {
-                        "timestamp": 1681966800000,
-                        "value": 55.89394103205648
+                        "timestamp": 1687237200000,
+                        "value": 73.98019439047955
                       }
                     ]
                   },
@@ -11325,7 +11308,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get simple moving average (SMA) data.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -11471,16 +11454,16 @@
             "content": {
               "application/json": {
                 "example": {
-                  "next_url": "https://api.polygon.io/v1/indicators/sma/I:DJI?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTQwNDcuNDEwMDAwMDAwMDAwMyUyQyUyMmglMjIlM0EwJTJDJTIybCUyMiUzQTAlMkMlMjJ0JTIyJTNBMTY3ODA4MjQwMDAwMCU3RCZhcz0mZXhwYW5kX3VuZGVybHlpbmc9ZmFsc2UmbGltaXQ9MTAmb3JkZXI9ZGVzYyZzZXJpZXNfdHlwZT1jbG9zZSZ0aW1lc3Bhbj1kYXkmdGltZXN0YW1wLmx0PTE2NzgxNjUyMDAwMDAmd2luZG93PTU",
-                  "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3",
+                  "next_url": "https://api.polygon.io/v1/indicators/sma/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MjE5MjAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0xJm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2UmdGltZXNwYW49ZGF5JnRpbWVzdGFtcC5sdD0xNjg3MjM3MjAwMDAwJndpbmRvdz01Mw",
+                  "request_id": "4cae270008cb3f947e3f92c206e3888a",
                   "results": {
                     "underlying": {
-                      "url": "https://api.polygon.io/v2/aggs/ticker/I:DJI/range/1/day/1063281600000/1678725829099?limit=35&sort=desc"
+                      "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366378997?limit=240&sort=desc"
                     },
                     "values": [
                       {
-                        "timestamp": 1681966800000,
-                        "value": 33236.3424
+                        "timestamp": 1687237200000,
+                        "value": 14362.676417589264
                       }
                     ]
                   },
@@ -13042,7 +13020,7 @@
         "parameters": [
           {
             "description": "The ticker symbol of Index.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -13057,7 +13035,6 @@
             "name": "date",
             "required": true,
             "schema": {
-              "format": "date",
               "type": "string"
             }
           }
@@ -13067,15 +13044,15 @@
             "content": {
               "application/json": {
                 "example": {
-                  "afterHours": 31909.64,
-                  "close": 32245.14,
-                  "from": "2023-03-10",
-                  "high": 32988.26,
-                  "low": 32200.66,
-                  "open": 32922.75,
-                  "preMarket": 32338.23,
+                  "afterHours": 11830.43006295237,
+                  "close": 11830.28178808306,
+                  "from": "2023-03-10T00:00:00.000Z",
+                  "high": 12069.62262033557,
+                  "low": 11789.85923449393,
+                  "open": 12001.69552583921,
+                  "preMarket": 12001.69552583921,
                   "status": "OK",
-                  "symbol": "I:DJI"
+                  "symbol": "I:NDX"
                 },
                 "schema": {
                   "properties": {
@@ -13145,6 +13121,7 @@
         "tags": [
           "stocks:open-close"
         ],
+        "x-polygon-entitlement-allowed-limited-tickers": true,
         "x-polygon-entitlement-data-type": {
           "description": "Aggregate data",
           "name": "aggregates"
@@ -16258,7 +16235,7 @@
         "parameters": [
           {
             "description": "The ticker symbol of Index.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -16276,17 +16253,17 @@
                   "request_id": "b2170df985474b6d21a6eeccfb6bee67",
                   "results": [
                     {
-                      "T": "I:DJI",
-                      "c": 33786.62,
-                      "h": 33786.62,
-                      "l": 33677.74,
-                      "o": 33677.74,
-                      "t": 1682020800000
+                      "T": "I:NDX",
+                      "c": 15070.14948566977,
+                      "h": 15127.4195807999,
+                      "l": 14946.7243781848,
+                      "o": 15036.48391066877,
+                      "t": 1687291200000
                     }
                   ],
                   "resultsCount": 1,
                   "status": "OK",
-                  "ticker": "I:DJI"
+                  "ticker": "I:NDX"
                 },
                 "schema": {
                   "allOf": [
@@ -16387,6 +16360,7 @@
         "tags": [
           "indices:aggregates"
         ],
+        "x-polygon-entitlement-allowed-limited-tickers": true,
         "x-polygon-entitlement-data-type": {
           "description": "Aggregate data",
           "name": "aggregates"
@@ -16403,7 +16377,7 @@
         "parameters": [
           {
             "description": "The ticker symbol of Index.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -16492,22 +16466,22 @@
                   "request_id": "0cf72b6da685bcd386548ffe2895904a",
                   "results": [
                     {
-                      "c": 32245.14,
-                      "h": 32988.26,
-                      "l": 32200.66,
-                      "o": 32922.75,
+                      "c": 11995.88235998666,
+                      "h": 12340.44936267155,
+                      "l": 11970.34221717375,
+                      "o": 12230.83658266843,
                       "t": 1678341600000
                     },
                     {
-                      "c": 31787.7,
-                      "h": 32422.100000000002,
-                      "l": 31786.06,
-                      "o": 32198.9,
+                      "c": 11830.28178808306,
+                      "h": 12069.62262033557,
+                      "l": 11789.85923449393,
+                      "o": 12001.69552583921,
                       "t": 1678428000000
                     }
                   ],
                   "status": "OK",
-                  "ticker": "I:DJI"
+                  "ticker": "I:NDX"
                 },
                 "schema": {
                   "allOf": [
@@ -16608,6 +16575,7 @@
         "tags": [
           "indices:aggregates"
         ],
+        "x-polygon-entitlement-allowed-limited-tickers": true,
         "x-polygon-entitlement-data-type": {
           "description": "Aggregate data",
           "name": "aggregates"
@@ -18512,7 +18480,9 @@
                         "c": 0.296,
                         "h": 0.296,
                         "l": 0.294,
+                        "n": 2,
                         "o": 0.296,
+                        "t": 1684427880000,
                         "v": 123.4866,
                         "vw": 0
                       },
@@ -18861,7 +18830,9 @@
                       "c": 16235.1,
                       "h": 16264.29,
                       "l": 16129.3,
+                      "n": 558,
                       "o": 16257.51,
+                      "t": 1684428960000,
                       "v": 19.30791925,
                       "vw": 0
                     },
@@ -19410,7 +19380,9 @@
                         "c": 0.062377,
                         "h": 0.062377,
                         "l": 0.062377,
+                        "n": 2,
                         "o": 0.062377,
+                        "t": 1684426740000,
                         "v": 35420,
                         "vw": 0
                       },
@@ -19747,7 +19718,9 @@
                         "c": 0.117769,
                         "h": 0.11779633,
                         "l": 0.11773698,
+                        "n": 1,
                         "o": 0.11778,
+                        "t": 1684422000000,
                         "v": 202
                       },
                       "prevDay": {
@@ -20052,7 +20024,9 @@
                       "c": 1.18396,
                       "h": 1.18423,
                       "l": 1.1838,
+                      "n": 85,
                       "o": 1.18404,
+                      "t": 1684422000000,
                       "v": 41
                     },
                     "prevDay": {
@@ -20368,7 +20341,9 @@
                         "c": 0.886156,
                         "h": 0.886156,
                         "l": 0.886156,
+                        "n": 1,
                         "o": 0.886156,
+                        "t": 1684422000000,
                         "v": 1
                       },
                       "prevDay": {
@@ -20698,7 +20672,9 @@
                         "c": 20.506,
                         "h": 20.506,
                         "l": 20.506,
+                        "n": 1,
                         "o": 20.506,
+                        "t": 1684428600000,
                         "v": 5000,
                         "vw": 20.5105
                       },
@@ -21096,7 +21071,9 @@
                       "c": 120.4201,
                       "h": 120.468,
                       "l": 120.37,
+                      "n": 762,
                       "o": 120.435,
+                      "t": 1684428720000,
                       "v": 270796,
                       "vw": 120.4129
                     },
@@ -21509,7 +21485,9 @@
                         "c": 14.2284,
                         "h": 14.325,
                         "l": 14.2,
+                        "n": 5,
                         "o": 14.28,
+                        "t": 1684428600000,
                         "v": 6108,
                         "vw": 14.2426
                       },
@@ -22513,7 +22490,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -22521,7 +22498,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -22529,7 +22506,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -22537,7 +22514,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -22738,7 +22715,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -22746,7 +22723,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -22754,7 +22731,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -22762,7 +22739,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -22978,7 +22955,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -22986,7 +22963,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -22994,7 +22971,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -23002,7 +22979,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -27500,8 +27477,8 @@
           "name": "snapshots"
         },
         "x-polygon-entitlement-market-type": {
-          "description": "Stocks data",
-          "name": "stocks"
+          "description": "All asset classes",
+          "name": "universal"
         },
         "x-polygon-paginate": {
           "limit": {
@@ -27516,8 +27493,7 @@
             ]
           }
         }
-      },
-      "x-polygon-draft": true
+      }
     },
     "/v3/snapshot/indices": {
       "get": {
@@ -27535,7 +27511,6 @@
           },
           {
             "description": "Search a range of tickers lexicographically.",
-            "example": "I:DJI",
             "in": "query",
             "name": "ticker",
             "schema": {
@@ -27830,7 +27805,7 @@
         "parameters": [
           {
             "description": "The underlying ticker symbol of the option contract.",
-            "example": "AAPL",
+            "example": "EVRI",
             "in": "path",
             "name": "underlyingAsset",
             "required": true,
@@ -28480,7 +28455,7 @@
         "parameters": [
           {
             "description": "The underlying ticker symbol of the option contract.",
-            "example": "AAPL",
+            "example": "EVRI",
             "in": "path",
             "name": "underlyingAsset",
             "required": true,
@@ -28490,7 +28465,7 @@
           },
           {
             "description": "The option contract identifier.",
-            "example": "O:AAPL230616C00150000",
+            "example": "O:EVRI240119C00002500",
             "in": "path",
             "name": "optionContract",
             "required": true,
@@ -29009,7 +28984,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -29017,7 +28992,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -29025,7 +29000,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -29033,7 +29008,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -29255,7 +29230,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -29263,7 +29238,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -29271,7 +29246,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -29279,7 +29254,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -29500,7 +29475,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -29508,7 +29483,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -29516,7 +29491,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -29524,7 +29499,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -30734,7 +30709,8 @@
             "/v2/snapshot/locale/global/markets/crypto/tickers",
             "/v2/snapshot/locale/global/markets/crypto/{direction}",
             "/v2/snapshot/locale/global/markets/crypto/tickers/{ticker}",
-            "/v2/snapshot/locale/global/markets/crypto/tickers/{ticker}/book"
+            "/v2/snapshot/locale/global/markets/crypto/tickers/{ticker}/book",
+            "/v3/snapshot"
           ]
         },
         {
@@ -30824,7 +30800,8 @@
           "paths": [
             "/v2/snapshot/locale/global/markets/forex/tickers",
             "/v2/snapshot/locale/global/markets/forex/{direction}",
-            "/v2/snapshot/locale/global/markets/forex/tickers/{ticker}"
+            "/v2/snapshot/locale/global/markets/forex/tickers/{ticker}",
+            "/v3/snapshot"
           ]
         },
         {
@@ -30895,7 +30872,8 @@
         {
           "group": "Snapshots",
           "paths": [
-            "/v3/snapshot/indices"
+            "/v3/snapshot/indices",
+            "/v3/snapshot"
           ]
         }
       ],
@@ -30966,7 +30944,7 @@
           "paths": [
             "/v3/snapshot/options/{underlyingAsset}/{optionContract}",
             "/v3/snapshot/options/{underlyingAsset}",
-            "/v3/snapshot/options"
+            "/v3/snapshot"
           ]
         },
         {
@@ -31102,7 +31080,7 @@
             "/v2/snapshot/locale/us/markets/stocks/tickers",
             "/v2/snapshot/locale/us/markets/stocks/{direction}",
             "/v2/snapshot/locale/us/markets/stocks/tickers/{stocksTicker}",
-            "/v3/snapshot/stocks"
+            "/v3/snapshot"
           ]
         },
         {

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -1995,7 +1995,7 @@
     "/indices/AM": {
       "get": {
         "summary": "Aggregates (Per Minute)",
-        "description": "Stream real-time minute aggregates for a given index.\n",
+        "description": "Stream real-time minute aggregates for a given index ticker symbol.\n",
         "parameters": [
           {
             "name": "ticker",
@@ -2004,7 +2004,7 @@
             "required": true,
             "schema": {
               "type": "string",
-              "pattern": "/^([a-zA-Z]+)$/"
+              "pattern": "/^(I:[a-zA-Z0-9]+)$/"
             },
             "example": "*"
           }
@@ -3552,6 +3552,131 @@
       "CryptoReceivedTimestamp": {
         "type": "integer",
         "description": "The timestamp that the tick was received by Polygon."
+      },
+      "IndicesBaseAggregateEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "description": "The event type."
+          },
+          "sym": {
+            "type": "string",
+            "description": "The symbol representing the given index."
+          },
+          "op": {
+            "type": "number",
+            "format": "double",
+            "description": "Today's official opening value."
+          },
+          "o": {
+            "type": "number",
+            "format": "double",
+            "description": "The opening index value for this aggregate window."
+          },
+          "c": {
+            "type": "number",
+            "format": "double",
+            "description": "The closing index value for this aggregate window."
+          },
+          "h": {
+            "type": "number",
+            "format": "double",
+            "description": "The highest index value for this aggregate window."
+          },
+          "l": {
+            "type": "number",
+            "format": "double",
+            "description": "The lowest index value for this aggregate window."
+          },
+          "s": {
+            "type": "integer",
+            "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+          },
+          "e": {
+            "type": "integer",
+            "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+          }
+        }
+      },
+      "IndicesMinuteAggregateEvent": {
+        "allOf": [
+          {
+            "type": "object",
+            "properties": {
+              "ev": {
+                "description": "The event type."
+              },
+              "sym": {
+                "type": "string",
+                "description": "The symbol representing the given index."
+              },
+              "op": {
+                "type": "number",
+                "format": "double",
+                "description": "Today's official opening value."
+              },
+              "o": {
+                "type": "number",
+                "format": "double",
+                "description": "The opening index value for this aggregate window."
+              },
+              "c": {
+                "type": "number",
+                "format": "double",
+                "description": "The closing index value for this aggregate window."
+              },
+              "h": {
+                "type": "number",
+                "format": "double",
+                "description": "The highest index value for this aggregate window."
+              },
+              "l": {
+                "type": "number",
+                "format": "double",
+                "description": "The lowest index value for this aggregate window."
+              },
+              "s": {
+                "type": "integer",
+                "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+              },
+              "e": {
+                "type": "integer",
+                "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+              }
+            }
+          },
+          {
+            "properties": {
+              "ev": {
+                "enum": [
+                  "AM"
+                ],
+                "description": "The event type."
+              }
+            }
+          }
+        ]
+      },
+      "IndicesValueEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "type": "string",
+            "enum": [
+              "V"
+            ],
+            "description": "The event type."
+          },
+          "val": {
+            "description": "The value of the index."
+          },
+          "T": {
+            "description": "The assigned ticker of the index."
+          },
+          "t": {
+            "description": "The Timestamp in Unix MS."
+          }
+        }
       }
     },
     "parameters": {
@@ -3609,7 +3734,29 @@
           "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
         },
         "example": "*"
+      },
+      "IndicesIndexParam": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "*"
+      },
+      "IndicesIndexParamWithoutWildcard": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "I:SPX"
       }
     }
   }
-}
\ No newline at end of file
+}

Json.nostrict deprecated

I am getting the following error when compiling:

Edit: This error appeared when I added org.drewcarlson:coingecko as a dependency, excluding io.ktor on that package made the below error go away.

Exception in thread "DefaultDispatcher-worker-1" java.lang.NoSuchFieldError: Companion
	at io.polygon.kotlin.sdk.DefaultJvmHttpClientProvider$buildClient$1$1.invoke(HttpClientProvider.kt:64)
	at io.polygon.kotlin.sdk.DefaultJvmHttpClientProvider$buildClient$1$1.invoke(HttpClientProvider.kt:52)
	at io.ktor.client.HttpClientConfig$install$2.invoke(HttpClientConfig.kt:69)
	at io.ktor.client.HttpClientConfig$install$2.invoke(HttpClientConfig.kt:65)
	at io.ktor.client.features.json.JsonFeature$Feature.prepare(JsonFeature.kt:129)
	at io.ktor.client.features.json.JsonFeature$Feature.prepare(JsonFeature.kt:125)
	at io.ktor.client.HttpClientConfig$install$3.invoke(HttpClientConfig.kt:77)
	at io.ktor.client.HttpClientConfig$install$3.invoke(HttpClientConfig.kt:74)
	at io.ktor.client.HttpClientConfig.install(HttpClientConfig.kt:97)
	at io.ktor.client.HttpClient.<init>(HttpClient.kt:172)
	at io.ktor.client.HttpClient.<init>(HttpClient.kt:81)
	at io.ktor.client.HttpClientKt.HttpClient(HttpClient.kt:62)
	at io.polygon.kotlin.sdk.DefaultJvmHttpClientProvider.buildClient(HttpClientProvider.kt:61)
	at io.polygon.kotlin.sdk.rest.AggregatesKt.getAggregates(Aggregates.kt:85)

Kotlin: 1.5.31
Ktor: 1.6.5

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -47,6 +47,18 @@
           "paths": [
             "/stocks/LULD"
           ]
+        },
+        {
+          "paths": [
+            "/launchpad/stocks/AM"
+          ],
+          "launchpad": "exclusive"
+        },
+        {
+          "paths": [
+            "/launchpad/stocks/LV"
+          ],
+          "launchpad": "exclusive"
         }
       ]
     },
@@ -71,6 +83,18 @@
           "paths": [
             "/options/Q"
           ]
+        },
+        {
+          "paths": [
+            "/launchpad/options/AM"
+          ],
+          "launchpad": "exclusive"
+        },
+        {
+          "paths": [
+            "/launchpad/options/LV"
+          ],
+          "launchpad": "exclusive"
         }
       ]
     },
@@ -85,6 +109,18 @@
           "paths": [
             "/forex/C"
           ]
+        },
+        {
+          "paths": [
+            "/launchpad/forex/AM"
+          ],
+          "launchpad": "exclusive"
+        },
+        {
+          "paths": [
+            "/launchpad/forex/LV"
+          ],
+          "launchpad": "exclusive"
         }
       ]
     },
@@ -109,6 +145,18 @@
           "paths": [
             "/crypto/XL2"
           ]
+        },
+        {
+          "paths": [
+            "/launchpad/crypto/AM"
+          ],
+          "launchpad": "exclusive"
+        },
+        {
+          "paths": [
+            "/launchpad/crypto/LV"
+          ],
+          "launchpad": "exclusive"
         }
       ]
     },
@@ -867,6 +915,208 @@
         ]
       }
     },
+    "/launchpad/stocks/AM": {
+      "get": {
+        "summary": "Aggregates (Per Minute)",
+        "description": "Stream real-time minute aggregates for a given stock ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://polygon.io/docs/stocks/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^([a-zA-Z]+)$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a minute aggregate event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "description": "The event type."
+                    },
+                    "sym": {
+                      "type": "string",
+                      "description": "The ticker symbol for the given stock."
+                    },
+                    "v": {
+                      "type": "integer",
+                      "description": "The tick volume."
+                    },
+                    "av": {
+                      "type": "integer",
+                      "description": "Today's accumulated volume."
+                    },
+                    "op": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "Today's official opening price."
+                    },
+                    "vw": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "The volume-weighted average value for the aggregate window."
+                    },
+                    "o": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The open price for the symbol in the given time period."
+                    },
+                    "c": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The close price for the symbol in the given time period."
+                    },
+                    "h": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The highest price for the symbol in the given time period."
+                    },
+                    "l": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The lowest price for the symbol in the given time period."
+                    },
+                    "a": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "Today's volume weighted average price."
+                    },
+                    "z": {
+                      "type": "integer",
+                      "description": "The average trade size for this aggregate window."
+                    },
+                    "s": {
+                      "type": "integer",
+                      "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+                    },
+                    "e": {
+                      "type": "integer",
+                      "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "AM",
+                  "sym": "GTE",
+                  "v": 4110,
+                  "av": 9470157,
+                  "op": 0.4372,
+                  "vw": 0.4488,
+                  "o": 0.4488,
+                  "c": 0.4486,
+                  "h": 0.4489,
+                  "l": 0.4486,
+                  "a": 0.4352,
+                  "z": 685,
+                  "s": 1610144640000,
+                  "e": 1610144700000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "aggregates",
+          "description": "Aggregate data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "stocks",
+          "description": "Stocks data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
+    "/launchpad/stocks/LV": {
+      "get": {
+        "summary": "Value",
+        "description": "Real-time value for a given stock ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://polygon.io/docs/stocks/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^([a-zA-Z]+)$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a value event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "type": "string",
+                      "enum": [
+                        "LV"
+                      ],
+                      "description": "The event type."
+                    },
+                    "val": {
+                      "description": "The current value of the security."
+                    },
+                    "sym": {
+                      "description": "The ticker symbol for the given security."
+                    },
+                    "t": {
+                      "description": "The nanosecond timestamp."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "LV",
+                  "val": 3988.5,
+                  "sym": "AAPL",
+                  "t": 1678220098130
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "value",
+          "description": "Value data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "stocks",
+          "description": "Stocks data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
     "/options/T": {
       "get": {
         "summary": "Trades",
@@ -1358,6 +1608,208 @@
         ]
       }
     },
+    "/launchpad/options/AM": {
+      "get": {
+        "summary": "Aggregates (Per Minute)",
+        "description": "Stream real-time minute aggregates for a given option contract.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify an option contract. You're only allowed to subscribe to 1,000 option contracts per connection.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://polygon.io/docs/options/get_v3_reference_options_contracts).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(([a-zA-Z]+|[0-9])+)$/"
+            },
+            "example": "O:SPY241220P00720000"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a minute aggregate event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "description": "The event type."
+                    },
+                    "sym": {
+                      "type": "string",
+                      "description": "The ticker symbol for the given stock."
+                    },
+                    "v": {
+                      "type": "integer",
+                      "description": "The tick volume."
+                    },
+                    "av": {
+                      "type": "integer",
+                      "description": "Today's accumulated volume."
+                    },
+                    "op": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "Today's official opening price."
+                    },
+                    "vw": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "The volume-weighted average value for the aggregate window."
+                    },
+                    "o": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The open price for the symbol in the given time period."
+                    },
+                    "c": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The close price for the symbol in the given time period."
+                    },
+                    "h": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The highest price for the symbol in the given time period."
+                    },
+                    "l": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The lowest price for the symbol in the given time period."
+                    },
+                    "a": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "Today's volume weighted average price."
+                    },
+                    "z": {
+                      "type": "integer",
+                      "description": "The average trade size for this aggregate window."
+                    },
+                    "s": {
+                      "type": "integer",
+                      "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+                    },
+                    "e": {
+                      "type": "integer",
+                      "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "AM",
+                  "sym": "O:ONEM220121C00025000",
+                  "v": 2,
+                  "av": 8,
+                  "op": 2.2,
+                  "vw": 2.05,
+                  "o": 2.05,
+                  "c": 2.05,
+                  "h": 2.05,
+                  "l": 2.05,
+                  "a": 2.1312,
+                  "z": 1,
+                  "s": 1632419640000,
+                  "e": 1632419700000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "aggregates",
+          "description": "Aggregate data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "options",
+          "description": "Options data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
+    "/launchpad/options/LV": {
+      "get": {
+        "summary": "Value",
+        "description": "Real-time value for a given options ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify an option contract. You're only allowed to subscribe to 1,000 option contracts per connection.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://polygon.io/docs/options/get_v3_reference_options_contracts).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(([a-zA-Z]+|[0-9])+)$/"
+            },
+            "example": "O:SPY241220P00720000"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a value event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "type": "string",
+                      "enum": [
+                        "LV"
+                      ],
+                      "description": "The event type."
+                    },
+                    "val": {
+                      "description": "The current value of the security."
+                    },
+                    "sym": {
+                      "description": "The ticker symbol for the given security."
+                    },
+                    "t": {
+                      "description": "The nanosecond timestamp."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "LV",
+                  "val": 7.2,
+                  "sym": "O:TSLA210903C00700000",
+                  "t": 1401715883806000000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "value",
+          "description": "Value data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "options",
+          "description": "Options data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
     "/forex/C": {
       "get": {
         "summary": "Quotes",
@@ -1553,6 +2005,208 @@
         ]
       }
     },
+    "/launchpad/forex/AM": {
+      "get": {
+        "summary": "Aggregates (Per Minute)",
+        "description": "Stream real-time per-minute forex aggregates for a given forex pair.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://polygon.io/docs/forex/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(?<from>([A-Z]{3})\\/?<to>([A-Z]{3}))$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a minute aggregate event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "description": "The event type."
+                    },
+                    "sym": {
+                      "type": "string",
+                      "description": "The ticker symbol for the given stock."
+                    },
+                    "v": {
+                      "type": "integer",
+                      "description": "The tick volume."
+                    },
+                    "av": {
+                      "type": "integer",
+                      "description": "Today's accumulated volume."
+                    },
+                    "op": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "Today's official opening price."
+                    },
+                    "vw": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "The volume-weighted average value for the aggregate window."
+                    },
+                    "o": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The open price for the symbol in the given time period."
+                    },
+                    "c": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The close price for the symbol in the given time period."
+                    },
+                    "h": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The highest price for the symbol in the given time period."
+                    },
+                    "l": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The lowest price for the symbol in the given time period."
+                    },
+                    "a": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "Today's volume weighted average price."
+                    },
+                    "z": {
+                      "type": "integer",
+                      "description": "The average trade size for this aggregate window."
+                    },
+                    "s": {
+                      "type": "integer",
+                      "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+                    },
+                    "e": {
+                      "type": "integer",
+                      "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "AM",
+                  "sym": "C:USD-EUR",
+                  "v": 4110,
+                  "av": 9470157,
+                  "op": 0.9272,
+                  "vw": 0.9288,
+                  "o": 0.9288,
+                  "c": 0.9286,
+                  "h": 0.9289,
+                  "l": 0.9206,
+                  "a": 0.9352,
+                  "z": 685,
+                  "s": 1610144640000,
+                  "e": 1610144700000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "aggregates",
+          "description": "Aggregate data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "fx",
+          "description": "Forex data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
+    "/launchpad/forex/LV": {
+      "get": {
+        "summary": "Value",
+        "description": "Real-time value for a given forex ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://polygon.io/docs/forex/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(?<from>([A-Z]{3})\\/?<to>([A-Z]{3}))$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a value event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "type": "string",
+                      "enum": [
+                        "LV"
+                      ],
+                      "description": "The event type."
+                    },
+                    "val": {
+                      "description": "The current value of the security."
+                    },
+                    "sym": {
+                      "description": "The ticker symbol for the given security."
+                    },
+                    "t": {
+                      "description": "The nanosecond timestamp."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "LV",
+                  "val": 1.0631,
+                  "sym": "C:EURUSD",
+                  "t": 1678220098130
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "value",
+          "description": "Value data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "fx",
+          "description": "Forex data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
     "/crypto/XT": {
       "get": {
         "summary": "Trades",
@@ -1992,6 +2646,208 @@
         ]
       }
     },
+    "/launchpad/crypto/AM": {
+      "get": {
+        "summary": "Aggregates (Per Minute)",
+        "description": "Stream real-time per-minute crypto aggregates for a given crypto pair.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://polygon.io/docs/crypto/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a minute aggregate event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "description": "The event type."
+                    },
+                    "sym": {
+                      "type": "string",
+                      "description": "The ticker symbol for the given stock."
+                    },
+                    "v": {
+                      "type": "integer",
+                      "description": "The tick volume."
+                    },
+                    "av": {
+                      "type": "integer",
+                      "description": "Today's accumulated volume."
+                    },
+                    "op": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "Today's official opening price."
+                    },
+                    "vw": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "The volume-weighted average value for the aggregate window."
+                    },
+                    "o": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The open price for the symbol in the given time period."
+                    },
+                    "c": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The close price for the symbol in the given time period."
+                    },
+                    "h": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The highest price for the symbol in the given time period."
+                    },
+                    "l": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The lowest price for the symbol in the given time period."
+                    },
+                    "a": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "Today's volume weighted average price."
+                    },
+                    "z": {
+                      "type": "integer",
+                      "description": "The average trade size for this aggregate window."
+                    },
+                    "s": {
+                      "type": "integer",
+                      "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+                    },
+                    "e": {
+                      "type": "integer",
+                      "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "AM",
+                  "sym": "X:BTC-USD",
+                  "v": 951.6112,
+                  "av": 738.6112,
+                  "op": 26503.8,
+                  "vw": 26503.8,
+                  "o": 27503.8,
+                  "c": 27203.8,
+                  "h": 27893.8,
+                  "l": 26503.8,
+                  "a": 26503.8,
+                  "z": 10,
+                  "s": 1610463240000,
+                  "e": 1610463300000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "aggregates",
+          "description": "Aggregate data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "crypto",
+          "description": "Crypto data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
+    "/launchpad/crypto/LV": {
+      "get": {
+        "summary": "Value",
+        "description": "Real-time value for a given crypto ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://polygon.io/docs/crypto/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a value event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "type": "string",
+                      "enum": [
+                        "LV"
+                      ],
+                      "description": "The event type."
+                    },
+                    "val": {
+                      "description": "The current value of the security."
+                    },
+                    "sym": {
+                      "description": "The ticker symbol for the given security."
+                    },
+                    "t": {
+                      "description": "The nanosecond timestamp."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "LV",
+                  "val": 33021.9,
+                  "sym": "X:BTC-USD",
+                  "t": 1610462007425
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "value",
+          "description": "Value data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "crypto",
+          "description": "Crypto data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
     "/indices/AM": {
       "get": {
         "summary": "Aggregates (Per Minute)",
@@ -2163,7 +3019,7 @@
         },
         "x-polygon-entitlement-data-type": {
           "name": "value",
-          "description": "Index value data"
+          "description": "Value data"
         },
         "x-polygon-entitlement-market-type": {
           "name": "indices",
@@ -3677,6 +4533,94 @@
             "description": "The Timestamp in Unix MS."
           }
         }
+      },
+      "LaunchpadWebsocketMinuteAggregateEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "description": "The event type."
+          },
+          "sym": {
+            "type": "string",
+            "description": "The ticker symbol for the given stock."
+          },
+          "v": {
+            "type": "integer",
+            "description": "The tick volume."
+          },
+          "av": {
+            "type": "integer",
+            "description": "Today's accumulated volume."
+          },
+          "op": {
+            "type": "number",
+            "format": "double",
+            "description": "Today's official opening price."
+          },
+          "vw": {
+            "type": "number",
+            "format": "float",
+            "description": "The volume-weighted average value for the aggregate window."
+          },
+          "o": {
+            "type": "number",
+            "format": "double",
+            "description": "The open price for the symbol in the given time period."
+          },
+          "c": {
+            "type": "number",
+            "format": "double",
+            "description": "The close price for the symbol in the given time period."
+          },
+          "h": {
+            "type": "number",
+            "format": "double",
+            "description": "The highest price for the symbol in the given time period."
+          },
+          "l": {
+            "type": "number",
+            "format": "double",
+            "description": "The lowest price for the symbol in the given time period."
+          },
+          "a": {
+            "type": "number",
+            "format": "float",
+            "description": "Today's volume weighted average price."
+          },
+          "z": {
+            "type": "integer",
+            "description": "The average trade size for this aggregate window."
+          },
+          "s": {
+            "type": "integer",
+            "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+          },
+          "e": {
+            "type": "integer",
+            "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+          }
+        }
+      },
+      "LaunchpadWebsocketValueEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "type": "string",
+            "enum": [
+              "LV"
+            ],
+            "description": "The event type."
+          },
+          "val": {
+            "description": "The current value of the security."
+          },
+          "sym": {
+            "description": "The ticker symbol for the given security."
+          },
+          "t": {
+            "description": "The nanosecond timestamp."
+          }
+        }
       }
     },
     "parameters": {
@@ -3759,4 +4703,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}

Duplicate class error

Hi,
After I added below dependencies in my application build.gradle

implementation 'com.github.polygon-io:client-jvm:v2.0.0'
implementation 'com.tylerthrailkill.helpers:pretty-print:v2.0.7'
implementation 'io.ktor:ktor-client-core:1.5.3'
implementation 'io.ktor:ktor-client-cio-jvm:1.5.3

I started getting below error. Could you please check and advise.

Duplicate class javax.activation.MimetypesFileTypeMap found in modules activation-1.1.jar (javax.activation:activation:1.1) and javax.activation-1.2.0.jar (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.ObjectDataContentHandler found in modules activation-1.1.jar (javax.activation:activation:1.1) and javax.activation-1.2.0.jar (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.SecuritySupport found in modules activation-1.1.jar (javax.activation:activation:1.1) and javax.activation-1.2.0.jar (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.SecuritySupport$1 found in modules activation-1.1.jar (javax.activation:activation:1.1) and javax.activation-1.2.0.jar (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.SecuritySupport$2 found in modules activation-1.1.jar (javax.activation:activation:1.1) and javax.activation-1.2.0.jar (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.SecuritySupport$3 found in modules activation-1.1.jar (javax.activation:activation:1.1) and javax.activation-1.2.0.jar (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.SecuritySupport$4 found in modules activation-1.1.jar (javax.activation:activation:1.1) and javax.activation-1.2.0.jar (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.SecuritySupport$5 found in modules activation-1.1.jar (javax.activation:activation:1.1) and javax.activation-1.2.0.jar (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.URLDataSource found in modules activation-1.1.jar (javax.activation:activation:1.1) and javax.activation-1.2.0.jar (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.UnsupportedDataTypeException found in modules activation-1.1.jar (javax.activation:activation:1.1) and javax.activation-1.2.0.jar (com.sun.activation:javax.activation:1.2.0)

version 4.1 not available on jitpack

Seems the latest version (4.1) is not available on jitpack.io. I can see the following error when I try to get it (https://jitpack.io/#polygon-io/client-jvm/v4.1.0):

Build starting...
Start: Fri Dec 23 14:55:58 UTC 2022 394e0a72f1ee
Git:
v4.1.0-0-g803121d
commit 803121d259731f4a9fc5782e547574bcff333ceb
Author: Michael Moghaddam 
Date:   Wed Dec 21 15:56:33 2022 -0500

    bring new patterns to trades/quotes and @SafeVarargs everywhere (#61)
    

Init SDKMan
Found gradle
Gradle build script
Found gradle version: 7.2.
Using gradle wrapper
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
Downloading https://services.gradle.org/distributions/gradle-7.2-bin.zip
.
Unzipping /home/jitpack/.gradle/wrapper/dists/gradle-7.2-bin/2dnblmf4td7x66yl1d74lt32g/gradle-7.2-bin.zip to /home/jitpack/.gradle/wrapper/dists/gradle-7.2-bin/2dnblmf4td7x66yl1d74lt32g
Set executable permissions for: /home/jitpack/.gradle/wrapper/dists/gradle-7.2-bin/2dnblmf4td7x66yl1d74lt32g/gradle-7.2/bin/gradle

------------------------------------------------------------
Gradle 7.2
------------------------------------------------------------

Build time:   2021-08-17 09:59:03 UTC
Revision:     a773786b58bb28710e3dc96c4d1a7063628952ad

Kotlin:       1.5.21
Groovy:       3.0.8
Ant:          Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM:          1.8.0_252 (Private Build 25.252-b09)
OS:           Linux 4.10.0-28-generic amd64

0m2.872s
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-8u252-b09-1~16.04-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
Getting tasks: ./gradlew tasks --all
Tasks: 
Found javadoc task

 โš ๏ธ   WARNING:
 Gradle 'publishToMavenLocal' task not found. Please add the 'maven-publish' or 'maven' plugin.
 See the documentation and examples: https://docs.jitpack.io

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
/home/jitpack/build/build.gradle.kts has component: java
/home/jitpack/build/sample/build.gradle.kts has component: java
Running: ./gradlew clean -Pgroup=com.github.polygon-io -Pversion=v4.1.0 -xtest publishToMavenLocal

> Configure project :

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.2/userguide/command_line_interface.html#sec:command_line_warnings
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
e: /home/jitpack/build/build.gradle.kts:65:13: Expecting an element
e: /home/jitpack/build/build.gradle.kts:67:9: Expecting an element
e: /home/jitpack/build/build.gradle.kts:74:34: Expecting an element
e: /home/jitpack/build/build.gradle.kts:74:46: Expecting an element
e: /home/jitpack/build/build.gradle.kts:75:34: Expecting an element
e: /home/jitpack/build/build.gradle.kts:84:45: Expecting an element
e: /home/jitpack/build/build.gradle.kts:65:1: Function invocation 'apply()' expected
e: /home/jitpack/build/build.gradle.kts:65:1: Not enough information to infer type variable T
e: /home/jitpack/build/build.gradle.kts:65:7: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
public inline fun ObjectConfigurationAction.plugin(pluginClass: KClass<out Plugin<*>>): ObjectConfigurationAction defined in org.gradle.kotlin.dsl
e: /home/jitpack/build/build.gradle.kts:65:15: Too many characters in a character literal ''maven-publish''
e: /home/jitpack/build/build.gradle.kts:67:1: Unresolved reference: def
e: /home/jitpack/build/build.gradle.kts:70:1: Expression 'publishing' cannot be invoked as a function. The function 'invoke()' is not found
e: /home/jitpack/build/build.gradle.kts:70:1: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
public val PluginDependenciesSpec.publishing: PluginDependencySpec defined in org.gradle.kotlin.dsl
e: /home/jitpack/build/build.gradle.kts:71:5: Unresolved reference: publications
e: /home/jitpack/build/build.gradle.kts:72:9: Expression '"${name}"' of type 'String' cannot be invoked as a function. The function 'invoke()' is not found
e: /home/jitpack/build/build.gradle.kts:72:19: Classifier 'MavenPublication' does not have a companion object, and thus must be initialized here
e: /home/jitpack/build/build.gradle.kts:74:17: Unresolved reference: def
e: /home/jitpack/build/build.gradle.kts:74:54: Unresolved reference: it
e: /home/jitpack/build/build.gradle.kts:74:65: Too many characters in a character literal ''java''
e: /home/jitpack/build/build.gradle.kts:74:75: Unresolved reference: it
e: /home/jitpack/build/build.gradle.kts:74:86: Too many characters in a character literal ''release''
e: /home/jitpack/build/build.gradle.kts:75:17: Function invocation 'from(...)' expected
e: /home/jitpack/build/build.gradle.kts:75:17: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
public inline fun <reified T : VersionControlSpec> VcsMapping.from(noinline configureAction: TypeVariable(T).() -> Unit): Unit defined in org.gradle.kotlin.dsl
public inline fun <T : VersionControlSpec> VcsMapping.from(type: KClass<TypeVariable(T)>, configureAction: Action<in TypeVariable(T)>): Unit defined in org.gradle.kotlin.dsl
e: /home/jitpack/build/build.gradle.kts:77:13: Unresolved reference: groupId
e: /home/jitpack/build/build.gradle.kts:78:13: Unresolved reference: artifactId
e: /home/jitpack/build/build.gradle.kts:79:23: Unresolved reference: ver
e: /home/jitpack/build/build.gradle.kts:84:7: Unresolved reference: publishToMavenLocal

FAILURE: Build failed with an exception.

* Where:
Build file '/home/jitpack/build/build.gradle.kts' line: 65

* What went wrong:
Script compilation errors:

  Line 65: apply plugin: 'maven-publish'
                       ^ Expecting an element

  Line 67: def ver = version
                   ^ Expecting an element

  Line 74:                 def pubComponent = components.find { it.name == 'java' || it.name == 'release' }
                                            ^ Expecting an element

  Line 74:                 def pubComponent = components.find { it.name == 'java' || it.name == 'release' }
                                                        ^ Expecting an element

  Line 75:                 from pubComponent
                                            ^ Expecting an element

  Line 84: tasks.publishToMavenLocal.dependsOn assemble
                                                       ^ Expecting an element

  Line 65: apply plugin: 'maven-publish'
           ^ Function invocation 'apply()' expected

  Line 65: apply plugin: 'maven-publish'
           ^ Not enough information to infer type variable T

  Line 65: apply plugin: 'maven-publish'
                 ^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
                     public inline fun ObjectConfigurationAction.plugin(pluginClass: KClass<out Plugin<*>>): ObjectConfigurationAction defined in org.gradle.kotlin.dsl

  Line 65: apply plugin: 'maven-publish'
                         ^ Too many characters in a character literal ''maven-publish''

  Line 67: def ver = version
           ^ Unresolved reference: def

  Line 70: publishing {
           ^ Expression 'publishing' cannot be invoked as a function. The function 'invoke()' is not found

  Line 70: publishing {
           ^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
               public val PluginDependenciesSpec.publishing: PluginDependencySpec defined in org.gradle.kotlin.dsl

  Line 71:     publications {
               ^ Unresolved reference: publications

  Line 72:         "${name}"(MavenPublication) {
                   ^ Expression '"${name}"' of type 'String' cannot be invoked as a function. The function 'invoke()' is not found

  Line 72:         "${name}"(MavenPublication) {
                             ^ Classifier 'MavenPublication' does not have a companion object, and thus must be initialized here

  Line 74:                 def pubComponent = components.find { it.name == 'java' || it.name == 'release' }
                           ^ Unresolved reference: def

  Line 74:                 def pubComponent = components.find { it.name == 'java' || it.name == 'release' }
                                                                ^ Unresolved reference: it

  Line 74:                 def pubComponent = components.find { it.name == 'java' || it.name == 'release' }
                                                                           ^ Too many characters in a character literal ''java''

  Line 74:                 def pubComponent = components.find { it.name == 'java' || it.name == 'release' }
                                                                                     ^ Unresolved reference: it

  Line 74:                 def pubComponent = components.find { it.name == 'java' || it.name == 'release' }
                                                                                                ^ Too many characters in a character literal ''release''

  Line 75:                 from pubComponent
                           ^ Function invocation 'from(...)' expected

  Line 75:                 from pubComponent
                           ^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
                               public inline fun <reified T : VersionControlSpec> VcsMapping.from(noinline configureAction: TypeVariable(T).() -> Unit): Unit defined in org.gradle.kotlin.dsl
                               public inline fun <T : VersionControlSpec> VcsMapping.from(type: KClass<TypeVariable(T)>, configureAction: Action<in TypeVariable(T)>): Unit defined in org.gradle.kotlin.dsl

  Line 77:             groupId = group
                       ^ Unresolved reference: groupId

  Line 78:             artifactId = name
                       ^ Unresolved reference: artifactId

  Line 79:             version = ver
                                 ^ Unresolved reference: ver

  Line 84: tasks.publishToMavenLocal.dependsOn assemble
                 ^ Unresolved reference: publishToMavenLocal

27 errors

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1s
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
e: /home/jitpack/build/build.gradle.kts:65:13: Expecting an element
e: /home/jitpack/build/build.gradle.kts:67:9: Expecting an element
e: /home/jitpack/build/build.gradle.kts:74:34: Expecting an element
e: /home/jitpack/build/build.gradle.kts:74:46: Expecting an element
e: /home/jitpack/build/build.gradle.kts:75:34: Expecting an element
e: /home/jitpack/build/build.gradle.kts:84:45: Expecting an element
e: /home/jitpack/build/build.gradle.kts:65:1: Function invocation 'apply()' expected
e: /home/jitpack/build/build.gradle.kts:65:1: Not enough information to infer type variable T
e: /home/jitpack/build/build.gradle.kts:65:7: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
public inline fun ObjectConfigurationAction.plugin(pluginClass: KClass<out Plugin<*>>): ObjectConfigurationAction defined in org.gradle.kotlin.dsl
e: /home/jitpack/build/build.gradle.kts:65:15: Too many characters in a character literal ''maven-publish''
e: /home/jitpack/build/build.gradle.kts:67:1: Unresolved reference: def
e: /home/jitpack/build/build.gradle.kts:70:1: Expression 'publishing' cannot be invoked as a function. The function 'invoke()' is not found
e: /home/jitpack/build/build.gradle.kts:70:1: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
public val PluginDependenciesSpec.publishing: PluginDependencySpec defined in org.gradle.kotlin.dsl
e: /home/jitpack/build/build.gradle.kts:71:5: Unresolved reference: publications
e: /home/jitpack/build/build.gradle.kts:72:9: Expression '"${name}"' of type 'String' cannot be invoked as a function. The function 'invoke()' is not found
e: /home/jitpack/build/build.gradle.kts:72:19: Classifier 'MavenPublication' does not have a companion object, and thus must be initialized here
e: /home/jitpack/build/build.gradle.kts:74:17: Unresolved reference: def
e: /home/jitpack/build/build.gradle.kts:74:54: Unresolved reference: it
e: /home/jitpack/build/build.gradle.kts:74:65: Too many characters in a character literal ''java''
e: /home/jitpack/build/build.gradle.kts:74:75: Unresolved reference: it
e: /home/jitpack/build/build.gradle.kts:74:86: Too many characters in a character literal ''release''
e: /home/jitpack/build/build.gradle.kts:75:17: Function invocation 'from(...)' expected
e: /home/jitpack/build/build.gradle.kts:75:17: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
public inline fun <reified T : VersionControlSpec> VcsMapping.from(noinline configureAction: TypeVariable(T).() -> Unit): Unit defined in org.gradle.kotlin.dsl
public inline fun <T : VersionControlSpec> VcsMapping.from(type: KClass<TypeVariable(T)>, configureAction: Action<in TypeVariable(T)>): Unit defined in org.gradle.kotlin.dsl
e: /home/jitpack/build/build.gradle.kts:77:13: Unresolved reference: groupId
e: /home/jitpack/build/build.gradle.kts:78:13: Unresolved reference: artifactId
e: /home/jitpack/build/build.gradle.kts:79:23: Unresolved reference: ver
e: /home/jitpack/build/build.gradle.kts:84:7: Unresolved reference: publishToMavenLocal

FAILURE: Build failed with an exception.

* Where:
Build file '/home/jitpack/build/build.gradle.kts' line: 65

* What went wrong:
Script compilation errors:

  Line 65: apply plugin: 'maven-publish'
                       ^ Expecting an element

  Line 67: def ver = version
                   ^ Expecting an element

  Line 74:                 def pubComponent = components.find { it.name == 'java' || it.name == 'release' }
                                            ^ Expecting an element

  Line 74:                 def pubComponent = components.find { it.name == 'java' || it.name == 'release' }
                                                        ^ Expecting an element

  Line 75:                 from pubComponent
                                            ^ Expecting an element

  Line 84: tasks.publishToMavenLocal.dependsOn assemble
                                                       ^ Expecting an element

  Line 65: apply plugin: 'maven-publish'
           ^ Function invocation 'apply()' expected

  Line 65: apply plugin: 'maven-publish'
           ^ Not enough information to infer type variable T

  Line 65: apply plugin: 'maven-publish'
                 ^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
                     public inline fun ObjectConfigurationAction.plugin(pluginClass: KClass<out Plugin<*>>): ObjectConfigurationAction defined in org.gradle.kotlin.dsl

  Line 65: apply plugin: 'maven-publish'
                         ^ Too many characters in a character literal ''maven-publish''

  Line 67: def ver = version
           ^ Unresolved reference: def

  Line 70: publishing {
           ^ Expression 'publishing' cannot be invoked as a function. The function 'invoke()' is not found

  Line 70: publishing {
           ^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
               public val PluginDependenciesSpec.publishing: PluginDependencySpec defined in org.gradle.kotlin.dsl

  Line 71:     publications {
               ^ Unresolved reference: publications

  Line 72:         "${name}"(MavenPublication) {
                   ^ Expression '"${name}"' of type 'String' cannot be invoked as a function. The function 'invoke()' is not found

  Line 72:         "${name}"(MavenPublication) {
                             ^ Classifier 'MavenPublication' does not have a companion object, and thus must be initialized here

  Line 74:                 def pubComponent = components.find { it.name == 'java' || it.name == 'release' }
                           ^ Unresolved reference: def

  Line 74:                 def pubComponent = components.find { it.name == 'java' || it.name == 'release' }
                                                                ^ Unresolved reference: it

  Line 74:                 def pubComponent = components.find { it.name == 'java' || it.name == 'release' }
                                                                           ^ Too many characters in a character literal ''java''

  Line 74:                 def pubComponent = components.find { it.name == 'java' || it.name == 'release' }
                                                                                     ^ Unresolved reference: it

  Line 74:                 def pubComponent = components.find { it.name == 'java' || it.name == 'release' }
                                                                                                ^ Too many characters in a character literal ''release''

  Line 75:                 from pubComponent
                           ^ Function invocation 'from(...)' expected

  Line 75:                 from pubComponent
                           ^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
                               public inline fun <reified T : VersionControlSpec> VcsMapping.from(noinline configureAction: TypeVariable(T).() -> Unit): Unit defined in org.gradle.kotlin.dsl
                               public inline fun <T : VersionControlSpec> VcsMapping.from(type: KClass<TypeVariable(T)>, configureAction: Action<in TypeVariable(T)>): Unit defined in org.gradle.kotlin.dsl

  Line 77:             groupId = group
                       ^ Unresolved reference: groupId

  Line 78:             artifactId = name
                       ^ Unresolved reference: artifactId

  Line 79:             version = ver
                                 ^ Unresolved reference: ver

  Line 84: tasks.publishToMavenLocal.dependsOn assemble
                 ^ Unresolved reference: publishToMavenLocal

27 errors

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1s
Build tool exit code: 0
Looking for artifacts...
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
Looking for pom.xml in build directory and ~/.m2
2022-12-23T14:56:43.940315385Z
Exit code: 0

โš ๏ธ ERROR: No build artifacts found

` ``

Client update needed to match REST spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/rest.json
+++ https://api.polygon.io/openapi
@@ -13145,6 +13145,7 @@
         "tags": [
           "stocks:open-close"
         ],
+        "x-polygon-entitlement-allowed-limited-tickers": true,
         "x-polygon-entitlement-data-type": {
           "description": "Aggregate data",
           "name": "aggregates"
@@ -16387,6 +16388,7 @@
         "tags": [
           "indices:aggregates"
         ],
+        "x-polygon-entitlement-allowed-limited-tickers": true,
         "x-polygon-entitlement-data-type": {
           "description": "Aggregate data",
           "name": "aggregates"
@@ -16608,6 +16610,7 @@
         "tags": [
           "indices:aggregates"
         ],
+        "x-polygon-entitlement-allowed-limited-tickers": true,
         "x-polygon-entitlement-data-type": {
           "description": "Aggregate data",
           "name": "aggregates"
@@ -18512,7 +18515,9 @@
                         "c": 0.296,
                         "h": 0.296,
                         "l": 0.294,
+                        "n": 2,
                         "o": 0.296,
+                        "t": 1684427880000,
                         "v": 123.4866,
                         "vw": 0
                       },
@@ -18861,7 +18865,9 @@
                       "c": 16235.1,
                       "h": 16264.29,
                       "l": 16129.3,
+                      "n": 558,
                       "o": 16257.51,
+                      "t": 1684428960000,
                       "v": 19.30791925,
                       "vw": 0
                     },
@@ -19410,7 +19415,9 @@
                         "c": 0.062377,
                         "h": 0.062377,
                         "l": 0.062377,
+                        "n": 2,
                         "o": 0.062377,
+                        "t": 1684426740000,
                         "v": 35420,
                         "vw": 0
                       },
@@ -19747,7 +19753,9 @@
                         "c": 0.117769,
                         "h": 0.11779633,
                         "l": 0.11773698,
+                        "n": 1,
                         "o": 0.11778,
+                        "t": 1684422000000,
                         "v": 202
                       },
                       "prevDay": {
@@ -20052,7 +20059,9 @@
                       "c": 1.18396,
                       "h": 1.18423,
                       "l": 1.1838,
+                      "n": 85,
                       "o": 1.18404,
+                      "t": 1684422000000,
                       "v": 41
                     },
                     "prevDay": {
@@ -20368,7 +20376,9 @@
                         "c": 0.886156,
                         "h": 0.886156,
                         "l": 0.886156,
+                        "n": 1,
                         "o": 0.886156,
+                        "t": 1684422000000,
                         "v": 1
                       },
                       "prevDay": {
@@ -20698,7 +20707,9 @@
                         "c": 20.506,
                         "h": 20.506,
                         "l": 20.506,
+                        "n": 1,
                         "o": 20.506,
+                        "t": 1684428600000,
                         "v": 5000,
                         "vw": 20.5105
                       },
@@ -21096,7 +21106,9 @@
                       "c": 120.4201,
                       "h": 120.468,
                       "l": 120.37,
+                      "n": 762,
                       "o": 120.435,
+                      "t": 1684428720000,
                       "v": 270796,
                       "vw": 120.4129
                     },
@@ -21509,7 +21520,9 @@
                         "c": 14.2284,
                         "h": 14.325,
                         "l": 14.2,
+                        "n": 5,
                         "o": 14.28,
+                        "t": 1684428600000,
                         "v": 6108,
                         "vw": 14.2426
                       },
@@ -27500,8 +27512,8 @@
           "name": "snapshots"
         },
         "x-polygon-entitlement-market-type": {
-          "description": "Stocks data",
-          "name": "stocks"
+          "description": "All asset classes",
+          "name": "universal"
         },
         "x-polygon-paginate": {
           "limit": {
@@ -27516,8 +27528,7 @@
             ]
           }
         }
-      },
-      "x-polygon-draft": true
+      }
     },
     "/v3/snapshot/indices": {
       "get": {
@@ -27830,7 +27841,7 @@
         "parameters": [
           {
             "description": "The underlying ticker symbol of the option contract.",
-            "example": "AAPL",
+            "example": "EVRI",
             "in": "path",
             "name": "underlyingAsset",
             "required": true,
@@ -28480,7 +28491,7 @@
         "parameters": [
           {
             "description": "The underlying ticker symbol of the option contract.",
-            "example": "AAPL",
+            "example": "EVRI",
             "in": "path",
             "name": "underlyingAsset",
             "required": true,
@@ -28490,7 +28501,7 @@
           },
           {
             "description": "The option contract identifier.",
-            "example": "O:AAPL230616C00150000",
+            "example": "O:EVRI240119C00002500",
             "in": "path",
             "name": "optionContract",
             "required": true,
@@ -30734,7 +30745,8 @@
             "/v2/snapshot/locale/global/markets/crypto/tickers",
             "/v2/snapshot/locale/global/markets/crypto/{direction}",
             "/v2/snapshot/locale/global/markets/crypto/tickers/{ticker}",
-            "/v2/snapshot/locale/global/markets/crypto/tickers/{ticker}/book"
+            "/v2/snapshot/locale/global/markets/crypto/tickers/{ticker}/book",
+            "/v3/snapshot"
           ]
         },
         {
@@ -30824,7 +30836,8 @@
           "paths": [
             "/v2/snapshot/locale/global/markets/forex/tickers",
             "/v2/snapshot/locale/global/markets/forex/{direction}",
-            "/v2/snapshot/locale/global/markets/forex/tickers/{ticker}"
+            "/v2/snapshot/locale/global/markets/forex/tickers/{ticker}",
+            "/v3/snapshot"
           ]
         },
         {
@@ -30895,7 +30908,8 @@
         {
           "group": "Snapshots",
           "paths": [
-            "/v3/snapshot/indices"
+            "/v3/snapshot/indices",
+            "/v3/snapshot"
           ]
         }
       ],
@@ -30966,7 +30980,7 @@
           "paths": [
             "/v3/snapshot/options/{underlyingAsset}/{optionContract}",
             "/v3/snapshot/options/{underlyingAsset}",
-            "/v3/snapshot/options"
+            "/v3/snapshot"
           ]
         },
         {
@@ -31102,7 +31116,7 @@
             "/v2/snapshot/locale/us/markets/stocks/tickers",
             "/v2/snapshot/locale/us/markets/stocks/{direction}",
             "/v2/snapshot/locale/us/markets/stocks/tickers/{stocksTicker}",
-            "/v3/snapshot/stocks"
+            "/v3/snapshot"
           ]
         },
         {

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -47,6 +47,18 @@
           "paths": [
             "/stocks/LULD"
           ]
+        },
+        {
+          "paths": [
+            "/launchpad/stocks/AM"
+          ],
+          "launchpad": "exclusive"
+        },
+        {
+          "paths": [
+            "/launchpad/stocks/LV"
+          ],
+          "launchpad": "exclusive"
         }
       ]
     },
@@ -71,6 +83,18 @@
           "paths": [
             "/options/Q"
           ]
+        },
+        {
+          "paths": [
+            "/launchpad/options/AM"
+          ],
+          "launchpad": "exclusive"
+        },
+        {
+          "paths": [
+            "/launchpad/options/LV"
+          ],
+          "launchpad": "exclusive"
         }
       ]
     },
@@ -85,6 +109,18 @@
           "paths": [
             "/forex/C"
           ]
+        },
+        {
+          "paths": [
+            "/launchpad/forex/AM"
+          ],
+          "launchpad": "exclusive"
+        },
+        {
+          "paths": [
+            "/launchpad/forex/LV"
+          ],
+          "launchpad": "exclusive"
         }
       ]
     },
@@ -109,6 +145,18 @@
           "paths": [
             "/crypto/XL2"
           ]
+        },
+        {
+          "paths": [
+            "/launchpad/crypto/AM"
+          ],
+          "launchpad": "exclusive"
+        },
+        {
+          "paths": [
+            "/launchpad/crypto/LV"
+          ],
+          "launchpad": "exclusive"
         }
       ]
     },
@@ -867,6 +915,208 @@
         ]
       }
     },
+    "/launchpad/stocks/AM": {
+      "get": {
+        "summary": "Aggregates (Per Minute)",
+        "description": "Stream real-time minute aggregates for a given stock ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://polygon.io/docs/stocks/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^([a-zA-Z]+)$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a minute aggregate event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "description": "The event type."
+                    },
+                    "sym": {
+                      "type": "string",
+                      "description": "The ticker symbol for the given stock."
+                    },
+                    "v": {
+                      "type": "integer",
+                      "description": "The tick volume."
+                    },
+                    "av": {
+                      "type": "integer",
+                      "description": "Today's accumulated volume."
+                    },
+                    "op": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "Today's official opening price."
+                    },
+                    "vw": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "The volume-weighted average value for the aggregate window."
+                    },
+                    "o": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The open price for the symbol in the given time period."
+                    },
+                    "c": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The close price for the symbol in the given time period."
+                    },
+                    "h": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The highest price for the symbol in the given time period."
+                    },
+                    "l": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The lowest price for the symbol in the given time period."
+                    },
+                    "a": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "Today's volume weighted average price."
+                    },
+                    "z": {
+                      "type": "integer",
+                      "description": "The average trade size for this aggregate window."
+                    },
+                    "s": {
+                      "type": "integer",
+                      "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+                    },
+                    "e": {
+                      "type": "integer",
+                      "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "AM",
+                  "sym": "GTE",
+                  "v": 4110,
+                  "av": 9470157,
+                  "op": 0.4372,
+                  "vw": 0.4488,
+                  "o": 0.4488,
+                  "c": 0.4486,
+                  "h": 0.4489,
+                  "l": 0.4486,
+                  "a": 0.4352,
+                  "z": 685,
+                  "s": 1610144640000,
+                  "e": 1610144700000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "aggregates",
+          "description": "Aggregate data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "stocks",
+          "description": "Stocks data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
+    "/launchpad/stocks/LV": {
+      "get": {
+        "summary": "Value",
+        "description": "Real-time value for a given stock ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://polygon.io/docs/stocks/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^([a-zA-Z]+)$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a value event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "type": "string",
+                      "enum": [
+                        "LV"
+                      ],
+                      "description": "The event type."
+                    },
+                    "val": {
+                      "description": "The current value of the security."
+                    },
+                    "sym": {
+                      "description": "The ticker symbol for the given security."
+                    },
+                    "t": {
+                      "description": "The nanosecond timestamp."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "LV",
+                  "val": 3988.5,
+                  "sym": "AAPL",
+                  "t": 1678220098130
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "value",
+          "description": "Value data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "stocks",
+          "description": "Stocks data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
     "/options/T": {
       "get": {
         "summary": "Trades",
@@ -1358,6 +1608,208 @@
         ]
       }
     },
+    "/launchpad/options/AM": {
+      "get": {
+        "summary": "Aggregates (Per Minute)",
+        "description": "Stream real-time minute aggregates for a given option contract.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify an option contract. You're only allowed to subscribe to 1,000 option contracts per connection.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://polygon.io/docs/options/get_v3_reference_options_contracts).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(([a-zA-Z]+|[0-9])+)$/"
+            },
+            "example": "O:SPY241220P00720000"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a minute aggregate event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "description": "The event type."
+                    },
+                    "sym": {
+                      "type": "string",
+                      "description": "The ticker symbol for the given stock."
+                    },
+                    "v": {
+                      "type": "integer",
+                      "description": "The tick volume."
+                    },
+                    "av": {
+                      "type": "integer",
+                      "description": "Today's accumulated volume."
+                    },
+                    "op": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "Today's official opening price."
+                    },
+                    "vw": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "The volume-weighted average value for the aggregate window."
+                    },
+                    "o": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The open price for the symbol in the given time period."
+                    },
+                    "c": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The close price for the symbol in the given time period."
+                    },
+                    "h": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The highest price for the symbol in the given time period."
+                    },
+                    "l": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The lowest price for the symbol in the given time period."
+                    },
+                    "a": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "Today's volume weighted average price."
+                    },
+                    "z": {
+                      "type": "integer",
+                      "description": "The average trade size for this aggregate window."
+                    },
+                    "s": {
+                      "type": "integer",
+                      "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+                    },
+                    "e": {
+                      "type": "integer",
+                      "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "AM",
+                  "sym": "O:ONEM220121C00025000",
+                  "v": 2,
+                  "av": 8,
+                  "op": 2.2,
+                  "vw": 2.05,
+                  "o": 2.05,
+                  "c": 2.05,
+                  "h": 2.05,
+                  "l": 2.05,
+                  "a": 2.1312,
+                  "z": 1,
+                  "s": 1632419640000,
+                  "e": 1632419700000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "aggregates",
+          "description": "Aggregate data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "options",
+          "description": "Options data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
+    "/launchpad/options/LV": {
+      "get": {
+        "summary": "Value",
+        "description": "Real-time value for a given options ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify an option contract. You're only allowed to subscribe to 1,000 option contracts per connection.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://polygon.io/docs/options/get_v3_reference_options_contracts).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(([a-zA-Z]+|[0-9])+)$/"
+            },
+            "example": "O:SPY241220P00720000"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a value event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "type": "string",
+                      "enum": [
+                        "LV"
+                      ],
+                      "description": "The event type."
+                    },
+                    "val": {
+                      "description": "The current value of the security."
+                    },
+                    "sym": {
+                      "description": "The ticker symbol for the given security."
+                    },
+                    "t": {
+                      "description": "The nanosecond timestamp."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "LV",
+                  "val": 7.2,
+                  "sym": "O:TSLA210903C00700000",
+                  "t": 1401715883806000000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "value",
+          "description": "Value data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "options",
+          "description": "Options data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
     "/forex/C": {
       "get": {
         "summary": "Quotes",
@@ -1553,6 +2005,208 @@
         ]
       }
     },
+    "/launchpad/forex/AM": {
+      "get": {
+        "summary": "Aggregates (Per Minute)",
+        "description": "Stream real-time per-minute forex aggregates for a given forex pair.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://polygon.io/docs/forex/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(?<from>([A-Z]{3})\\/?<to>([A-Z]{3}))$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a minute aggregate event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "description": "The event type."
+                    },
+                    "sym": {
+                      "type": "string",
+                      "description": "The ticker symbol for the given stock."
+                    },
+                    "v": {
+                      "type": "integer",
+                      "description": "The tick volume."
+                    },
+                    "av": {
+                      "type": "integer",
+                      "description": "Today's accumulated volume."
+                    },
+                    "op": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "Today's official opening price."
+                    },
+                    "vw": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "The volume-weighted average value for the aggregate window."
+                    },
+                    "o": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The open price for the symbol in the given time period."
+                    },
+                    "c": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The close price for the symbol in the given time period."
+                    },
+                    "h": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The highest price for the symbol in the given time period."
+                    },
+                    "l": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The lowest price for the symbol in the given time period."
+                    },
+                    "a": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "Today's volume weighted average price."
+                    },
+                    "z": {
+                      "type": "integer",
+                      "description": "The average trade size for this aggregate window."
+                    },
+                    "s": {
+                      "type": "integer",
+                      "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+                    },
+                    "e": {
+                      "type": "integer",
+                      "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "AM",
+                  "sym": "C:USD-EUR",
+                  "v": 4110,
+                  "av": 9470157,
+                  "op": 0.9272,
+                  "vw": 0.9288,
+                  "o": 0.9288,
+                  "c": 0.9286,
+                  "h": 0.9289,
+                  "l": 0.9206,
+                  "a": 0.9352,
+                  "z": 685,
+                  "s": 1610144640000,
+                  "e": 1610144700000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "aggregates",
+          "description": "Aggregate data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "fx",
+          "description": "Forex data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
+    "/launchpad/forex/LV": {
+      "get": {
+        "summary": "Value",
+        "description": "Real-time value for a given forex ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://polygon.io/docs/forex/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(?<from>([A-Z]{3})\\/?<to>([A-Z]{3}))$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a value event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "type": "string",
+                      "enum": [
+                        "LV"
+                      ],
+                      "description": "The event type."
+                    },
+                    "val": {
+                      "description": "The current value of the security."
+                    },
+                    "sym": {
+                      "description": "The ticker symbol for the given security."
+                    },
+                    "t": {
+                      "description": "The nanosecond timestamp."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "LV",
+                  "val": 1.0631,
+                  "sym": "C:EURUSD",
+                  "t": 1678220098130
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "value",
+          "description": "Value data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "fx",
+          "description": "Forex data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
     "/crypto/XT": {
       "get": {
         "summary": "Trades",
@@ -1992,6 +2646,208 @@
         ]
       }
     },
+    "/launchpad/crypto/AM": {
+      "get": {
+        "summary": "Aggregates (Per Minute)",
+        "description": "Stream real-time per-minute crypto aggregates for a given crypto pair.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://polygon.io/docs/crypto/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a minute aggregate event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "description": "The event type."
+                    },
+                    "sym": {
+                      "type": "string",
+                      "description": "The ticker symbol for the given stock."
+                    },
+                    "v": {
+                      "type": "integer",
+                      "description": "The tick volume."
+                    },
+                    "av": {
+                      "type": "integer",
+                      "description": "Today's accumulated volume."
+                    },
+                    "op": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "Today's official opening price."
+                    },
+                    "vw": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "The volume-weighted average value for the aggregate window."
+                    },
+                    "o": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The open price for the symbol in the given time period."
+                    },
+                    "c": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The close price for the symbol in the given time period."
+                    },
+                    "h": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The highest price for the symbol in the given time period."
+                    },
+                    "l": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The lowest price for the symbol in the given time period."
+                    },
+                    "a": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "Today's volume weighted average price."
+                    },
+                    "z": {
+                      "type": "integer",
+                      "description": "The average trade size for this aggregate window."
+                    },
+                    "s": {
+                      "type": "integer",
+                      "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+                    },
+                    "e": {
+                      "type": "integer",
+                      "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "AM",
+                  "sym": "X:BTC-USD",
+                  "v": 951.6112,
+                  "av": 738.6112,
+                  "op": 26503.8,
+                  "vw": 26503.8,
+                  "o": 27503.8,
+                  "c": 27203.8,
+                  "h": 27893.8,
+                  "l": 26503.8,
+                  "a": 26503.8,
+                  "z": 10,
+                  "s": 1610463240000,
+                  "e": 1610463300000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "aggregates",
+          "description": "Aggregate data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "crypto",
+          "description": "Crypto data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
+    "/launchpad/crypto/LV": {
+      "get": {
+        "summary": "Value",
+        "description": "Real-time value for a given crypto ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://polygon.io/docs/crypto/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a value event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "type": "string",
+                      "enum": [
+                        "LV"
+                      ],
+                      "description": "The event type."
+                    },
+                    "val": {
+                      "description": "The current value of the security."
+                    },
+                    "sym": {
+                      "description": "The ticker symbol for the given security."
+                    },
+                    "t": {
+                      "description": "The nanosecond timestamp."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "LV",
+                  "val": 33021.9,
+                  "sym": "X:BTC-USD",
+                  "t": 1610462007425
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "value",
+          "description": "Value data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "crypto",
+          "description": "Crypto data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
     "/indices/AM": {
       "get": {
         "summary": "Aggregates (Per Minute)",
@@ -2163,7 +3019,7 @@
         },
         "x-polygon-entitlement-data-type": {
           "name": "value",
-          "description": "Index value data"
+          "description": "Value data"
         },
         "x-polygon-entitlement-market-type": {
           "name": "indices",
@@ -3677,6 +4533,94 @@
             "description": "The Timestamp in Unix MS."
           }
         }
+      },
+      "LaunchpadWebsocketMinuteAggregateEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "description": "The event type."
+          },
+          "sym": {
+            "type": "string",
+            "description": "The ticker symbol for the given stock."
+          },
+          "v": {
+            "type": "integer",
+            "description": "The tick volume."
+          },
+          "av": {
+            "type": "integer",
+            "description": "Today's accumulated volume."
+          },
+          "op": {
+            "type": "number",
+            "format": "double",
+            "description": "Today's official opening price."
+          },
+          "vw": {
+            "type": "number",
+            "format": "float",
+            "description": "The volume-weighted average value for the aggregate window."
+          },
+          "o": {
+            "type": "number",
+            "format": "double",
+            "description": "The open price for the symbol in the given time period."
+          },
+          "c": {
+            "type": "number",
+            "format": "double",
+            "description": "The close price for the symbol in the given time period."
+          },
+          "h": {
+            "type": "number",
+            "format": "double",
+            "description": "The highest price for the symbol in the given time period."
+          },
+          "l": {
+            "type": "number",
+            "format": "double",
+            "description": "The lowest price for the symbol in the given time period."
+          },
+          "a": {
+            "type": "number",
+            "format": "float",
+            "description": "Today's volume weighted average price."
+          },
+          "z": {
+            "type": "integer",
+            "description": "The average trade size for this aggregate window."
+          },
+          "s": {
+            "type": "integer",
+            "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+          },
+          "e": {
+            "type": "integer",
+            "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+          }
+        }
+      },
+      "LaunchpadWebsocketValueEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "type": "string",
+            "enum": [
+              "LV"
+            ],
+            "description": "The event type."
+          },
+          "val": {
+            "description": "The current value of the security."
+          },
+          "sym": {
+            "description": "The ticker symbol for the given security."
+          },
+          "t": {
+            "description": "The nanosecond timestamp."
+          }
+        }
       }
     },
     "parameters": {
@@ -3759,4 +4703,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}

Client update needed to match REST spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/rest.json
+++ https://api.polygon.io/openapi
@@ -826,11 +826,19 @@
             "format": "double",
             "type": "number"
           },
+          "n": {
+            "description": "The number of transactions in the aggregate window.",
+            "type": "integer"
+          },
           "o": {
             "description": "The open price for the symbol in the given time period.",
             "format": "double",
             "type": "number"
           },
+          "t": {
+            "description": "The Unix Msec timestamp for the start of the aggregate window.",
+            "type": "integer"
+          },
           "v": {
             "description": "The trading volume of the symbol in the given time period.",
             "format": "double",
@@ -848,7 +851,9 @@
           "l",
           "c",
           "v",
-          "vw"
+          "vw",
+          "t",
+          "n"
         ],
         "type": "object"
       },
@@ -966,11 +971,19 @@
                     "format": "double",
                     "type": "number"
                   },
+                  "n": {
+                    "description": "The number of transactions in the aggregate window.",
+                    "type": "integer"
+                  },
                   "o": {
                     "description": "The open price for the symbol in the given time period.",
                     "format": "double",
                     "type": "number"
                   },
+                  "t": {
+                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                    "type": "integer"
+                  },
                   "v": {
                     "description": "The trading volume of the symbol in the given time period.",
                     "format": "double",
@@ -988,7 +996,9 @@
                   "l",
                   "c",
                   "v",
-                  "vw"
+                  "vw",
+                  "t",
+                  "n"
                 ],
                 "type": "object"
               },
@@ -1269,11 +1279,19 @@
                       "format": "double",
                       "type": "number"
                     },
+                    "n": {
+                      "description": "The number of transactions in the aggregate window.",
+                      "type": "integer"
+                    },
                     "o": {
                       "description": "The open price for the symbol in the given time period.",
                       "format": "double",
                       "type": "number"
                     },
+                    "t": {
+                      "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                      "type": "integer"
+                    },
                     "v": {
                       "description": "The trading volume of the symbol in the given time period.",
                       "format": "double",
@@ -1291,7 +1304,9 @@
                     "l",
                     "c",
                     "v",
-                    "vw"
+                    "vw",
+                    "t",
+                    "n"
                   ],
                   "type": "object"
                 },
@@ -2410,24 +2425,25 @@
                     "format": "double",
                     "type": "number"
                   },
+                  "n": {
+                    "description": "The number of transactions in the aggregate window.",
+                    "type": "integer"
+                  },
                   "o": {
                     "description": "The open price for the symbol in the given time period.",
                     "format": "double",
                     "type": "number"
                   },
+                  "t": {
+                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                    "type": "integer"
+                  },
                   "v": {
                     "description": "The trading volume of the symbol in the given time period.",
                     "format": "double",
                     "type": "number"
                   }
                 },
-                "required": [
-                  "o",
-                  "h",
-                  "l",
-                  "c",
-                  "v"
-                ],
                 "type": "object"
               },
               "prevDay": {
@@ -2599,24 +2604,25 @@
                       "format": "double",
                       "type": "number"
                     },
+                    "n": {
+                      "description": "The number of transactions in the aggregate window.",
+                      "type": "integer"
+                    },
                     "o": {
                       "description": "The open price for the symbol in the given time period.",
                       "format": "double",
                       "type": "number"
                     },
+                    "t": {
+                      "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                      "type": "integer"
+                    },
                     "v": {
                       "description": "The trading volume of the symbol in the given time period.",
                       "format": "double",
                       "type": "number"
                     }
                   },
-                  "required": [
-                    "o",
-                    "h",
-                    "l",
-                    "c",
-                    "v"
-                  ],
                   "type": "object"
                 },
                 "prevDay": {
@@ -3273,6 +3268,44 @@
         "format": "double",
         "type": "number"
       },
+      "SnapshotMinOHLCV": {
+        "properties": {
+          "c": {
+            "description": "The close price for the symbol in the given time period.",
+            "format": "double",
+            "type": "number"
+          },
+          "h": {
+            "description": "The highest price for the symbol in the given time period.",
+            "format": "double",
+            "type": "number"
+          },
+          "l": {
+            "description": "The lowest price for the symbol in the given time period.",
+            "format": "double",
+            "type": "number"
+          },
+          "n": {
+            "description": "The number of transactions in the aggregate window.",
+            "type": "integer"
+          },
+          "o": {
+            "description": "The open price for the symbol in the given time period.",
+            "format": "double",
+            "type": "number"
+          },
+          "t": {
+            "description": "The Unix Msec timestamp for the start of the aggregate window.",
+            "type": "integer"
+          },
+          "v": {
+            "description": "The trading volume of the symbol in the given time period.",
+            "format": "double",
+            "type": "number"
+          }
+        },
+        "type": "object"
+      },
       "SnapshotOHLCV": {
         "properties": {
           "c": {
@@ -3657,11 +3690,19 @@
             "format": "double",
             "type": "number"
           },
+          "n": {
+            "description": "The number of transactions in the aggregate window.",
+            "type": "integer"
+          },
           "o": {
             "description": "The open price for the symbol in the given time period.",
             "format": "double",
             "type": "number"
           },
+          "t": {
+            "description": "The Unix Msec timestamp for the start of the aggregate window.",
+            "type": "integer"
+          },
           "v": {
             "description": "The trading volume of the symbol in the given time period.",
             "format": "double",
@@ -3680,7 +3716,9 @@
           "l",
           "c",
           "v",
-          "vw"
+          "vw",
+          "t",
+          "n"
         ],
         "type": "object"
       },
@@ -3705,6 +3743,10 @@
             "format": "double",
             "type": "number"
           },
+          "n": {
+            "description": "The number of transactions in the aggregate window.",
+            "type": "integer"
+          },
           "o": {
             "description": "The open price for the symbol in the given time period.",
             "format": "double",
@@ -3714,6 +3756,10 @@
             "description": "Whether or not this aggregate is for an OTC ticker. This field will be left off if false.",
             "type": "boolean"
           },
+          "t": {
+            "description": "The Unix Msec timestamp for the start of the aggregate window.",
+            "type": "integer"
+          },
           "v": {
             "description": "The trading volume of the symbol in the given time period.",
             "format": "double",
@@ -3732,7 +3778,9 @@
           "l",
           "c",
           "v",
-          "vw"
+          "vw",
+          "t",
+          "n"
         ],
         "type": "object"
       },
@@ -3887,6 +3935,10 @@
                     "format": "double",
                     "type": "number"
                   },
+                  "n": {
+                    "description": "The number of transactions in the aggregate window.",
+                    "type": "integer"
+                  },
                   "o": {
                     "description": "The open price for the symbol in the given time period.",
                     "format": "double",
@@ -3896,6 +3948,10 @@
                     "description": "Whether or not this aggregate is for an OTC ticker. This field will be left off if false.",
                     "type": "boolean"
                   },
+                  "t": {
+                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                    "type": "integer"
+                  },
                   "v": {
                     "description": "The trading volume of the symbol in the given time period.",
                     "format": "double",
@@ -3914,7 +3970,9 @@
                   "l",
                   "c",
                   "v",
-                  "vw"
+                  "vw",
+                  "t",
+                  "n"
                 ],
                 "type": "object"
               },
@@ -4142,6 +4200,10 @@
                       "format": "double",
                       "type": "number"
                     },
+                    "n": {
+                      "description": "The number of transactions in the aggregate window.",
+                      "type": "integer"
+                    },
                     "o": {
                       "description": "The open price for the symbol in the given time period.",
                       "format": "double",
@@ -4151,6 +4213,10 @@
                       "description": "Whether or not this aggregate is for an OTC ticker. This field will be left off if false.",
                       "type": "boolean"
                     },
+                    "t": {
+                      "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                      "type": "integer"
+                    },
                     "v": {
                       "description": "The trading volume of the symbol in the given time period.",
                       "format": "double",
@@ -4169,7 +4235,9 @@
                     "l",
                     "c",
                     "v",
-                    "vw"
+                    "vw",
+                    "t",
+                    "n"
                   ],
                   "type": "object"
                 },
@@ -5132,6 +5200,12 @@
                           }
                         }
                       },
+                      "required": [
+                        "exchange",
+                        "timestamp",
+                        "ask",
+                        "bid"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastQuoteCurrencies"
@@ -5154,6 +5228,15 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id",
+                    "from",
+                    "to",
+                    "symbol",
+                    "initialAmount",
+                    "converted"
+                  ],
                   "type": "object"
                 }
               },
@@ -5589,7 +5672,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get exponential moving average (EMA) data.",
-            "example": "X:BTC-USD",
+            "example": "X:BTCUSD",
             "in": "path",
             "name": "cryptoTicker",
             "required": true,
@@ -7162,7 +7245,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get MACD data.",
-            "example": "X:BTC-USD",
+            "example": "X:BTCUSD",
             "in": "path",
             "name": "cryptoTicker",
             "required": true,
@@ -8955,7 +9038,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get relative strength index (RSI) data.",
-            "example": "X:BTC-USD",
+            "example": "X:BTCUSD",
             "in": "path",
             "name": "cryptoTicker",
             "required": true,
@@ -10528,7 +10611,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get simple moving average (SMA) data.",
-            "example": "X:BTC-USD",
+            "example": "X:BTCUSD",
             "in": "path",
             "name": "cryptoTicker",
             "required": true,
@@ -12265,6 +12348,12 @@
                           }
                         }
                       },
+                      "required": [
+                        "exchange",
+                        "price",
+                        "size",
+                        "timestamp"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastTradeCrypto"
@@ -12283,6 +12372,11 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id",
+                    "symbol"
+                  ],
                   "type": "object"
                 }
               },
@@ -12381,6 +12475,12 @@
                           }
                         }
                       },
+                      "required": [
+                        "ask",
+                        "bid",
+                        "exchange",
+                        "timestamp"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastQuoteCurrencies"
@@ -12399,6 +12499,11 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id",
+                    "symbol"
+                  ],
                   "type": "object"
                 }
               },
@@ -16325,7 +16430,6 @@
                       "c": "4,048.42",
                       "h": "4,050.00",
                       "l": "3,980.31",
-                      "n": 1,
                       "o": "4,048.26",
                       "t": 1678221133236
                     },
@@ -16333,7 +16437,6 @@
                       "c": "4,048.42",
                       "h": "4,050.00",
                       "l": "3,980.31",
-                      "n": 1,
                       "o": "4,048.26",
                       "t": 1678221139690
                     }
@@ -17481,6 +17584,12 @@
                           "type": "integer"
                         }
                       },
+                      "required": [
+                        "T",
+                        "t",
+                        "y",
+                        "q"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastQuoteResult"
@@ -17491,6 +17600,10 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id"
+                  ],
                   "type": "object"
                 }
               },
@@ -17644,6 +17757,15 @@
                           "type": "integer"
                         }
                       },
+                      "required": [
+                        "T",
+                        "t",
+                        "y",
+                        "q",
+                        "i",
+                        "p",
+                        "x"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastTradeResult"
@@ -17654,6 +17776,10 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id"
+                  ],
                   "type": "object"
                 }
               },
@@ -17811,6 +17937,15 @@
                           "type": "integer"
                         }
                       },
+                      "required": [
+                        "T",
+                        "t",
+                        "y",
+                        "q",
+                        "i",
+                        "p",
+                        "x"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastTradeResult"
@@ -17821,6 +17956,10 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id"
+                  ],
                   "type": "object"
                 }
               },
@@ -18457,11 +18596,19 @@
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "n": {
+                                    "description": "The number of transactions in the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "o": {
                                     "description": "The open price for the symbol in the given time period.",
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "t": {
+                                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "v": {
                                     "description": "The trading volume of the symbol in the given time period.",
                                     "format": "double",
@@ -18479,7 +18621,9 @@
                                   "l",
                                   "c",
                                   "v",
-                                  "vw"
+                                  "vw",
+                                  "t",
+                                  "n"
                                 ],
                                 "type": "object"
                               },
@@ -18806,11 +18950,19 @@
                                   "format": "double",
                                   "type": "number"
                                 },
+                                "n": {
+                                  "description": "The number of transactions in the aggregate window.",
+                                  "type": "integer"
+                                },
                                 "o": {
                                   "description": "The open price for the symbol in the given time period.",
                                   "format": "double",
                                   "type": "number"
                                 },
+                                "t": {
+                                  "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                  "type": "integer"
+                                },
                                 "v": {
                                   "description": "The trading volume of the symbol in the given time period.",
                                   "format": "double",
@@ -18828,7 +18975,9 @@
                                 "l",
                                 "c",
                                 "v",
-                                "vw"
+                                "vw",
+                                "t",
+                                "n"
                               ],
                               "type": "object"
                             },
@@ -19327,11 +19476,19 @@
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "n": {
+                                    "description": "The number of transactions in the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "o": {
                                     "description": "The open price for the symbol in the given time period.",
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "t": {
+                                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "v": {
                                     "description": "The trading volume of the symbol in the given time period.",
                                     "format": "double",
@@ -19349,7 +19501,9 @@
                                   "l",
                                   "c",
                                   "v",
-                                  "vw"
+                                  "vw",
+                                  "t",
+                                  "n"
                                 ],
                                 "type": "object"
                               },
@@ -19637,24 +19791,25 @@
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "n": {
+                                    "description": "The number of transactions in the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "o": {
                                     "description": "The open price for the symbol in the given time period.",
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "t": {
+                                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "v": {
                                     "description": "The trading volume of the symbol in the given time period.",
                                     "format": "double",
                                     "type": "number"
                                   }
                                 },
-                                "required": [
-                                  "o",
-                                  "h",
-                                  "l",
-                                  "c",
-                                  "v"
-                                ],
                                 "type": "object"
                               },
                               "prevDay": {
@@ -19951,24 +20095,25 @@
                                   "format": "double",
                                   "type": "number"
                                 },
+                                "n": {
+                                  "description": "The number of transactions in the aggregate window.",
+                                  "type": "integer"
+                                },
                                 "o": {
                                   "description": "The open price for the symbol in the given time period.",
                                   "format": "double",
                                   "type": "number"
                                 },
+                                "t": {
+                                  "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                  "type": "integer"
+                                },
                                 "v": {
                                   "description": "The trading volume of the symbol in the given time period.",
                                   "format": "double",
                                   "type": "number"
                                 }
                               },
-                              "required": [
-                                "o",
-                                "h",
-                                "l",
-                                "c",
-                                "v"
-                              ],
                               "type": "object"
                             },
                             "prevDay": {
@@ -20256,24 +20390,25 @@
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "n": {
+                                    "description": "The number of transactions in the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "o": {
                                     "description": "The open price for the symbol in the given time period.",
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "t": {
+                                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "v": {
                                     "description": "The trading volume of the symbol in the given time period.",
                                     "format": "double",
                                     "type": "number"
                                   }
                                 },
-                                "required": [
-                                  "o",
-                                  "h",
-                                  "l",
-                                  "c",
-                                  "v"
-                                ],
                                 "type": "object"
                               },
                               "prevDay": {
@@ -20651,6 +20775,10 @@
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "n": {
+                                    "description": "The number of transactions in the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "o": {
                                     "description": "The open price for the symbol in the given time period.",
                                     "format": "double",
@@ -20660,6 +20788,10 @@
                                     "description": "Whether or not this aggregate is for an OTC ticker. This field will be left off if false.",
                                     "type": "boolean"
                                   },
+                                  "t": {
+                                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "v": {
                                     "description": "The trading volume of the symbol in the given time period.",
                                     "format": "double",
@@ -20678,7 +20810,9 @@
                                   "l",
                                   "c",
                                   "v",
-                                  "vw"
+                                  "vw",
+                                  "t",
+                                  "n"
                                 ],
                                 "type": "object"
                               },
@@ -21045,6 +21179,10 @@
                                   "format": "double",
                                   "type": "number"
                                 },
+                                "n": {
+                                  "description": "The number of transactions in the aggregate window.",
+                                  "type": "integer"
+                                },
                                 "o": {
                                   "description": "The open price for the symbol in the given time period.",
                                   "format": "double",
@@ -21054,6 +21192,10 @@
                                   "description": "Whether or not this aggregate is for an OTC ticker. This field will be left off if false.",
                                   "type": "boolean"
                                 },
+                                "t": {
+                                  "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                  "type": "integer"
+                                },
                                 "v": {
                                   "description": "The trading volume of the symbol in the given time period.",
                                   "format": "double",
@@ -21072,7 +21214,9 @@
                                 "l",
                                 "c",
                                 "v",
-                                "vw"
+                                "vw",
+                                "t",
+                                "n"
                               ],
                               "type": "object"
                             },
@@ -21438,6 +21582,10 @@
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "n": {
+                                    "description": "The number of transactions in the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "o": {
                                     "description": "The open price for the symbol in the given time period.",
                                     "format": "double",
@@ -21447,6 +21595,10 @@
                                     "description": "Whether or not this aggregate is for an OTC ticker. This field will be left off if false.",
                                     "type": "boolean"
                                   },
+                                  "t": {
+                                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "v": {
                                     "description": "The trading volume of the symbol in the given time period.",
                                     "format": "double",
@@ -21465,7 +21617,9 @@
                                   "l",
                                   "c",
                                   "v",
-                                  "vw"
+                                  "vw",
+                                  "t",
+                                  "n"
                                 ],
                                 "type": "object"
                               },
@@ -22380,6 +22534,9 @@
                             }
                           }
                         },
+                        "required": [
+                          "participant_timestamp"
+                        ],
                         "type": "object"
                       },
                       "type": "array"
@@ -22389,6 +22546,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -22620,6 +22780,10 @@
                             }
                           }
                         },
+                        "required": [
+                          "sip_timestamp",
+                          "sequence_number"
+                        ],
                         "type": "object"
                       },
                       "type": "array"
@@ -22629,6 +22793,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -22910,7 +23077,15 @@
                             }
                           }
                         },
-                        "type": "object"
+                        "required": [
+                          "participant_timestamp",
+                          "sequence_number",
+                          "sip_timestamp"
+                        ],
+                        "type": "object",
+                        "x-polygon-go-type": {
+                          "name": "CommonQuote"
+                        }
                       },
                       "type": "array"
                     },
@@ -22919,6 +23094,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -28025,6 +28203,12 @@
                             "type": "number"
                           }
                         },
+                        "required": [
+                          "exchange",
+                          "price",
+                          "size",
+                          "id"
+                        ],
                         "type": "object"
                       },
                       "type": "array"
@@ -28034,6 +28218,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -28268,6 +28455,12 @@
                             "type": "number"
                           }
                         },
+                        "required": [
+                          "exchange",
+                          "price",
+                          "sip_timestamp",
+                          "size"
+                        ],
                         "type": "object"
                       },
                       "type": "array"
@@ -28277,6 +28470,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -28542,7 +28738,19 @@
                             }
                           }
                         },
-                        "type": "object"
+                        "required": [
+                          "exchange",
+                          "id",
+                          "price",
+                          "sequence_number",
+                          "sip_timestamp",
+                          "participant_timestamp",
+                          "size"
+                        ],
+                        "type": "object",
+                        "x-polygon-go-type": {
+                          "name": "CommonTrade"
+                        }
                       },
                       "type": "array"
                     },
@@ -28551,6 +28759,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -30023,4 +30234,4 @@
       ]
     }
   }
-}
+}
\ No newline at end of file

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -3409,4 +3409,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -47,6 +47,18 @@
           "paths": [
             "/stocks/LULD"
           ]
+        },
+        {
+          "paths": [
+            "/launchpad/stocks/AM"
+          ],
+          "launchpad": "exclusive"
+        },
+        {
+          "paths": [
+            "/launchpad/stocks/LV"
+          ],
+          "launchpad": "exclusive"
         }
       ]
     },
@@ -71,6 +83,18 @@
           "paths": [
             "/options/Q"
           ]
+        },
+        {
+          "paths": [
+            "/launchpad/options/AM"
+          ],
+          "launchpad": "exclusive"
+        },
+        {
+          "paths": [
+            "/launchpad/options/LV"
+          ],
+          "launchpad": "exclusive"
         }
       ]
     },
@@ -85,6 +109,18 @@
           "paths": [
             "/forex/C"
           ]
+        },
+        {
+          "paths": [
+            "/launchpad/forex/AM"
+          ],
+          "launchpad": "exclusive"
+        },
+        {
+          "paths": [
+            "/launchpad/forex/LV"
+          ],
+          "launchpad": "exclusive"
         }
       ]
     },
@@ -109,6 +145,18 @@
           "paths": [
             "/crypto/XL2"
           ]
+        },
+        {
+          "paths": [
+            "/launchpad/crypto/AM"
+          ],
+          "launchpad": "exclusive"
+        },
+        {
+          "paths": [
+            "/launchpad/crypto/LV"
+          ],
+          "launchpad": "exclusive"
         }
       ]
     },
@@ -867,6 +915,208 @@
         ]
       }
     },
+    "/launchpad/stocks/AM": {
+      "get": {
+        "summary": "Aggregates (Per Minute)",
+        "description": "Stream real-time minute aggregates for a given stock ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://polygon.io/docs/stocks/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^([a-zA-Z]+)$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a minute aggregate event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "description": "The event type."
+                    },
+                    "sym": {
+                      "type": "string",
+                      "description": "The ticker symbol for the given stock."
+                    },
+                    "v": {
+                      "type": "integer",
+                      "description": "The tick volume."
+                    },
+                    "av": {
+                      "type": "integer",
+                      "description": "Today's accumulated volume."
+                    },
+                    "op": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "Today's official opening price."
+                    },
+                    "vw": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "The volume-weighted average value for the aggregate window."
+                    },
+                    "o": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The open price for the symbol in the given time period."
+                    },
+                    "c": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The close price for the symbol in the given time period."
+                    },
+                    "h": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The highest price for the symbol in the given time period."
+                    },
+                    "l": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The lowest price for the symbol in the given time period."
+                    },
+                    "a": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "Today's volume weighted average price."
+                    },
+                    "z": {
+                      "type": "integer",
+                      "description": "The average trade size for this aggregate window."
+                    },
+                    "s": {
+                      "type": "integer",
+                      "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+                    },
+                    "e": {
+                      "type": "integer",
+                      "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "AM",
+                  "sym": "GTE",
+                  "v": 4110,
+                  "av": 9470157,
+                  "op": 0.4372,
+                  "vw": 0.4488,
+                  "o": 0.4488,
+                  "c": 0.4486,
+                  "h": 0.4489,
+                  "l": 0.4486,
+                  "a": 0.4352,
+                  "z": 685,
+                  "s": 1610144640000,
+                  "e": 1610144700000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "aggregates",
+          "description": "Aggregate data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "stocks",
+          "description": "Stocks data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
+    "/launchpad/stocks/LV": {
+      "get": {
+        "summary": "Value",
+        "description": "Real-time value for a given stock ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://polygon.io/docs/stocks/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^([a-zA-Z]+)$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a value event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "type": "string",
+                      "enum": [
+                        "LV"
+                      ],
+                      "description": "The event type."
+                    },
+                    "val": {
+                      "description": "The current value of the security."
+                    },
+                    "sym": {
+                      "description": "The ticker symbol for the given security."
+                    },
+                    "t": {
+                      "description": "The nanosecond timestamp."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "LV",
+                  "val": 3988.5,
+                  "sym": "AAPL",
+                  "t": 1678220098130
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "value",
+          "description": "Value data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "stocks",
+          "description": "Stocks data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
     "/options/T": {
       "get": {
         "summary": "Trades",
@@ -1358,6 +1608,208 @@
         ]
       }
     },
+    "/launchpad/options/AM": {
+      "get": {
+        "summary": "Aggregates (Per Minute)",
+        "description": "Stream real-time minute aggregates for a given option contract.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify an option contract. You're only allowed to subscribe to 1,000 option contracts per connection.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://polygon.io/docs/options/get_v3_reference_options_contracts).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(([a-zA-Z]+|[0-9])+)$/"
+            },
+            "example": "O:SPY241220P00720000"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a minute aggregate event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "description": "The event type."
+                    },
+                    "sym": {
+                      "type": "string",
+                      "description": "The ticker symbol for the given stock."
+                    },
+                    "v": {
+                      "type": "integer",
+                      "description": "The tick volume."
+                    },
+                    "av": {
+                      "type": "integer",
+                      "description": "Today's accumulated volume."
+                    },
+                    "op": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "Today's official opening price."
+                    },
+                    "vw": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "The volume-weighted average value for the aggregate window."
+                    },
+                    "o": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The open price for the symbol in the given time period."
+                    },
+                    "c": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The close price for the symbol in the given time period."
+                    },
+                    "h": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The highest price for the symbol in the given time period."
+                    },
+                    "l": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The lowest price for the symbol in the given time period."
+                    },
+                    "a": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "Today's volume weighted average price."
+                    },
+                    "z": {
+                      "type": "integer",
+                      "description": "The average trade size for this aggregate window."
+                    },
+                    "s": {
+                      "type": "integer",
+                      "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+                    },
+                    "e": {
+                      "type": "integer",
+                      "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "AM",
+                  "sym": "O:ONEM220121C00025000",
+                  "v": 2,
+                  "av": 8,
+                  "op": 2.2,
+                  "vw": 2.05,
+                  "o": 2.05,
+                  "c": 2.05,
+                  "h": 2.05,
+                  "l": 2.05,
+                  "a": 2.1312,
+                  "z": 1,
+                  "s": 1632419640000,
+                  "e": 1632419700000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "aggregates",
+          "description": "Aggregate data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "options",
+          "description": "Options data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
+    "/launchpad/options/LV": {
+      "get": {
+        "summary": "Value",
+        "description": "Real-time value for a given options ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify an option contract. You're only allowed to subscribe to 1,000 option contracts per connection.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://polygon.io/docs/options/get_v3_reference_options_contracts).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(([a-zA-Z]+|[0-9])+)$/"
+            },
+            "example": "O:SPY241220P00720000"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a value event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "type": "string",
+                      "enum": [
+                        "LV"
+                      ],
+                      "description": "The event type."
+                    },
+                    "val": {
+                      "description": "The current value of the security."
+                    },
+                    "sym": {
+                      "description": "The ticker symbol for the given security."
+                    },
+                    "t": {
+                      "description": "The nanosecond timestamp."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "LV",
+                  "val": 7.2,
+                  "sym": "O:TSLA210903C00700000",
+                  "t": 1401715883806000000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "value",
+          "description": "Value data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "options",
+          "description": "Options data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
     "/forex/C": {
       "get": {
         "summary": "Quotes",
@@ -1553,6 +2005,208 @@
         ]
       }
     },
+    "/launchpad/forex/AM": {
+      "get": {
+        "summary": "Aggregates (Per Minute)",
+        "description": "Stream real-time per-minute forex aggregates for a given forex pair.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://polygon.io/docs/forex/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(?<from>([A-Z]{3})\\/?<to>([A-Z]{3}))$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a minute aggregate event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "description": "The event type."
+                    },
+                    "sym": {
+                      "type": "string",
+                      "description": "The ticker symbol for the given stock."
+                    },
+                    "v": {
+                      "type": "integer",
+                      "description": "The tick volume."
+                    },
+                    "av": {
+                      "type": "integer",
+                      "description": "Today's accumulated volume."
+                    },
+                    "op": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "Today's official opening price."
+                    },
+                    "vw": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "The volume-weighted average value for the aggregate window."
+                    },
+                    "o": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The open price for the symbol in the given time period."
+                    },
+                    "c": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The close price for the symbol in the given time period."
+                    },
+                    "h": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The highest price for the symbol in the given time period."
+                    },
+                    "l": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The lowest price for the symbol in the given time period."
+                    },
+                    "a": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "Today's volume weighted average price."
+                    },
+                    "z": {
+                      "type": "integer",
+                      "description": "The average trade size for this aggregate window."
+                    },
+                    "s": {
+                      "type": "integer",
+                      "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+                    },
+                    "e": {
+                      "type": "integer",
+                      "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "AM",
+                  "sym": "C:USD-EUR",
+                  "v": 4110,
+                  "av": 9470157,
+                  "op": 0.9272,
+                  "vw": 0.9288,
+                  "o": 0.9288,
+                  "c": 0.9286,
+                  "h": 0.9289,
+                  "l": 0.9206,
+                  "a": 0.9352,
+                  "z": 685,
+                  "s": 1610144640000,
+                  "e": 1610144700000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "aggregates",
+          "description": "Aggregate data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "fx",
+          "description": "Forex data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
+    "/launchpad/forex/LV": {
+      "get": {
+        "summary": "Value",
+        "description": "Real-time value for a given forex ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://polygon.io/docs/forex/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(?<from>([A-Z]{3})\\/?<to>([A-Z]{3}))$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a value event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "type": "string",
+                      "enum": [
+                        "LV"
+                      ],
+                      "description": "The event type."
+                    },
+                    "val": {
+                      "description": "The current value of the security."
+                    },
+                    "sym": {
+                      "description": "The ticker symbol for the given security."
+                    },
+                    "t": {
+                      "description": "The nanosecond timestamp."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "LV",
+                  "val": 1.0631,
+                  "sym": "C:EURUSD",
+                  "t": 1678220098130
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "value",
+          "description": "Value data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "fx",
+          "description": "Forex data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
     "/crypto/XT": {
       "get": {
         "summary": "Trades",
@@ -1992,6 +2646,208 @@
         ]
       }
     },
+    "/launchpad/crypto/AM": {
+      "get": {
+        "summary": "Aggregates (Per Minute)",
+        "description": "Stream real-time per-minute crypto aggregates for a given crypto pair.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://polygon.io/docs/crypto/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a minute aggregate event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "description": "The event type."
+                    },
+                    "sym": {
+                      "type": "string",
+                      "description": "The ticker symbol for the given stock."
+                    },
+                    "v": {
+                      "type": "integer",
+                      "description": "The tick volume."
+                    },
+                    "av": {
+                      "type": "integer",
+                      "description": "Today's accumulated volume."
+                    },
+                    "op": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "Today's official opening price."
+                    },
+                    "vw": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "The volume-weighted average value for the aggregate window."
+                    },
+                    "o": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The open price for the symbol in the given time period."
+                    },
+                    "c": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The close price for the symbol in the given time period."
+                    },
+                    "h": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The highest price for the symbol in the given time period."
+                    },
+                    "l": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The lowest price for the symbol in the given time period."
+                    },
+                    "a": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "Today's volume weighted average price."
+                    },
+                    "z": {
+                      "type": "integer",
+                      "description": "The average trade size for this aggregate window."
+                    },
+                    "s": {
+                      "type": "integer",
+                      "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+                    },
+                    "e": {
+                      "type": "integer",
+                      "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "AM",
+                  "sym": "X:BTC-USD",
+                  "v": 951.6112,
+                  "av": 738.6112,
+                  "op": 26503.8,
+                  "vw": 26503.8,
+                  "o": 27503.8,
+                  "c": 27203.8,
+                  "h": 27893.8,
+                  "l": 26503.8,
+                  "a": 26503.8,
+                  "z": 10,
+                  "s": 1610463240000,
+                  "e": 1610463300000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "aggregates",
+          "description": "Aggregate data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "crypto",
+          "description": "Crypto data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
+    "/launchpad/crypto/LV": {
+      "get": {
+        "summary": "Value",
+        "description": "Real-time value for a given crypto ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://polygon.io/docs/crypto/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a value event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "type": "string",
+                      "enum": [
+                        "LV"
+                      ],
+                      "description": "The event type."
+                    },
+                    "val": {
+                      "description": "The current value of the security."
+                    },
+                    "sym": {
+                      "description": "The ticker symbol for the given security."
+                    },
+                    "t": {
+                      "description": "The nanosecond timestamp."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "LV",
+                  "val": 33021.9,
+                  "sym": "X:BTC-USD",
+                  "t": 1610462007425
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "value",
+          "description": "Value data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "crypto",
+          "description": "Crypto data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
     "/indices/AM": {
       "get": {
         "summary": "Aggregates (Per Minute)",
@@ -2163,7 +3019,7 @@
         },
         "x-polygon-entitlement-data-type": {
           "name": "value",
-          "description": "Index value data"
+          "description": "Value data"
         },
         "x-polygon-entitlement-market-type": {
           "name": "indices",
@@ -3677,6 +4533,94 @@
             "description": "The Timestamp in Unix MS."
           }
         }
+      },
+      "LaunchpadWebsocketMinuteAggregateEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "description": "The event type."
+          },
+          "sym": {
+            "type": "string",
+            "description": "The ticker symbol for the given stock."
+          },
+          "v": {
+            "type": "integer",
+            "description": "The tick volume."
+          },
+          "av": {
+            "type": "integer",
+            "description": "Today's accumulated volume."
+          },
+          "op": {
+            "type": "number",
+            "format": "double",
+            "description": "Today's official opening price."
+          },
+          "vw": {
+            "type": "number",
+            "format": "float",
+            "description": "The volume-weighted average value for the aggregate window."
+          },
+          "o": {
+            "type": "number",
+            "format": "double",
+            "description": "The open price for the symbol in the given time period."
+          },
+          "c": {
+            "type": "number",
+            "format": "double",
+            "description": "The close price for the symbol in the given time period."
+          },
+          "h": {
+            "type": "number",
+            "format": "double",
+            "description": "The highest price for the symbol in the given time period."
+          },
+          "l": {
+            "type": "number",
+            "format": "double",
+            "description": "The lowest price for the symbol in the given time period."
+          },
+          "a": {
+            "type": "number",
+            "format": "float",
+            "description": "Today's volume weighted average price."
+          },
+          "z": {
+            "type": "integer",
+            "description": "The average trade size for this aggregate window."
+          },
+          "s": {
+            "type": "integer",
+            "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+          },
+          "e": {
+            "type": "integer",
+            "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+          }
+        }
+      },
+      "LaunchpadWebsocketValueEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "type": "string",
+            "enum": [
+              "LV"
+            ],
+            "description": "The event type."
+          },
+          "val": {
+            "description": "The current value of the security."
+          },
+          "sym": {
+            "description": "The ticker symbol for the given security."
+          },
+          "t": {
+            "description": "The nanosecond timestamp."
+          }
+        }
       }
     },
     "parameters": {
@@ -3759,4 +4703,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -1995,7 +1995,7 @@
     "/indices/AM": {
       "get": {
         "summary": "Aggregates (Per Minute)",
-        "description": "Stream real-time minute aggregates for a given index.\n",
+        "description": "Stream real-time minute aggregates for a given index ticker symbol.\n",
         "parameters": [
           {
             "name": "ticker",
@@ -2004,7 +2004,7 @@
             "required": true,
             "schema": {
               "type": "string",
-              "pattern": "/^([a-zA-Z]+)$/"
+              "pattern": "/^(I:[a-zA-Z0-9]+)$/"
             },
             "example": "*"
           }
@@ -3552,6 +3552,131 @@
       "CryptoReceivedTimestamp": {
         "type": "integer",
         "description": "The timestamp that the tick was received by Polygon."
+      },
+      "IndicesBaseAggregateEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "description": "The event type."
+          },
+          "sym": {
+            "type": "string",
+            "description": "The symbol representing the given index."
+          },
+          "op": {
+            "type": "number",
+            "format": "double",
+            "description": "Today's official opening value."
+          },
+          "o": {
+            "type": "number",
+            "format": "double",
+            "description": "The opening index value for this aggregate window."
+          },
+          "c": {
+            "type": "number",
+            "format": "double",
+            "description": "The closing index value for this aggregate window."
+          },
+          "h": {
+            "type": "number",
+            "format": "double",
+            "description": "The highest index value for this aggregate window."
+          },
+          "l": {
+            "type": "number",
+            "format": "double",
+            "description": "The lowest index value for this aggregate window."
+          },
+          "s": {
+            "type": "integer",
+            "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+          },
+          "e": {
+            "type": "integer",
+            "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+          }
+        }
+      },
+      "IndicesMinuteAggregateEvent": {
+        "allOf": [
+          {
+            "type": "object",
+            "properties": {
+              "ev": {
+                "description": "The event type."
+              },
+              "sym": {
+                "type": "string",
+                "description": "The symbol representing the given index."
+              },
+              "op": {
+                "type": "number",
+                "format": "double",
+                "description": "Today's official opening value."
+              },
+              "o": {
+                "type": "number",
+                "format": "double",
+                "description": "The opening index value for this aggregate window."
+              },
+              "c": {
+                "type": "number",
+                "format": "double",
+                "description": "The closing index value for this aggregate window."
+              },
+              "h": {
+                "type": "number",
+                "format": "double",
+                "description": "The highest index value for this aggregate window."
+              },
+              "l": {
+                "type": "number",
+                "format": "double",
+                "description": "The lowest index value for this aggregate window."
+              },
+              "s": {
+                "type": "integer",
+                "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+              },
+              "e": {
+                "type": "integer",
+                "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+              }
+            }
+          },
+          {
+            "properties": {
+              "ev": {
+                "enum": [
+                  "AM"
+                ],
+                "description": "The event type."
+              }
+            }
+          }
+        ]
+      },
+      "IndicesValueEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "type": "string",
+            "enum": [
+              "V"
+            ],
+            "description": "The event type."
+          },
+          "val": {
+            "description": "The value of the index."
+          },
+          "T": {
+            "description": "The assigned ticker of the index."
+          },
+          "t": {
+            "description": "The Timestamp in Unix MS."
+          }
+        }
       }
     },
     "parameters": {
@@ -3609,7 +3734,29 @@
           "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
         },
         "example": "*"
+      },
+      "IndicesIndexParam": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "*"
+      },
+      "IndicesIndexParamWithoutWildcard": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "I:SPX"
       }
     }
   }
-}
\ No newline at end of file
+}

Options Chain and Options Contracts missing "strike_price" field.

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -1995,7 +1995,7 @@
     "/indices/AM": {
       "get": {
         "summary": "Aggregates (Per Minute)",
-        "description": "Stream real-time minute aggregates for a given index.\n",
+        "description": "Stream real-time minute aggregates for a given index ticker symbol.\n",
         "parameters": [
           {
             "name": "ticker",
@@ -2004,7 +2004,7 @@
             "required": true,
             "schema": {
               "type": "string",
-              "pattern": "/^([a-zA-Z]+)$/"
+              "pattern": "/^(I:[a-zA-Z0-9]+)$/"
             },
             "example": "*"
           }
@@ -3552,6 +3552,131 @@
       "CryptoReceivedTimestamp": {
         "type": "integer",
         "description": "The timestamp that the tick was received by Polygon."
+      },
+      "IndicesBaseAggregateEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "description": "The event type."
+          },
+          "sym": {
+            "type": "string",
+            "description": "The symbol representing the given index."
+          },
+          "op": {
+            "type": "number",
+            "format": "double",
+            "description": "Today's official opening value."
+          },
+          "o": {
+            "type": "number",
+            "format": "double",
+            "description": "The opening index value for this aggregate window."
+          },
+          "c": {
+            "type": "number",
+            "format": "double",
+            "description": "The closing index value for this aggregate window."
+          },
+          "h": {
+            "type": "number",
+            "format": "double",
+            "description": "The highest index value for this aggregate window."
+          },
+          "l": {
+            "type": "number",
+            "format": "double",
+            "description": "The lowest index value for this aggregate window."
+          },
+          "s": {
+            "type": "integer",
+            "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+          },
+          "e": {
+            "type": "integer",
+            "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+          }
+        }
+      },
+      "IndicesMinuteAggregateEvent": {
+        "allOf": [
+          {
+            "type": "object",
+            "properties": {
+              "ev": {
+                "description": "The event type."
+              },
+              "sym": {
+                "type": "string",
+                "description": "The symbol representing the given index."
+              },
+              "op": {
+                "type": "number",
+                "format": "double",
+                "description": "Today's official opening value."
+              },
+              "o": {
+                "type": "number",
+                "format": "double",
+                "description": "The opening index value for this aggregate window."
+              },
+              "c": {
+                "type": "number",
+                "format": "double",
+                "description": "The closing index value for this aggregate window."
+              },
+              "h": {
+                "type": "number",
+                "format": "double",
+                "description": "The highest index value for this aggregate window."
+              },
+              "l": {
+                "type": "number",
+                "format": "double",
+                "description": "The lowest index value for this aggregate window."
+              },
+              "s": {
+                "type": "integer",
+                "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+              },
+              "e": {
+                "type": "integer",
+                "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+              }
+            }
+          },
+          {
+            "properties": {
+              "ev": {
+                "enum": [
+                  "AM"
+                ],
+                "description": "The event type."
+              }
+            }
+          }
+        ]
+      },
+      "IndicesValueEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "type": "string",
+            "enum": [
+              "V"
+            ],
+            "description": "The event type."
+          },
+          "val": {
+            "description": "The value of the index."
+          },
+          "T": {
+            "description": "The assigned ticker of the index."
+          },
+          "t": {
+            "description": "The Timestamp in Unix MS."
+          }
+        }
       }
     },
     "parameters": {
@@ -3609,7 +3734,29 @@
           "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
         },
         "example": "*"
+      },
+      "IndicesIndexParam": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "*"
+      },
+      "IndicesIndexParamWithoutWildcard": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "I:SPX"
       }
     }
   }
-}
\ No newline at end of file
+}

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -47,6 +47,18 @@
           "paths": [
             "/stocks/LULD"
           ]
+        },
+        {
+          "paths": [
+            "/launchpad/stocks/AM"
+          ],
+          "launchpad": "exclusive"
+        },
+        {
+          "paths": [
+            "/launchpad/stocks/LV"
+          ],
+          "launchpad": "exclusive"
         }
       ]
     },
@@ -71,6 +83,18 @@
           "paths": [
             "/options/Q"
           ]
+        },
+        {
+          "paths": [
+            "/launchpad/options/AM"
+          ],
+          "launchpad": "exclusive"
+        },
+        {
+          "paths": [
+            "/launchpad/options/LV"
+          ],
+          "launchpad": "exclusive"
         }
       ]
     },
@@ -85,6 +109,18 @@
           "paths": [
             "/forex/C"
           ]
+        },
+        {
+          "paths": [
+            "/launchpad/forex/AM"
+          ],
+          "launchpad": "exclusive"
+        },
+        {
+          "paths": [
+            "/launchpad/forex/LV"
+          ],
+          "launchpad": "exclusive"
         }
       ]
     },
@@ -109,6 +145,18 @@
           "paths": [
             "/crypto/XL2"
           ]
+        },
+        {
+          "paths": [
+            "/launchpad/crypto/AM"
+          ],
+          "launchpad": "exclusive"
+        },
+        {
+          "paths": [
+            "/launchpad/crypto/LV"
+          ],
+          "launchpad": "exclusive"
         }
       ]
     },
@@ -867,6 +915,208 @@
         ]
       }
     },
+    "/launchpad/stocks/AM": {
+      "get": {
+        "summary": "Aggregates (Per Minute)",
+        "description": "Stream real-time minute aggregates for a given stock ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://polygon.io/docs/stocks/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^([a-zA-Z]+)$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a minute aggregate event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "description": "The event type."
+                    },
+                    "sym": {
+                      "type": "string",
+                      "description": "The ticker symbol for the given stock."
+                    },
+                    "v": {
+                      "type": "integer",
+                      "description": "The tick volume."
+                    },
+                    "av": {
+                      "type": "integer",
+                      "description": "Today's accumulated volume."
+                    },
+                    "op": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "Today's official opening price."
+                    },
+                    "vw": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "The volume-weighted average value for the aggregate window."
+                    },
+                    "o": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The open price for the symbol in the given time period."
+                    },
+                    "c": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The close price for the symbol in the given time period."
+                    },
+                    "h": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The highest price for the symbol in the given time period."
+                    },
+                    "l": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The lowest price for the symbol in the given time period."
+                    },
+                    "a": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "Today's volume weighted average price."
+                    },
+                    "z": {
+                      "type": "integer",
+                      "description": "The average trade size for this aggregate window."
+                    },
+                    "s": {
+                      "type": "integer",
+                      "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+                    },
+                    "e": {
+                      "type": "integer",
+                      "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "AM",
+                  "sym": "GTE",
+                  "v": 4110,
+                  "av": 9470157,
+                  "op": 0.4372,
+                  "vw": 0.4488,
+                  "o": 0.4488,
+                  "c": 0.4486,
+                  "h": 0.4489,
+                  "l": 0.4486,
+                  "a": 0.4352,
+                  "z": 685,
+                  "s": 1610144640000,
+                  "e": 1610144700000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "aggregates",
+          "description": "Aggregate data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "stocks",
+          "description": "Stocks data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
+    "/launchpad/stocks/LV": {
+      "get": {
+        "summary": "Value",
+        "description": "Real-time value for a given stock ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a stock ticker or use * to subscribe to all stock tickers.\nYou can also use a comma separated list to subscribe to multiple stock tickers.\nYou can retrieve available stock tickers from our [Stock Tickers API](https://polygon.io/docs/stocks/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^([a-zA-Z]+)$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a value event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "type": "string",
+                      "enum": [
+                        "LV"
+                      ],
+                      "description": "The event type."
+                    },
+                    "val": {
+                      "description": "The current value of the security."
+                    },
+                    "sym": {
+                      "description": "The ticker symbol for the given security."
+                    },
+                    "t": {
+                      "description": "The nanosecond timestamp."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "LV",
+                  "val": 3988.5,
+                  "sym": "AAPL",
+                  "t": 1678220098130
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "value",
+          "description": "Value data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "stocks",
+          "description": "Stocks data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
     "/options/T": {
       "get": {
         "summary": "Trades",
@@ -1358,6 +1608,208 @@
         ]
       }
     },
+    "/launchpad/options/AM": {
+      "get": {
+        "summary": "Aggregates (Per Minute)",
+        "description": "Stream real-time minute aggregates for a given option contract.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify an option contract. You're only allowed to subscribe to 1,000 option contracts per connection.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://polygon.io/docs/options/get_v3_reference_options_contracts).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(([a-zA-Z]+|[0-9])+)$/"
+            },
+            "example": "O:SPY241220P00720000"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a minute aggregate event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "description": "The event type."
+                    },
+                    "sym": {
+                      "type": "string",
+                      "description": "The ticker symbol for the given stock."
+                    },
+                    "v": {
+                      "type": "integer",
+                      "description": "The tick volume."
+                    },
+                    "av": {
+                      "type": "integer",
+                      "description": "Today's accumulated volume."
+                    },
+                    "op": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "Today's official opening price."
+                    },
+                    "vw": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "The volume-weighted average value for the aggregate window."
+                    },
+                    "o": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The open price for the symbol in the given time period."
+                    },
+                    "c": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The close price for the symbol in the given time period."
+                    },
+                    "h": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The highest price for the symbol in the given time period."
+                    },
+                    "l": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The lowest price for the symbol in the given time period."
+                    },
+                    "a": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "Today's volume weighted average price."
+                    },
+                    "z": {
+                      "type": "integer",
+                      "description": "The average trade size for this aggregate window."
+                    },
+                    "s": {
+                      "type": "integer",
+                      "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+                    },
+                    "e": {
+                      "type": "integer",
+                      "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "AM",
+                  "sym": "O:ONEM220121C00025000",
+                  "v": 2,
+                  "av": 8,
+                  "op": 2.2,
+                  "vw": 2.05,
+                  "o": 2.05,
+                  "c": 2.05,
+                  "h": 2.05,
+                  "l": 2.05,
+                  "a": 2.1312,
+                  "z": 1,
+                  "s": 1632419640000,
+                  "e": 1632419700000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "aggregates",
+          "description": "Aggregate data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "options",
+          "description": "Options data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
+    "/launchpad/options/LV": {
+      "get": {
+        "summary": "Value",
+        "description": "Real-time value for a given options ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify an option contract. You're only allowed to subscribe to 1,000 option contracts per connection.\nYou can also use a comma separated list to subscribe to multiple option contracts.\nYou can retrieve active options contracts from our [Options Contracts API](https://polygon.io/docs/options/get_v3_reference_options_contracts).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(([a-zA-Z]+|[0-9])+)$/"
+            },
+            "example": "O:SPY241220P00720000"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a value event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "type": "string",
+                      "enum": [
+                        "LV"
+                      ],
+                      "description": "The event type."
+                    },
+                    "val": {
+                      "description": "The current value of the security."
+                    },
+                    "sym": {
+                      "description": "The ticker symbol for the given security."
+                    },
+                    "t": {
+                      "description": "The nanosecond timestamp."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "LV",
+                  "val": 7.2,
+                  "sym": "O:TSLA210903C00700000",
+                  "t": 1401715883806000000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "value",
+          "description": "Value data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "options",
+          "description": "Options data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
     "/forex/C": {
       "get": {
         "summary": "Quotes",
@@ -1553,6 +2005,208 @@
         ]
       }
     },
+    "/launchpad/forex/AM": {
+      "get": {
+        "summary": "Aggregates (Per Minute)",
+        "description": "Stream real-time per-minute forex aggregates for a given forex pair.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://polygon.io/docs/forex/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(?<from>([A-Z]{3})\\/?<to>([A-Z]{3}))$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a minute aggregate event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "description": "The event type."
+                    },
+                    "sym": {
+                      "type": "string",
+                      "description": "The ticker symbol for the given stock."
+                    },
+                    "v": {
+                      "type": "integer",
+                      "description": "The tick volume."
+                    },
+                    "av": {
+                      "type": "integer",
+                      "description": "Today's accumulated volume."
+                    },
+                    "op": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "Today's official opening price."
+                    },
+                    "vw": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "The volume-weighted average value for the aggregate window."
+                    },
+                    "o": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The open price for the symbol in the given time period."
+                    },
+                    "c": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The close price for the symbol in the given time period."
+                    },
+                    "h": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The highest price for the symbol in the given time period."
+                    },
+                    "l": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The lowest price for the symbol in the given time period."
+                    },
+                    "a": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "Today's volume weighted average price."
+                    },
+                    "z": {
+                      "type": "integer",
+                      "description": "The average trade size for this aggregate window."
+                    },
+                    "s": {
+                      "type": "integer",
+                      "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+                    },
+                    "e": {
+                      "type": "integer",
+                      "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "AM",
+                  "sym": "C:USD-EUR",
+                  "v": 4110,
+                  "av": 9470157,
+                  "op": 0.9272,
+                  "vw": 0.9288,
+                  "o": 0.9288,
+                  "c": 0.9286,
+                  "h": 0.9289,
+                  "l": 0.9206,
+                  "a": 0.9352,
+                  "z": 685,
+                  "s": 1610144640000,
+                  "e": 1610144700000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "aggregates",
+          "description": "Aggregate data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "fx",
+          "description": "Forex data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
+    "/launchpad/forex/LV": {
+      "get": {
+        "summary": "Value",
+        "description": "Real-time value for a given forex ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a forex pair in the format {from}/{to} or use * to subscribe to all forex pairs.\nYou can also use a comma separated list to subscribe to multiple forex pairs.\nYou can retrieve active forex tickers from our [Forex Tickers API](https://polygon.io/docs/forex/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(?<from>([A-Z]{3})\\/?<to>([A-Z]{3}))$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a value event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "type": "string",
+                      "enum": [
+                        "LV"
+                      ],
+                      "description": "The event type."
+                    },
+                    "val": {
+                      "description": "The current value of the security."
+                    },
+                    "sym": {
+                      "description": "The ticker symbol for the given security."
+                    },
+                    "t": {
+                      "description": "The nanosecond timestamp."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "LV",
+                  "val": 1.0631,
+                  "sym": "C:EURUSD",
+                  "t": 1678220098130
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "value",
+          "description": "Value data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "fx",
+          "description": "Forex data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
     "/crypto/XT": {
       "get": {
         "summary": "Trades",
@@ -1992,6 +2646,208 @@
         ]
       }
     },
+    "/launchpad/crypto/AM": {
+      "get": {
+        "summary": "Aggregates (Per Minute)",
+        "description": "Stream real-time per-minute crypto aggregates for a given crypto pair.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://polygon.io/docs/crypto/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a minute aggregate event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "description": "The event type."
+                    },
+                    "sym": {
+                      "type": "string",
+                      "description": "The ticker symbol for the given stock."
+                    },
+                    "v": {
+                      "type": "integer",
+                      "description": "The tick volume."
+                    },
+                    "av": {
+                      "type": "integer",
+                      "description": "Today's accumulated volume."
+                    },
+                    "op": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "Today's official opening price."
+                    },
+                    "vw": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "The volume-weighted average value for the aggregate window."
+                    },
+                    "o": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The open price for the symbol in the given time period."
+                    },
+                    "c": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The close price for the symbol in the given time period."
+                    },
+                    "h": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The highest price for the symbol in the given time period."
+                    },
+                    "l": {
+                      "type": "number",
+                      "format": "double",
+                      "description": "The lowest price for the symbol in the given time period."
+                    },
+                    "a": {
+                      "type": "number",
+                      "format": "float",
+                      "description": "Today's volume weighted average price."
+                    },
+                    "z": {
+                      "type": "integer",
+                      "description": "The average trade size for this aggregate window."
+                    },
+                    "s": {
+                      "type": "integer",
+                      "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+                    },
+                    "e": {
+                      "type": "integer",
+                      "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "AM",
+                  "sym": "X:BTC-USD",
+                  "v": 951.6112,
+                  "av": 738.6112,
+                  "op": 26503.8,
+                  "vw": 26503.8,
+                  "o": 27503.8,
+                  "c": 27203.8,
+                  "h": 27893.8,
+                  "l": 26503.8,
+                  "a": 26503.8,
+                  "z": 10,
+                  "s": 1610463240000,
+                  "e": 1610463300000
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "aggregates",
+          "description": "Aggregate data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "crypto",
+          "description": "Crypto data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
+    "/launchpad/crypto/LV": {
+      "get": {
+        "summary": "Value",
+        "description": "Real-time value for a given crypto ticker symbol.\n",
+        "parameters": [
+          {
+            "name": "ticker",
+            "in": "query",
+            "description": "Specify a crypto pair in the format {from}-{to} or use * to subscribe to all crypto pairs.\nYou can also use a comma separated list to subscribe to multiple crypto pairs.\nYou can retrieve active crypto tickers from our [Crypto Tickers API](https://polygon.io/docs/crypto/get_v3_reference_tickers).\n",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
+            },
+            "example": "*"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "The WebSocket message for a value event.",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "properties": {
+                    "ev": {
+                      "type": "string",
+                      "enum": [
+                        "LV"
+                      ],
+                      "description": "The event type."
+                    },
+                    "val": {
+                      "description": "The current value of the security."
+                    },
+                    "sym": {
+                      "description": "The ticker symbol for the given security."
+                    },
+                    "t": {
+                      "description": "The nanosecond timestamp."
+                    }
+                  }
+                },
+                "example": {
+                  "ev": "LV",
+                  "val": 33021.9,
+                  "sym": "X:BTC-USD",
+                  "t": 1610462007425
+                }
+              }
+            }
+          }
+        },
+        "x-polygon-entitlement-data-type": {
+          "name": "value",
+          "description": "Value data"
+        },
+        "x-polygon-entitlement-market-type": {
+          "name": "crypto",
+          "description": "Crypto data"
+        },
+        "x-polygon-entitlement-allowed-timeframes": [
+          {
+            "name": "delayed",
+            "description": "15 minute delayed data"
+          },
+          {
+            "name": "realtime",
+            "description": "Real Time Data"
+          }
+        ]
+      }
+    },
     "/indices/AM": {
       "get": {
         "summary": "Aggregates (Per Minute)",
@@ -2163,7 +3019,7 @@
         },
         "x-polygon-entitlement-data-type": {
           "name": "value",
-          "description": "Index value data"
+          "description": "Value data"
         },
         "x-polygon-entitlement-market-type": {
           "name": "indices",
@@ -3677,6 +4533,94 @@
             "description": "The Timestamp in Unix MS."
           }
         }
+      },
+      "LaunchpadWebsocketMinuteAggregateEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "description": "The event type."
+          },
+          "sym": {
+            "type": "string",
+            "description": "The ticker symbol for the given stock."
+          },
+          "v": {
+            "type": "integer",
+            "description": "The tick volume."
+          },
+          "av": {
+            "type": "integer",
+            "description": "Today's accumulated volume."
+          },
+          "op": {
+            "type": "number",
+            "format": "double",
+            "description": "Today's official opening price."
+          },
+          "vw": {
+            "type": "number",
+            "format": "float",
+            "description": "The volume-weighted average value for the aggregate window."
+          },
+          "o": {
+            "type": "number",
+            "format": "double",
+            "description": "The open price for the symbol in the given time period."
+          },
+          "c": {
+            "type": "number",
+            "format": "double",
+            "description": "The close price for the symbol in the given time period."
+          },
+          "h": {
+            "type": "number",
+            "format": "double",
+            "description": "The highest price for the symbol in the given time period."
+          },
+          "l": {
+            "type": "number",
+            "format": "double",
+            "description": "The lowest price for the symbol in the given time period."
+          },
+          "a": {
+            "type": "number",
+            "format": "float",
+            "description": "Today's volume weighted average price."
+          },
+          "z": {
+            "type": "integer",
+            "description": "The average trade size for this aggregate window."
+          },
+          "s": {
+            "type": "integer",
+            "description": "The timestamp of the starting tick for this aggregate window in Unix Milliseconds."
+          },
+          "e": {
+            "type": "integer",
+            "description": "The timestamp of the ending tick for this aggregate window in Unix Milliseconds."
+          }
+        }
+      },
+      "LaunchpadWebsocketValueEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "type": "string",
+            "enum": [
+              "LV"
+            ],
+            "description": "The event type."
+          },
+          "val": {
+            "description": "The current value of the security."
+          },
+          "sym": {
+            "description": "The ticker symbol for the given security."
+          },
+          "t": {
+            "description": "The nanosecond timestamp."
+          }
+        }
       }
     },
     "parameters": {
@@ -3759,4 +4703,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}

spring boot web Caused by: java.lang.NoClassDefFoundError: kotlinx/serialization/json/Json$Default

Good day! Client no works with spring boot web dependency, can you please help me with solution? Errors:

10:57:02.119 | ERROR | main | o.s.boot.SpringApplication: Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerAdapter' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]: Factory method 'requestMappingHandlerAdapter' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageConverters' defined in class path resource [org/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.autoconfigure.http.HttpMessageConverters]: Factory method 'messageConverters' threw exception; nested exception is java.lang.NoClassDefFoundError: kotlinx/serialization/json/Json$Default
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1336)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1179)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:571)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:923)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:588)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:326)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1311)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300)
	at com.m8fintech.craig_lazenby.TvCraigMain.main(TvCraigMain.java:18)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]: Factory method 'requestMappingHandlerAdapter' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageConverters' defined in class path resource [org/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.autoconfigure.http.HttpMessageConverters]: Factory method 'messageConverters' threw exception; nested exception is java.lang.NoClassDefFoundError: kotlinx/serialization/json/Json$Default
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
	... 20 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageConverters' defined in class path resource [org/springframework/boot/autoconfigure/http/HttpMessageConvertersAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.autoconfigure.http.HttpMessageConverters]: Factory method 'messageConverters' threw exception; nested exception is java.lang.NoClassDefFoundError: kotlinx/serialization/json/Json$Default
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1336)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1179)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:571)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1380)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory$DependencyObjectProvider.getIfAvailable(DefaultListableBeanFactory.java:2021)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory$DependencyObjectProvider.ifAvailable(DefaultListableBeanFactory.java:2032)
	at org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.configureMessageConverters(WebMvcAutoConfiguration.java:216)
	at org.springframework.web.servlet.config.annotation.WebMvcConfigurerComposite.configureMessageConverters(WebMvcConfigurerComposite.java:137)
	at org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration.configureMessageConverters(DelegatingWebMvcConfiguration.java:118)
	at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.getMessageConverters(WebMvcConfigurationSupport.java:840)
	at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.requestMappingHandlerAdapter(WebMvcConfigurationSupport.java:648)
	at org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration.requestMappingHandlerAdapter(WebMvcAutoConfiguration.java:369)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
	... 21 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.autoconfigure.http.HttpMessageConverters]: Factory method 'messageConverters' threw exception; nested exception is java.lang.NoClassDefFoundError: kotlinx/serialization/json/Json$Default
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
	... 45 common frames omitted
Caused by: java.lang.NoClassDefFoundError: kotlinx/serialization/json/Json$Default
	at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.addDefaultHttpMessageConverters(WebMvcConfigurationSupport.java:910)
	at org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.getMessageConverters(WebMvcConfigurationSupport.java:842)
	at org.springframework.boot.autoconfigure.http.HttpMessageConverters$1.defaultMessageConverters(HttpMessageConverters.java:175)
	at org.springframework.boot.autoconfigure.http.HttpMessageConverters.getDefaultConverters(HttpMessageConverters.java:178)
	at org.springframework.boot.autoconfigure.http.HttpMessageConverters.<init>(HttpMessageConverters.java:102)
	at org.springframework.boot.autoconfigure.http.HttpMessageConverters.<init>(HttpMessageConverters.java:89)
	at org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration.messageConverters(HttpMessageConvertersAutoConfiguration.java:70)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
	... 46 common frames omitted
Caused by: java.lang.ClassNotFoundException: kotlinx.serialization.json.Json$Default
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 58 common frames omitted

Client update needed to match REST spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/rest.json
+++ https://api.polygon.io/openapi
@@ -826,11 +826,19 @@
             "format": "double",
             "type": "number"
           },
+          "n": {
+            "description": "The number of transactions in the aggregate window.",
+            "type": "integer"
+          },
           "o": {
             "description": "The open price for the symbol in the given time period.",
             "format": "double",
             "type": "number"
           },
+          "t": {
+            "description": "The Unix Msec timestamp for the start of the aggregate window.",
+            "type": "integer"
+          },
           "v": {
             "description": "The trading volume of the symbol in the given time period.",
             "format": "double",
@@ -848,7 +851,9 @@
           "l",
           "c",
           "v",
-          "vw"
+          "vw",
+          "t",
+          "n"
         ],
         "type": "object"
       },
@@ -966,11 +971,19 @@
                     "format": "double",
                     "type": "number"
                   },
+                  "n": {
+                    "description": "The number of transactions in the aggregate window.",
+                    "type": "integer"
+                  },
                   "o": {
                     "description": "The open price for the symbol in the given time period.",
                     "format": "double",
                     "type": "number"
                   },
+                  "t": {
+                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                    "type": "integer"
+                  },
                   "v": {
                     "description": "The trading volume of the symbol in the given time period.",
                     "format": "double",
@@ -988,7 +996,9 @@
                   "l",
                   "c",
                   "v",
-                  "vw"
+                  "vw",
+                  "t",
+                  "n"
                 ],
                 "type": "object"
               },
@@ -1269,11 +1279,19 @@
                       "format": "double",
                       "type": "number"
                     },
+                    "n": {
+                      "description": "The number of transactions in the aggregate window.",
+                      "type": "integer"
+                    },
                     "o": {
                       "description": "The open price for the symbol in the given time period.",
                       "format": "double",
                       "type": "number"
                     },
+                    "t": {
+                      "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                      "type": "integer"
+                    },
                     "v": {
                       "description": "The trading volume of the symbol in the given time period.",
                       "format": "double",
@@ -1291,7 +1304,9 @@
                     "l",
                     "c",
                     "v",
-                    "vw"
+                    "vw",
+                    "t",
+                    "n"
                   ],
                   "type": "object"
                 },
@@ -2410,24 +2425,25 @@
                     "format": "double",
                     "type": "number"
                   },
+                  "n": {
+                    "description": "The number of transactions in the aggregate window.",
+                    "type": "integer"
+                  },
                   "o": {
                     "description": "The open price for the symbol in the given time period.",
                     "format": "double",
                     "type": "number"
                   },
+                  "t": {
+                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                    "type": "integer"
+                  },
                   "v": {
                     "description": "The trading volume of the symbol in the given time period.",
                     "format": "double",
                     "type": "number"
                   }
                 },
-                "required": [
-                  "o",
-                  "h",
-                  "l",
-                  "c",
-                  "v"
-                ],
                 "type": "object"
               },
               "prevDay": {
@@ -2599,24 +2604,25 @@
                       "format": "double",
                       "type": "number"
                     },
+                    "n": {
+                      "description": "The number of transactions in the aggregate window.",
+                      "type": "integer"
+                    },
                     "o": {
                       "description": "The open price for the symbol in the given time period.",
                       "format": "double",
                       "type": "number"
                     },
+                    "t": {
+                      "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                      "type": "integer"
+                    },
                     "v": {
                       "description": "The trading volume of the symbol in the given time period.",
                       "format": "double",
                       "type": "number"
                     }
                   },
-                  "required": [
-                    "o",
-                    "h",
-                    "l",
-                    "c",
-                    "v"
-                  ],
                   "type": "object"
                 },
                 "prevDay": {
@@ -3273,6 +3268,44 @@
         "format": "double",
         "type": "number"
       },
+      "SnapshotMinOHLCV": {
+        "properties": {
+          "c": {
+            "description": "The close price for the symbol in the given time period.",
+            "format": "double",
+            "type": "number"
+          },
+          "h": {
+            "description": "The highest price for the symbol in the given time period.",
+            "format": "double",
+            "type": "number"
+          },
+          "l": {
+            "description": "The lowest price for the symbol in the given time period.",
+            "format": "double",
+            "type": "number"
+          },
+          "n": {
+            "description": "The number of transactions in the aggregate window.",
+            "type": "integer"
+          },
+          "o": {
+            "description": "The open price for the symbol in the given time period.",
+            "format": "double",
+            "type": "number"
+          },
+          "t": {
+            "description": "The Unix Msec timestamp for the start of the aggregate window.",
+            "type": "integer"
+          },
+          "v": {
+            "description": "The trading volume of the symbol in the given time period.",
+            "format": "double",
+            "type": "number"
+          }
+        },
+        "type": "object"
+      },
       "SnapshotOHLCV": {
         "properties": {
           "c": {
@@ -3657,11 +3690,19 @@
             "format": "double",
             "type": "number"
           },
+          "n": {
+            "description": "The number of transactions in the aggregate window.",
+            "type": "integer"
+          },
           "o": {
             "description": "The open price for the symbol in the given time period.",
             "format": "double",
             "type": "number"
           },
+          "t": {
+            "description": "The Unix Msec timestamp for the start of the aggregate window.",
+            "type": "integer"
+          },
           "v": {
             "description": "The trading volume of the symbol in the given time period.",
             "format": "double",
@@ -3680,7 +3716,9 @@
           "l",
           "c",
           "v",
-          "vw"
+          "vw",
+          "t",
+          "n"
         ],
         "type": "object"
       },
@@ -3705,6 +3743,10 @@
             "format": "double",
             "type": "number"
           },
+          "n": {
+            "description": "The number of transactions in the aggregate window.",
+            "type": "integer"
+          },
           "o": {
             "description": "The open price for the symbol in the given time period.",
             "format": "double",
@@ -3714,6 +3756,10 @@
             "description": "Whether or not this aggregate is for an OTC ticker. This field will be left off if false.",
             "type": "boolean"
           },
+          "t": {
+            "description": "The Unix Msec timestamp for the start of the aggregate window.",
+            "type": "integer"
+          },
           "v": {
             "description": "The trading volume of the symbol in the given time period.",
             "format": "double",
@@ -3732,7 +3778,9 @@
           "l",
           "c",
           "v",
-          "vw"
+          "vw",
+          "t",
+          "n"
         ],
         "type": "object"
       },
@@ -3887,6 +3935,10 @@
                     "format": "double",
                     "type": "number"
                   },
+                  "n": {
+                    "description": "The number of transactions in the aggregate window.",
+                    "type": "integer"
+                  },
                   "o": {
                     "description": "The open price for the symbol in the given time period.",
                     "format": "double",
@@ -3896,6 +3948,10 @@
                     "description": "Whether or not this aggregate is for an OTC ticker. This field will be left off if false.",
                     "type": "boolean"
                   },
+                  "t": {
+                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                    "type": "integer"
+                  },
                   "v": {
                     "description": "The trading volume of the symbol in the given time period.",
                     "format": "double",
@@ -3914,7 +3970,9 @@
                   "l",
                   "c",
                   "v",
-                  "vw"
+                  "vw",
+                  "t",
+                  "n"
                 ],
                 "type": "object"
               },
@@ -4142,6 +4200,10 @@
                       "format": "double",
                       "type": "number"
                     },
+                    "n": {
+                      "description": "The number of transactions in the aggregate window.",
+                      "type": "integer"
+                    },
                     "o": {
                       "description": "The open price for the symbol in the given time period.",
                       "format": "double",
@@ -4151,6 +4213,10 @@
                       "description": "Whether or not this aggregate is for an OTC ticker. This field will be left off if false.",
                       "type": "boolean"
                     },
+                    "t": {
+                      "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                      "type": "integer"
+                    },
                     "v": {
                       "description": "The trading volume of the symbol in the given time period.",
                       "format": "double",
@@ -4169,7 +4235,9 @@
                     "l",
                     "c",
                     "v",
-                    "vw"
+                    "vw",
+                    "t",
+                    "n"
                   ],
                   "type": "object"
                 },
@@ -5132,6 +5200,12 @@
                           }
                         }
                       },
+                      "required": [
+                        "exchange",
+                        "timestamp",
+                        "ask",
+                        "bid"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastQuoteCurrencies"
@@ -5154,6 +5228,15 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id",
+                    "from",
+                    "to",
+                    "symbol",
+                    "initialAmount",
+                    "converted"
+                  ],
                   "type": "object"
                 }
               },
@@ -5589,7 +5672,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get exponential moving average (EMA) data.",
-            "example": "X:BTC-USD",
+            "example": "X:BTCUSD",
             "in": "path",
             "name": "cryptoTicker",
             "required": true,
@@ -7162,7 +7245,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get MACD data.",
-            "example": "X:BTC-USD",
+            "example": "X:BTCUSD",
             "in": "path",
             "name": "cryptoTicker",
             "required": true,
@@ -8955,7 +9038,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get relative strength index (RSI) data.",
-            "example": "X:BTC-USD",
+            "example": "X:BTCUSD",
             "in": "path",
             "name": "cryptoTicker",
             "required": true,
@@ -10528,7 +10611,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get simple moving average (SMA) data.",
-            "example": "X:BTC-USD",
+            "example": "X:BTCUSD",
             "in": "path",
             "name": "cryptoTicker",
             "required": true,
@@ -12265,6 +12348,12 @@
                           }
                         }
                       },
+                      "required": [
+                        "exchange",
+                        "price",
+                        "size",
+                        "timestamp"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastTradeCrypto"
@@ -12283,6 +12372,11 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id",
+                    "symbol"
+                  ],
                   "type": "object"
                 }
               },
@@ -12381,6 +12475,12 @@
                           }
                         }
                       },
+                      "required": [
+                        "ask",
+                        "bid",
+                        "exchange",
+                        "timestamp"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastQuoteCurrencies"
@@ -12399,6 +12499,11 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id",
+                    "symbol"
+                  ],
                   "type": "object"
                 }
               },
@@ -14235,7 +14340,7 @@
         "operationId": "SnapshotSummary",
         "parameters": [
           {
-            "description": "Comma separated list of tickers. This API currently supports Stocks/Equities, Crypto, Options, and Forex. See <a rel=\"nofollow\" target=\"_blank\" href=\"https://polygon.io/docs/stocks/get_v3_reference_tickers\">the tickers endpoint</a> for more details on supported tickers. If no tickers are passed then no results will be returned.",
+            "description": "Comma separated list of tickers. This API currently supports Stocks/Equities, Crypto, Options, and Forex. See <a rel=\"nofollow\" target=\"_blank\" href=\"https://polygon.io/docs/stocks/get_v3_reference_tickers\">the tickers endpoint</a> for more details on supported tickers. If no tickers are passed then no results will be returned.\n\nWarning: The maximum number of characters allowed in a URL are subject to your technology stack.",
             "example": "NCLH,O:SPY250321C00380000,C:EURUSD,X:BTCUSD",
             "in": "query",
             "name": "ticker.any_of",
@@ -14256,6 +14361,7 @@
                         "icon_url": "https://api.polygon.io/icon.png",
                         "logo_url": "https://api.polygon.io/logo.svg"
                       },
+                      "last_updated": 1679597116344223500,
                       "market_status": "closed",
                       "name": "Norwegian Cruise Lines",
                       "price": 22.3,
@@ -14277,6 +14383,7 @@
                       "type": "stock"
                     },
                     {
+                      "last_updated": 1679597116344223500,
                       "market_status": "closed",
                       "name": "NCLH $5 Call",
                       "options": {
@@ -14306,6 +14413,7 @@
                       "type": "options"
                     },
                     {
+                      "last_updated": 1679597116344223500,
                       "market_status": "open",
                       "name": "Euro - United States Dollar",
                       "price": 0.97989,
@@ -14326,6 +14434,7 @@
                         "icon_url": "https://api.polygon.io/icon.png",
                         "logo_url": "https://api.polygon.io/logo.svg"
                       },
+                      "last_updated": 1679597116344223500,
                       "market_status": "open",
                       "name": "Bitcoin - United States Dollar",
                       "price": 32154.68,
@@ -14377,6 +14486,15 @@
                             "description": "The error while looking for this ticker.",
                             "type": "string"
                           },
+                          "last_updated": {
+                            "description": "The nanosecond timestamp of when this information was updated.",
+                            "format": "int64",
+                            "type": "integer",
+                            "x-polygon-go-type": {
+                              "name": "INanoseconds",
+                              "path": "github.com/polygon-io/ptime"
+                            }
+                          },
                           "market_status": {
                             "description": "The market status for the market that trades this ticker.",
                             "type": "string"
@@ -14551,7 +14669,8 @@
                           "market_status",
                           "type",
                           "session",
-                          "options"
+                          "options",
+                          "last_updated"
                         ],
                         "type": "object",
                         "x-polygon-go-type": {
@@ -16325,7 +16444,6 @@
                       "c": "4,048.42",
                       "h": "4,050.00",
                       "l": "3,980.31",
-                      "n": 1,
                       "o": "4,048.26",
                       "t": 1678221133236
                     },
@@ -16333,7 +16451,6 @@
                       "c": "4,048.42",
                       "h": "4,050.00",
                       "l": "3,980.31",
-                      "n": 1,
                       "o": "4,048.26",
                       "t": 1678221139690
                     }
@@ -17481,6 +17598,12 @@
                           "type": "integer"
                         }
                       },
+                      "required": [
+                        "T",
+                        "t",
+                        "y",
+                        "q"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastQuoteResult"
@@ -17491,6 +17614,10 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id"
+                  ],
                   "type": "object"
                 }
               },
@@ -17644,6 +17771,15 @@
                           "type": "integer"
                         }
                       },
+                      "required": [
+                        "T",
+                        "t",
+                        "y",
+                        "q",
+                        "i",
+                        "p",
+                        "x"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastTradeResult"
@@ -17654,6 +17790,10 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id"
+                  ],
                   "type": "object"
                 }
               },
@@ -17811,6 +17951,15 @@
                           "type": "integer"
                         }
                       },
+                      "required": [
+                        "T",
+                        "t",
+                        "y",
+                        "q",
+                        "i",
+                        "p",
+                        "x"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastTradeResult"
@@ -17821,6 +17970,10 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id"
+                  ],
                   "type": "object"
                 }
               },
@@ -18457,11 +18610,19 @@
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "n": {
+                                    "description": "The number of transactions in the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "o": {
                                     "description": "The open price for the symbol in the given time period.",
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "t": {
+                                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "v": {
                                     "description": "The trading volume of the symbol in the given time period.",
                                     "format": "double",
@@ -18479,7 +18635,9 @@
                                   "l",
                                   "c",
                                   "v",
-                                  "vw"
+                                  "vw",
+                                  "t",
+                                  "n"
                                 ],
                                 "type": "object"
                               },
@@ -18806,11 +18964,19 @@
                                   "format": "double",
                                   "type": "number"
                                 },
+                                "n": {
+                                  "description": "The number of transactions in the aggregate window.",
+                                  "type": "integer"
+                                },
                                 "o": {
                                   "description": "The open price for the symbol in the given time period.",
                                   "format": "double",
                                   "type": "number"
                                 },
+                                "t": {
+                                  "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                  "type": "integer"
+                                },
                                 "v": {
                                   "description": "The trading volume of the symbol in the given time period.",
                                   "format": "double",
@@ -18828,7 +18989,9 @@
                                 "l",
                                 "c",
                                 "v",
-                                "vw"
+                                "vw",
+                                "t",
+                                "n"
                               ],
                               "type": "object"
                             },
@@ -19327,11 +19490,19 @@
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "n": {
+                                    "description": "The number of transactions in the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "o": {
                                     "description": "The open price for the symbol in the given time period.",
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "t": {
+                                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "v": {
                                     "description": "The trading volume of the symbol in the given time period.",
                                     "format": "double",
@@ -19349,7 +19515,9 @@
                                   "l",
                                   "c",
                                   "v",
-                                  "vw"
+                                  "vw",
+                                  "t",
+                                  "n"
                                 ],
                                 "type": "object"
                               },
@@ -19637,24 +19805,25 @@
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "n": {
+                                    "description": "The number of transactions in the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "o": {
                                     "description": "The open price for the symbol in the given time period.",
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "t": {
+                                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "v": {
                                     "description": "The trading volume of the symbol in the given time period.",
                                     "format": "double",
                                     "type": "number"
                                   }
                                 },
-                                "required": [
-                                  "o",
-                                  "h",
-                                  "l",
-                                  "c",
-                                  "v"
-                                ],
                                 "type": "object"
                               },
                               "prevDay": {
@@ -19951,24 +20109,25 @@
                                   "format": "double",
                                   "type": "number"
                                 },
+                                "n": {
+                                  "description": "The number of transactions in the aggregate window.",
+                                  "type": "integer"
+                                },
                                 "o": {
                                   "description": "The open price for the symbol in the given time period.",
                                   "format": "double",
                                   "type": "number"
                                 },
+                                "t": {
+                                  "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                  "type": "integer"
+                                },
                                 "v": {
                                   "description": "The trading volume of the symbol in the given time period.",
                                   "format": "double",
                                   "type": "number"
                                 }
                               },
-                              "required": [
-                                "o",
-                                "h",
-                                "l",
-                                "c",
-                                "v"
-                              ],
                               "type": "object"
                             },
                             "prevDay": {
@@ -20256,24 +20404,25 @@
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "n": {
+                                    "description": "The number of transactions in the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "o": {
                                     "description": "The open price for the symbol in the given time period.",
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "t": {
+                                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "v": {
                                     "description": "The trading volume of the symbol in the given time period.",
                                     "format": "double",
                                     "type": "number"
                                   }
                                 },
-                                "required": [
-                                  "o",
-                                  "h",
-                                  "l",
-                                  "c",
-                                  "v"
-                                ],
                                 "type": "object"
                               },
                               "prevDay": {
@@ -20651,6 +20789,10 @@
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "n": {
+                                    "description": "The number of transactions in the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "o": {
                                     "description": "The open price for the symbol in the given time period.",
                                     "format": "double",
@@ -20660,6 +20802,10 @@
                                     "description": "Whether or not this aggregate is for an OTC ticker. This field will be left off if false.",
                                     "type": "boolean"
                                   },
+                                  "t": {
+                                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "v": {
                                     "description": "The trading volume of the symbol in the given time period.",
                                     "format": "double",
@@ -20678,7 +20824,9 @@
                                   "l",
                                   "c",
                                   "v",
-                                  "vw"
+                                  "vw",
+                                  "t",
+                                  "n"
                                 ],
                                 "type": "object"
                               },
@@ -21045,6 +21193,10 @@
                                   "format": "double",
                                   "type": "number"
                                 },
+                                "n": {
+                                  "description": "The number of transactions in the aggregate window.",
+                                  "type": "integer"
+                                },
                                 "o": {
                                   "description": "The open price for the symbol in the given time period.",
                                   "format": "double",
@@ -21054,6 +21206,10 @@
                                   "description": "Whether or not this aggregate is for an OTC ticker. This field will be left off if false.",
                                   "type": "boolean"
                                 },
+                                "t": {
+                                  "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                  "type": "integer"
+                                },
                                 "v": {
                                   "description": "The trading volume of the symbol in the given time period.",
                                   "format": "double",
@@ -21072,7 +21228,9 @@
                                 "l",
                                 "c",
                                 "v",
-                                "vw"
+                                "vw",
+                                "t",
+                                "n"
                               ],
                               "type": "object"
                             },
@@ -21438,6 +21596,10 @@
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "n": {
+                                    "description": "The number of transactions in the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "o": {
                                     "description": "The open price for the symbol in the given time period.",
                                     "format": "double",
@@ -21447,6 +21609,10 @@
                                     "description": "Whether or not this aggregate is for an OTC ticker. This field will be left off if false.",
                                     "type": "boolean"
                                   },
+                                  "t": {
+                                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "v": {
                                     "description": "The trading volume of the symbol in the given time period.",
                                     "format": "double",
@@ -21465,7 +21631,9 @@
                                   "l",
                                   "c",
                                   "v",
-                                  "vw"
+                                  "vw",
+                                  "t",
+                                  "n"
                                 ],
                                 "type": "object"
                               },
@@ -22380,6 +22548,9 @@
                             }
                           }
                         },
+                        "required": [
+                          "participant_timestamp"
+                        ],
                         "type": "object"
                       },
                       "type": "array"
@@ -22389,6 +22560,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -22620,6 +22794,10 @@
                             }
                           }
                         },
+                        "required": [
+                          "sip_timestamp",
+                          "sequence_number"
+                        ],
                         "type": "object"
                       },
                       "type": "array"
@@ -22629,6 +22807,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -22910,7 +23091,15 @@
                             }
                           }
                         },
-                        "type": "object"
+                        "required": [
+                          "participant_timestamp",
+                          "sequence_number",
+                          "sip_timestamp"
+                        ],
+                        "type": "object",
+                        "x-polygon-go-type": {
+                          "name": "CommonQuote"
+                        }
                       },
                       "type": "array"
                     },
@@ -22919,6 +23108,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -26524,7 +26716,7 @@
         "operationId": "IndicesSnapshot",
         "parameters": [
           {
-            "description": "Comma separated list of tickers",
+            "description": "Comma separated list of tickers.\n\nWarning: The maximum number of characters allowed in a URL are subject to your technology stack.",
             "example": "I:SPX",
             "in": "query",
             "name": "ticker.any_of",
@@ -26541,6 +26733,7 @@
                   "request_id": "6a7e466379af0a71039d60cc78e72282",
                   "results": [
                     {
+                      "last_updated": 1679597116344223500,
                       "market_status": "closed",
                       "name": "S&P 500",
                       "session": {
@@ -26553,6 +26746,7 @@
                         "previous_close": 3812.19
                       },
                       "ticker": "I:SPX",
+                      "timeframe": "REAL-TIME",
                       "type": "indices",
                       "value": 3822.39
                     },
@@ -26581,6 +26775,15 @@
                             "description": "The error while looking for this ticker.",
                             "type": "string"
                           },
+                          "last_updated": {
+                            "description": "The nanosecond timestamp of when this information was updated.",
+                            "format": "int64",
+                            "type": "integer",
+                            "x-polygon-go-type": {
+                              "name": "INanoseconds",
+                              "path": "github.com/polygon-io/ptime"
+                            }
+                          },
                           "market_status": {
                             "description": "The market status for the market that trades this ticker.",
                             "type": "string"
@@ -26640,6 +26843,14 @@
                             "description": "Ticker of asset queried.",
                             "type": "string"
                           },
+                          "timeframe": {
+                            "description": "The time relevance of the data.",
+                            "enum": [
+                              "DELAYED",
+                              "REAL-TIME"
+                            ],
+                            "type": "string"
+                          },
                           "type": {
                             "description": "The indices market.",
                             "enum": [
@@ -26653,7 +26864,9 @@
                           }
                         },
                         "required": [
-                          "ticker"
+                          "ticker",
+                          "timeframe",
+                          "last_updated"
                         ],
                         "type": "object",
                         "x-polygon-go-type": {
@@ -26884,7 +27097,7 @@
                         "expiration_date": "2022-01-21",
                         "shares_per_contract": 100,
                         "strike_price": 150,
-                        "ticker": "AAPL211022C000150000"
+                        "ticker": "O:AAPL211022C000150000"
                       },
                       "greeks": {
                         "delta": 1,
@@ -28025,6 +28238,12 @@
                             "type": "number"
                           }
                         },
+                        "required": [
+                          "exchange",
+                          "price",
+                          "size",
+                          "id"
+                        ],
                         "type": "object"
                       },
                       "type": "array"
@@ -28034,6 +28253,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -28268,6 +28490,12 @@
                             "type": "number"
                           }
                         },
+                        "required": [
+                          "exchange",
+                          "price",
+                          "sip_timestamp",
+                          "size"
+                        ],
                         "type": "object"
                       },
                       "type": "array"
@@ -28277,6 +28505,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -28542,7 +28773,19 @@
                             }
                           }
                         },
-                        "type": "object"
+                        "required": [
+                          "exchange",
+                          "id",
+                          "price",
+                          "sequence_number",
+                          "sip_timestamp",
+                          "participant_timestamp",
+                          "size"
+                        ],
+                        "type": "object",
+                        "x-polygon-go-type": {
+                          "name": "CommonTrade"
+                        }
                       },
                       "type": "array"
                     },
@@ -28551,6 +28794,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -30023,4 +30269,4 @@
       ]
     }
   }
-}
+}
\ No newline at end of file

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -3409,4 +3409,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -1995,7 +1995,7 @@
     "/indices/AM": {
       "get": {
         "summary": "Aggregates (Per Minute)",
-        "description": "Stream real-time minute aggregates for a given index.\n",
+        "description": "Stream real-time minute aggregates for a given index ticker symbol.\n",
         "parameters": [
           {
             "name": "ticker",
@@ -2004,7 +2004,7 @@
             "required": true,
             "schema": {
               "type": "string",
-              "pattern": "/^([a-zA-Z]+)$/"
+              "pattern": "/^(I:[a-zA-Z0-9]+)$/"
             },
             "example": "*"
           }
@@ -3552,6 +3552,131 @@
       "CryptoReceivedTimestamp": {
         "type": "integer",
         "description": "The timestamp that the tick was received by Polygon."
+      },
+      "IndicesBaseAggregateEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "description": "The event type."
+          },
+          "sym": {
+            "type": "string",
+            "description": "The symbol representing the given index."
+          },
+          "op": {
+            "type": "number",
+            "format": "double",
+            "description": "Today's official opening value."
+          },
+          "o": {
+            "type": "number",
+            "format": "double",
+            "description": "The opening index value for this aggregate window."
+          },
+          "c": {
+            "type": "number",
+            "format": "double",
+            "description": "The closing index value for this aggregate window."
+          },
+          "h": {
+            "type": "number",
+            "format": "double",
+            "description": "The highest index value for this aggregate window."
+          },
+          "l": {
+            "type": "number",
+            "format": "double",
+            "description": "The lowest index value for this aggregate window."
+          },
+          "s": {
+            "type": "integer",
+            "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+          },
+          "e": {
+            "type": "integer",
+            "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+          }
+        }
+      },
+      "IndicesMinuteAggregateEvent": {
+        "allOf": [
+          {
+            "type": "object",
+            "properties": {
+              "ev": {
+                "description": "The event type."
+              },
+              "sym": {
+                "type": "string",
+                "description": "The symbol representing the given index."
+              },
+              "op": {
+                "type": "number",
+                "format": "double",
+                "description": "Today's official opening value."
+              },
+              "o": {
+                "type": "number",
+                "format": "double",
+                "description": "The opening index value for this aggregate window."
+              },
+              "c": {
+                "type": "number",
+                "format": "double",
+                "description": "The closing index value for this aggregate window."
+              },
+              "h": {
+                "type": "number",
+                "format": "double",
+                "description": "The highest index value for this aggregate window."
+              },
+              "l": {
+                "type": "number",
+                "format": "double",
+                "description": "The lowest index value for this aggregate window."
+              },
+              "s": {
+                "type": "integer",
+                "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+              },
+              "e": {
+                "type": "integer",
+                "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+              }
+            }
+          },
+          {
+            "properties": {
+              "ev": {
+                "enum": [
+                  "AM"
+                ],
+                "description": "The event type."
+              }
+            }
+          }
+        ]
+      },
+      "IndicesValueEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "type": "string",
+            "enum": [
+              "V"
+            ],
+            "description": "The event type."
+          },
+          "val": {
+            "description": "The value of the index."
+          },
+          "T": {
+            "description": "The assigned ticker of the index."
+          },
+          "t": {
+            "description": "The Timestamp in Unix MS."
+          }
+        }
       }
     },
     "parameters": {
@@ -3609,7 +3734,29 @@
           "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
         },
         "example": "*"
+      },
+      "IndicesIndexParam": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "*"
+      },
+      "IndicesIndexParamWithoutWildcard": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "I:SPX"
       }
     }
   }
-}
\ No newline at end of file
+}

Polygon client example code (both Java and Kotlin) cannot pass authentication

The two examples in https://github.com/polygon-io/client-jvm/tree/master/sample/src/main/java/io/polygon/kotlin/sdk/sample will always fail with errors like:

Received Message: StatusMessage(ev=status, status=connected, message=Connected Successfully)
Received Message: StatusMessage(ev=status, status=auth_failed, message=authentication failed)
Polygon Disconnected!
Exception in thread "main" java.util.concurrent.CancellationException: ArrayChannel was cancelled
at kotlinx.coroutines.channels.AbstractChannel.cancel(AbstractChannel.kt:639)

However, the same API key always works manually or with my simple Python script.

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -3409,4 +3409,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}

Client update needed to match REST spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/rest.json
+++ https://api.polygon.io/openapi
@@ -150,7 +150,7 @@
       },
       "IndicesTickerPathParam": {
         "description": "The ticker symbol of Index.",
-        "example": "I:DJI",
+        "example": "I:NDX",
         "in": "path",
         "name": "indicesTicker",
         "required": true,
@@ -6339,7 +6339,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get exponential moving average (EMA) data.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -6485,16 +6485,16 @@
             "content": {
               "application/json": {
                 "example": {
-                  "next_url": "https://api.polygon.io/v1/indicators/ema/I:DJI?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTQwNDcuNDEwMDAwMDAwMDAwMyUyQyUyMmglMjIlM0EwJTJDJTIybCUyMiUzQTAlMkMlMjJ0JTIyJTNBMTY3ODA4MjQwMDAwMCU3RCZhcz0mZXhwYW5kX3VuZGVybHlpbmc9ZmFsc2UmbGltaXQ9MTAmb3JkZXI9ZGVzYyZzZXJpZXNfdHlwZT1jbG9zZSZ0aW1lc3Bhbj1kYXkmdGltZXN0YW1wLmx0PTE2NzgxNjUyMDAwMDAmd2luZG93PTU",
-                  "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3",
+                  "next_url": "https://api.polygon.io/v1/indicators/ema/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MjE5MjAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0xJm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2UmdGltZXNwYW49ZGF5JnRpbWVzdGFtcC5sdD0xNjg3MjM3MjAwMDAwJndpbmRvdz01MA",
+                  "request_id": "b9201816341441eed663a90443c0623a",
                   "results": {
                     "underlying": {
-                      "url": "https://api.polygon.io/v2/aggs/ticker/I:DJI/range/1/day/1063281600000/1678726291180?limit=35&sort=desc"
+                      "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366449650?limit=226&sort=desc"
                     },
                     "values": [
                       {
-                        "timestamp": 1681966800000,
-                        "value": 33355.64416487007
+                        "timestamp": 1687237200000,
+                        "value": 14452.002555459003
                       }
                     ]
                   },
@@ -8001,7 +7996,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get MACD data.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -8167,24 +8162,24 @@
             "content": {
               "application/json": {
                 "example": {
-                  "next_url": "https://api.polygon.io/v1/indicators/macd/I:DJI?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy",
-                  "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3",
+                  "next_url": "https://api.polygon.io/v1/indicators/macd/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MTUwODAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0yJmxvbmdfd2luZG93PTI2Jm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2Umc2hvcnRfd2luZG93PTEyJnNpZ25hbF93aW5kb3c9OSZ0aW1lc3Bhbj1kYXkmdGltZXN0YW1wLmx0PTE2ODcyMTkyMDAwMDA",
+                  "request_id": "2eeda0be57e83cbc64cc8d1a74e84dbd",
                   "results": {
                     "underlying": {
-                      "url": "https://api.polygon.io/v2/aggs/ticker/I:DJI/range/1/day/1063281600000/1678726155743?limit=129&sort=desc"
+                      "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366537196?limit=121&sort=desc"
                     },
                     "values": [
                       {
-                        "histogram": -48.29157370302107,
-                        "signal": 225.60959338746886,
-                        "timestamp": 1681966800000,
-                        "value": 177.3180196844478
+                        "histogram": -4.7646219788108795,
+                        "signal": 220.7596784587801,
+                        "timestamp": 1687237200000,
+                        "value": 215.9950564799692
                       },
                       {
-                        "histogram": -37.55634001543484,
-                        "signal": 237.6824868132241,
-                        "timestamp": 1681963200000,
-                        "value": 200.12614679778926
+                        "histogram": 3.4518937661882205,
+                        "signal": 221.9508339534828,
+                        "timestamp": 1687219200000,
+                        "value": 225.40272771967102
                       }
                     ]
                   },
@@ -9707,7 +9695,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get relative strength index (RSI) data.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -9853,16 +9841,16 @@
             "content": {
               "application/json": {
                 "example": {
-                  "next_url": "https://api.polygon.io/v1/indicators/rsi/I:DJI?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTQwNDcuNDEwMDAwMDAwMDAwMyUyQyUyMmglMjIlM0EwJTJDJTIybCUyMiUzQTAlMkMlMjJ0JTIyJTNBMTY3ODA4MjQwMDAwMCU3RCZhcz0mZXhwYW5kX3VuZGVybHlpbmc9ZmFsc2UmbGltaXQ9MTAmb3JkZXI9ZGVzYyZzZXJpZXNfdHlwZT1jbG9zZSZ0aW1lc3Bhbj1kYXkmdGltZXN0YW1wLmx0PTE2NzgxNjUyMDAwMDAmd2luZG93PTU",
-                  "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3",
+                  "next_url": "https://api.polygon.io/v1/indicators/rsi/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MjE5MjAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0xJm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2UmdGltZXNwYW49ZGF5JnRpbWVzdGFtcC5sdD0xNjg3MjM3MjAwMDAwJndpbmRvdz0xNA",
+                  "request_id": "28a8417f521f98e1d08f6ed7d1fbcad3",
                   "results": {
                     "underlying": {
-                      "url": "https://api.polygon.io/v2/aggs/ticker/I:DJI/range/1/day/1063281600000/1678725829099?limit=35&sort=desc"
+                      "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366658253?limit=66&sort=desc"
                     },
                     "values": [
                       {
-                        "timestamp": 1681966800000,
-                        "value": 55.89394103205648
+                        "timestamp": 1687237200000,
+                        "value": 73.98019439047955
                       }
                     ]
                   },
@@ -11325,7 +11308,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get simple moving average (SMA) data.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -11471,16 +11454,16 @@
             "content": {
               "application/json": {
                 "example": {
-                  "next_url": "https://api.polygon.io/v1/indicators/sma/I:DJI?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTQwNDcuNDEwMDAwMDAwMDAwMyUyQyUyMmglMjIlM0EwJTJDJTIybCUyMiUzQTAlMkMlMjJ0JTIyJTNBMTY3ODA4MjQwMDAwMCU3RCZhcz0mZXhwYW5kX3VuZGVybHlpbmc9ZmFsc2UmbGltaXQ9MTAmb3JkZXI9ZGVzYyZzZXJpZXNfdHlwZT1jbG9zZSZ0aW1lc3Bhbj1kYXkmdGltZXN0YW1wLmx0PTE2NzgxNjUyMDAwMDAmd2luZG93PTU",
-                  "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3",
+                  "next_url": "https://api.polygon.io/v1/indicators/sma/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MjE5MjAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0xJm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2UmdGltZXNwYW49ZGF5JnRpbWVzdGFtcC5sdD0xNjg3MjM3MjAwMDAwJndpbmRvdz01Mw",
+                  "request_id": "4cae270008cb3f947e3f92c206e3888a",
                   "results": {
                     "underlying": {
-                      "url": "https://api.polygon.io/v2/aggs/ticker/I:DJI/range/1/day/1063281600000/1678725829099?limit=35&sort=desc"
+                      "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366378997?limit=240&sort=desc"
                     },
                     "values": [
                       {
-                        "timestamp": 1681966800000,
-                        "value": 33236.3424
+                        "timestamp": 1687237200000,
+                        "value": 14362.676417589264
                       }
                     ]
                   },
@@ -13042,7 +13020,7 @@
         "parameters": [
           {
             "description": "The ticker symbol of Index.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -13057,7 +13035,6 @@
             "name": "date",
             "required": true,
             "schema": {
-              "format": "date",
               "type": "string"
             }
           }
@@ -13067,15 +13044,15 @@
             "content": {
               "application/json": {
                 "example": {
-                  "afterHours": 31909.64,
-                  "close": 32245.14,
-                  "from": "2023-03-10",
-                  "high": 32988.26,
-                  "low": 32200.66,
-                  "open": 32922.75,
-                  "preMarket": 32338.23,
+                  "afterHours": 11830.43006295237,
+                  "close": 11830.28178808306,
+                  "from": "2023-03-10T00:00:00.000Z",
+                  "high": 12069.62262033557,
+                  "low": 11789.85923449393,
+                  "open": 12001.69552583921,
+                  "preMarket": 12001.69552583921,
                   "status": "OK",
-                  "symbol": "I:DJI"
+                  "symbol": "I:NDX"
                 },
                 "schema": {
                   "properties": {
@@ -13145,6 +13121,7 @@
         "tags": [
           "stocks:open-close"
         ],
+        "x-polygon-entitlement-allowed-limited-tickers": true,
         "x-polygon-entitlement-data-type": {
           "description": "Aggregate data",
           "name": "aggregates"
@@ -16258,7 +16235,7 @@
         "parameters": [
           {
             "description": "The ticker symbol of Index.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -16276,17 +16253,17 @@
                   "request_id": "b2170df985474b6d21a6eeccfb6bee67",
                   "results": [
                     {
-                      "T": "I:DJI",
-                      "c": 33786.62,
-                      "h": 33786.62,
-                      "l": 33677.74,
-                      "o": 33677.74,
-                      "t": 1682020800000
+                      "T": "I:NDX",
+                      "c": 15070.14948566977,
+                      "h": 15127.4195807999,
+                      "l": 14946.7243781848,
+                      "o": 15036.48391066877,
+                      "t": 1687291200000
                     }
                   ],
                   "resultsCount": 1,
                   "status": "OK",
-                  "ticker": "I:DJI"
+                  "ticker": "I:NDX"
                 },
                 "schema": {
                   "allOf": [
@@ -16387,6 +16360,7 @@
         "tags": [
           "indices:aggregates"
         ],
+        "x-polygon-entitlement-allowed-limited-tickers": true,
         "x-polygon-entitlement-data-type": {
           "description": "Aggregate data",
           "name": "aggregates"
@@ -16403,7 +16377,7 @@
         "parameters": [
           {
             "description": "The ticker symbol of Index.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -16492,22 +16466,22 @@
                   "request_id": "0cf72b6da685bcd386548ffe2895904a",
                   "results": [
                     {
-                      "c": 32245.14,
-                      "h": 32988.26,
-                      "l": 32200.66,
-                      "o": 32922.75,
+                      "c": 11995.88235998666,
+                      "h": 12340.44936267155,
+                      "l": 11970.34221717375,
+                      "o": 12230.83658266843,
                       "t": 1678341600000
                     },
                     {
-                      "c": 31787.7,
-                      "h": 32422.100000000002,
-                      "l": 31786.06,
-                      "o": 32198.9,
+                      "c": 11830.28178808306,
+                      "h": 12069.62262033557,
+                      "l": 11789.85923449393,
+                      "o": 12001.69552583921,
                       "t": 1678428000000
                     }
                   ],
                   "status": "OK",
-                  "ticker": "I:DJI"
+                  "ticker": "I:NDX"
                 },
                 "schema": {
                   "allOf": [
@@ -16608,6 +16575,7 @@
         "tags": [
           "indices:aggregates"
         ],
+        "x-polygon-entitlement-allowed-limited-tickers": true,
         "x-polygon-entitlement-data-type": {
           "description": "Aggregate data",
           "name": "aggregates"
@@ -18512,7 +18480,9 @@
                         "c": 0.296,
                         "h": 0.296,
                         "l": 0.294,
+                        "n": 2,
                         "o": 0.296,
+                        "t": 1684427880000,
                         "v": 123.4866,
                         "vw": 0
                       },
@@ -18861,7 +18830,9 @@
                       "c": 16235.1,
                       "h": 16264.29,
                       "l": 16129.3,
+                      "n": 558,
                       "o": 16257.51,
+                      "t": 1684428960000,
                       "v": 19.30791925,
                       "vw": 0
                     },
@@ -19410,7 +19380,9 @@
                         "c": 0.062377,
                         "h": 0.062377,
                         "l": 0.062377,
+                        "n": 2,
                         "o": 0.062377,
+                        "t": 1684426740000,
                         "v": 35420,
                         "vw": 0
                       },
@@ -19747,7 +19718,9 @@
                         "c": 0.117769,
                         "h": 0.11779633,
                         "l": 0.11773698,
+                        "n": 1,
                         "o": 0.11778,
+                        "t": 1684422000000,
                         "v": 202
                       },
                       "prevDay": {
@@ -20052,7 +20024,9 @@
                       "c": 1.18396,
                       "h": 1.18423,
                       "l": 1.1838,
+                      "n": 85,
                       "o": 1.18404,
+                      "t": 1684422000000,
                       "v": 41
                     },
                     "prevDay": {
@@ -20368,7 +20341,9 @@
                         "c": 0.886156,
                         "h": 0.886156,
                         "l": 0.886156,
+                        "n": 1,
                         "o": 0.886156,
+                        "t": 1684422000000,
                         "v": 1
                       },
                       "prevDay": {
@@ -20698,7 +20672,9 @@
                         "c": 20.506,
                         "h": 20.506,
                         "l": 20.506,
+                        "n": 1,
                         "o": 20.506,
+                        "t": 1684428600000,
                         "v": 5000,
                         "vw": 20.5105
                       },
@@ -21096,7 +21071,9 @@
                       "c": 120.4201,
                       "h": 120.468,
                       "l": 120.37,
+                      "n": 762,
                       "o": 120.435,
+                      "t": 1684428720000,
                       "v": 270796,
                       "vw": 120.4129
                     },
@@ -21509,7 +21485,9 @@
                         "c": 14.2284,
                         "h": 14.325,
                         "l": 14.2,
+                        "n": 5,
                         "o": 14.28,
+                        "t": 1684428600000,
                         "v": 6108,
                         "vw": 14.2426
                       },
@@ -22513,7 +22490,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -22521,7 +22498,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -22529,7 +22506,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -22537,7 +22514,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -22738,7 +22715,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -22746,7 +22723,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -22754,7 +22731,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -22762,7 +22739,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -22978,7 +22955,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -22986,7 +22963,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -22994,7 +22971,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -23002,7 +22979,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -27500,8 +27477,8 @@
           "name": "snapshots"
         },
         "x-polygon-entitlement-market-type": {
-          "description": "Stocks data",
-          "name": "stocks"
+          "description": "All asset classes",
+          "name": "universal"
         },
         "x-polygon-paginate": {
           "limit": {
@@ -27516,8 +27493,7 @@
             ]
           }
         }
-      },
-      "x-polygon-draft": true
+      }
     },
     "/v3/snapshot/indices": {
       "get": {
@@ -27830,7 +27806,7 @@
         "parameters": [
           {
             "description": "The underlying ticker symbol of the option contract.",
-            "example": "AAPL",
+            "example": "EVRI",
             "in": "path",
             "name": "underlyingAsset",
             "required": true,
@@ -28480,7 +28456,7 @@
         "parameters": [
           {
             "description": "The underlying ticker symbol of the option contract.",
-            "example": "AAPL",
+            "example": "EVRI",
             "in": "path",
             "name": "underlyingAsset",
             "required": true,
@@ -28490,7 +28466,7 @@
           },
           {
             "description": "The option contract identifier.",
-            "example": "O:AAPL230616C00150000",
+            "example": "O:EVRI240119C00002500",
             "in": "path",
             "name": "optionContract",
             "required": true,
@@ -29009,7 +28985,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -29017,7 +28993,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -29025,7 +29001,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -29033,7 +29009,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -29255,7 +29231,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -29263,7 +29239,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -29271,7 +29247,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -29279,7 +29255,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -29500,7 +29476,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -29508,7 +29484,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -29516,7 +29492,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -29524,7 +29500,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -30734,7 +30710,8 @@
             "/v2/snapshot/locale/global/markets/crypto/tickers",
             "/v2/snapshot/locale/global/markets/crypto/{direction}",
             "/v2/snapshot/locale/global/markets/crypto/tickers/{ticker}",
-            "/v2/snapshot/locale/global/markets/crypto/tickers/{ticker}/book"
+            "/v2/snapshot/locale/global/markets/crypto/tickers/{ticker}/book",
+            "/v3/snapshot"
           ]
         },
         {
@@ -30824,7 +30801,8 @@
           "paths": [
             "/v2/snapshot/locale/global/markets/forex/tickers",
             "/v2/snapshot/locale/global/markets/forex/{direction}",
-            "/v2/snapshot/locale/global/markets/forex/tickers/{ticker}"
+            "/v2/snapshot/locale/global/markets/forex/tickers/{ticker}",
+            "/v3/snapshot"
           ]
         },
         {
@@ -30895,7 +30873,8 @@
         {
           "group": "Snapshots",
           "paths": [
-            "/v3/snapshot/indices"
+            "/v3/snapshot/indices",
+            "/v3/snapshot"
           ]
         }
       ],
@@ -30966,7 +30945,7 @@
           "paths": [
             "/v3/snapshot/options/{underlyingAsset}/{optionContract}",
             "/v3/snapshot/options/{underlyingAsset}",
-            "/v3/snapshot/options"
+            "/v3/snapshot"
           ]
         },
         {
@@ -31102,7 +31081,7 @@
             "/v2/snapshot/locale/us/markets/stocks/tickers",
             "/v2/snapshot/locale/us/markets/stocks/{direction}",
             "/v2/snapshot/locale/us/markets/stocks/tickers/{stocksTicker}",
-            "/v3/snapshot/stocks"
+            "/v3/snapshot"
           ]
         },
         {

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -1995,7 +1995,7 @@
     "/indices/AM": {
       "get": {
         "summary": "Aggregates (Per Minute)",
-        "description": "Stream real-time minute aggregates for a given index.\n",
+        "description": "Stream real-time minute aggregates for a given index ticker symbol.\n",
         "parameters": [
           {
             "name": "ticker",
@@ -2004,7 +2004,7 @@
             "required": true,
             "schema": {
               "type": "string",
-              "pattern": "/^([a-zA-Z]+)$/"
+              "pattern": "/^(I:[a-zA-Z0-9]+)$/"
             },
             "example": "*"
           }
@@ -3552,6 +3552,131 @@
       "CryptoReceivedTimestamp": {
         "type": "integer",
         "description": "The timestamp that the tick was received by Polygon."
+      },
+      "IndicesBaseAggregateEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "description": "The event type."
+          },
+          "sym": {
+            "type": "string",
+            "description": "The symbol representing the given index."
+          },
+          "op": {
+            "type": "number",
+            "format": "double",
+            "description": "Today's official opening value."
+          },
+          "o": {
+            "type": "number",
+            "format": "double",
+            "description": "The opening index value for this aggregate window."
+          },
+          "c": {
+            "type": "number",
+            "format": "double",
+            "description": "The closing index value for this aggregate window."
+          },
+          "h": {
+            "type": "number",
+            "format": "double",
+            "description": "The highest index value for this aggregate window."
+          },
+          "l": {
+            "type": "number",
+            "format": "double",
+            "description": "The lowest index value for this aggregate window."
+          },
+          "s": {
+            "type": "integer",
+            "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+          },
+          "e": {
+            "type": "integer",
+            "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+          }
+        }
+      },
+      "IndicesMinuteAggregateEvent": {
+        "allOf": [
+          {
+            "type": "object",
+            "properties": {
+              "ev": {
+                "description": "The event type."
+              },
+              "sym": {
+                "type": "string",
+                "description": "The symbol representing the given index."
+              },
+              "op": {
+                "type": "number",
+                "format": "double",
+                "description": "Today's official opening value."
+              },
+              "o": {
+                "type": "number",
+                "format": "double",
+                "description": "The opening index value for this aggregate window."
+              },
+              "c": {
+                "type": "number",
+                "format": "double",
+                "description": "The closing index value for this aggregate window."
+              },
+              "h": {
+                "type": "number",
+                "format": "double",
+                "description": "The highest index value for this aggregate window."
+              },
+              "l": {
+                "type": "number",
+                "format": "double",
+                "description": "The lowest index value for this aggregate window."
+              },
+              "s": {
+                "type": "integer",
+                "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+              },
+              "e": {
+                "type": "integer",
+                "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+              }
+            }
+          },
+          {
+            "properties": {
+              "ev": {
+                "enum": [
+                  "AM"
+                ],
+                "description": "The event type."
+              }
+            }
+          }
+        ]
+      },
+      "IndicesValueEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "type": "string",
+            "enum": [
+              "V"
+            ],
+            "description": "The event type."
+          },
+          "val": {
+            "description": "The value of the index."
+          },
+          "T": {
+            "description": "The assigned ticker of the index."
+          },
+          "t": {
+            "description": "The Timestamp in Unix MS."
+          }
+        }
       }
     },
     "parameters": {
@@ -3609,7 +3734,29 @@
           "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
         },
         "example": "*"
+      },
+      "IndicesIndexParam": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "*"
+      },
+      "IndicesIndexParamWithoutWildcard": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "I:SPX"
       }
     }
   }
-}
\ No newline at end of file
+}

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -1995,7 +1995,7 @@
     "/indices/AM": {
       "get": {
         "summary": "Aggregates (Per Minute)",
-        "description": "Stream real-time minute aggregates for a given index.\n",
+        "description": "Stream real-time minute aggregates for a given index ticker symbol.\n",
         "parameters": [
           {
             "name": "ticker",
@@ -2004,7 +2004,7 @@
             "required": true,
             "schema": {
               "type": "string",
-              "pattern": "/^([a-zA-Z]+)$/"
+              "pattern": "/^(I:[a-zA-Z0-9]+)$/"
             },
             "example": "*"
           }
@@ -3552,6 +3552,131 @@
       "CryptoReceivedTimestamp": {
         "type": "integer",
         "description": "The timestamp that the tick was received by Polygon."
+      },
+      "IndicesBaseAggregateEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "description": "The event type."
+          },
+          "sym": {
+            "type": "string",
+            "description": "The symbol representing the given index."
+          },
+          "op": {
+            "type": "number",
+            "format": "double",
+            "description": "Today's official opening value."
+          },
+          "o": {
+            "type": "number",
+            "format": "double",
+            "description": "The opening index value for this aggregate window."
+          },
+          "c": {
+            "type": "number",
+            "format": "double",
+            "description": "The closing index value for this aggregate window."
+          },
+          "h": {
+            "type": "number",
+            "format": "double",
+            "description": "The highest index value for this aggregate window."
+          },
+          "l": {
+            "type": "number",
+            "format": "double",
+            "description": "The lowest index value for this aggregate window."
+          },
+          "s": {
+            "type": "integer",
+            "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+          },
+          "e": {
+            "type": "integer",
+            "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+          }
+        }
+      },
+      "IndicesMinuteAggregateEvent": {
+        "allOf": [
+          {
+            "type": "object",
+            "properties": {
+              "ev": {
+                "description": "The event type."
+              },
+              "sym": {
+                "type": "string",
+                "description": "The symbol representing the given index."
+              },
+              "op": {
+                "type": "number",
+                "format": "double",
+                "description": "Today's official opening value."
+              },
+              "o": {
+                "type": "number",
+                "format": "double",
+                "description": "The opening index value for this aggregate window."
+              },
+              "c": {
+                "type": "number",
+                "format": "double",
+                "description": "The closing index value for this aggregate window."
+              },
+              "h": {
+                "type": "number",
+                "format": "double",
+                "description": "The highest index value for this aggregate window."
+              },
+              "l": {
+                "type": "number",
+                "format": "double",
+                "description": "The lowest index value for this aggregate window."
+              },
+              "s": {
+                "type": "integer",
+                "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+              },
+              "e": {
+                "type": "integer",
+                "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+              }
+            }
+          },
+          {
+            "properties": {
+              "ev": {
+                "enum": [
+                  "AM"
+                ],
+                "description": "The event type."
+              }
+            }
+          }
+        ]
+      },
+      "IndicesValueEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "type": "string",
+            "enum": [
+              "V"
+            ],
+            "description": "The event type."
+          },
+          "val": {
+            "description": "The value of the index."
+          },
+          "T": {
+            "description": "The assigned ticker of the index."
+          },
+          "t": {
+            "description": "The Timestamp in Unix MS."
+          }
+        }
       }
     },
     "parameters": {
@@ -3609,7 +3734,29 @@
           "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
         },
         "example": "*"
+      },
+      "IndicesIndexParam": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "*"
+      },
+      "IndicesIndexParamWithoutWildcard": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "I:SPX"
       }
     }
   }
-}
\ No newline at end of file
+}

How to get next page from response object of PolygonReferenceClient.getSupportedTickers()

Per ApI spec
suspend fun PolygonReferenceClient.getSupportedTickers( params: SupportedTickersParameters ): TickersDTO {}

will return Ticker's DTO object that contains next_url string to be used grab next page, how can I use it?

in release v1.3.0, the SupportedTickersParameters object used to contain a page field, so you can repleately call

PolygonReferenceClient.getSupportedTickers( params: SupportedTickersParameters ): TickersDTO

method with same params object with increase page by +1.

The new API return object give a next_url which contains a cursor field, but not sure how to use it with latest release ....

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -1995,7 +1995,7 @@
     "/indices/AM": {
       "get": {
         "summary": "Aggregates (Per Minute)",
-        "description": "Stream real-time minute aggregates for a given index.\n",
+        "description": "Stream real-time minute aggregates for a given index ticker symbol.\n",
         "parameters": [
           {
             "name": "ticker",
@@ -2004,7 +2004,7 @@
             "required": true,
             "schema": {
               "type": "string",
-              "pattern": "/^([a-zA-Z]+)$/"
+              "pattern": "/^(I:[a-zA-Z0-9]+)$/"
             },
             "example": "*"
           }
@@ -3552,6 +3552,131 @@
       "CryptoReceivedTimestamp": {
         "type": "integer",
         "description": "The timestamp that the tick was received by Polygon."
+      },
+      "IndicesBaseAggregateEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "description": "The event type."
+          },
+          "sym": {
+            "type": "string",
+            "description": "The symbol representing the given index."
+          },
+          "op": {
+            "type": "number",
+            "format": "double",
+            "description": "Today's official opening value."
+          },
+          "o": {
+            "type": "number",
+            "format": "double",
+            "description": "The opening index value for this aggregate window."
+          },
+          "c": {
+            "type": "number",
+            "format": "double",
+            "description": "The closing index value for this aggregate window."
+          },
+          "h": {
+            "type": "number",
+            "format": "double",
+            "description": "The highest index value for this aggregate window."
+          },
+          "l": {
+            "type": "number",
+            "format": "double",
+            "description": "The lowest index value for this aggregate window."
+          },
+          "s": {
+            "type": "integer",
+            "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+          },
+          "e": {
+            "type": "integer",
+            "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+          }
+        }
+      },
+      "IndicesMinuteAggregateEvent": {
+        "allOf": [
+          {
+            "type": "object",
+            "properties": {
+              "ev": {
+                "description": "The event type."
+              },
+              "sym": {
+                "type": "string",
+                "description": "The symbol representing the given index."
+              },
+              "op": {
+                "type": "number",
+                "format": "double",
+                "description": "Today's official opening value."
+              },
+              "o": {
+                "type": "number",
+                "format": "double",
+                "description": "The opening index value for this aggregate window."
+              },
+              "c": {
+                "type": "number",
+                "format": "double",
+                "description": "The closing index value for this aggregate window."
+              },
+              "h": {
+                "type": "number",
+                "format": "double",
+                "description": "The highest index value for this aggregate window."
+              },
+              "l": {
+                "type": "number",
+                "format": "double",
+                "description": "The lowest index value for this aggregate window."
+              },
+              "s": {
+                "type": "integer",
+                "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+              },
+              "e": {
+                "type": "integer",
+                "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+              }
+            }
+          },
+          {
+            "properties": {
+              "ev": {
+                "enum": [
+                  "AM"
+                ],
+                "description": "The event type."
+              }
+            }
+          }
+        ]
+      },
+      "IndicesValueEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "type": "string",
+            "enum": [
+              "V"
+            ],
+            "description": "The event type."
+          },
+          "val": {
+            "description": "The value of the index."
+          },
+          "T": {
+            "description": "The assigned ticker of the index."
+          },
+          "t": {
+            "description": "The Timestamp in Unix MS."
+          }
+        }
       }
     },
     "parameters": {
@@ -3609,7 +3734,29 @@
           "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
         },
         "example": "*"
+      },
+      "IndicesIndexParam": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "*"
+      },
+      "IndicesIndexParamWithoutWildcard": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "I:SPX"
       }
     }
   }
-}
\ No newline at end of file
+}

Client update needed to match REST spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/rest.json
+++ https://api.polygon.io/openapi
@@ -150,7 +150,7 @@
       },
       "IndicesTickerPathParam": {
         "description": "The ticker symbol of Index.",
-        "example": "I:DJI",
+        "example": "I:NDX",
         "in": "path",
         "name": "indicesTicker",
         "required": true,
@@ -6339,7 +6339,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get exponential moving average (EMA) data.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -6485,16 +6485,16 @@
             "content": {
               "application/json": {
                 "example": {
-                  "next_url": "https://api.polygon.io/v1/indicators/ema/I:DJI?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTQwNDcuNDEwMDAwMDAwMDAwMyUyQyUyMmglMjIlM0EwJTJDJTIybCUyMiUzQTAlMkMlMjJ0JTIyJTNBMTY3ODA4MjQwMDAwMCU3RCZhcz0mZXhwYW5kX3VuZGVybHlpbmc9ZmFsc2UmbGltaXQ9MTAmb3JkZXI9ZGVzYyZzZXJpZXNfdHlwZT1jbG9zZSZ0aW1lc3Bhbj1kYXkmdGltZXN0YW1wLmx0PTE2NzgxNjUyMDAwMDAmd2luZG93PTU",
-                  "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3",
+                  "next_url": "https://api.polygon.io/v1/indicators/ema/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MjE5MjAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0xJm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2UmdGltZXNwYW49ZGF5JnRpbWVzdGFtcC5sdD0xNjg3MjM3MjAwMDAwJndpbmRvdz01MA",
+                  "request_id": "b9201816341441eed663a90443c0623a",
                   "results": {
                     "underlying": {
-                      "url": "https://api.polygon.io/v2/aggs/ticker/I:DJI/range/1/day/1063281600000/1678726291180?limit=35&sort=desc"
+                      "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366449650?limit=226&sort=desc"
                     },
                     "values": [
                       {
-                        "timestamp": 1681966800000,
-                        "value": 33355.64416487007
+                        "timestamp": 1687237200000,
+                        "value": 14452.002555459003
                       }
                     ]
                   },
@@ -8001,7 +7996,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get MACD data.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -8167,24 +8162,24 @@
             "content": {
               "application/json": {
                 "example": {
-                  "next_url": "https://api.polygon.io/v1/indicators/macd/I:DJI?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy",
-                  "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3",
+                  "next_url": "https://api.polygon.io/v1/indicators/macd/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MTUwODAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0yJmxvbmdfd2luZG93PTI2Jm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2Umc2hvcnRfd2luZG93PTEyJnNpZ25hbF93aW5kb3c9OSZ0aW1lc3Bhbj1kYXkmdGltZXN0YW1wLmx0PTE2ODcyMTkyMDAwMDA",
+                  "request_id": "2eeda0be57e83cbc64cc8d1a74e84dbd",
                   "results": {
                     "underlying": {
-                      "url": "https://api.polygon.io/v2/aggs/ticker/I:DJI/range/1/day/1063281600000/1678726155743?limit=129&sort=desc"
+                      "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366537196?limit=121&sort=desc"
                     },
                     "values": [
                       {
-                        "histogram": -48.29157370302107,
-                        "signal": 225.60959338746886,
-                        "timestamp": 1681966800000,
-                        "value": 177.3180196844478
+                        "histogram": -4.7646219788108795,
+                        "signal": 220.7596784587801,
+                        "timestamp": 1687237200000,
+                        "value": 215.9950564799692
                       },
                       {
-                        "histogram": -37.55634001543484,
-                        "signal": 237.6824868132241,
-                        "timestamp": 1681963200000,
-                        "value": 200.12614679778926
+                        "histogram": 3.4518937661882205,
+                        "signal": 221.9508339534828,
+                        "timestamp": 1687219200000,
+                        "value": 225.40272771967102
                       }
                     ]
                   },
@@ -9707,7 +9695,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get relative strength index (RSI) data.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -9853,16 +9841,16 @@
             "content": {
               "application/json": {
                 "example": {
-                  "next_url": "https://api.polygon.io/v1/indicators/rsi/I:DJI?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTQwNDcuNDEwMDAwMDAwMDAwMyUyQyUyMmglMjIlM0EwJTJDJTIybCUyMiUzQTAlMkMlMjJ0JTIyJTNBMTY3ODA4MjQwMDAwMCU3RCZhcz0mZXhwYW5kX3VuZGVybHlpbmc9ZmFsc2UmbGltaXQ9MTAmb3JkZXI9ZGVzYyZzZXJpZXNfdHlwZT1jbG9zZSZ0aW1lc3Bhbj1kYXkmdGltZXN0YW1wLmx0PTE2NzgxNjUyMDAwMDAmd2luZG93PTU",
-                  "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3",
+                  "next_url": "https://api.polygon.io/v1/indicators/rsi/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MjE5MjAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0xJm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2UmdGltZXNwYW49ZGF5JnRpbWVzdGFtcC5sdD0xNjg3MjM3MjAwMDAwJndpbmRvdz0xNA",
+                  "request_id": "28a8417f521f98e1d08f6ed7d1fbcad3",
                   "results": {
                     "underlying": {
-                      "url": "https://api.polygon.io/v2/aggs/ticker/I:DJI/range/1/day/1063281600000/1678725829099?limit=35&sort=desc"
+                      "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366658253?limit=66&sort=desc"
                     },
                     "values": [
                       {
-                        "timestamp": 1681966800000,
-                        "value": 55.89394103205648
+                        "timestamp": 1687237200000,
+                        "value": 73.98019439047955
                       }
                     ]
                   },
@@ -11325,7 +11308,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get simple moving average (SMA) data.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -11471,16 +11454,16 @@
             "content": {
               "application/json": {
                 "example": {
-                  "next_url": "https://api.polygon.io/v1/indicators/sma/I:DJI?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTQwNDcuNDEwMDAwMDAwMDAwMyUyQyUyMmglMjIlM0EwJTJDJTIybCUyMiUzQTAlMkMlMjJ0JTIyJTNBMTY3ODA4MjQwMDAwMCU3RCZhcz0mZXhwYW5kX3VuZGVybHlpbmc9ZmFsc2UmbGltaXQ9MTAmb3JkZXI9ZGVzYyZzZXJpZXNfdHlwZT1jbG9zZSZ0aW1lc3Bhbj1kYXkmdGltZXN0YW1wLmx0PTE2NzgxNjUyMDAwMDAmd2luZG93PTU",
-                  "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3",
+                  "next_url": "https://api.polygon.io/v1/indicators/sma/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MjE5MjAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0xJm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2UmdGltZXNwYW49ZGF5JnRpbWVzdGFtcC5sdD0xNjg3MjM3MjAwMDAwJndpbmRvdz01Mw",
+                  "request_id": "4cae270008cb3f947e3f92c206e3888a",
                   "results": {
                     "underlying": {
-                      "url": "https://api.polygon.io/v2/aggs/ticker/I:DJI/range/1/day/1063281600000/1678725829099?limit=35&sort=desc"
+                      "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366378997?limit=240&sort=desc"
                     },
                     "values": [
                       {
-                        "timestamp": 1681966800000,
-                        "value": 33236.3424
+                        "timestamp": 1687237200000,
+                        "value": 14362.676417589264
                       }
                     ]
                   },
@@ -13042,7 +13020,7 @@
         "parameters": [
           {
             "description": "The ticker symbol of Index.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -13057,7 +13035,6 @@
             "name": "date",
             "required": true,
             "schema": {
-              "format": "date",
               "type": "string"
             }
           }
@@ -13067,15 +13044,15 @@
             "content": {
               "application/json": {
                 "example": {
-                  "afterHours": 31909.64,
-                  "close": 32245.14,
-                  "from": "2023-03-10",
-                  "high": 32988.26,
-                  "low": 32200.66,
-                  "open": 32922.75,
-                  "preMarket": 32338.23,
+                  "afterHours": 11830.43006295237,
+                  "close": 11830.28178808306,
+                  "from": "2023-03-10T00:00:00.000Z",
+                  "high": 12069.62262033557,
+                  "low": 11789.85923449393,
+                  "open": 12001.69552583921,
+                  "preMarket": 12001.69552583921,
                   "status": "OK",
-                  "symbol": "I:DJI"
+                  "symbol": "I:NDX"
                 },
                 "schema": {
                   "properties": {
@@ -13145,6 +13121,7 @@
         "tags": [
           "stocks:open-close"
         ],
+        "x-polygon-entitlement-allowed-limited-tickers": true,
         "x-polygon-entitlement-data-type": {
           "description": "Aggregate data",
           "name": "aggregates"
@@ -16258,7 +16235,7 @@
         "parameters": [
           {
             "description": "The ticker symbol of Index.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -16276,17 +16253,17 @@
                   "request_id": "b2170df985474b6d21a6eeccfb6bee67",
                   "results": [
                     {
-                      "T": "I:DJI",
-                      "c": 33786.62,
-                      "h": 33786.62,
-                      "l": 33677.74,
-                      "o": 33677.74,
-                      "t": 1682020800000
+                      "T": "I:NDX",
+                      "c": 15070.14948566977,
+                      "h": 15127.4195807999,
+                      "l": 14946.7243781848,
+                      "o": 15036.48391066877,
+                      "t": 1687291200000
                     }
                   ],
                   "resultsCount": 1,
                   "status": "OK",
-                  "ticker": "I:DJI"
+                  "ticker": "I:NDX"
                 },
                 "schema": {
                   "allOf": [
@@ -16387,6 +16360,7 @@
         "tags": [
           "indices:aggregates"
         ],
+        "x-polygon-entitlement-allowed-limited-tickers": true,
         "x-polygon-entitlement-data-type": {
           "description": "Aggregate data",
           "name": "aggregates"
@@ -16403,7 +16377,7 @@
         "parameters": [
           {
             "description": "The ticker symbol of Index.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -16492,22 +16466,22 @@
                   "request_id": "0cf72b6da685bcd386548ffe2895904a",
                   "results": [
                     {
-                      "c": 32245.14,
-                      "h": 32988.26,
-                      "l": 32200.66,
-                      "o": 32922.75,
+                      "c": 11995.88235998666,
+                      "h": 12340.44936267155,
+                      "l": 11970.34221717375,
+                      "o": 12230.83658266843,
                       "t": 1678341600000
                     },
                     {
-                      "c": 31787.7,
-                      "h": 32422.100000000002,
-                      "l": 31786.06,
-                      "o": 32198.9,
+                      "c": 11830.28178808306,
+                      "h": 12069.62262033557,
+                      "l": 11789.85923449393,
+                      "o": 12001.69552583921,
                       "t": 1678428000000
                     }
                   ],
                   "status": "OK",
-                  "ticker": "I:DJI"
+                  "ticker": "I:NDX"
                 },
                 "schema": {
                   "allOf": [
@@ -16608,6 +16575,7 @@
         "tags": [
           "indices:aggregates"
         ],
+        "x-polygon-entitlement-allowed-limited-tickers": true,
         "x-polygon-entitlement-data-type": {
           "description": "Aggregate data",
           "name": "aggregates"
@@ -18512,7 +18480,9 @@
                         "c": 0.296,
                         "h": 0.296,
                         "l": 0.294,
+                        "n": 2,
                         "o": 0.296,
+                        "t": 1684427880000,
                         "v": 123.4866,
                         "vw": 0
                       },
@@ -18861,7 +18830,9 @@
                       "c": 16235.1,
                       "h": 16264.29,
                       "l": 16129.3,
+                      "n": 558,
                       "o": 16257.51,
+                      "t": 1684428960000,
                       "v": 19.30791925,
                       "vw": 0
                     },
@@ -19410,7 +19380,9 @@
                         "c": 0.062377,
                         "h": 0.062377,
                         "l": 0.062377,
+                        "n": 2,
                         "o": 0.062377,
+                        "t": 1684426740000,
                         "v": 35420,
                         "vw": 0
                       },
@@ -19747,7 +19718,9 @@
                         "c": 0.117769,
                         "h": 0.11779633,
                         "l": 0.11773698,
+                        "n": 1,
                         "o": 0.11778,
+                        "t": 1684422000000,
                         "v": 202
                       },
                       "prevDay": {
@@ -20052,7 +20024,9 @@
                       "c": 1.18396,
                       "h": 1.18423,
                       "l": 1.1838,
+                      "n": 85,
                       "o": 1.18404,
+                      "t": 1684422000000,
                       "v": 41
                     },
                     "prevDay": {
@@ -20368,7 +20341,9 @@
                         "c": 0.886156,
                         "h": 0.886156,
                         "l": 0.886156,
+                        "n": 1,
                         "o": 0.886156,
+                        "t": 1684422000000,
                         "v": 1
                       },
                       "prevDay": {
@@ -20698,7 +20672,9 @@
                         "c": 20.506,
                         "h": 20.506,
                         "l": 20.506,
+                        "n": 1,
                         "o": 20.506,
+                        "t": 1684428600000,
                         "v": 5000,
                         "vw": 20.5105
                       },
@@ -21096,7 +21071,9 @@
                       "c": 120.4201,
                       "h": 120.468,
                       "l": 120.37,
+                      "n": 762,
                       "o": 120.435,
+                      "t": 1684428720000,
                       "v": 270796,
                       "vw": 120.4129
                     },
@@ -21509,7 +21485,9 @@
                         "c": 14.2284,
                         "h": 14.325,
                         "l": 14.2,
+                        "n": 5,
                         "o": 14.28,
+                        "t": 1684428600000,
                         "v": 6108,
                         "vw": 14.2426
                       },
@@ -22513,7 +22490,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -22521,7 +22498,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -22529,7 +22506,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -22537,7 +22514,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -22738,7 +22715,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -22746,7 +22723,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -22754,7 +22731,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -22762,7 +22739,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -22978,7 +22955,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -22986,7 +22963,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -22994,7 +22971,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -23002,7 +22979,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -24122,7 +24099,7 @@
             }
           },
           {
-            "description": "Search by ticker.",
+            "description": "Range by ticker.",
             "in": "query",
             "name": "ticker.gte",
             "schema": {
@@ -24130,7 +24107,7 @@
             }
           },
           {
-            "description": "Search by ticker.",
+            "description": "Range by ticker.",
             "in": "query",
             "name": "ticker.gt",
             "schema": {
@@ -24138,7 +24115,7 @@
             }
           },
           {
-            "description": "Search by ticker.",
+            "description": "Range by ticker.",
             "in": "query",
             "name": "ticker.lte",
             "schema": {
@@ -24146,7 +24123,7 @@
             }
           },
           {
-            "description": "Search by ticker.",
+            "description": "Range by ticker.",
             "in": "query",
             "name": "ticker.lt",
             "schema": {
@@ -24154,7 +24131,7 @@
             }
           },
           {
-            "description": "Search by ex_dividend_date.",
+            "description": "Range by ex_dividend_date.",
             "in": "query",
             "name": "ex_dividend_date.gte",
             "schema": {
@@ -24163,7 +24140,7 @@
             }
           },
           {
-            "description": "Search by ex_dividend_date.",
+            "description": "Range by ex_dividend_date.",
             "in": "query",
             "name": "ex_dividend_date.gt",
             "schema": {
@@ -24172,7 +24149,7 @@
             }
           },
           {
-            "description": "Search by ex_dividend_date.",
+            "description": "Range by ex_dividend_date.",
             "in": "query",
             "name": "ex_dividend_date.lte",
             "schema": {
@@ -24181,7 +24158,7 @@
             }
           },
           {
-            "description": "Search by ex_dividend_date.",
+            "description": "Range by ex_dividend_date.",
             "in": "query",
             "name": "ex_dividend_date.lt",
             "schema": {
@@ -24190,7 +24167,7 @@
             }
           },
           {
-            "description": "Search by record_date.",
+            "description": "Range by record_date.",
             "in": "query",
             "name": "record_date.gte",
             "schema": {
@@ -24199,7 +24176,7 @@
             }
           },
           {
-            "description": "Search by record_date.",
+            "description": "Range by record_date.",
             "in": "query",
             "name": "record_date.gt",
             "schema": {
@@ -24208,7 +24185,7 @@
             }
           },
           {
-            "description": "Search by record_date.",
+            "description": "Range by record_date.",
             "in": "query",
             "name": "record_date.lte",
             "schema": {
@@ -24217,7 +24194,7 @@
             }
           },
           {
-            "description": "Search by record_date.",
+            "description": "Range by record_date.",
             "in": "query",
             "name": "record_date.lt",
             "schema": {
@@ -24226,7 +24203,7 @@
             }
           },
           {
-            "description": "Search by declaration_date.",
+            "description": "Range by declaration_date.",
             "in": "query",
             "name": "declaration_date.gte",
             "schema": {
@@ -24235,7 +24212,7 @@
             }
           },
           {
-            "description": "Search by declaration_date.",
+            "description": "Range by declaration_date.",
             "in": "query",
             "name": "declaration_date.gt",
             "schema": {
@@ -24244,7 +24221,7 @@
             }
           },
           {
-            "description": "Search by declaration_date.",
+            "description": "Range by declaration_date.",
             "in": "query",
             "name": "declaration_date.lte",
             "schema": {
@@ -24253,7 +24230,7 @@
             }
           },
           {
-            "description": "Search by declaration_date.",
+            "description": "Range by declaration_date.",
             "in": "query",
             "name": "declaration_date.lt",
             "schema": {
@@ -24262,7 +24239,7 @@
             }
           },
           {
-            "description": "Search by pay_date.",
+            "description": "Range by pay_date.",
             "in": "query",
             "name": "pay_date.gte",
             "schema": {
@@ -24271,7 +24248,7 @@
             }
           },
           {
-            "description": "Search by pay_date.",
+            "description": "Range by pay_date.",
             "in": "query",
             "name": "pay_date.gt",
             "schema": {
@@ -24280,7 +24257,7 @@
             }
           },
           {
-            "description": "Search by pay_date.",
+            "description": "Range by pay_date.",
             "in": "query",
             "name": "pay_date.lte",
             "schema": {
@@ -24289,7 +24266,7 @@
             }
           },
           {
-            "description": "Search by pay_date.",
+            "description": "Range by pay_date.",
             "in": "query",
             "name": "pay_date.lt",
             "schema": {
@@ -24298,7 +24275,7 @@
             }
           },
           {
-            "description": "Search by cash_amount.",
+            "description": "Range by cash_amount.",
             "in": "query",
             "name": "cash_amount.gte",
             "schema": {
@@ -24306,7 +24283,7 @@
             }
           },
           {
-            "description": "Search by cash_amount.",
+            "description": "Range by cash_amount.",
             "in": "query",
             "name": "cash_amount.gt",
             "schema": {
@@ -24314,7 +24291,7 @@
             }
           },
           {
-            "description": "Search by cash_amount.",
+            "description": "Range by cash_amount.",
             "in": "query",
             "name": "cash_amount.lte",
             "schema": {
@@ -24322,7 +24299,7 @@
             }
           },
           {
-            "description": "Search by cash_amount.",
+            "description": "Range by cash_amount.",
             "in": "query",
             "name": "cash_amount.lt",
             "schema": {
@@ -24568,349 +24545,6 @@
             ]
           }
         }
-      },
-      "post": {
-        "description": "Manually add Polygon a dividend.",
-        "operationId": "CreateDividend",
-        "parameters": [
-          {
-            "description": "If true don't trigger overlay",
-            "in": "query",
-            "name": "skip_overlay_trigger",
-            "schema": {
-              "default": false,
-              "type": "boolean"
-            }
-          }
-        ],
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "properties": {
-                  "cash_amount": {
-                    "description": "The cash amount of the dividend per share owned.",
-                    "type": "number",
-                    "x-polygon-go-field-tags": {
-                      "tags": [
-                        {
-                          "key": "binding",
-                          "value": "required"
-                        }
-                      ]
-                    }
-                  },
-                  "currency": {
-                    "description": "The currency in which the dividend is paid.",
-                    "type": "string",
-                    "x-polygon-go-field-tags": {
-                      "tags": [
-                        {
-                          "key": "binding",
-                          "value": "required"
-                        }
-                      ]
-                    }
-                  },
-                  "declaration_date": {
-                    "description": "The date that the dividend was announced.",
-                    "type": "string"
-                  },
-                  "dividend_type": {
-                    "description": "The type of dividend. Dividends that have been paid and/or are expected to be paid on consistent schedules are denoted as CD.\nSpecial Cash dividends that have been paid that are infrequent or unusual, and/or can not be expected to occur in the future are denoted as SC.\nLong-Term and Short-Term capital gain distributions are denoted as LT and ST, respectively.",
-                    "enum": [
-                      "CD",
-                      "SC",
-                      "LT",
-                      "ST"
-                    ],
-                    "type": "string",
-                    "x-polygon-go-field-tags": {
-                      "tags": [
-                        {
-                          "key": "binding",
-                          "value": "required"
-                        }
-                      ]
-                    }
-                  },
-                  "ex_dividend_date": {
-                    "description": "The date that the stock first trades without the dividend, determined by the exchange.",
-                    "type": "string",
-                    "x-polygon-go-field-tags": {
-                      "tags": [
-                        {
-                          "key": "binding",
-                          "value": "required"
-                        }
-                      ]
-                    }
-                  },
-                  "frequency": {
-                    "description": "The number of times per year the dividend is paid out.  Possible values are 0 (one-time), 1 (annually), 2 (bi-annually), 4 (quarterly), and 12 (monthly).",
-                    "type": "integer",
-                    "x-polygon-go-field-tags": {
-                      "tags": [
-                        {
-                          "key": "binding",
-                          "value": "required"
-                        }
-                      ]
-                    }
-                  },
-                  "pay_date": {
-                    "description": "The date that the dividend is paid out.",
-                    "type": "string"
-                  },
-                  "record_date": {
-                    "description": "The date that the stock must be held to receive the dividend, set by the company.",
-                    "type": "string"
-                  },
-                  "ticker": {
-                    "description": "The ticker symbol of the dividend.",
-                    "type": "string",
-                    "x-polygon-go-field-tags": {
-                      "tags": [
-                        {
-                          "key": "binding",
-                          "value": "required"
-                        }
-                      ]
-                    }
-                  }
-                },
-                "required": [
-                  "ticker",
-                  "ex_dividend_date",
-                  "frequency",
-                  "cash_amount",
-                  "dividend_type"
-                ],
-                "type": "object",
-                "x-polygon-go-struct-tags": {
-                  "tags": [
-                    "db"
-                  ]
-                }
-              }
-            }
-          },
-          "description": "Pass the desired dividend in the request body.",
-          "required": true
-        },
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "request_id": {
-                      "type": "string"
-                    },
-                    "results": {
-                      "properties": {
-                        "cash_amount": {
-                          "description": "The cash amount of the dividend per share owned.",
-                          "type": "number",
-                          "x-polygon-go-field-tags": {
-                            "tags": [
-                              {
-                                "key": "binding",
-                                "value": "required"
-                              }
-                            ]
-                          }
-                        },
-                        "currency": {
-                          "description": "The currency in which the dividend is paid.",
-                          "type": "string",
-                          "x-polygon-go-field-tags": {
-                            "tags": [
-                              {
-                                "key": "binding",
-                                "value": "required"
-                              }
-                            ]
-                          }
-                        },
-                        "declaration_date": {
-                          "description": "The date that the dividend was announced.",
-                          "type": "string"
-                        },
-                        "dividend_type": {
-                          "description": "The type of dividend. Dividends that have been paid and/or are expected to be paid on consistent schedules are denoted as CD.\nSpecial Cash dividends that have been paid that are infrequent or unusual, and/or can not be expected to occur in the future are denoted as SC.\nLong-Term and Short-Term capital gain distributions are denoted as LT and ST, respectively.",
-                          "enum": [
-                            "CD",
-                            "SC",
-                            "LT",
-                            "ST"
-                          ],
-                          "type": "string",
-                          "x-polygon-go-field-tags": {
-                            "tags": [
-                              {
-                                "key": "binding",
-                                "value": "required"
-                              }
-                            ]
-                          }
-                        },
-                        "ex_dividend_date": {
-                          "description": "The date that the stock first trades without the dividend, determined by the exchange.",
-                          "type": "string",
-                          "x-polygon-go-field-tags": {
-                            "tags": [
-                              {
-                                "key": "binding",
-                                "value": "required"
-                              }
-                            ]
-                          }
-                        },
-                        "frequency": {
-                          "description": "The number of times per year the dividend is paid out.  Possible values are 0 (one-time), 1 (annually), 2 (bi-annually), 4 (quarterly), and 12 (monthly).",
-                          "type": "integer",
-                          "x-polygon-go-field-tags": {
-                            "tags": [
-                              {
-                                "key": "binding",
-                                "value": "required"
-                              }
-                            ]
-                          }
-                        },
-                        "pay_date": {
-                          "description": "The date that the dividend is paid out.",
-                          "type": "string"
-                        },
-                        "record_date": {
-                          "description": "The date that the stock must be held to receive the dividend, set by the company.",
-                          "type": "string"
-                        },
-                        "ticker": {
-                          "description": "The ticker symbol of the dividend.",
-                          "type": "string",
-                          "x-polygon-go-field-tags": {
-                            "tags": [
-                              {
-                                "key": "binding",
-                                "value": "required"
-                              }
-                            ]
-                          }
-                        }
-                      },
-                      "required": [
-                        "ticker",
-                        "ex_dividend_date",
-                        "frequency",
-                        "cash_amount",
-                        "dividend_type"
-                      ],
-                      "type": "object",
-                      "x-polygon-go-struct-tags": {
-                        "tags": [
-                          "db"
-                        ]
-                      }
-                    },
-                    "status": {
-                      "type": "string"
-                    }
-                  },
-                  "required": [
-                    "request_id"
-                  ],
-                  "type": "object"
-                }
-              }
-            },
-            "description": "OK"
-          },
-          "400": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "error": {
-                      "type": "string"
-                    },
-                    "request_id": {
-                      "type": "string"
-                    },
-                    "status": {
-                      "type": "string"
-                    }
-                  },
-                  "required": [
-                    "request_id",
-                    "error"
-                  ],
-                  "type": "object"
-                }
-              }
-            },
-            "description": "the requested update was unable to be performed due to an invalid request body"
-          },
-          "409": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "error": {
-                      "type": "string"
-                    },
-                    "request_id": {
-                      "type": "string"
-                    },
-                    "status": {
-                      "type": "string"
-                    }
-                  },
-                  "required": [
-                    "request_id",
-                    "error"
-                  ],
-                  "type": "object"
-                }
-              }
-            },
-            "description": "a dividend already exists for this date and ticker"
-          },
-          "default": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "error": {
-                      "type": "string"
-                    },
-                    "request_id": {
-                      "type": "string"
-                    },
-                    "status": {
-                      "type": "string"
-                    }
-                  },
-                  "required": [
-                    "request_id",
-                    "error"
-                  ],
-                  "type": "object"
-                }
-              }
-            },
-            "description": "unknown error"
-          }
-        },
-        "summary": "Dividends v3",
-        "tags": [
-          "reference:stocks"
-        ],
-        "x-polygon-entitlement-data-type": {
-          "description": "Reference data",
-          "name": "reference"
-        }
       }
     },
     "/v3/reference/exchanges": {
@@ -26072,7 +25706,7 @@
             }
           },
           {
-            "description": "Search by ticker.",
+            "description": "Range by ticker.",
             "in": "query",
             "name": "ticker.gte",
             "schema": {
@@ -26080,7 +25714,7 @@
             }
           },
           {
-            "description": "Search by ticker.",
+            "description": "Range by ticker.",
             "in": "query",
             "name": "ticker.gt",
             "schema": {
@@ -26088,7 +25722,7 @@
             }
           },
           {
-            "description": "Search by ticker.",
+            "description": "Range by ticker.",
             "in": "query",
             "name": "ticker.lte",
             "schema": {
@@ -26096,7 +25730,7 @@
             }
           },
           {
-            "description": "Search by ticker.",
+            "description": "Range by ticker.",
             "in": "query",
             "name": "ticker.lt",
             "schema": {
@@ -27500,8 +27134,8 @@
           "name": "snapshots"
         },
         "x-polygon-entitlement-market-type": {
-          "description": "Stocks data",
-          "name": "stocks"
+          "description": "All asset classes",
+          "name": "universal"
         },
         "x-polygon-paginate": {
           "limit": {
@@ -27516,8 +27150,7 @@
             ]
           }
         }
-      },
-      "x-polygon-draft": true
+      }
     },
     "/v3/snapshot/indices": {
       "get": {
@@ -27535,7 +27168,6 @@
           },
           {
             "description": "Search a range of tickers lexicographically.",
-            "example": "I:DJI",
             "in": "query",
             "name": "ticker",
             "schema": {
@@ -27830,7 +27462,7 @@
         "parameters": [
           {
             "description": "The underlying ticker symbol of the option contract.",
-            "example": "AAPL",
+            "example": "EVRI",
             "in": "path",
             "name": "underlyingAsset",
             "required": true,
@@ -28480,7 +28112,7 @@
         "parameters": [
           {
             "description": "The underlying ticker symbol of the option contract.",
-            "example": "AAPL",
+            "example": "EVRI",
             "in": "path",
             "name": "underlyingAsset",
             "required": true,
@@ -28490,7 +28122,7 @@
           },
           {
             "description": "The option contract identifier.",
-            "example": "O:AAPL230616C00150000",
+            "example": "O:EVRI240119C00002500",
             "in": "path",
             "name": "optionContract",
             "required": true,
@@ -29009,7 +28641,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -29017,7 +28649,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -29025,7 +28657,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -29033,7 +28665,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -29255,7 +28887,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -29263,7 +28895,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -29271,7 +28903,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -29279,7 +28911,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -29500,7 +29132,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -29508,7 +29140,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -29516,7 +29148,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -29524,7 +29156,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -30734,7 +30366,8 @@
             "/v2/snapshot/locale/global/markets/crypto/tickers",
             "/v2/snapshot/locale/global/markets/crypto/{direction}",
             "/v2/snapshot/locale/global/markets/crypto/tickers/{ticker}",
-            "/v2/snapshot/locale/global/markets/crypto/tickers/{ticker}/book"
+            "/v2/snapshot/locale/global/markets/crypto/tickers/{ticker}/book",
+            "/v3/snapshot"
           ]
         },
         {
@@ -30824,7 +30457,8 @@
           "paths": [
             "/v2/snapshot/locale/global/markets/forex/tickers",
             "/v2/snapshot/locale/global/markets/forex/{direction}",
-            "/v2/snapshot/locale/global/markets/forex/tickers/{ticker}"
+            "/v2/snapshot/locale/global/markets/forex/tickers/{ticker}",
+            "/v3/snapshot"
           ]
         },
         {
@@ -30895,7 +30529,8 @@
         {
           "group": "Snapshots",
           "paths": [
-            "/v3/snapshot/indices"
+            "/v3/snapshot/indices",
+            "/v3/snapshot"
           ]
         }
       ],
@@ -30966,7 +30601,7 @@
           "paths": [
             "/v3/snapshot/options/{underlyingAsset}/{optionContract}",
             "/v3/snapshot/options/{underlyingAsset}",
-            "/v3/snapshot/options"
+            "/v3/snapshot"
           ]
         },
         {
@@ -31102,7 +30737,7 @@
             "/v2/snapshot/locale/us/markets/stocks/tickers",
             "/v2/snapshot/locale/us/markets/stocks/{direction}",
             "/v2/snapshot/locale/us/markets/stocks/tickers/{stocksTicker}",
-            "/v3/snapshot/stocks"
+            "/v3/snapshot"
           ]
         },
         {

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -1995,7 +1995,7 @@
     "/indices/AM": {
       "get": {
         "summary": "Aggregates (Per Minute)",
-        "description": "Stream real-time minute aggregates for a given index.\n",
+        "description": "Stream real-time minute aggregates for a given index ticker symbol.\n",
         "parameters": [
           {
             "name": "ticker",
@@ -2004,7 +2004,7 @@
             "required": true,
             "schema": {
               "type": "string",
-              "pattern": "/^([a-zA-Z]+)$/"
+              "pattern": "/^(I:[a-zA-Z0-9]+)$/"
             },
             "example": "*"
           }
@@ -3552,6 +3552,131 @@
       "CryptoReceivedTimestamp": {
         "type": "integer",
         "description": "The timestamp that the tick was received by Polygon."
+      },
+      "IndicesBaseAggregateEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "description": "The event type."
+          },
+          "sym": {
+            "type": "string",
+            "description": "The symbol representing the given index."
+          },
+          "op": {
+            "type": "number",
+            "format": "double",
+            "description": "Today's official opening value."
+          },
+          "o": {
+            "type": "number",
+            "format": "double",
+            "description": "The opening index value for this aggregate window."
+          },
+          "c": {
+            "type": "number",
+            "format": "double",
+            "description": "The closing index value for this aggregate window."
+          },
+          "h": {
+            "type": "number",
+            "format": "double",
+            "description": "The highest index value for this aggregate window."
+          },
+          "l": {
+            "type": "number",
+            "format": "double",
+            "description": "The lowest index value for this aggregate window."
+          },
+          "s": {
+            "type": "integer",
+            "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+          },
+          "e": {
+            "type": "integer",
+            "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+          }
+        }
+      },
+      "IndicesMinuteAggregateEvent": {
+        "allOf": [
+          {
+            "type": "object",
+            "properties": {
+              "ev": {
+                "description": "The event type."
+              },
+              "sym": {
+                "type": "string",
+                "description": "The symbol representing the given index."
+              },
+              "op": {
+                "type": "number",
+                "format": "double",
+                "description": "Today's official opening value."
+              },
+              "o": {
+                "type": "number",
+                "format": "double",
+                "description": "The opening index value for this aggregate window."
+              },
+              "c": {
+                "type": "number",
+                "format": "double",
+                "description": "The closing index value for this aggregate window."
+              },
+              "h": {
+                "type": "number",
+                "format": "double",
+                "description": "The highest index value for this aggregate window."
+              },
+              "l": {
+                "type": "number",
+                "format": "double",
+                "description": "The lowest index value for this aggregate window."
+              },
+              "s": {
+                "type": "integer",
+                "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+              },
+              "e": {
+                "type": "integer",
+                "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+              }
+            }
+          },
+          {
+            "properties": {
+              "ev": {
+                "enum": [
+                  "AM"
+                ],
+                "description": "The event type."
+              }
+            }
+          }
+        ]
+      },
+      "IndicesValueEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "type": "string",
+            "enum": [
+              "V"
+            ],
+            "description": "The event type."
+          },
+          "val": {
+            "description": "The value of the index."
+          },
+          "T": {
+            "description": "The assigned ticker of the index."
+          },
+          "t": {
+            "description": "The Timestamp in Unix MS."
+          }
+        }
       }
     },
     "parameters": {
@@ -3609,7 +3734,29 @@
           "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
         },
         "example": "*"
+      },
+      "IndicesIndexParam": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "*"
+      },
+      "IndicesIndexParamWithoutWildcard": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "I:SPX"
       }
     }
   }
-}
\ No newline at end of file
+}

Client update needed to match REST spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/rest.json
+++ https://api.polygon.io/openapi
@@ -5132,6 +5132,12 @@
                           }
                         }
                       },
+                      "required": [
+                        "exchange",
+                        "timestamp",
+                        "ask",
+                        "bid"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastQuoteCurrencies"
@@ -5154,6 +5160,15 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id",
+                    "from",
+                    "to",
+                    "symbol",
+                    "initialAmount",
+                    "converted"
+                  ],
                   "type": "object"
                 }
               },
@@ -12265,6 +12280,12 @@
                           }
                         }
                       },
+                      "required": [
+                        "exchange",
+                        "price",
+                        "size",
+                        "timestamp"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastTradeCrypto"
@@ -12283,6 +12304,11 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id",
+                    "symbol"
+                  ],
                   "type": "object"
                 }
               },
@@ -12381,6 +12407,12 @@
                           }
                         }
                       },
+                      "required": [
+                        "ask",
+                        "bid",
+                        "exchange",
+                        "timestamp"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastQuoteCurrencies"
@@ -12399,6 +12431,11 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id",
+                    "symbol"
+                  ],
                   "type": "object"
                 }
               },
@@ -17481,6 +17518,12 @@
                           "type": "integer"
                         }
                       },
+                      "required": [
+                        "T",
+                        "t",
+                        "y",
+                        "q"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastQuoteResult"
@@ -17491,6 +17534,10 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id"
+                  ],
                   "type": "object"
                 }
               },
@@ -17644,6 +17691,15 @@
                           "type": "integer"
                         }
                       },
+                      "required": [
+                        "T",
+                        "t",
+                        "y",
+                        "q",
+                        "i",
+                        "p",
+                        "x"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastTradeResult"
@@ -17654,6 +17710,10 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id"
+                  ],
                   "type": "object"
                 }
               },
@@ -17811,6 +17871,15 @@
                           "type": "integer"
                         }
                       },
+                      "required": [
+                        "T",
+                        "t",
+                        "y",
+                        "q",
+                        "i",
+                        "p",
+                        "x"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastTradeResult"
@@ -17821,6 +17890,10 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id"
+                  ],
                   "type": "object"
                 }
               },
@@ -22380,6 +22453,9 @@
                             }
                           }
                         },
+                        "required": [
+                          "participant_timestamp"
+                        ],
                         "type": "object"
                       },
                       "type": "array"
@@ -22389,6 +22465,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -22620,6 +22699,10 @@
                             }
                           }
                         },
+                        "required": [
+                          "sip_timestamp",
+                          "sequence_number"
+                        ],
                         "type": "object"
                       },
                       "type": "array"
@@ -22629,6 +22712,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -22910,7 +22996,15 @@
                             }
                           }
                         },
-                        "type": "object"
+                        "required": [
+                          "participant_timestamp",
+                          "sequence_number",
+                          "sip_timestamp"
+                        ],
+                        "type": "object",
+                        "x-polygon-go-type": {
+                          "name": "CommonQuote"
+                        }
                       },
                       "type": "array"
                     },
@@ -22919,6 +23013,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -28025,6 +28122,12 @@
                             "type": "number"
                           }
                         },
+                        "required": [
+                          "exchange",
+                          "price",
+                          "size",
+                          "id"
+                        ],
                         "type": "object"
                       },
                       "type": "array"
@@ -28034,6 +28137,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -28268,6 +28374,12 @@
                             "type": "number"
                           }
                         },
+                        "required": [
+                          "exchange",
+                          "price",
+                          "sip_timestamp",
+                          "size"
+                        ],
                         "type": "object"
                       },
                       "type": "array"
@@ -28277,6 +28389,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -28542,7 +28657,19 @@
                             }
                           }
                         },
-                        "type": "object"
+                        "required": [
+                          "exchange",
+                          "id",
+                          "price",
+                          "sequence_number",
+                          "sip_timestamp",
+                          "participant_timestamp",
+                          "size"
+                        ],
+                        "type": "object",
+                        "x-polygon-go-type": {
+                          "name": "CommonTrade"
+                        }
                       },
                       "type": "array"
                     },
@@ -28551,6 +28678,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -30023,4 +30153,4 @@
       ]
     }
   }
-}
+}
\ No newline at end of file

Incorrect HttpClient lifetime management

https://github.com/polygon-io/client-jvm/blob/master/src/main/kotlin/io/polygon/kotlin/sdk/rest/PolygonRestClient.kt#L89 is creating and destroying HttpClients in quick succession.

Here's some code reproducing the problem:
The CustomProvider:



open class CustomProvider
@JvmOverloads
constructor() : HttpClientProvider {
    override fun buildClient(): HttpClient {
        System.out.println("Created client");
        return  HttpClient(Apache) {
            install(WebSockets)
            install(JsonFeature) {
                serializer = KotlinxSerializer(Json.nonstrict)
            }
            engine {
                // this: ApacheEngineConfig
                followRedirects = true
                socketTimeout = 100_000
                connectTimeout = 10_000
                connectionRequestTimeout = 120_000
                customizeClient {
                    // this: HttpAsyncClientBuilder
                    setMaxConnTotal(1)    
                    setMaxConnPerRoute(1)
                    // ...
                }
                customizeRequest {
                    // this: RequestConfig.Builder
                }
            }
        }
    }

    override fun getDefaultRestURLBuilder() =
            URLBuilder(
                    protocol = URLProtocol.HTTPS,
                    port = DEFAULT_PORT
            )
}

and a Scala consumer of the API

    val client = new PolygonRestClient(key, new CustomProvider())
    val referenceClient = client.getReferenceClient

    val params = new SupportedTickersParametersBuilder().tickersPerPage(200).page(1).build()
    val result = referenceClient.getSupportedTickersBlocking(new SupportedTickersParametersBuilder().page(1).tickersPerPage(1).build())
    val numPages = (result.getCount / params.getTickersPerPage) + 1
    val latch = new CountDownLatch(numPages);
    val tickers = mutable.ListBuffer[TickerDTO]()
    val callback = new PolygonRestApiCallback[TickersDTO] {
      override def onError(throwable: Throwable): Unit = {
        latch.countDown()
      }
      override def onSuccess(t: TickersDTO): Unit = {
        println(s"Fetched page ${t.getPage}")
        latch.countDown()
      }
    }

    val startTime = System.nanoTime()
   for {
      i <- 1 to numPages
    } {
      val pars = new SupportedTickersParametersBuilder(params).page(i).build()
      referenceClient.getSupportedTickers(pars, callback)
    }
    latch.await()
    val endTime = System.nanoTime()
    println(s"Took ${(endTime - startTime) / 1000000.0} ms")

The expectation was the code would only issue 1 request at a time, due to the following HttpClient configurations:

                    setMaxConnTotal(1)    
                    setMaxConnPerRoute(1)           

The actual output looks like this:

Created client
...
... 600 times
...
Created client
Fetched page 2
Fetched page 12
...
...

The creation and destruction of HttpClients hugely increases the request latency, as every request must wait for the HttpClient creation, which may take 2-4 seconds for some engines.

I suggest changing the PolygonRestClient.fetchResult implementation to

    internal suspend inline fun <reified T> fetchResult(
        urlBuilderBlock: URLBuilder.() -> Unit
    ): T {
        val url = baseUrlBuilder.apply(urlBuilderBlock).build()
        val httpClient = httpClientProvider.buildClient()
        return httpClient.get(url)
    }

and the DefaultJvmHttpClientProvider to something like:

open class DefaultJvmHttpClientProvider
@JvmOverloads
constructor(
    private val engine: HttpClientEngine = OkHttp.create()
) : HttpClientProvider {

    open fun buildEngine(): HttpClientEngine = engine
    val client = HttpClient(buildEngine()) {
            install(WebSockets)
            install(JsonFeature) {
                serializer = KotlinxSerializer(Json.nonstrict)
            }
        }

    override fun buildClient() = client
        

    override fun getDefaultRestURLBuilder() =
        URLBuilder(
            protocol = URLProtocol.HTTPS,
            port = DEFAULT_PORT
        )
}
``` in order to reuse the client.

with your kotlin sample, and with the POLYGON_API_KEY defined with a 7 day trial account - 403 forbidden

I cloned your kotlin/java sample.
https://github.com/polygon-io/client-jvm
I defined the POLYGON_API_KEY in my .bash_profile similar to this:

export POLYGON_API_KEY="pRVO7y"

Then I ran : ./gradlew kotlinSample

Then I got this error:

(base) Seans-MacBook-Pro-2:client-jvm sean$ ./gradlew kotlinSample

Task :sample:kotlinSample
Blocking for markets...
Exception in thread "main" io.ktor.client.features.ClientRequestException: Client request(https://api.polygon.io/v2/reference/markets?apiKey=pRV1CDsO7y) invalid: 403 Forbidden
at io.ktor.client.features.DefaultResponseValidationKt$addDefaultResponseValidation$1$1.invokeSuspend(DefaultResponseValidation.kt:35)
at io.ktor.client.features.DefaultResponseValidationKt$addDefaultResponseValidation$1$1.invoke(DefaultResponseValidation.kt)
at io.ktor.client.features.HttpCallValidator.validateResponse(HttpCallValidator.kt:35)
at io.ktor.client.features.HttpCallValidator$Companion$install$2.invokeSuspend(HttpCallValidator.kt:96)
at io.ktor.client.features.HttpCallValidator$Companion$install$2.invoke(HttpCallValidator.kt)
at io.ktor.util.pipeline.SuspendFunctionGun.loop(PipelineContext.kt:273)
at io.ktor.util.pipeline.SuspendFunctionGun.proceed(PipelineContext.kt:141)
at io.ktor.util.pipeline.SuspendFunctionGun.execute(PipelineContext.kt:161)
at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:27)
etc.

Getting exception and disconnect.

Today got this exception 3 times during connection with websocket api. Client just dies silently. Can't catch this because it's inside framework.

Exception in thread "DefaultDispatcher-worker-7" java.io.EOFException at okio.RealBufferedSource.require(RealBufferedSource.kt:201) at okio.RealBufferedSource.readByte(RealBufferedSource.kt:210) at okhttp3.internal.ws.WebSocketReader.readHeader(WebSocketReader.java:117) at okhttp3.internal.ws.WebSocketReader.processNextFrame(WebSocketReader.java:101) at okhttp3.internal.ws.RealWebSocket.loopReader(RealWebSocket.java:273) at okhttp3.internal.ws.RealWebSocket$1.onResponse(RealWebSocket.java:209) at okhttp3.RealCall$AsyncCall.execute(RealCall.java:174) at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) at java.base/java.lang.Thread.run(Thread.java:832)

Get Supported Tickers v2 Deprecation

When attempting to call the getSupportedTickers function on the PolygonReferenceClient the API returns a 404 error based on the v2 endpoint being deprecated.

Need to update to v3 and associated request parameters and response.

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -1995,7 +1995,7 @@
     "/indices/AM": {
       "get": {
         "summary": "Aggregates (Per Minute)",
-        "description": "Stream real-time minute aggregates for a given index.\n",
+        "description": "Stream real-time minute aggregates for a given index ticker symbol.\n",
         "parameters": [
           {
             "name": "ticker",
@@ -2004,7 +2004,7 @@
             "required": true,
             "schema": {
               "type": "string",
-              "pattern": "/^([a-zA-Z]+)$/"
+              "pattern": "/^(I:[a-zA-Z0-9]+)$/"
             },
             "example": "*"
           }
@@ -3552,6 +3552,131 @@
       "CryptoReceivedTimestamp": {
         "type": "integer",
         "description": "The timestamp that the tick was received by Polygon."
+      },
+      "IndicesBaseAggregateEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "description": "The event type."
+          },
+          "sym": {
+            "type": "string",
+            "description": "The symbol representing the given index."
+          },
+          "op": {
+            "type": "number",
+            "format": "double",
+            "description": "Today's official opening value."
+          },
+          "o": {
+            "type": "number",
+            "format": "double",
+            "description": "The opening index value for this aggregate window."
+          },
+          "c": {
+            "type": "number",
+            "format": "double",
+            "description": "The closing index value for this aggregate window."
+          },
+          "h": {
+            "type": "number",
+            "format": "double",
+            "description": "The highest index value for this aggregate window."
+          },
+          "l": {
+            "type": "number",
+            "format": "double",
+            "description": "The lowest index value for this aggregate window."
+          },
+          "s": {
+            "type": "integer",
+            "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+          },
+          "e": {
+            "type": "integer",
+            "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+          }
+        }
+      },
+      "IndicesMinuteAggregateEvent": {
+        "allOf": [
+          {
+            "type": "object",
+            "properties": {
+              "ev": {
+                "description": "The event type."
+              },
+              "sym": {
+                "type": "string",
+                "description": "The symbol representing the given index."
+              },
+              "op": {
+                "type": "number",
+                "format": "double",
+                "description": "Today's official opening value."
+              },
+              "o": {
+                "type": "number",
+                "format": "double",
+                "description": "The opening index value for this aggregate window."
+              },
+              "c": {
+                "type": "number",
+                "format": "double",
+                "description": "The closing index value for this aggregate window."
+              },
+              "h": {
+                "type": "number",
+                "format": "double",
+                "description": "The highest index value for this aggregate window."
+              },
+              "l": {
+                "type": "number",
+                "format": "double",
+                "description": "The lowest index value for this aggregate window."
+              },
+              "s": {
+                "type": "integer",
+                "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+              },
+              "e": {
+                "type": "integer",
+                "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+              }
+            }
+          },
+          {
+            "properties": {
+              "ev": {
+                "enum": [
+                  "AM"
+                ],
+                "description": "The event type."
+              }
+            }
+          }
+        ]
+      },
+      "IndicesValueEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "type": "string",
+            "enum": [
+              "V"
+            ],
+            "description": "The event type."
+          },
+          "val": {
+            "description": "The value of the index."
+          },
+          "T": {
+            "description": "The assigned ticker of the index."
+          },
+          "t": {
+            "description": "The Timestamp in Unix MS."
+          }
+        }
       }
     },
     "parameters": {
@@ -3609,7 +3734,29 @@
           "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
         },
         "example": "*"
+      },
+      "IndicesIndexParam": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "*"
+      },
+      "IndicesIndexParamWithoutWildcard": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "I:SPX"
       }
     }
   }
-}
\ No newline at end of file
+}

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -1995,7 +1995,7 @@
     "/indices/AM": {
       "get": {
         "summary": "Aggregates (Per Minute)",
-        "description": "Stream real-time minute aggregates for a given index.\n",
+        "description": "Stream real-time minute aggregates for a given index ticker symbol.\n",
         "parameters": [
           {
             "name": "ticker",
@@ -2004,7 +2004,7 @@
             "required": true,
             "schema": {
               "type": "string",
-              "pattern": "/^([a-zA-Z]+)$/"
+              "pattern": "/^(I:[a-zA-Z0-9]+)$/"
             },
             "example": "*"
           }
@@ -3552,6 +3552,131 @@
       "CryptoReceivedTimestamp": {
         "type": "integer",
         "description": "The timestamp that the tick was received by Polygon."
+      },
+      "IndicesBaseAggregateEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "description": "The event type."
+          },
+          "sym": {
+            "type": "string",
+            "description": "The symbol representing the given index."
+          },
+          "op": {
+            "type": "number",
+            "format": "double",
+            "description": "Today's official opening value."
+          },
+          "o": {
+            "type": "number",
+            "format": "double",
+            "description": "The opening index value for this aggregate window."
+          },
+          "c": {
+            "type": "number",
+            "format": "double",
+            "description": "The closing index value for this aggregate window."
+          },
+          "h": {
+            "type": "number",
+            "format": "double",
+            "description": "The highest index value for this aggregate window."
+          },
+          "l": {
+            "type": "number",
+            "format": "double",
+            "description": "The lowest index value for this aggregate window."
+          },
+          "s": {
+            "type": "integer",
+            "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+          },
+          "e": {
+            "type": "integer",
+            "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+          }
+        }
+      },
+      "IndicesMinuteAggregateEvent": {
+        "allOf": [
+          {
+            "type": "object",
+            "properties": {
+              "ev": {
+                "description": "The event type."
+              },
+              "sym": {
+                "type": "string",
+                "description": "The symbol representing the given index."
+              },
+              "op": {
+                "type": "number",
+                "format": "double",
+                "description": "Today's official opening value."
+              },
+              "o": {
+                "type": "number",
+                "format": "double",
+                "description": "The opening index value for this aggregate window."
+              },
+              "c": {
+                "type": "number",
+                "format": "double",
+                "description": "The closing index value for this aggregate window."
+              },
+              "h": {
+                "type": "number",
+                "format": "double",
+                "description": "The highest index value for this aggregate window."
+              },
+              "l": {
+                "type": "number",
+                "format": "double",
+                "description": "The lowest index value for this aggregate window."
+              },
+              "s": {
+                "type": "integer",
+                "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+              },
+              "e": {
+                "type": "integer",
+                "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+              }
+            }
+          },
+          {
+            "properties": {
+              "ev": {
+                "enum": [
+                  "AM"
+                ],
+                "description": "The event type."
+              }
+            }
+          }
+        ]
+      },
+      "IndicesValueEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "type": "string",
+            "enum": [
+              "V"
+            ],
+            "description": "The event type."
+          },
+          "val": {
+            "description": "The value of the index."
+          },
+          "T": {
+            "description": "The assigned ticker of the index."
+          },
+          "t": {
+            "description": "The Timestamp in Unix MS."
+          }
+        }
       }
     },
     "parameters": {
@@ -3609,7 +3734,29 @@
           "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
         },
         "example": "*"
+      },
+      "IndicesIndexParam": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "*"
+      },
+      "IndicesIndexParamWithoutWildcard": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "I:SPX"
       }
     }
   }
-}
\ No newline at end of file
+}

Client update needed to match REST spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/rest.json
+++ https://api.polygon.io/openapi
@@ -826,11 +826,19 @@
             "format": "double",
             "type": "number"
           },
+          "n": {
+            "description": "The number of transactions in the aggregate window.",
+            "type": "integer"
+          },
           "o": {
             "description": "The open price for the symbol in the given time period.",
             "format": "double",
             "type": "number"
           },
+          "t": {
+            "description": "The Unix Msec timestamp for the start of the aggregate window.",
+            "type": "integer"
+          },
           "v": {
             "description": "The trading volume of the symbol in the given time period.",
             "format": "double",
@@ -848,7 +851,9 @@
           "l",
           "c",
           "v",
-          "vw"
+          "vw",
+          "t",
+          "n"
         ],
         "type": "object"
       },
@@ -966,11 +971,19 @@
                     "format": "double",
                     "type": "number"
                   },
+                  "n": {
+                    "description": "The number of transactions in the aggregate window.",
+                    "type": "integer"
+                  },
                   "o": {
                     "description": "The open price for the symbol in the given time period.",
                     "format": "double",
                     "type": "number"
                   },
+                  "t": {
+                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                    "type": "integer"
+                  },
                   "v": {
                     "description": "The trading volume of the symbol in the given time period.",
                     "format": "double",
@@ -988,7 +996,9 @@
                   "l",
                   "c",
                   "v",
-                  "vw"
+                  "vw",
+                  "t",
+                  "n"
                 ],
                 "type": "object"
               },
@@ -1269,11 +1279,19 @@
                       "format": "double",
                       "type": "number"
                     },
+                    "n": {
+                      "description": "The number of transactions in the aggregate window.",
+                      "type": "integer"
+                    },
                     "o": {
                       "description": "The open price for the symbol in the given time period.",
                       "format": "double",
                       "type": "number"
                     },
+                    "t": {
+                      "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                      "type": "integer"
+                    },
                     "v": {
                       "description": "The trading volume of the symbol in the given time period.",
                       "format": "double",
@@ -1291,7 +1304,9 @@
                     "l",
                     "c",
                     "v",
-                    "vw"
+                    "vw",
+                    "t",
+                    "n"
                   ],
                   "type": "object"
                 },
@@ -2410,24 +2425,25 @@
                     "format": "double",
                     "type": "number"
                   },
+                  "n": {
+                    "description": "The number of transactions in the aggregate window.",
+                    "type": "integer"
+                  },
                   "o": {
                     "description": "The open price for the symbol in the given time period.",
                     "format": "double",
                     "type": "number"
                   },
+                  "t": {
+                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                    "type": "integer"
+                  },
                   "v": {
                     "description": "The trading volume of the symbol in the given time period.",
                     "format": "double",
                     "type": "number"
                   }
                 },
-                "required": [
-                  "o",
-                  "h",
-                  "l",
-                  "c",
-                  "v"
-                ],
                 "type": "object"
               },
               "prevDay": {
@@ -2599,24 +2604,25 @@
                       "format": "double",
                       "type": "number"
                     },
+                    "n": {
+                      "description": "The number of transactions in the aggregate window.",
+                      "type": "integer"
+                    },
                     "o": {
                       "description": "The open price for the symbol in the given time period.",
                       "format": "double",
                       "type": "number"
                     },
+                    "t": {
+                      "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                      "type": "integer"
+                    },
                     "v": {
                       "description": "The trading volume of the symbol in the given time period.",
                       "format": "double",
                       "type": "number"
                     }
                   },
-                  "required": [
-                    "o",
-                    "h",
-                    "l",
-                    "c",
-                    "v"
-                  ],
                   "type": "object"
                 },
                 "prevDay": {
@@ -3273,6 +3268,44 @@
         "format": "double",
         "type": "number"
       },
+      "SnapshotMinOHLCV": {
+        "properties": {
+          "c": {
+            "description": "The close price for the symbol in the given time period.",
+            "format": "double",
+            "type": "number"
+          },
+          "h": {
+            "description": "The highest price for the symbol in the given time period.",
+            "format": "double",
+            "type": "number"
+          },
+          "l": {
+            "description": "The lowest price for the symbol in the given time period.",
+            "format": "double",
+            "type": "number"
+          },
+          "n": {
+            "description": "The number of transactions in the aggregate window.",
+            "type": "integer"
+          },
+          "o": {
+            "description": "The open price for the symbol in the given time period.",
+            "format": "double",
+            "type": "number"
+          },
+          "t": {
+            "description": "The Unix Msec timestamp for the start of the aggregate window.",
+            "type": "integer"
+          },
+          "v": {
+            "description": "The trading volume of the symbol in the given time period.",
+            "format": "double",
+            "type": "number"
+          }
+        },
+        "type": "object"
+      },
       "SnapshotOHLCV": {
         "properties": {
           "c": {
@@ -3657,11 +3690,19 @@
             "format": "double",
             "type": "number"
           },
+          "n": {
+            "description": "The number of transactions in the aggregate window.",
+            "type": "integer"
+          },
           "o": {
             "description": "The open price for the symbol in the given time period.",
             "format": "double",
             "type": "number"
           },
+          "t": {
+            "description": "The Unix Msec timestamp for the start of the aggregate window.",
+            "type": "integer"
+          },
           "v": {
             "description": "The trading volume of the symbol in the given time period.",
             "format": "double",
@@ -3680,7 +3716,9 @@
           "l",
           "c",
           "v",
-          "vw"
+          "vw",
+          "t",
+          "n"
         ],
         "type": "object"
       },
@@ -3705,6 +3743,10 @@
             "format": "double",
             "type": "number"
           },
+          "n": {
+            "description": "The number of transactions in the aggregate window.",
+            "type": "integer"
+          },
           "o": {
             "description": "The open price for the symbol in the given time period.",
             "format": "double",
@@ -3714,6 +3756,10 @@
             "description": "Whether or not this aggregate is for an OTC ticker. This field will be left off if false.",
             "type": "boolean"
           },
+          "t": {
+            "description": "The Unix Msec timestamp for the start of the aggregate window.",
+            "type": "integer"
+          },
           "v": {
             "description": "The trading volume of the symbol in the given time period.",
             "format": "double",
@@ -3732,7 +3778,9 @@
           "l",
           "c",
           "v",
-          "vw"
+          "vw",
+          "t",
+          "n"
         ],
         "type": "object"
       },
@@ -3887,6 +3935,10 @@
                     "format": "double",
                     "type": "number"
                   },
+                  "n": {
+                    "description": "The number of transactions in the aggregate window.",
+                    "type": "integer"
+                  },
                   "o": {
                     "description": "The open price for the symbol in the given time period.",
                     "format": "double",
@@ -3896,6 +3948,10 @@
                     "description": "Whether or not this aggregate is for an OTC ticker. This field will be left off if false.",
                     "type": "boolean"
                   },
+                  "t": {
+                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                    "type": "integer"
+                  },
                   "v": {
                     "description": "The trading volume of the symbol in the given time period.",
                     "format": "double",
@@ -3914,7 +3970,9 @@
                   "l",
                   "c",
                   "v",
-                  "vw"
+                  "vw",
+                  "t",
+                  "n"
                 ],
                 "type": "object"
               },
@@ -4142,6 +4200,10 @@
                       "format": "double",
                       "type": "number"
                     },
+                    "n": {
+                      "description": "The number of transactions in the aggregate window.",
+                      "type": "integer"
+                    },
                     "o": {
                       "description": "The open price for the symbol in the given time period.",
                       "format": "double",
@@ -4151,6 +4213,10 @@
                       "description": "Whether or not this aggregate is for an OTC ticker. This field will be left off if false.",
                       "type": "boolean"
                     },
+                    "t": {
+                      "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                      "type": "integer"
+                    },
                     "v": {
                       "description": "The trading volume of the symbol in the given time period.",
                       "format": "double",
@@ -4169,7 +4235,9 @@
                     "l",
                     "c",
                     "v",
-                    "vw"
+                    "vw",
+                    "t",
+                    "n"
                   ],
                   "type": "object"
                 },
@@ -5132,6 +5200,12 @@
                           }
                         }
                       },
+                      "required": [
+                        "exchange",
+                        "timestamp",
+                        "ask",
+                        "bid"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastQuoteCurrencies"
@@ -5154,6 +5228,15 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id",
+                    "from",
+                    "to",
+                    "symbol",
+                    "initialAmount",
+                    "converted"
+                  ],
                   "type": "object"
                 }
               },
@@ -5589,7 +5672,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get exponential moving average (EMA) data.",
-            "example": "X:BTC-USD",
+            "example": "X:BTCUSD",
             "in": "path",
             "name": "cryptoTicker",
             "required": true,
@@ -7162,7 +7245,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get MACD data.",
-            "example": "X:BTC-USD",
+            "example": "X:BTCUSD",
             "in": "path",
             "name": "cryptoTicker",
             "required": true,
@@ -8955,7 +9038,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get relative strength index (RSI) data.",
-            "example": "X:BTC-USD",
+            "example": "X:BTCUSD",
             "in": "path",
             "name": "cryptoTicker",
             "required": true,
@@ -10528,7 +10611,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get simple moving average (SMA) data.",
-            "example": "X:BTC-USD",
+            "example": "X:BTCUSD",
             "in": "path",
             "name": "cryptoTicker",
             "required": true,
@@ -12265,6 +12348,12 @@
                           }
                         }
                       },
+                      "required": [
+                        "exchange",
+                        "price",
+                        "size",
+                        "timestamp"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastTradeCrypto"
@@ -12283,6 +12372,11 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id",
+                    "symbol"
+                  ],
                   "type": "object"
                 }
               },
@@ -12381,6 +12475,12 @@
                           }
                         }
                       },
+                      "required": [
+                        "ask",
+                        "bid",
+                        "exchange",
+                        "timestamp"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastQuoteCurrencies"
@@ -12399,6 +12499,11 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id",
+                    "symbol"
+                  ],
                   "type": "object"
                 }
               },
@@ -14235,7 +14340,7 @@
         "operationId": "SnapshotSummary",
         "parameters": [
           {
-            "description": "Comma separated list of tickers. This API currently supports Stocks/Equities, Crypto, Options, and Forex. See <a rel=\"nofollow\" target=\"_blank\" href=\"https://polygon.io/docs/stocks/get_v3_reference_tickers\">the tickers endpoint</a> for more details on supported tickers. If no tickers are passed then no results will be returned.",
+            "description": "Comma separated list of tickers. This API currently supports Stocks/Equities, Crypto, Options, and Forex. See <a rel=\"nofollow\" target=\"_blank\" href=\"https://polygon.io/docs/stocks/get_v3_reference_tickers\">the tickers endpoint</a> for more details on supported tickers. If no tickers are passed then no results will be returned.\n\nWarning: The maximum number of characters allowed in a URL are subject to your technology stack.",
             "example": "NCLH,O:SPY250321C00380000,C:EURUSD,X:BTCUSD",
             "in": "query",
             "name": "ticker.any_of",
@@ -14256,6 +14361,7 @@
                         "icon_url": "https://api.polygon.io/icon.png",
                         "logo_url": "https://api.polygon.io/logo.svg"
                       },
+                      "last_updated": 1679597116344223500,
                       "market_status": "closed",
                       "name": "Norwegian Cruise Lines",
                       "price": 22.3,
@@ -14277,6 +14383,7 @@
                       "type": "stock"
                     },
                     {
+                      "last_updated": 1679597116344223500,
                       "market_status": "closed",
                       "name": "NCLH $5 Call",
                       "options": {
@@ -14306,6 +14413,7 @@
                       "type": "options"
                     },
                     {
+                      "last_updated": 1679597116344223500,
                       "market_status": "open",
                       "name": "Euro - United States Dollar",
                       "price": 0.97989,
@@ -14326,6 +14434,7 @@
                         "icon_url": "https://api.polygon.io/icon.png",
                         "logo_url": "https://api.polygon.io/logo.svg"
                       },
+                      "last_updated": 1679597116344223500,
                       "market_status": "open",
                       "name": "Bitcoin - United States Dollar",
                       "price": 32154.68,
@@ -14377,6 +14486,15 @@
                             "description": "The error while looking for this ticker.",
                             "type": "string"
                           },
+                          "last_updated": {
+                            "description": "The nanosecond timestamp of when this information was updated.",
+                            "format": "int64",
+                            "type": "integer",
+                            "x-polygon-go-type": {
+                              "name": "INanoseconds",
+                              "path": "github.com/polygon-io/ptime"
+                            }
+                          },
                           "market_status": {
                             "description": "The market status for the market that trades this ticker.",
                             "type": "string"
@@ -14551,7 +14669,8 @@
                           "market_status",
                           "type",
                           "session",
-                          "options"
+                          "options",
+                          "last_updated"
                         ],
                         "type": "object",
                         "x-polygon-go-type": {
@@ -16325,7 +16444,6 @@
                       "c": "4,048.42",
                       "h": "4,050.00",
                       "l": "3,980.31",
-                      "n": 1,
                       "o": "4,048.26",
                       "t": 1678221133236
                     },
@@ -16333,7 +16451,6 @@
                       "c": "4,048.42",
                       "h": "4,050.00",
                       "l": "3,980.31",
-                      "n": 1,
                       "o": "4,048.26",
                       "t": 1678221139690
                     }
@@ -17481,6 +17598,12 @@
                           "type": "integer"
                         }
                       },
+                      "required": [
+                        "T",
+                        "t",
+                        "y",
+                        "q"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastQuoteResult"
@@ -17491,6 +17614,10 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id"
+                  ],
                   "type": "object"
                 }
               },
@@ -17644,6 +17771,15 @@
                           "type": "integer"
                         }
                       },
+                      "required": [
+                        "T",
+                        "t",
+                        "y",
+                        "q",
+                        "i",
+                        "p",
+                        "x"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastTradeResult"
@@ -17654,6 +17790,10 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id"
+                  ],
                   "type": "object"
                 }
               },
@@ -17811,6 +17951,15 @@
                           "type": "integer"
                         }
                       },
+                      "required": [
+                        "T",
+                        "t",
+                        "y",
+                        "q",
+                        "i",
+                        "p",
+                        "x"
+                      ],
                       "type": "object",
                       "x-polygon-go-type": {
                         "name": "LastTradeResult"
@@ -17821,6 +17970,10 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status",
+                    "request_id"
+                  ],
                   "type": "object"
                 }
               },
@@ -18457,11 +18610,19 @@
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "n": {
+                                    "description": "The number of transactions in the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "o": {
                                     "description": "The open price for the symbol in the given time period.",
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "t": {
+                                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "v": {
                                     "description": "The trading volume of the symbol in the given time period.",
                                     "format": "double",
@@ -18479,7 +18635,9 @@
                                   "l",
                                   "c",
                                   "v",
-                                  "vw"
+                                  "vw",
+                                  "t",
+                                  "n"
                                 ],
                                 "type": "object"
                               },
@@ -18806,11 +18964,19 @@
                                   "format": "double",
                                   "type": "number"
                                 },
+                                "n": {
+                                  "description": "The number of transactions in the aggregate window.",
+                                  "type": "integer"
+                                },
                                 "o": {
                                   "description": "The open price for the symbol in the given time period.",
                                   "format": "double",
                                   "type": "number"
                                 },
+                                "t": {
+                                  "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                  "type": "integer"
+                                },
                                 "v": {
                                   "description": "The trading volume of the symbol in the given time period.",
                                   "format": "double",
@@ -18828,7 +18989,9 @@
                                 "l",
                                 "c",
                                 "v",
-                                "vw"
+                                "vw",
+                                "t",
+                                "n"
                               ],
                               "type": "object"
                             },
@@ -19327,11 +19490,19 @@
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "n": {
+                                    "description": "The number of transactions in the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "o": {
                                     "description": "The open price for the symbol in the given time period.",
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "t": {
+                                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "v": {
                                     "description": "The trading volume of the symbol in the given time period.",
                                     "format": "double",
@@ -19349,7 +19515,9 @@
                                   "l",
                                   "c",
                                   "v",
-                                  "vw"
+                                  "vw",
+                                  "t",
+                                  "n"
                                 ],
                                 "type": "object"
                               },
@@ -19637,24 +19805,25 @@
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "n": {
+                                    "description": "The number of transactions in the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "o": {
                                     "description": "The open price for the symbol in the given time period.",
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "t": {
+                                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "v": {
                                     "description": "The trading volume of the symbol in the given time period.",
                                     "format": "double",
                                     "type": "number"
                                   }
                                 },
-                                "required": [
-                                  "o",
-                                  "h",
-                                  "l",
-                                  "c",
-                                  "v"
-                                ],
                                 "type": "object"
                               },
                               "prevDay": {
@@ -19951,24 +20109,25 @@
                                   "format": "double",
                                   "type": "number"
                                 },
+                                "n": {
+                                  "description": "The number of transactions in the aggregate window.",
+                                  "type": "integer"
+                                },
                                 "o": {
                                   "description": "The open price for the symbol in the given time period.",
                                   "format": "double",
                                   "type": "number"
                                 },
+                                "t": {
+                                  "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                  "type": "integer"
+                                },
                                 "v": {
                                   "description": "The trading volume of the symbol in the given time period.",
                                   "format": "double",
                                   "type": "number"
                                 }
                               },
-                              "required": [
-                                "o",
-                                "h",
-                                "l",
-                                "c",
-                                "v"
-                              ],
                               "type": "object"
                             },
                             "prevDay": {
@@ -20256,24 +20404,25 @@
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "n": {
+                                    "description": "The number of transactions in the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "o": {
                                     "description": "The open price for the symbol in the given time period.",
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "t": {
+                                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "v": {
                                     "description": "The trading volume of the symbol in the given time period.",
                                     "format": "double",
                                     "type": "number"
                                   }
                                 },
-                                "required": [
-                                  "o",
-                                  "h",
-                                  "l",
-                                  "c",
-                                  "v"
-                                ],
                                 "type": "object"
                               },
                               "prevDay": {
@@ -20651,6 +20789,10 @@
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "n": {
+                                    "description": "The number of transactions in the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "o": {
                                     "description": "The open price for the symbol in the given time period.",
                                     "format": "double",
@@ -20660,6 +20802,10 @@
                                     "description": "Whether or not this aggregate is for an OTC ticker. This field will be left off if false.",
                                     "type": "boolean"
                                   },
+                                  "t": {
+                                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "v": {
                                     "description": "The trading volume of the symbol in the given time period.",
                                     "format": "double",
@@ -20678,7 +20824,9 @@
                                   "l",
                                   "c",
                                   "v",
-                                  "vw"
+                                  "vw",
+                                  "t",
+                                  "n"
                                 ],
                                 "type": "object"
                               },
@@ -21045,6 +21193,10 @@
                                   "format": "double",
                                   "type": "number"
                                 },
+                                "n": {
+                                  "description": "The number of transactions in the aggregate window.",
+                                  "type": "integer"
+                                },
                                 "o": {
                                   "description": "The open price for the symbol in the given time period.",
                                   "format": "double",
@@ -21054,6 +21206,10 @@
                                   "description": "Whether or not this aggregate is for an OTC ticker. This field will be left off if false.",
                                   "type": "boolean"
                                 },
+                                "t": {
+                                  "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                  "type": "integer"
+                                },
                                 "v": {
                                   "description": "The trading volume of the symbol in the given time period.",
                                   "format": "double",
@@ -21072,7 +21228,9 @@
                                 "l",
                                 "c",
                                 "v",
-                                "vw"
+                                "vw",
+                                "t",
+                                "n"
                               ],
                               "type": "object"
                             },
@@ -21438,6 +21596,10 @@
                                     "format": "double",
                                     "type": "number"
                                   },
+                                  "n": {
+                                    "description": "The number of transactions in the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "o": {
                                     "description": "The open price for the symbol in the given time period.",
                                     "format": "double",
@@ -21447,6 +21609,10 @@
                                     "description": "Whether or not this aggregate is for an OTC ticker. This field will be left off if false.",
                                     "type": "boolean"
                                   },
+                                  "t": {
+                                    "description": "The Unix Msec timestamp for the start of the aggregate window.",
+                                    "type": "integer"
+                                  },
                                   "v": {
                                     "description": "The trading volume of the symbol in the given time period.",
                                     "format": "double",
@@ -21465,7 +21631,9 @@
                                   "l",
                                   "c",
                                   "v",
-                                  "vw"
+                                  "vw",
+                                  "t",
+                                  "n"
                                 ],
                                 "type": "object"
                               },
@@ -22380,6 +22548,9 @@
                             }
                           }
                         },
+                        "required": [
+                          "participant_timestamp"
+                        ],
                         "type": "object"
                       },
                       "type": "array"
@@ -22389,6 +22560,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -22620,6 +22794,10 @@
                             }
                           }
                         },
+                        "required": [
+                          "sip_timestamp",
+                          "sequence_number"
+                        ],
                         "type": "object"
                       },
                       "type": "array"
@@ -22629,6 +22807,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -22910,7 +23091,15 @@
                             }
                           }
                         },
-                        "type": "object"
+                        "required": [
+                          "participant_timestamp",
+                          "sequence_number",
+                          "sip_timestamp"
+                        ],
+                        "type": "object",
+                        "x-polygon-go-type": {
+                          "name": "CommonQuote"
+                        }
                       },
                       "type": "array"
                     },
@@ -22919,6 +23108,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -26524,7 +26716,7 @@
         "operationId": "IndicesSnapshot",
         "parameters": [
           {
-            "description": "Comma separated list of tickers",
+            "description": "Comma separated list of tickers.\n\nWarning: The maximum number of characters allowed in a URL are subject to your technology stack.",
             "example": "I:SPX",
             "in": "query",
             "name": "ticker.any_of",
@@ -26541,6 +26733,7 @@
                   "request_id": "6a7e466379af0a71039d60cc78e72282",
                   "results": [
                     {
+                      "last_updated": 1679597116344223500,
                       "market_status": "closed",
                       "name": "S&P 500",
                       "session": {
@@ -26553,6 +26746,7 @@
                         "previous_close": 3812.19
                       },
                       "ticker": "I:SPX",
+                      "timeframe": "REAL-TIME",
                       "type": "indices",
                       "value": 3822.39
                     },
@@ -26581,6 +26775,15 @@
                             "description": "The error while looking for this ticker.",
                             "type": "string"
                           },
+                          "last_updated": {
+                            "description": "The nanosecond timestamp of when this information was updated.",
+                            "format": "int64",
+                            "type": "integer",
+                            "x-polygon-go-type": {
+                              "name": "INanoseconds",
+                              "path": "github.com/polygon-io/ptime"
+                            }
+                          },
                           "market_status": {
                             "description": "The market status for the market that trades this ticker.",
                             "type": "string"
@@ -26640,6 +26843,14 @@
                             "description": "Ticker of asset queried.",
                             "type": "string"
                           },
+                          "timeframe": {
+                            "description": "The time relevance of the data.",
+                            "enum": [
+                              "DELAYED",
+                              "REAL-TIME"
+                            ],
+                            "type": "string"
+                          },
                           "type": {
                             "description": "The indices market.",
                             "enum": [
@@ -26653,7 +26864,9 @@
                           }
                         },
                         "required": [
-                          "ticker"
+                          "ticker",
+                          "timeframe",
+                          "last_updated"
                         ],
                         "type": "object",
                         "x-polygon-go-type": {
@@ -26884,7 +27097,7 @@
                         "expiration_date": "2022-01-21",
                         "shares_per_contract": 100,
                         "strike_price": 150,
-                        "ticker": "AAPL211022C000150000"
+                        "ticker": "O:AAPL211022C000150000"
                       },
                       "greeks": {
                         "delta": 1,
@@ -28025,6 +28238,12 @@
                             "type": "number"
                           }
                         },
+                        "required": [
+                          "exchange",
+                          "price",
+                          "size",
+                          "id"
+                        ],
                         "type": "object"
                       },
                       "type": "array"
@@ -28034,6 +28253,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -28268,6 +28490,12 @@
                             "type": "number"
                           }
                         },
+                        "required": [
+                          "exchange",
+                          "price",
+                          "sip_timestamp",
+                          "size"
+                        ],
                         "type": "object"
                       },
                       "type": "array"
@@ -28277,6 +28505,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -28542,7 +28773,19 @@
                             }
                           }
                         },
-                        "type": "object"
+                        "required": [
+                          "exchange",
+                          "id",
+                          "price",
+                          "sequence_number",
+                          "sip_timestamp",
+                          "participant_timestamp",
+                          "size"
+                        ],
+                        "type": "object",
+                        "x-polygon-go-type": {
+                          "name": "CommonTrade"
+                        }
                       },
                       "type": "array"
                     },
@@ -28551,6 +28794,9 @@
                       "type": "string"
                     }
                   },
+                  "required": [
+                    "status"
+                  ],
                   "type": "object"
                 }
               },
@@ -30023,4 +30269,4 @@
       ]
     }
   }
-}
+}
\ No newline at end of file

Numerical error: TickerDetails.shareClassSharesOutstanding value overflow

TickerDetails.shareClassSharesOutstanding defined as Int, actual value returned will overflow, can change to Double I guess

@Serializable
data class TickerDetails(
   ...
    @SerialName("share_class_shares_outstanding") val shareClassSharesOutstanding: Int? = null,

    @SerialName("weighted_shares_outstanding") val weightedSharesOutstanding: Double? = null,
...
)

Example response for AAPL .

{
    "request_id": "1cd9f86e8f7fd018c9a534cda33d1d2b",
    "results": {
        "ticker": "AAPL",
        "name": "Apple Inc.",
        "market": "stocks",
        "locale": "us",
        "primary_exchange": "XNAS",
        "type": "CS",
        "active": true,
        "currency_name": "usd",
        "cik": "0000320193",
        "composite_figi": "BBG000B9XRY4",
        "share_class_figi": "BBG001S5N8V8",
        "market_cap": 2216996426610,
        "phone_number": "(408) 996-1010",
        "address": {
            "address1": "ONE APPLE PARK WAY",
            "city": "CUPERTINO",
            "state": "CA",
            "postal_code": "95014"
        },
        "sic_code": "3571",
        "sic_description": "ELECTRONIC COMPUTERS",
        "ticker_root": "AAPL",
        "list_date": "1980-12-12",

        "share_class_shares_outstanding": 16788099999,
        "weighted_shares_outstanding": 16406397000

    },
    "status": "OK"
}'

Polygon client-jvm not working with Spring Boot java project

I have created super simple project to demonstrate the issue: https://github.com/gstaykov/polygon-spring-boot

I'm running this code from your example:

PolygonRestClient client = new PolygonRestClient(polygonKey);
MarketsDTO markets = client.getReferenceClient().getSupportedMarketsBlocking();
System.out.println("Got markets synchronously: " + markets.toString());

the exception I get is:

java.lang.ClassNotFoundException: kotlin.reflect.KDeclarationContainer
       at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:433) ~[na:na]
       at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:586) ~[na:na]
       at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151) ~[demo-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
       at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519) ~[na:na]
       at com.example.demo.Controller.testPolygon(Controller.java:15) ~[classes!/:0.0.1-SNAPSHOT]
       at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
       at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) ~[na:na]
       at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
       at java.base/java.lang.reflect.Method.invoke(Method.java:567) ~[na:na]
       at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197) ~[spring-web-5.3.8.jar!/:5.3.8]
       at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141) ~[spring-web-5.3.8.jar!/:5.3.8]
       at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
       at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
       at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
       at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
       at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1063) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
       at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
       at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
       at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:228) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.48.jar!/:na]
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.8.jar!/:5.3.8]
       at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar!/:5.3.8]
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.8.jar!/:5.3.8]
       at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar!/:5.3.8]
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.8.jar!/:5.3.8]
       at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar!/:5.3.8]
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[na:na]
       at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[na:na]
       at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.48.jar!/:na]
       at java.base/java.lang.Thread.run(Thread.java:831) ~[na:na]

Client update needed to match WebSocket spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/websocket.json
+++ https://api.polygon.io/specs/websocket.json
@@ -1995,7 +1995,7 @@
     "/indices/AM": {
       "get": {
         "summary": "Aggregates (Per Minute)",
-        "description": "Stream real-time minute aggregates for a given index.\n",
+        "description": "Stream real-time minute aggregates for a given index ticker symbol.\n",
         "parameters": [
           {
             "name": "ticker",
@@ -2004,7 +2004,7 @@
             "required": true,
             "schema": {
               "type": "string",
-              "pattern": "/^([a-zA-Z]+)$/"
+              "pattern": "/^(I:[a-zA-Z0-9]+)$/"
             },
             "example": "*"
           }
@@ -3552,6 +3552,131 @@
       "CryptoReceivedTimestamp": {
         "type": "integer",
         "description": "The timestamp that the tick was received by Polygon."
+      },
+      "IndicesBaseAggregateEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "description": "The event type."
+          },
+          "sym": {
+            "type": "string",
+            "description": "The symbol representing the given index."
+          },
+          "op": {
+            "type": "number",
+            "format": "double",
+            "description": "Today's official opening value."
+          },
+          "o": {
+            "type": "number",
+            "format": "double",
+            "description": "The opening index value for this aggregate window."
+          },
+          "c": {
+            "type": "number",
+            "format": "double",
+            "description": "The closing index value for this aggregate window."
+          },
+          "h": {
+            "type": "number",
+            "format": "double",
+            "description": "The highest index value for this aggregate window."
+          },
+          "l": {
+            "type": "number",
+            "format": "double",
+            "description": "The lowest index value for this aggregate window."
+          },
+          "s": {
+            "type": "integer",
+            "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+          },
+          "e": {
+            "type": "integer",
+            "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+          }
+        }
+      },
+      "IndicesMinuteAggregateEvent": {
+        "allOf": [
+          {
+            "type": "object",
+            "properties": {
+              "ev": {
+                "description": "The event type."
+              },
+              "sym": {
+                "type": "string",
+                "description": "The symbol representing the given index."
+              },
+              "op": {
+                "type": "number",
+                "format": "double",
+                "description": "Today's official opening value."
+              },
+              "o": {
+                "type": "number",
+                "format": "double",
+                "description": "The opening index value for this aggregate window."
+              },
+              "c": {
+                "type": "number",
+                "format": "double",
+                "description": "The closing index value for this aggregate window."
+              },
+              "h": {
+                "type": "number",
+                "format": "double",
+                "description": "The highest index value for this aggregate window."
+              },
+              "l": {
+                "type": "number",
+                "format": "double",
+                "description": "The lowest index value for this aggregate window."
+              },
+              "s": {
+                "type": "integer",
+                "description": "The timestamp of the starting index for this aggregate window in Unix Milliseconds."
+              },
+              "e": {
+                "type": "integer",
+                "description": "The timestamp of the ending index for this aggregate window in Unix Milliseconds."
+              }
+            }
+          },
+          {
+            "properties": {
+              "ev": {
+                "enum": [
+                  "AM"
+                ],
+                "description": "The event type."
+              }
+            }
+          }
+        ]
+      },
+      "IndicesValueEvent": {
+        "type": "object",
+        "properties": {
+          "ev": {
+            "type": "string",
+            "enum": [
+              "V"
+            ],
+            "description": "The event type."
+          },
+          "val": {
+            "description": "The value of the index."
+          },
+          "T": {
+            "description": "The assigned ticker of the index."
+          },
+          "t": {
+            "description": "The Timestamp in Unix MS."
+          }
+        }
       }
     },
     "parameters": {
@@ -3609,7 +3734,29 @@
           "pattern": "/^(?<from>([A-Z]*)-(?<to>[A-Z]{3}))$/"
         },
         "example": "*"
+      },
+      "IndicesIndexParam": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "*"
+      },
+      "IndicesIndexParamWithoutWildcard": {
+        "name": "ticker",
+        "in": "query",
+        "description": "Specify an index ticker using \"I:\" prefix or use * to subscribe to all index tickers.\nYou can also use a comma separated list to subscribe to multiple index tickers.\nYou can retrieve available index tickers from our [Index Tickers API](https://polygon.io/docs/indices/get_v3_reference_tickers).\n",
+        "required": true,
+        "schema": {
+          "type": "string",
+          "pattern": "/^(I:[a-zA-Z0-9]+)$/"
+        },
+        "example": "I:SPX"
       }
     }
   }
-}
\ No newline at end of file
+}

Client update needed to match REST spec changes

A diff between this client library's spec and our hosted spec was found. The client may need an update to match any changes in our API. See the diff below:

--- https://raw.githubusercontent.com/polygon-io/client-jvm/master/.polygon/rest.json
+++ https://api.polygon.io/openapi
@@ -150,7 +150,7 @@
       },
       "IndicesTickerPathParam": {
         "description": "The ticker symbol of Index.",
-        "example": "I:DJI",
+        "example": "I:NDX",
         "in": "path",
         "name": "indicesTicker",
         "required": true,
@@ -6339,7 +6339,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get exponential moving average (EMA) data.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -6485,16 +6485,16 @@
             "content": {
               "application/json": {
                 "example": {
-                  "next_url": "https://api.polygon.io/v1/indicators/ema/I:DJI?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTQwNDcuNDEwMDAwMDAwMDAwMyUyQyUyMmglMjIlM0EwJTJDJTIybCUyMiUzQTAlMkMlMjJ0JTIyJTNBMTY3ODA4MjQwMDAwMCU3RCZhcz0mZXhwYW5kX3VuZGVybHlpbmc9ZmFsc2UmbGltaXQ9MTAmb3JkZXI9ZGVzYyZzZXJpZXNfdHlwZT1jbG9zZSZ0aW1lc3Bhbj1kYXkmdGltZXN0YW1wLmx0PTE2NzgxNjUyMDAwMDAmd2luZG93PTU",
-                  "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3",
+                  "next_url": "https://api.polygon.io/v1/indicators/ema/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MjE5MjAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0xJm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2UmdGltZXNwYW49ZGF5JnRpbWVzdGFtcC5sdD0xNjg3MjM3MjAwMDAwJndpbmRvdz01MA",
+                  "request_id": "b9201816341441eed663a90443c0623a",
                   "results": {
                     "underlying": {
-                      "url": "https://api.polygon.io/v2/aggs/ticker/I:DJI/range/1/day/1063281600000/1678726291180?limit=35&sort=desc"
+                      "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366449650?limit=226&sort=desc"
                     },
                     "values": [
                       {
-                        "timestamp": 1681966800000,
-                        "value": 33355.64416487007
+                        "timestamp": 1687237200000,
+                        "value": 14452.002555459003
                       }
                     ]
                   },
@@ -8001,7 +7996,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get MACD data.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -8167,24 +8162,24 @@
             "content": {
               "application/json": {
                 "example": {
-                  "next_url": "https://api.polygon.io/v1/indicators/macd/I:DJI?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy",
-                  "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3",
+                  "next_url": "https://api.polygon.io/v1/indicators/macd/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MTUwODAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0yJmxvbmdfd2luZG93PTI2Jm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2Umc2hvcnRfd2luZG93PTEyJnNpZ25hbF93aW5kb3c9OSZ0aW1lc3Bhbj1kYXkmdGltZXN0YW1wLmx0PTE2ODcyMTkyMDAwMDA",
+                  "request_id": "2eeda0be57e83cbc64cc8d1a74e84dbd",
                   "results": {
                     "underlying": {
-                      "url": "https://api.polygon.io/v2/aggs/ticker/I:DJI/range/1/day/1063281600000/1678726155743?limit=129&sort=desc"
+                      "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366537196?limit=121&sort=desc"
                     },
                     "values": [
                       {
-                        "histogram": -48.29157370302107,
-                        "signal": 225.60959338746886,
-                        "timestamp": 1681966800000,
-                        "value": 177.3180196844478
+                        "histogram": -4.7646219788108795,
+                        "signal": 220.7596784587801,
+                        "timestamp": 1687237200000,
+                        "value": 215.9950564799692
                       },
                       {
-                        "histogram": -37.55634001543484,
-                        "signal": 237.6824868132241,
-                        "timestamp": 1681963200000,
-                        "value": 200.12614679778926
+                        "histogram": 3.4518937661882205,
+                        "signal": 221.9508339534828,
+                        "timestamp": 1687219200000,
+                        "value": 225.40272771967102
                       }
                     ]
                   },
@@ -9707,7 +9695,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get relative strength index (RSI) data.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -9853,16 +9841,16 @@
             "content": {
               "application/json": {
                 "example": {
-                  "next_url": "https://api.polygon.io/v1/indicators/rsi/I:DJI?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTQwNDcuNDEwMDAwMDAwMDAwMyUyQyUyMmglMjIlM0EwJTJDJTIybCUyMiUzQTAlMkMlMjJ0JTIyJTNBMTY3ODA4MjQwMDAwMCU3RCZhcz0mZXhwYW5kX3VuZGVybHlpbmc9ZmFsc2UmbGltaXQ9MTAmb3JkZXI9ZGVzYyZzZXJpZXNfdHlwZT1jbG9zZSZ0aW1lc3Bhbj1kYXkmdGltZXN0YW1wLmx0PTE2NzgxNjUyMDAwMDAmd2luZG93PTU",
-                  "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3",
+                  "next_url": "https://api.polygon.io/v1/indicators/rsi/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MjE5MjAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0xJm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2UmdGltZXNwYW49ZGF5JnRpbWVzdGFtcC5sdD0xNjg3MjM3MjAwMDAwJndpbmRvdz0xNA",
+                  "request_id": "28a8417f521f98e1d08f6ed7d1fbcad3",
                   "results": {
                     "underlying": {
-                      "url": "https://api.polygon.io/v2/aggs/ticker/I:DJI/range/1/day/1063281600000/1678725829099?limit=35&sort=desc"
+                      "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366658253?limit=66&sort=desc"
                     },
                     "values": [
                       {
-                        "timestamp": 1681966800000,
-                        "value": 55.89394103205648
+                        "timestamp": 1687237200000,
+                        "value": 73.98019439047955
                       }
                     ]
                   },
@@ -11325,7 +11308,7 @@
         "parameters": [
           {
             "description": "The ticker symbol for which to get simple moving average (SMA) data.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -11471,16 +11454,16 @@
             "content": {
               "application/json": {
                 "example": {
-                  "next_url": "https://api.polygon.io/v1/indicators/sma/I:DJI?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTQwNDcuNDEwMDAwMDAwMDAwMyUyQyUyMmglMjIlM0EwJTJDJTIybCUyMiUzQTAlMkMlMjJ0JTIyJTNBMTY3ODA4MjQwMDAwMCU3RCZhcz0mZXhwYW5kX3VuZGVybHlpbmc9ZmFsc2UmbGltaXQ9MTAmb3JkZXI9ZGVzYyZzZXJpZXNfdHlwZT1jbG9zZSZ0aW1lc3Bhbj1kYXkmdGltZXN0YW1wLmx0PTE2NzgxNjUyMDAwMDAmd2luZG93PTU",
-                  "request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3",
+                  "next_url": "https://api.polygon.io/v1/indicators/sma/I:NDX?cursor=YWRqdXN0ZWQ9dHJ1ZSZhcD0lN0IlMjJ2JTIyJTNBMCUyQyUyMm8lMjIlM0EwJTJDJTIyYyUyMiUzQTE1MDg0Ljk5OTM4OTgyMDAzJTJDJTIyaCUyMiUzQTAlMkMlMjJsJTIyJTNBMCUyQyUyMnQlMjIlM0ExNjg3MjE5MjAwMDAwJTdEJmFzPSZleHBhbmRfdW5kZXJseWluZz1mYWxzZSZsaW1pdD0xJm9yZGVyPWRlc2Mmc2VyaWVzX3R5cGU9Y2xvc2UmdGltZXNwYW49ZGF5JnRpbWVzdGFtcC5sdD0xNjg3MjM3MjAwMDAwJndpbmRvdz01Mw",
+                  "request_id": "4cae270008cb3f947e3f92c206e3888a",
                   "results": {
                     "underlying": {
-                      "url": "https://api.polygon.io/v2/aggs/ticker/I:DJI/range/1/day/1063281600000/1678725829099?limit=35&sort=desc"
+                      "url": "https://api.polygon.io/v2/aggs/ticker/I:NDX/range/1/day/1678338000000/1687366378997?limit=240&sort=desc"
                     },
                     "values": [
                       {
-                        "timestamp": 1681966800000,
-                        "value": 33236.3424
+                        "timestamp": 1687237200000,
+                        "value": 14362.676417589264
                       }
                     ]
                   },
@@ -13042,7 +13020,7 @@
         "parameters": [
           {
             "description": "The ticker symbol of Index.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -13057,7 +13035,6 @@
             "name": "date",
             "required": true,
             "schema": {
-              "format": "date",
               "type": "string"
             }
           }
@@ -13067,15 +13044,15 @@
             "content": {
               "application/json": {
                 "example": {
-                  "afterHours": 31909.64,
-                  "close": 32245.14,
-                  "from": "2023-03-10",
-                  "high": 32988.26,
-                  "low": 32200.66,
-                  "open": 32922.75,
-                  "preMarket": 32338.23,
+                  "afterHours": 11830.43006295237,
+                  "close": 11830.28178808306,
+                  "from": "2023-03-10T00:00:00.000Z",
+                  "high": 12069.62262033557,
+                  "low": 11789.85923449393,
+                  "open": 12001.69552583921,
+                  "preMarket": 12001.69552583921,
                   "status": "OK",
-                  "symbol": "I:DJI"
+                  "symbol": "I:NDX"
                 },
                 "schema": {
                   "properties": {
@@ -13145,6 +13121,7 @@
         "tags": [
           "stocks:open-close"
         ],
+        "x-polygon-entitlement-allowed-limited-tickers": true,
         "x-polygon-entitlement-data-type": {
           "description": "Aggregate data",
           "name": "aggregates"
@@ -16258,7 +16235,7 @@
         "parameters": [
           {
             "description": "The ticker symbol of Index.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -16276,17 +16253,17 @@
                   "request_id": "b2170df985474b6d21a6eeccfb6bee67",
                   "results": [
                     {
-                      "T": "I:DJI",
-                      "c": 33786.62,
-                      "h": 33786.62,
-                      "l": 33677.74,
-                      "o": 33677.74,
-                      "t": 1682020800000
+                      "T": "I:NDX",
+                      "c": 15070.14948566977,
+                      "h": 15127.4195807999,
+                      "l": 14946.7243781848,
+                      "o": 15036.48391066877,
+                      "t": 1687291200000
                     }
                   ],
                   "resultsCount": 1,
                   "status": "OK",
-                  "ticker": "I:DJI"
+                  "ticker": "I:NDX"
                 },
                 "schema": {
                   "allOf": [
@@ -16387,6 +16360,7 @@
         "tags": [
           "indices:aggregates"
         ],
+        "x-polygon-entitlement-allowed-limited-tickers": true,
         "x-polygon-entitlement-data-type": {
           "description": "Aggregate data",
           "name": "aggregates"
@@ -16403,7 +16377,7 @@
         "parameters": [
           {
             "description": "The ticker symbol of Index.",
-            "example": "I:DJI",
+            "example": "I:NDX",
             "in": "path",
             "name": "indicesTicker",
             "required": true,
@@ -16492,22 +16466,22 @@
                   "request_id": "0cf72b6da685bcd386548ffe2895904a",
                   "results": [
                     {
-                      "c": 32245.14,
-                      "h": 32988.26,
-                      "l": 32200.66,
-                      "o": 32922.75,
+                      "c": 11995.88235998666,
+                      "h": 12340.44936267155,
+                      "l": 11970.34221717375,
+                      "o": 12230.83658266843,
                       "t": 1678341600000
                     },
                     {
-                      "c": 31787.7,
-                      "h": 32422.100000000002,
-                      "l": 31786.06,
-                      "o": 32198.9,
+                      "c": 11830.28178808306,
+                      "h": 12069.62262033557,
+                      "l": 11789.85923449393,
+                      "o": 12001.69552583921,
                       "t": 1678428000000
                     }
                   ],
                   "status": "OK",
-                  "ticker": "I:DJI"
+                  "ticker": "I:NDX"
                 },
                 "schema": {
                   "allOf": [
@@ -16608,6 +16575,7 @@
         "tags": [
           "indices:aggregates"
         ],
+        "x-polygon-entitlement-allowed-limited-tickers": true,
         "x-polygon-entitlement-data-type": {
           "description": "Aggregate data",
           "name": "aggregates"
@@ -18512,7 +18480,9 @@
                         "c": 0.296,
                         "h": 0.296,
                         "l": 0.294,
+                        "n": 2,
                         "o": 0.296,
+                        "t": 1684427880000,
                         "v": 123.4866,
                         "vw": 0
                       },
@@ -18861,7 +18830,9 @@
                       "c": 16235.1,
                       "h": 16264.29,
                       "l": 16129.3,
+                      "n": 558,
                       "o": 16257.51,
+                      "t": 1684428960000,
                       "v": 19.30791925,
                       "vw": 0
                     },
@@ -19410,7 +19380,9 @@
                         "c": 0.062377,
                         "h": 0.062377,
                         "l": 0.062377,
+                        "n": 2,
                         "o": 0.062377,
+                        "t": 1684426740000,
                         "v": 35420,
                         "vw": 0
                       },
@@ -19747,7 +19718,9 @@
                         "c": 0.117769,
                         "h": 0.11779633,
                         "l": 0.11773698,
+                        "n": 1,
                         "o": 0.11778,
+                        "t": 1684422000000,
                         "v": 202
                       },
                       "prevDay": {
@@ -20052,7 +20024,9 @@
                       "c": 1.18396,
                       "h": 1.18423,
                       "l": 1.1838,
+                      "n": 85,
                       "o": 1.18404,
+                      "t": 1684422000000,
                       "v": 41
                     },
                     "prevDay": {
@@ -20368,7 +20341,9 @@
                         "c": 0.886156,
                         "h": 0.886156,
                         "l": 0.886156,
+                        "n": 1,
                         "o": 0.886156,
+                        "t": 1684422000000,
                         "v": 1
                       },
                       "prevDay": {
@@ -20698,7 +20672,9 @@
                         "c": 20.506,
                         "h": 20.506,
                         "l": 20.506,
+                        "n": 1,
                         "o": 20.506,
+                        "t": 1684428600000,
                         "v": 5000,
                         "vw": 20.5105
                       },
@@ -21096,7 +21071,9 @@
                       "c": 120.4201,
                       "h": 120.468,
                       "l": 120.37,
+                      "n": 762,
                       "o": 120.435,
+                      "t": 1684428720000,
                       "v": 270796,
                       "vw": 120.4129
                     },
@@ -21509,7 +21485,9 @@
                         "c": 14.2284,
                         "h": 14.325,
                         "l": 14.2,
+                        "n": 5,
                         "o": 14.28,
+                        "t": 1684428600000,
                         "v": 6108,
                         "vw": 14.2426
                       },
@@ -22513,7 +22490,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -22521,7 +22498,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -22529,7 +22506,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -22537,7 +22514,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -22738,7 +22715,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -22746,7 +22723,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -22754,7 +22731,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -22762,7 +22739,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -22978,7 +22955,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -22986,7 +22963,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -22994,7 +22971,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -23002,7 +22979,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -24122,7 +24099,7 @@
             }
           },
           {
-            "description": "Search by ticker.",
+            "description": "Range by ticker.",
             "in": "query",
             "name": "ticker.gte",
             "schema": {
@@ -24130,7 +24107,7 @@
             }
           },
           {
-            "description": "Search by ticker.",
+            "description": "Range by ticker.",
             "in": "query",
             "name": "ticker.gt",
             "schema": {
@@ -24138,7 +24115,7 @@
             }
           },
           {
-            "description": "Search by ticker.",
+            "description": "Range by ticker.",
             "in": "query",
             "name": "ticker.lte",
             "schema": {
@@ -24146,7 +24123,7 @@
             }
           },
           {
-            "description": "Search by ticker.",
+            "description": "Range by ticker.",
             "in": "query",
             "name": "ticker.lt",
             "schema": {
@@ -24154,7 +24131,7 @@
             }
           },
           {
-            "description": "Search by ex_dividend_date.",
+            "description": "Range by ex_dividend_date.",
             "in": "query",
             "name": "ex_dividend_date.gte",
             "schema": {
@@ -24163,7 +24140,7 @@
             }
           },
           {
-            "description": "Search by ex_dividend_date.",
+            "description": "Range by ex_dividend_date.",
             "in": "query",
             "name": "ex_dividend_date.gt",
             "schema": {
@@ -24172,7 +24149,7 @@
             }
           },
           {
-            "description": "Search by ex_dividend_date.",
+            "description": "Range by ex_dividend_date.",
             "in": "query",
             "name": "ex_dividend_date.lte",
             "schema": {
@@ -24181,7 +24158,7 @@
             }
           },
           {
-            "description": "Search by ex_dividend_date.",
+            "description": "Range by ex_dividend_date.",
             "in": "query",
             "name": "ex_dividend_date.lt",
             "schema": {
@@ -24190,7 +24167,7 @@
             }
           },
           {
-            "description": "Search by record_date.",
+            "description": "Range by record_date.",
             "in": "query",
             "name": "record_date.gte",
             "schema": {
@@ -24199,7 +24176,7 @@
             }
           },
           {
-            "description": "Search by record_date.",
+            "description": "Range by record_date.",
             "in": "query",
             "name": "record_date.gt",
             "schema": {
@@ -24208,7 +24185,7 @@
             }
           },
           {
-            "description": "Search by record_date.",
+            "description": "Range by record_date.",
             "in": "query",
             "name": "record_date.lte",
             "schema": {
@@ -24217,7 +24194,7 @@
             }
           },
           {
-            "description": "Search by record_date.",
+            "description": "Range by record_date.",
             "in": "query",
             "name": "record_date.lt",
             "schema": {
@@ -24226,7 +24203,7 @@
             }
           },
           {
-            "description": "Search by declaration_date.",
+            "description": "Range by declaration_date.",
             "in": "query",
             "name": "declaration_date.gte",
             "schema": {
@@ -24235,7 +24212,7 @@
             }
           },
           {
-            "description": "Search by declaration_date.",
+            "description": "Range by declaration_date.",
             "in": "query",
             "name": "declaration_date.gt",
             "schema": {
@@ -24244,7 +24221,7 @@
             }
           },
           {
-            "description": "Search by declaration_date.",
+            "description": "Range by declaration_date.",
             "in": "query",
             "name": "declaration_date.lte",
             "schema": {
@@ -24253,7 +24230,7 @@
             }
           },
           {
-            "description": "Search by declaration_date.",
+            "description": "Range by declaration_date.",
             "in": "query",
             "name": "declaration_date.lt",
             "schema": {
@@ -24262,7 +24239,7 @@
             }
           },
           {
-            "description": "Search by pay_date.",
+            "description": "Range by pay_date.",
             "in": "query",
             "name": "pay_date.gte",
             "schema": {
@@ -24271,7 +24248,7 @@
             }
           },
           {
-            "description": "Search by pay_date.",
+            "description": "Range by pay_date.",
             "in": "query",
             "name": "pay_date.gt",
             "schema": {
@@ -24280,7 +24257,7 @@
             }
           },
           {
-            "description": "Search by pay_date.",
+            "description": "Range by pay_date.",
             "in": "query",
             "name": "pay_date.lte",
             "schema": {
@@ -24289,7 +24266,7 @@
             }
           },
           {
-            "description": "Search by pay_date.",
+            "description": "Range by pay_date.",
             "in": "query",
             "name": "pay_date.lt",
             "schema": {
@@ -24298,7 +24275,7 @@
             }
           },
           {
-            "description": "Search by cash_amount.",
+            "description": "Range by cash_amount.",
             "in": "query",
             "name": "cash_amount.gte",
             "schema": {
@@ -24306,7 +24283,7 @@
             }
           },
           {
-            "description": "Search by cash_amount.",
+            "description": "Range by cash_amount.",
             "in": "query",
             "name": "cash_amount.gt",
             "schema": {
@@ -24314,7 +24291,7 @@
             }
           },
           {
-            "description": "Search by cash_amount.",
+            "description": "Range by cash_amount.",
             "in": "query",
             "name": "cash_amount.lte",
             "schema": {
@@ -24322,7 +24299,7 @@
             }
           },
           {
-            "description": "Search by cash_amount.",
+            "description": "Range by cash_amount.",
             "in": "query",
             "name": "cash_amount.lt",
             "schema": {
@@ -24568,349 +24545,6 @@
             ]
           }
         }
-      },
-      "post": {
-        "description": "Manually add Polygon a dividend.",
-        "operationId": "CreateDividend",
-        "parameters": [
-          {
-            "description": "If true don't trigger overlay",
-            "in": "query",
-            "name": "skip_overlay_trigger",
-            "schema": {
-              "default": false,
-              "type": "boolean"
-            }
-          }
-        ],
-        "requestBody": {
-          "content": {
-            "application/json": {
-              "schema": {
-                "properties": {
-                  "cash_amount": {
-                    "description": "The cash amount of the dividend per share owned.",
-                    "type": "number",
-                    "x-polygon-go-field-tags": {
-                      "tags": [
-                        {
-                          "key": "binding",
-                          "value": "required"
-                        }
-                      ]
-                    }
-                  },
-                  "currency": {
-                    "description": "The currency in which the dividend is paid.",
-                    "type": "string",
-                    "x-polygon-go-field-tags": {
-                      "tags": [
-                        {
-                          "key": "binding",
-                          "value": "required"
-                        }
-                      ]
-                    }
-                  },
-                  "declaration_date": {
-                    "description": "The date that the dividend was announced.",
-                    "type": "string"
-                  },
-                  "dividend_type": {
-                    "description": "The type of dividend. Dividends that have been paid and/or are expected to be paid on consistent schedules are denoted as CD.\nSpecial Cash dividends that have been paid that are infrequent or unusual, and/or can not be expected to occur in the future are denoted as SC.\nLong-Term and Short-Term capital gain distributions are denoted as LT and ST, respectively.",
-                    "enum": [
-                      "CD",
-                      "SC",
-                      "LT",
-                      "ST"
-                    ],
-                    "type": "string",
-                    "x-polygon-go-field-tags": {
-                      "tags": [
-                        {
-                          "key": "binding",
-                          "value": "required"
-                        }
-                      ]
-                    }
-                  },
-                  "ex_dividend_date": {
-                    "description": "The date that the stock first trades without the dividend, determined by the exchange.",
-                    "type": "string",
-                    "x-polygon-go-field-tags": {
-                      "tags": [
-                        {
-                          "key": "binding",
-                          "value": "required"
-                        }
-                      ]
-                    }
-                  },
-                  "frequency": {
-                    "description": "The number of times per year the dividend is paid out.  Possible values are 0 (one-time), 1 (annually), 2 (bi-annually), 4 (quarterly), and 12 (monthly).",
-                    "type": "integer",
-                    "x-polygon-go-field-tags": {
-                      "tags": [
-                        {
-                          "key": "binding",
-                          "value": "required"
-                        }
-                      ]
-                    }
-                  },
-                  "pay_date": {
-                    "description": "The date that the dividend is paid out.",
-                    "type": "string"
-                  },
-                  "record_date": {
-                    "description": "The date that the stock must be held to receive the dividend, set by the company.",
-                    "type": "string"
-                  },
-                  "ticker": {
-                    "description": "The ticker symbol of the dividend.",
-                    "type": "string",
-                    "x-polygon-go-field-tags": {
-                      "tags": [
-                        {
-                          "key": "binding",
-                          "value": "required"
-                        }
-                      ]
-                    }
-                  }
-                },
-                "required": [
-                  "ticker",
-                  "ex_dividend_date",
-                  "frequency",
-                  "cash_amount",
-                  "dividend_type"
-                ],
-                "type": "object",
-                "x-polygon-go-struct-tags": {
-                  "tags": [
-                    "db"
-                  ]
-                }
-              }
-            }
-          },
-          "description": "Pass the desired dividend in the request body.",
-          "required": true
-        },
-        "responses": {
-          "200": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "request_id": {
-                      "type": "string"
-                    },
-                    "results": {
-                      "properties": {
-                        "cash_amount": {
-                          "description": "The cash amount of the dividend per share owned.",
-                          "type": "number",
-                          "x-polygon-go-field-tags": {
-                            "tags": [
-                              {
-                                "key": "binding",
-                                "value": "required"
-                              }
-                            ]
-                          }
-                        },
-                        "currency": {
-                          "description": "The currency in which the dividend is paid.",
-                          "type": "string",
-                          "x-polygon-go-field-tags": {
-                            "tags": [
-                              {
-                                "key": "binding",
-                                "value": "required"
-                              }
-                            ]
-                          }
-                        },
-                        "declaration_date": {
-                          "description": "The date that the dividend was announced.",
-                          "type": "string"
-                        },
-                        "dividend_type": {
-                          "description": "The type of dividend. Dividends that have been paid and/or are expected to be paid on consistent schedules are denoted as CD.\nSpecial Cash dividends that have been paid that are infrequent or unusual, and/or can not be expected to occur in the future are denoted as SC.\nLong-Term and Short-Term capital gain distributions are denoted as LT and ST, respectively.",
-                          "enum": [
-                            "CD",
-                            "SC",
-                            "LT",
-                            "ST"
-                          ],
-                          "type": "string",
-                          "x-polygon-go-field-tags": {
-                            "tags": [
-                              {
-                                "key": "binding",
-                                "value": "required"
-                              }
-                            ]
-                          }
-                        },
-                        "ex_dividend_date": {
-                          "description": "The date that the stock first trades without the dividend, determined by the exchange.",
-                          "type": "string",
-                          "x-polygon-go-field-tags": {
-                            "tags": [
-                              {
-                                "key": "binding",
-                                "value": "required"
-                              }
-                            ]
-                          }
-                        },
-                        "frequency": {
-                          "description": "The number of times per year the dividend is paid out.  Possible values are 0 (one-time), 1 (annually), 2 (bi-annually), 4 (quarterly), and 12 (monthly).",
-                          "type": "integer",
-                          "x-polygon-go-field-tags": {
-                            "tags": [
-                              {
-                                "key": "binding",
-                                "value": "required"
-                              }
-                            ]
-                          }
-                        },
-                        "pay_date": {
-                          "description": "The date that the dividend is paid out.",
-                          "type": "string"
-                        },
-                        "record_date": {
-                          "description": "The date that the stock must be held to receive the dividend, set by the company.",
-                          "type": "string"
-                        },
-                        "ticker": {
-                          "description": "The ticker symbol of the dividend.",
-                          "type": "string",
-                          "x-polygon-go-field-tags": {
-                            "tags": [
-                              {
-                                "key": "binding",
-                                "value": "required"
-                              }
-                            ]
-                          }
-                        }
-                      },
-                      "required": [
-                        "ticker",
-                        "ex_dividend_date",
-                        "frequency",
-                        "cash_amount",
-                        "dividend_type"
-                      ],
-                      "type": "object",
-                      "x-polygon-go-struct-tags": {
-                        "tags": [
-                          "db"
-                        ]
-                      }
-                    },
-                    "status": {
-                      "type": "string"
-                    }
-                  },
-                  "required": [
-                    "request_id"
-                  ],
-                  "type": "object"
-                }
-              }
-            },
-            "description": "OK"
-          },
-          "400": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "error": {
-                      "type": "string"
-                    },
-                    "request_id": {
-                      "type": "string"
-                    },
-                    "status": {
-                      "type": "string"
-                    }
-                  },
-                  "required": [
-                    "request_id",
-                    "error"
-                  ],
-                  "type": "object"
-                }
-              }
-            },
-            "description": "the requested update was unable to be performed due to an invalid request body"
-          },
-          "409": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "error": {
-                      "type": "string"
-                    },
-                    "request_id": {
-                      "type": "string"
-                    },
-                    "status": {
-                      "type": "string"
-                    }
-                  },
-                  "required": [
-                    "request_id",
-                    "error"
-                  ],
-                  "type": "object"
-                }
-              }
-            },
-            "description": "a dividend already exists for this date and ticker"
-          },
-          "default": {
-            "content": {
-              "application/json": {
-                "schema": {
-                  "properties": {
-                    "error": {
-                      "type": "string"
-                    },
-                    "request_id": {
-                      "type": "string"
-                    },
-                    "status": {
-                      "type": "string"
-                    }
-                  },
-                  "required": [
-                    "request_id",
-                    "error"
-                  ],
-                  "type": "object"
-                }
-              }
-            },
-            "description": "unknown error"
-          }
-        },
-        "summary": "Dividends v3",
-        "tags": [
-          "reference:stocks"
-        ],
-        "x-polygon-entitlement-data-type": {
-          "description": "Reference data",
-          "name": "reference"
-        }
       }
     },
     "/v3/reference/exchanges": {
@@ -26072,7 +25706,7 @@
             }
           },
           {
-            "description": "Search by ticker.",
+            "description": "Range by ticker.",
             "in": "query",
             "name": "ticker.gte",
             "schema": {
@@ -26080,7 +25714,7 @@
             }
           },
           {
-            "description": "Search by ticker.",
+            "description": "Range by ticker.",
             "in": "query",
             "name": "ticker.gt",
             "schema": {
@@ -26088,7 +25722,7 @@
             }
           },
           {
-            "description": "Search by ticker.",
+            "description": "Range by ticker.",
             "in": "query",
             "name": "ticker.lte",
             "schema": {
@@ -26096,7 +25730,7 @@
             }
           },
           {
-            "description": "Search by ticker.",
+            "description": "Range by ticker.",
             "in": "query",
             "name": "ticker.lt",
             "schema": {
@@ -27500,8 +27134,8 @@
           "name": "snapshots"
         },
         "x-polygon-entitlement-market-type": {
-          "description": "Stocks data",
-          "name": "stocks"
+          "description": "All asset classes",
+          "name": "universal"
         },
         "x-polygon-paginate": {
           "limit": {
@@ -27516,8 +27150,7 @@
             ]
           }
         }
-      },
-      "x-polygon-draft": true
+      }
     },
     "/v3/snapshot/indices": {
       "get": {
@@ -27535,7 +27168,6 @@
           },
           {
             "description": "Search a range of tickers lexicographically.",
-            "example": "I:DJI",
             "in": "query",
             "name": "ticker",
             "schema": {
@@ -27830,7 +27462,7 @@
         "parameters": [
           {
             "description": "The underlying ticker symbol of the option contract.",
-            "example": "AAPL",
+            "example": "EVRI",
             "in": "path",
             "name": "underlyingAsset",
             "required": true,
@@ -28480,7 +28112,7 @@
         "parameters": [
           {
             "description": "The underlying ticker symbol of the option contract.",
-            "example": "AAPL",
+            "example": "EVRI",
             "in": "path",
             "name": "underlyingAsset",
             "required": true,
@@ -28490,7 +28122,7 @@
           },
           {
             "description": "The option contract identifier.",
-            "example": "O:AAPL230616C00150000",
+            "example": "O:EVRI240119C00002500",
             "in": "path",
             "name": "optionContract",
             "required": true,
@@ -29009,7 +28641,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -29017,7 +28649,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -29025,7 +28657,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -29033,7 +28665,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -29255,7 +28887,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -29263,7 +28895,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -29271,7 +28903,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -29279,7 +28911,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -29500,7 +29132,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gte",
             "schema": {
@@ -29508,7 +29140,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.gt",
             "schema": {
@@ -29516,7 +29148,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lte",
             "schema": {
@@ -29524,7 +29156,7 @@
             }
           },
           {
-            "description": "Search by timestamp.",
+            "description": "Range by timestamp.",
             "in": "query",
             "name": "timestamp.lt",
             "schema": {
@@ -30734,7 +30366,8 @@
             "/v2/snapshot/locale/global/markets/crypto/tickers",
             "/v2/snapshot/locale/global/markets/crypto/{direction}",
             "/v2/snapshot/locale/global/markets/crypto/tickers/{ticker}",
-            "/v2/snapshot/locale/global/markets/crypto/tickers/{ticker}/book"
+            "/v2/snapshot/locale/global/markets/crypto/tickers/{ticker}/book",
+            "/v3/snapshot"
           ]
         },
         {
@@ -30824,7 +30457,8 @@
           "paths": [
             "/v2/snapshot/locale/global/markets/forex/tickers",
             "/v2/snapshot/locale/global/markets/forex/{direction}",
-            "/v2/snapshot/locale/global/markets/forex/tickers/{ticker}"
+            "/v2/snapshot/locale/global/markets/forex/tickers/{ticker}",
+            "/v3/snapshot"
           ]
         },
         {
@@ -30895,7 +30529,8 @@
         {
           "group": "Snapshots",
           "paths": [
-            "/v3/snapshot/indices"
+            "/v3/snapshot/indices",
+            "/v3/snapshot"
           ]
         }
       ],
@@ -30966,7 +30601,7 @@
           "paths": [
             "/v3/snapshot/options/{underlyingAsset}/{optionContract}",
             "/v3/snapshot/options/{underlyingAsset}",
-            "/v3/snapshot/options"
+            "/v3/snapshot"
           ]
         },
         {
@@ -31102,7 +30737,7 @@
             "/v2/snapshot/locale/us/markets/stocks/tickers",
             "/v2/snapshot/locale/us/markets/stocks/{direction}",
             "/v2/snapshot/locale/us/markets/stocks/tickers/{stocksTicker}",
-            "/v3/snapshot/stocks"
+            "/v3/snapshot"
           ]
         },
         {

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.