diff --git a/src/components/Layout/mdx/headers.ts b/src/components/Layout/mdx/headers.ts
index 63a47ddd36..6b5a4ef011 100644
--- a/src/components/Layout/mdx/headers.ts
+++ b/src/components/Layout/mdx/headers.ts
@@ -16,7 +16,9 @@ export const useCopyableHeaders = () => {
// Prioritize name attribute, fall back to href
if (firstAnchor.hasAttribute('id')) {
- header.setAttribute('href', `#${firstAnchor.getAttribute('id')}`);
+ const rawId = firstAnchor.getAttribute('id') ?? '';
+ const id = rawId.startsWith('#') ? rawId.slice(1) : rawId;
+ header.setAttribute('href', `#${id}`);
} else if (firstAnchor.hasAttribute('href')) {
header.setAttribute('href', firstAnchor.getAttribute('href') || '');
}
@@ -42,7 +44,8 @@ export const useCopyableHeaders = () => {
if (firstAnchor?.hasAttribute('id')) {
// First priority: name attribute on first anchor
- anchor = `#${firstAnchor.getAttribute('id')}`;
+ const rawId = firstAnchor.getAttribute('id') ?? '';
+ anchor = `#${rawId.startsWith('#') ? rawId.slice(1) : rawId}`;
} else if (firstAnchor?.hasAttribute('href')) {
// Second priority: href attribute on first anchor
anchor = firstAnchor.getAttribute('href') || '';
diff --git a/src/pages/docs/api/realtime-sdk/authentication.mdx b/src/pages/docs/api/realtime-sdk/authentication.mdx
index 23cdfb58e5..c88bc3a8c3 100644
--- a/src/pages/docs/api/realtime-sdk/authentication.mdx
+++ b/src/pages/docs/api/realtime-sdk/authentication.mdx
@@ -23,11 +23,11 @@ redirect_from:
This is the Authentication API Reference.
-## Tokens
+## Tokens
In the documentation, references to Ably-compatible tokens typically refer either to an Ably Token, or an [Ably JWT](#ably-jwt). For Ably Tokens, this can either be referring to the `TokenDetails` object that contain the `token` string or the token string itself. `TokenDetails` objects are obtained when [requesting an Ably Token](#request-token) from the Ably service and contain not only the `token` string in the `token` attribute, but also contain attributes describing the properties of the Ably Token. For [Ably JWT](#ably-jwt), this will be simply referring to a JWT which has been signed by an Ably private API key.
-## Auth object
+## Auth object
The principal use-case for the `Auth` object is to create Ably [`TokenRequest`](#token-request) objects with [createTokenRequest](#create-token-request) or obtain [Ably Tokens](#token-details) from Ably with [requestToken](#request-token), and then issue them to other "less trusted" clients. Typically, your servers should be the only devices to have a [private API key](/docs/auth#api-key), and this private API key is used to securely sign Ably [`TokenRequest`](#token-request) objects or request [Ably Tokens](#token-details) from Ably. Clients are then issued with these short-lived [Ably Tokens](#token-details) or Ably [`TokenRequest`](#token-request) objects, and the libraries can then use these to authenticate with Ably. If you adopt this model, your private API key is never shared with clients directly.
@@ -35,17 +35,17 @@ A subsidiary use-case for the `Auth` object is to preemptively trigger renewal o
The Auth object is available as the [`auth` field](/docs/api/realtime-sdk#auth)[`Auth` property](/docs/api/realtime-sdk#auth)[`auth` property](/docs/api/realtime-sdk#auth)[`auth` attribute](/docs/api/realtime-sdk#auth) of an [Ably Realtime client instance](/docs/api/realtime-sdk#constructor).
-## Auth Propertiesio.ably.lib.rest.Auth MembersIO.Ably.AblyAuth PropertiesAbly::Auth AttributesARTAuth Properties
+## Auth Propertiesio.ably.lib.rest.Auth MembersIO.Ably.AblyAuth PropertiesAbly::Auth AttributesARTAuth Properties
The `ART``Auth` object exposes the following public propertiesattributesmembers:
-### clientIdclient_idClientId
+### clientIdclient_idClientId
The client ID string, if any, configured for this client connection. See [identified clients](/docs/auth/identified-clients) for more information on trusted client identifiers.
-## Auth Methodsio.ably.lib.rest.Auth MethodsIO.Ably.AblyAuth MethodsAbly::Auth MethodsARTAuth Methods
+## Auth Methodsio.ably.lib.rest.Auth MethodsIO.Ably.AblyAuth MethodsAbly::Auth MethodsARTAuth Methods
-### authorizeAuthorize
+### authorizeAuthorize
@@ -267,7 +267,7 @@ client.auth.authorize(tokenParams, options: nil) { tokenDetails, error in
-### createTokenRequestcreate_token_requestCreateTokenRequestAsync
+### createTokenRequestcreate_token_requestCreateTokenRequestAsync
@@ -480,7 +480,7 @@ client.auth.createTokenRequest(tokenParams, options: nil) { tokenRequest, error
-### requestTokenrequest_tokenRequestTokenAsync
+### requestTokenrequest_tokenRequestTokenAsync
@@ -704,7 +704,7 @@ client.auth.requestToken(tokenParams, withOptions: : nil) { tokenDetails, error
-### revokeTokens
+### revokeTokens
`revokeTokens(TokenRevocationTargetSpecifier[] specifiers, TokenRevocationOptions options?): Promise>`
@@ -761,9 +761,9 @@ try {
-## Related types
+## Related types
-### AuthOptions ObjectARTAuthOptionsAuthOptions Hashio.ably.lib.rest.Auth.AuthOptions
+### AuthOptions ObjectARTAuthOptionsAuthOptions Hashio.ably.lib.rest.Auth.AuthOptions
@@ -803,7 +803,7 @@ try {
| queryTimeQueryTime:query_time | _false_ If true, the library will query the Ably servers for the current time when [issuing TokenRequests](/docs/auth/token) instead of relying on a locally-available time of day. Knowing the time accurately is needed to create valid signed Ably [TokenRequests](/docs/auth/token), so this option is useful for library instances on auth servers where for some reason the server clock cannot be kept synchronized through normal means, such as an [NTP daemon](https://en.wikipedia.org/wiki/Ntpd) . The server is queried for the current time once per client library instance (which stores the offset from the local clock), so if using this option you should avoid instancing a new version of the library for each request. | `Boolean` |
| tokenToken:token | An authentication token. This can either be a [`TokenDetails`](/docs/api/realtime-sdk/types#token-details) object, a [`TokenRequest`](/docs/api/realtime-sdk/types#token-request) object, or token string (obtained from the `token``Token` property of a [`TokenDetails`](/docs/api/realtime-sdk/types#token-details) component of an Ably TokenRequest response, or a [JSON Web Token](https://tools.ietf.org/html/rfc7519) satisfying [the Ably requirements for JWTs](/docs/auth/token/jwt)). This option is mostly useful for testing: since tokens are short-lived, in production you almost always want to use an authentication method that allows the client library to renew the token automatically when the previous one expires, such as `authUrl`AuthUrl:auth_urlauth_url or authCallbackAuthCallbackauth_callback:auth_callback. Read more about [Token authentication](/docs/auth/token) | `String`, `TokenDetails` or `TokenRequest` |
-### TokenDetails ObjectARTTokenDetailsio.ably.lib.types.TokenDetailsAbly::Models::TokenDetailsIO.Ably.TokenDetails
+### TokenDetails ObjectARTTokenDetailsio.ably.lib.types.TokenDetailsAbly::Models::TokenDetailsIO.Ably.TokenDetails
`TokenDetails` is a type providing details of Ably Token string and its associated metadata.
@@ -838,7 +838,7 @@ try {
### TokenDetails constructors
-#### TokenDetails.fromJsonTokenDetails.from_json
+#### TokenDetails.fromJsonTokenDetails.from_json
@@ -864,7 +864,7 @@ A static factory method
A [`TokenDetails`](/docs/api/realtime-sdk/types#token-details) object
-### TokenParams ObjectARTTokenParamsTokenParams Hashio.ably.lib.rest.Auth.TokenParamsIO.Ably.TokenParams
+### TokenParams ObjectARTTokenParamsTokenParams Hashio.ably.lib.rest.Auth.TokenParamsIO.Ably.TokenParams
@@ -900,7 +900,7 @@ A [`TokenDetails`](/docs/api/realtime-sdk/types#token-details) object
| timestampTimestamp:timestamp | The timestamp (in milliseconds since the epoch)The timestamp of this request. `timestamp`, in conjunction with the `nonce`, is used to prevent requests for [Ably Token](/docs/api/realtime-sdk/authentication#token-details) from being replayed. | `Integer``Long Integer``Time``NSDate``DateTimeOffset``DateTime` |
| ttlTtl:ttl | Requested time to live for the [Ably Token](/docs/api/realtime-sdk/authentication#token-details) being created in millisecondsin secondsas a `NSTimeInterval`as a `TimeSpan`. When omitted, the Ably REST API default of 60 minutes is applied by Ably.
_Default: 1 hour_ | `Integer` (milliseconds)`Integer` (seconds)`NSTimeInterval``Long Integer``TimeSpan` |
-### TokenRequest ObjectARTTokenRequestAbly::Models::TokenRequestio.ably.lib.rest.Auth.TokenRequestIO.Ably.TokenRequest
+### TokenRequest ObjectARTTokenRequestAbly::Models::TokenRequestio.ably.lib.rest.Auth.TokenRequestIO.Ably.TokenRequest
`TokenRequest` is a type containing parameters for an Ably `TokenRequest`. [Ably Tokens](/docs/api/realtime-sdk/authentication#token-details) are requested using [Auth#requestToken](/docs/api/rest-sdk/authentication#request-token)[Auth#request_token](/docs/api/rest-sdk/authentication#request-token)
@@ -918,7 +918,7 @@ A [`TokenDetails`](/docs/api/realtime-sdk/types#token-details) object
### TokenRequest constructors
-#### TokenRequest.fromJsonTokenRequest.from_jsonTokenRequest.fromMap
+#### TokenRequest.fromJsonTokenRequest.from_jsonTokenRequest.fromMap
@@ -944,7 +944,7 @@ A static factory method
A [`TokenRequest`](/docs/api/realtime-sdk/types#token-request) object
-### Ably JWT
+### Ably JWT
An Ably JWT is not strictly an Ably construct, rather it is a [JWT](https://jwt.io/) which has been constructed to be compatible with Ably. The JWT must adhere to the following to ensure compatibility:
@@ -993,7 +993,7 @@ var ablyJwt = base64Header + "." + base64Claims + "." + signature;
-### BatchResult
+### BatchResult
A `BatchResult` contains information about the results of a batch operation.
@@ -1005,7 +1005,7 @@ A `BatchResult` contains information about the results of a batch operation.
| failureCount | The number of unsuccessful operations in the request | `Number` |
| messages | An array of results for the batch operation (for example, an array of [`BatchPublishSuccessResult`](/docs/api/realtime-sdk/types#batch-publish-success-result) or [`BatchPublishFailureResult`](/docs/api/realtime-sdk/types#batch-publish-failure-result) for a channel batch publish request) | `Object[]` |
-### TokenRevocationTargetSpecifier
+### TokenRevocationTargetSpecifier
A `TokenRevocationTargetSpecifier` describes which tokens should be affected by a token revocation request.
@@ -1016,7 +1016,7 @@ A `TokenRevocationTargetSpecifier` describes which tokens should be affected by
| type | The type of token revocation target specifier. Valid values include `clientId`, `revocationKey` and `channel` | `String` |
| value | The value of the token revocation target specifier | `String` |
-### TokenRevocationOptions
+### TokenRevocationOptions
A `TokenRevocationOptions` describes the additional options accepted by revoke tokens request.
@@ -1028,7 +1028,7 @@ A `TokenRevocationOptions` describes the additional options accepted by revoke t
| allowReauthMargin | _false_ If true, permits a token renewal cycle to take place without needing established connections to be dropped, by postponing enforcement to 30 seconds in the future, and sending any existing connections a hint to obtain (and upgrade the connection to use) a new token. The default is `false`, meaning that the effect is near-immediate. | `Boolean` |
-### TokenRevocationSuccessResult
+### TokenRevocationSuccessResult
A `TokenRevocationSuccessResult` contains information about the result of a successful token revocation request for a single target specifier.
@@ -1040,7 +1040,7 @@ A `TokenRevocationSuccessResult` contains information about the result of a succ
| appliesAt | The time at which the token revocation will take effect, as a Unix timestamp in milliseconds | `Number` |
| issuedBefore | A Unix timestamp in milliseconds. Only tokens issued earlier than this time will be revoked | `Number` |
-### TokenRevocationFailureResult
+### TokenRevocationFailureResult
A `TokenRevocationFailureResult` contains information about the result of an unsuccessful token revocation request for a single target specifier.
diff --git a/src/pages/docs/api/realtime-sdk/types.mdx b/src/pages/docs/api/realtime-sdk/types.mdx
index 739d257080..4147a63e11 100644
--- a/src/pages/docs/api/realtime-sdk/types.mdx
+++ b/src/pages/docs/api/realtime-sdk/types.mdx
@@ -24,22 +24,22 @@ If you are interested in finding out more about the exact types and options defi
-### io.ably.lib.types.AblyException
+### io.ably.lib.types.AblyException
-### Ably::Exceptions::BaseAblyException
+### Ably::Exceptions::BaseAblyException
-### IO.Ably.AblyException
+### IO.Ably.AblyException
-### ably.AblyException
+### ably.AblyException
@@ -69,7 +69,7 @@ A `BaseAblyException` is an exception encapsulating error information containing
-### ChannelDetails
+### ChannelDetails
`ChannelDetails` is an object returned when requesting or receiving [channel metadata](/docs/metadata-stats/metadata). It contains information on the channel itself, along with the current state of the channel in the [`ChannelStatus`](#channel-status) object.
@@ -105,7 +105,7 @@ The following is an example of a `ChannelDetails` JSON object:
```
-### ChannelDetails.ChannelStatus
+### ChannelDetails.ChannelStatus
`ChannelStatus` is contained within the [`ChannelDetails`](#channel-details) object, and optionally contains an [`Occupancy`](#occupancy) object.
@@ -114,7 +114,7 @@ The following is an example of a `ChannelDetails` JSON object:
| isActive | A required boolean value indicating whether the channel that is the subject of the event is active. For events indicating regional activity of a channel this indicates activity in that region, not global activity | `boolean` |
| occupancy | An optional [`Occupancy`](#occupancy) instance indicating the occupancy of the channel. For events indicating regional activity of a channel this indicates activity in that region, not global activity | [`Occupancy`](#occupancy) |
-### ChannelDetails.ChannelStatus.Occupancy
+### ChannelDetails.ChannelStatus.Occupancy
Occupancy is optionally contained within the [`ChannelStatus`](#channel-status) object, and contains metadata relating to the occupants of the channel. This is usually contained within the `occupancy` attribute of the [`ChannelStatus`](#channel-status) object.
@@ -133,7 +133,7 @@ The `occupancy` attribute contains the `metrics` attribute, which contains the f
-#### DeviceDetailsAbly::Models::DeviceDetails
+#### DeviceDetailsAbly::Models::DeviceDetails
A `DeviceDetails` is a type encapsulating attributes of a device registered for push notifications.
@@ -151,7 +151,7 @@ A `DeviceDetails` is a type encapsulating attributes of a device registered for
| push.state | the current state of the push device being either `Active`, `Failing`, or `Failed` | `String` |
| push.errorReasonpush.error_reason | when the device's state is failing or failed, this attribute contains the reason for the most recent failure | [`ErrorInfo`](/docs/api/realtime-sdk/types) |
-#### LocalDeviceAbly::Models::LocalDevice
+#### LocalDeviceAbly::Models::LocalDevice
An extension of [`DeviceDetails`](/docs/api/realtime-sdk/types#device-details). In addition to the properties of [`DeviceDetails`](/docs/api/realtime-sdk/types#device-details), it includes the following:
@@ -380,7 +380,7 @@ func handleError(err *ErrorInfo) {
-### Message ARTMessage io.ably.lib.types.Message Ably::Models::Message IO.Ably.Message
+### Message ARTMessage io.ably.lib.types.Message Ably::Models::Message IO.Ably.Message
A `Message` represents an individual message that is sent to or received from Ably.
@@ -388,65 +388,65 @@ A `Message` represents an individual message that is sent to or received from Ab
The event name, if provided.
_Type: `String`_
-### data Data
+### data Data
The message payload, if provided.
_Type: `String`, `StringBuffer`, `JSON Object``String`, `ByteArray`, `JSONObject`, `JSONArray``String`, `Binary` (ASCII-8BIT String), `Hash`, `Array``NSString *`, `NSData *`, `NSDictionary *`, `NSArray *``String`, `NSData`, `Dictionary`, `Array``String`, `byte[]`, `plain C# object that can be serialized to JSON``String`, `Map`, `List`_
-### extras Extras
+### extras Extras
Metadata and/or ancillary payloads, if provided. Valid payloads include [`push`](/docs/push/publish#payload), `headers` (a map of strings to strings for arbitrary customer-supplied metadata), [`ephemeral`](/docs/pub-sub/advanced#ephemeral), and [`privileged`](/docs/platform/integrations/webhooks#skipping) objects.
_Type: `JSONObject`, `JSONArray``JSON Object``Hash`, `Array``Dictionary`, `Array``NSDictionary *`, `NSArray *``plain C# object that can be converted to JSON`_
-### idId
+### idId
A Unique ID assigned by Ably to this message.
_Type: `String`_
-### clientIdClientIdclient_id
+### clientIdClientIdclient_id
The client ID of the publisher of this message.
_Type: `String`_
-### connectionIdConnectionIdconnection_id
+### connectionIdConnectionIdconnection_id
The connection ID of the publisher of this message.
_Type: `String`_
-### connectionKeyConnectionKeyconnection_key
+### connectionKeyConnectionKeyconnection_key
A connection key, which can optionally be included for a REST publish as part of the [publishing on behalf of a realtime client functionality](/docs/pub-sub/advanced#publish-on-behalf).
_Type: `String`_
-### timestampTimestamp
+### timestampTimestamp
Timestamp when the message was first received by the Ably, as milliseconds since the epocha `Time` object.
_Type: `Integer``Long Integer``Time``NSDate``DateTimeOffset``Integer`_
-### encodingEncoding
+### encodingEncoding
This will typically be empty as all messages received from Ably are automatically decoded client-side using this value. However, if the message encoding cannot be processed, this attribute will contain the remaining transformations not applied to the `data` payload.
_Type: `String`_
-### action
+### action
The action type of the message, one of the [`MessageAction`](/docs/api/realtime-sdk/types#message-action) enum values.
_Type: `int enum { MESSAGE_CREATE, MESSAGE_UPDATE, MESSAGE_DELETE, META, MESSAGE_SUMMARY, MESSAGE_APPEND }`_
-### serial
+### serial
A server-assigned identifier that will be the same in all future updates of this message. It can be used to add annotations to a message. Serial will only be set if you enable annotations in [rules](/docs/channels#rules).
_Type: `String`_
-### annotations
+### annotations
An object containing information about annotations that have been made to the object.
_Type: [`MessageAnnotations`](/docs/api/realtime-sdk/types#message-annotations)_
-### Message constructors
+### Message constructors
-#### Message.fromEncoded
+#### Message.fromEncoded
`Message.fromEncoded(Object encodedMsg, ChannelOptions channelOptions?) -> Message`
@@ -463,7 +463,7 @@ A static factory method to create a [`Message`](/docs/api/realtime-sdk/types#mes
A [`Message`](/docs/api/realtime-sdk/types#message) object
-#### Message.fromEncodedArray
+#### Message.fromEncodedArray
`Message.fromEncodedArray(Object[] encodedMsgs, ChannelOptions channelOptions?) -> Message[]`
@@ -577,7 +577,7 @@ An `Array` of [`Message`](/docs/api/realtime-sdk/types#message) objects
-### MessageAnnotations
+### MessageAnnotations
#### PropertiesMembersAttributes
@@ -605,7 +605,7 @@ Contains the result of an update, delete, or append message operation.
|----------|-------------|------|
| versionSerialVersionSerial | The serial of the version of the updated, deleted, or appended message. Will be null if the message was superseded by a subsequent update before it could be published. | `String` |
-### PresenceMessageio.ably.lib.types.PresenceMessageAbly::Models::PresenceMessageARTPresenceMessageIO.Ably.PresenceMessage
+### PresenceMessageio.ably.lib.types.PresenceMessageAbly::Models::PresenceMessageARTPresenceMessageIO.Ably.PresenceMessage
A `PresenceMessage` represents an individual presence update that is sent to or received from Ably.
@@ -624,7 +624,7 @@ A `PresenceMessage` represents an individual presence update that is sent to or
### PresenceMessage constructors
-#### PresenceMessage.fromEncoded
+#### PresenceMessage.fromEncoded
`PresenceMessage.fromEncoded(Object encodedPresMsg, ChannelOptions channelOptions?) -> PresenceMessage`
@@ -641,7 +641,7 @@ A static factory method to create a [`PresenceMessage`](/docs/api/realtime-sdk/t
A [`PresenceMessage`](/docs/api/realtime-sdk/types#presence-message) object
-#### PresenceMessage.fromEncodedArray
+#### PresenceMessage.fromEncodedArray
`PresenceMessage.fromEncodedArray(Object[] encodedPresMsgs, ChannelOptions channelOptions?) -> PresenceMessage[]`
@@ -658,7 +658,7 @@ A static factory method to create an array of [`PresenceMessages`](/docs/api/rea
An `Array` of [`PresenceMessage`](/docs/api/realtime-sdk/types#presence-message) objects
-### Presence actionARTPresenceActionio.ably.lib.types.PresenceMessage.ActionAbly::Models::PresenceMessage::ACTIONIO.Ably.PresenceAction
+### Presence actionARTPresenceActionio.ably.lib.types.PresenceMessage.ActionAbly::Models::PresenceMessage::ACTIONIO.Ably.PresenceAction
@@ -842,7 +842,7 @@ const (
-### PaginatedResultARTPaginatedResultio.ably.lib.types.PaginatedResultAbly::Models::PaginatedResultIO.Ably.PaginatedResult
+### PaginatedResultARTPaginatedResultio.ably.lib.types.PaginatedResultAbly::Models::PaginatedResultIO.Ably.PaginatedResult
A `PaginatedResult` is a type that represents a page of results for all message and presence history, stats and REST presence requests. The response from a [Ably REST API paginated query](/docs/api/rest-api/#pagination) is accompanied by metadata that indicates the relative queries available to the `PaginatedResult` object.
@@ -991,7 +991,7 @@ Returns a new `PaginatedResult` loaded with the next page of results. If there a
Returns a promise. On success, the promise is fulfilled with a new `PaginatedResult` loaded with the next page of results. If there are no further pages, then `null` is returned. On failure, the promise is rejected with an [`ErrorInfo`](/docs/api/realtime-sdk/types#error-info) object that details the reason why it was rejected.
-##### current
+##### current
`current(): Promise<"PaginatedResult":#paginated-result>`
@@ -999,7 +999,7 @@ Returns a promise. On success, the promise is fulfilled with a new `PaginatedRes
-#### Example
+#### Example
@@ -1144,7 +1144,7 @@ channel.history { paginatedResult, error in
-### HttpPaginatedResponse
+### HttpPaginatedResponse
An `HttpPaginatedResponse` is a superset of [`PaginatedResult`](/docs/api/rest-sdk/types#paginated-result), which is a type that represents a page of results plus metadata indicating the relative queries available to it. `HttpPaginatedResponse` additionally carries information about the response to an HTTP request. It is used when [making custom HTTP requests](/docs/api/rest-sdk#request).
diff --git a/src/pages/docs/api/rest-sdk/types.mdx b/src/pages/docs/api/rest-sdk/types.mdx
index abdb1897e7..be5ea5d63c 100644
--- a/src/pages/docs/api/rest-sdk/types.mdx
+++ b/src/pages/docs/api/rest-sdk/types.mdx
@@ -21,7 +21,7 @@ If you are interested in finding out more about the exact types and options defi
-### io.ably.lib.types.AblyExceptionAbly::Exceptions::BaseAblyExceptionAblyExceptionAbly\Exceptions\AblyExceptionIO.Ably.AblyException
+### io.ably.lib.types.AblyExceptionAbly::Exceptions::BaseAblyExceptionAblyExceptionAbly\Exceptions\AblyExceptionIO.Ably.AblyException
An `AblyException` is an exception encapsulating error information containing an Ably-specific error code and generic status code, where applicable.
@@ -52,7 +52,7 @@ An `AblyException` is an exception encapsulating error information containing an
-### ChannelDetails
+### ChannelDetails
`ChannelDetails` is an object returned when requesting or receiving [channel metadata](/docs/metadata-stats/metadata). It contains information on the channel itself, along with the current state of the channel in the [ChannelStatus](#channel-status) object.
@@ -88,7 +88,7 @@ The following is an example of a `ChannelDetails` JSON object:
```
-### ChannelDetails.ChannelStatus
+### ChannelDetails.ChannelStatus
`ChannelStatus` is contained within the [`ChannelDetails`](#channel-details) object, and optionally contains an [Occupancy](#occupancy) object.
@@ -97,7 +97,7 @@ The following is an example of a `ChannelDetails` JSON object:
| isActive | A required boolean value indicating whether the channel that is the subject of the event is active. For events indicating regional activity of a channel this indicates activity in that region, not global activity | `boolean` |
| occupancy | An optional [`Occupancy`](#occupancy) instance indicating the occupancy of the channel. For events indicating regional activity of a channel this indicates activity in that region, not global activity | [Occupancy](#occupancy) |
-### ChannelDetails.ChannelStatus.Occupancy
+### ChannelDetails.ChannelStatus.Occupancy
Occupancy is optionally contained within the [`ChannelStatus`](#channel-status) object, and contains metadata relating to the occupants of the channel. This is usually contained within the `occupancy` attribute of the [`ChannelStatus`](#channel-status) object.
@@ -114,7 +114,7 @@ The `occupancy` attribute contains the `metrics` attribute, which contains the f
| objectPublishers | The number of connections that are authorised to publish updates to objects on the channel | `integer` |
| objectSubscribers | The number of connections that are authorised to subscribe to objects on the channel | `integer` |
-### ErrorInfoARTErrorInfoio.ably.lib.types.ErrorInfoAbly::Models::ErrorInfoAbly\Models\ErrorInfoIO.Ably.ErrorInfoably.ErrorInfo
+### ErrorInfoARTErrorInfoio.ably.lib.types.ErrorInfoAbly::Models::ErrorInfoAbly\Models\ErrorInfoIO.Ably.ErrorInfoably.ErrorInfo
An `ErrorInfo` is a type encapsulating error information containing an Ably-specific error code and generic status code.
@@ -371,39 +371,39 @@ func handleError(err *ErrorInfo) {
A `Message` represents an individual message that is sent to or received from Ably.
-#### nameName
+#### nameName
The event name, if provided.
_Type: `String`_
-#### dataData
+#### dataData
The message payload, if provided.
_Type: `String`, `StringBuffer`, `JSON Object``String`, `ByteArray`, `JSONObject`, `JSONArray``String`, `byte[]`, plain C# object that can be serialized to JSON`String`, `Binary` (ASCII-8BIT String), `Hash`, `Array``String`, `Bytearray`, `Dict`, `List``String`, `Binary String`, `Associative Array`, `Array``NSString *`, `NSData *`, `NSDictionary *`, `NSArray *``String`, `NSData`, `Dictionary`, `Array``String`, `Map`, `List`_
-#### extrasExtras
+#### extrasExtras
Metadata and/or ancillary payloads, if provided. Valid payloads include [`push`](/docs/push/publish#payload), `headers` (a map of strings to strings for arbitrary customer-supplied metadata), [`ephemeral`](/docs/pub-sub/advanced#ephemeral), and [`privileged`](/docs/platform/integrations/webhooks#skipping) objects.
_Type: `JSONObject`, `JSONArray`plain C# object that can be converted to JSON`JSON Object``Hash`, `Array``Dict`, `List``Dictionary`, `Array``NSDictionary *`, `NSArray *``Associative Array`, `Array``JSON Object`_
-#### idId
+#### idId
A Unique ID assigned by Ably to this message.
_Type: `String`_
-#### clientIdClientIdclient_id
+#### clientIdClientIdclient_id
The client ID of the publisher of this message.
_Type: `String`_
-#### connectionIdConnectionIdconnection_id
+#### connectionIdConnectionIdconnection_id
The connection ID of the publisher of this message.
_Type: `String`_
-#### connectionKeyConnectionKeyconnection_key
+#### connectionKeyConnectionKeyconnection_key
A connection key, which can optionally be included for a REST publish as part of the [publishing on behalf of a realtime client functionality](/docs/pub-sub/advanced#publish-on-behalf).
_Type: `String`_
-#### timestampTimestamp
+#### timestampTimestamp
Timestamp when the message was first received by the Ably, as milliseconds since the epocha `Time` object.
_Type: `Integer``Long Integer``DateTimeOffset``Time``NSDate`_
-#### encodingEncoding
+#### encodingEncoding
This will typically be empty as all messages received from Ably are automatically decoded client-side using this value. However, if the message encoding cannot be processed, this attribute will contain the remaining transformations not applied to the `data` payload.
_Type: `String`_
@@ -459,7 +459,7 @@ A static factory method to create an array of [`Messages`](/docs/api/realtime-sd
An `Array` of [`Message`](/docs/api/realtime-sdk/types#message) objects
-### PresenceMessageARTPresenceMessageio.ably.lib.types.PresenceMessageAbly::Models::PresenceMessageAbly\Models\PresenceMessageIO.Ably.PresenceMessage
+### PresenceMessageARTPresenceMessageio.ably.lib.types.PresenceMessageAbly::Models::PresenceMessageAbly\Models\PresenceMessageIO.Ably.PresenceMessage
A `PresenceMessage` represents an individual presence update that is sent to or received from Ably.
@@ -512,7 +512,7 @@ A static factory method to create an array of [`PresenceMessages`](/docs/api/rea
An `Array` of [`PresenceMessage`](/docs/api/realtime-sdk/types#presence-message) objects
-### Presence actionARTPresenceActionio.ably.lib.types.PresenceMessage.ActionAbly::Models::PresenceMessage::ACTIONAbly\Models\PresenceMessage ActionIO.Ably.PresenceAction
+### Presence actionARTPresenceActionio.ably.lib.types.PresenceMessage.ActionAbly::Models::PresenceMessage::ACTIONAbly\Models\PresenceMessage ActionIO.Ably.PresenceAction
`Presence` `action` is a String with a value matching any of the [`Realtime Presence` states & events](/docs/presence-occupancy/presence#trigger-events).
diff --git a/src/pages/docs/getting-started/flutter.mdx b/src/pages/docs/getting-started/flutter.mdx
index cc2d52d10a..3ddf2b9a46 100644
--- a/src/pages/docs/getting-started/flutter.mdx
+++ b/src/pages/docs/getting-started/flutter.mdx
@@ -282,7 +282,7 @@ You should see the connection state displayed in your UI (e.g., `Connection: con
Messages contain the data that a client is communicating, such as a short 'hello' from a colleague, or a financial update being broadcast to subscribers from a server. Ably uses channels to separate messages into different topics, so that clients only ever receive messages on the channels they are subscribed to.
-### Subscribe to a channel
+### Subscribe to a channel
Create a new file `lib/widgets/messages.dart` to handle message display and publishing:
diff --git a/src/pages/docs/getting-started/react-native.mdx b/src/pages/docs/getting-started/react-native.mdx
index 0744d3f17e..432f2232e0 100644
--- a/src/pages/docs/getting-started/react-native.mdx
+++ b/src/pages/docs/getting-started/react-native.mdx
@@ -426,7 +426,7 @@ ably channels publish my-first-channel 'Hello from CLI!'
```
-### Publish a message
+### Publish a message
You can publish messages in your React Native app using the `publish` method provided by the `useChannel()` hook.