Git Product home page Git Product logo

client-jvm's Introduction

Polygon JVM Client SDK written in Kotlin - WebSocket & RESTful APIs

Welcome to the official JVM client library SDK, written in Kotlin, for the Polygon REST and WebSocket API. This client SDK is usable by any JVM language (including in Android SDK version 21+). To get started, please see the Getting Started section in our documentation, and the sample directory for code snippets.

Install

To use the SDK in a Gradle project:

repositories {
    jcenter()
    maven { url "https://jitpack.io" }
}

dependencies {
    implementation 'com.github.polygon-io:client-jvm:vX.Y.Z' 
}

Please see the GitHub releases for the current release version.

Getting started

To access real-time and historical market data with Polygon.io, you will first need to create an account and obtain an API key to authenticate your requests. If you run the samples makes sure to set the POLYGON_API_KEY environment variable for the sample code to use. To persist the environment variable you need to add the above command to the shell startup script (e.g. .bashrc or .bash_profile.

setx POLYGON_API_KEY "<your_api_key>"   # windows
export POLYGON_API_KEY="<your_api_key>" # mac/linux

After setup, you can start using our SDK, which includes a rich set of features:

  • Configurable HTTP client via HttpClientProvider
  • Configurable REST request options
  • Iterators to handle request pagination automatically
  • Asynchronous APIs built on top of Kotlin co-routines
  • Idiomatic interoperability with Java
    • Synchronous and callback based APIs
    • Generated builder classes for API parameter data classes

Please see the sample module in this repo for examples. There are Kotlin samples and Java sample. You can run the samples by cloning the repo and running the following commands from the repo's root directory:

Kotlin: ./gradlew kotlinSample

Java: ./gradlew javaSample

REST API Client

The REST API provides endpoints that let you query the latest stock, options, indices, forex, and crypto market data market data. You can request data using client methods.

Create the client using your API key.

    val polygonKey = System.getenv("POLYGON_API_KEY")

    val polygonClient = PolygonRestClient(
        polygonKey, 
        httpClientProvider = okHttpClientProvider
    )

Get aggregate bars for a stock over a given date range in custom time window sizes.

    println("AAPL Aggs:")
    val params = AggregatesParameters(
        ticker = "AAPL",
        timespan = "day",
        fromDate = "2023-07-03",
        toDate = "2023-07-07",
        limit = 50_000,
    )
    polygonClient.getAggregatesBlocking(params)

Get trades for a ticker symbol in a given time range.

    println("AAPL Trades:")
    val params = TradesParameters(timestamp = ComparisonQueryFilterParameters.equal("2023-02-01"), limit = 2)
    polygonClient.getTradesBlocking("AAPL", params)

Get the last trade for a given stock.

    println("Last AAPL trade:")
    polygonClient.stocksClient.getLastTradeBlockingV2("AAPL")

Get the NBBO quotes for a ticker symbol in a given time range.

    println("AAPL Quotes:")
    val params = QuotesParameters(timestamp = ComparisonQueryFilterParameters.equal("2023-02-01"), limit = 2)
    polygonClient.getQuotesBlocking("AAPL", params)

Get the last NBBO quote for a given stock.

    println("Last AAPL quote:")
    polygonClient.stocksClient.getLastQuoteBlockingV2("AAPL")

Please see more detailed code in the sample directory.

WebSocket Client

The WebSocket API provides streaming access to the latest stock, options, indices, forex, and crypto market data. You can specify which channels you want to consume by sending instructions in the form of actions. Our WebSockets emit events to notify you when an event has occurred in a channel you've subscribed to.

Our WebSocket APIs are based on entitlements that control which WebSocket Clusters you can connect to and which kinds of data you can access. You can login to see examples that include your API key and are personalized to your entitlements.

package io.polygon.kotlin.sdk.sample

import io.polygon.kotlin.sdk.websocket.*
import kotlinx.coroutines.delay

suspend fun stocksWebsocketSample(polygonKey: String) {
    val websocketClient = PolygonWebSocketClient(
        polygonKey,
        Feed.RealTime,
        Market.Stocks,
        object : PolygonWebSocketListener {
            override fun onAuthenticated(client: PolygonWebSocketClient) {
                println("Connected!")
            }

            override fun onReceive(
                client: PolygonWebSocketClient,
                message: PolygonWebSocketMessage
            ) {
                when (message) {
                    is PolygonWebSocketMessage.RawMessage -> println(String(message.data))
                    else -> println("Receieved Message: $message")
                }
            }

            override fun onDisconnect(client: PolygonWebSocketClient) {
                println("Disconnected!")
            }

            override fun onError(client: PolygonWebSocketClient, error: Throwable) {
                println("Error: ")
                error.printStackTrace()
            }

        })

    val subscriptions = listOf(
        PolygonWebSocketSubscription(PolygonWebSocketChannel.Stocks.Trades, "*"),
        //PolygonWebSocketSubscription(PolygonWebSocketChannel.Stocks.Quotes, "*"),
        //PolygonWebSocketSubscription(PolygonWebSocketChannel.Stocks.AggPerSecond, "*"),
        //PolygonWebSocketSubscription(PolygonWebSocketChannel.Stocks.AggPerMinute, "*")
    )

    websocketClient.connect()
    websocketClient.subscribe(subscriptions)
    delay(65_000)
    websocketClient.unsubscribe(subscriptions)
    websocketClient.disconnect()
}

Please see more detailed code in the sample directory.

REST Request Options

Added in v4.1.0

For most use-cases, the default request options will do the trick, but if you need some more flexibility on a per-request basis, you can configure individual REST API requests with PolygonRestOptions.

For more info on what you can configure with request options, see docs in PolygonRequestOptions.kt.

In particular if you're an enterprise Launchpad user, see the helper function withEdgeHeaders in PolygonRequestOptions.kt.

Pagination

The Polygon REST API supports pagination for APIs that return a list of results. For more information on how pagination works at the API level, see this blog post, but note that as a user of this SDK, you won't need to worry about the details at the API level.

This SDK offers iterators that support automatically fetching subsequent pages of results. Functions that begin with list (such as PolygonReferenceClient.listSupportedTickers) will return a RequestIterator which implements Iterator so you can use it to iterate over all results in a dataset even if it means making additional requests for extra pages of results.

Note that RequestIterators are lazy and will only make API requests when necessary. That means that calling a list* function does not block and does not make any API requests until the first call to hasNext on the returned iterator.

See KotlinIteratorSample.kt and JavaIteratorSample.java for example usages of iterators.

How does the limit param affect request iterators?

limit effectively sets the page size for your request iterator. For example setting limit=10 in the params would mean the iterator receives 10 results from the Polygon API at time.

How many API requests will my request iterator make?

In most cases, it's not possible to know ahead of time how many requests an iterator will make to receive everything in a dataset. This is because we usually won't know how many total results to expect.

In general, an iterator will make num_total_results / page_size requests to the Polygon API. Where page_size is determined by the limit request parameter (discussed above).

Release planning

This client will attempt to follow the release cadence of our API. When endpoints are deprecated and newer versions are added, the client will maintain two methods in a backwards compatible way (e.g. listTrades and listTradesV4(...)). When deprecated endpoints are removed from the API, we'll rename the versioned method (e.g. listTradesV4(...) -> listTrades(...)), remove the old method, and release a new major version of the client. The goal is to give users ample time to upgrade to newer versions of our API before we bump the major version of the client, and in general, we'll try to bundle breaking changes like this to avoid frequent major version bumps.

There are a couple exceptions to this. When we find small breaking issues with this client library (e.g. incorrect response types), we may decide to release them under the same major version. These changes will be clearly outlined in the release notes. Also, methods that fall under the Experimental client (and annotated with @ExperimentalAPI) are considered experimental and may be modified or deprecated as needed. We'll call out any breaking changes to VX endpoints in our release notes to make using them easier.

Contributing

If you found a bug or have an idea for a new feature, please first discuss it with us by submitting a new issue. We will respond to issues within at most 3 weeks. We're also open to volunteers if you want to submit a PR for any open issues but please discuss it with us beforehand. PRs that aren't linked to an existing issue or discussed with us ahead of time will generally be declined. If you have more general feedback or want to discuss using this client with other users, feel free to reach out on our Slack channel.

Notes for Maintainers

Before cutting a new release, be sure to update Version!

Inside the .polygon directory there are openapi specs for REST and websocket APIs. Keep these specs up to date with what the library currently supports. We use these specs to automatically check if a new API or feature has been released that this client doesn't yet support.

To manually update the specs to the latest version, run ./gradlew restSpec websocketSpec

client-jvm's People

Contributors

aitzkovitz avatar antdjohns avatar clarkpd avatar hunterl avatar jbonzo avatar justinpolygon avatar mkahramana avatar mmoghaddam385 avatar noah-hein avatar vadims-grusas avatar wangtieqiao avatar zhemaituk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

client-jvm's Issues

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 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
@@ -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
+}

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
+}

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

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
@@ -3409,4 +3409,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

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)

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"
}'

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
@@ -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
@@ -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
@@ -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
+}

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 ....

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
@@ -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
+}

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 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 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"
           ]
         },
         {

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
+}

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
@@ -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

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
+}

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

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
+}

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.

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)

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.

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

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 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
+}

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.