Skip to content

Commit e460ccc

Browse files
committed
Fix broken internal documentation links
Update 94 broken link references across 66 files including typos in paths, doubled /docs/docs/ URLs, legacy page references, and links relying on redirects instead of pointing to canonical paths.
1 parent 2b128eb commit e460ccc

55 files changed

Lines changed: 84 additions & 84 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/data/nav/platform.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ export default {
247247
pages: [
248248
{
249249
name: 'Overview',
250-
link: '/docs/account',
250+
link: '/docs/platform/account',
251251
index: true,
252252
},
253253
{

src/pages/docs/ai-transport/messaging/citations.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ meta_keywords: "citations, references, source attribution, message annotations,
66

77
AI agents often draw information from external sources such as documents, web pages, or databases. Citations to those sources enable users to verify information, explore sources in detail, and understand where responses came from. Ably's [message annotations](/docs/messages/annotations) provide a model-agnostic, structured way to attach source citations to AI responses without modifying the response content. It enables clients to append information to existing messages on a channel.
88

9-
This pattern works when publishing complete responses as messages on a channel or when streaming responses using the [message-per-response](/docs/ai-transport/message-per-response) pattern.
9+
This pattern works when publishing complete responses as messages on a channel or when streaming responses using the [message-per-response](/docs/ai-transport/token-streaming/message-per-response) pattern.
1010

1111
## Why citations matter <a id="why"/>
1212

@@ -21,7 +21,7 @@ Including citations on AI responses provides:
2121

2222
Use [message annotations](/docs/messages/annotations) to attach source metadata to AI response messages without modifying the response content:
2323

24-
1. The agent publishes an AI response as a single message, or builds it incrementally using [message appends](/docs/ai-transport/message-per-response).
24+
1. The agent publishes an AI response as a single message, or builds it incrementally using [message appends](/docs/ai-transport/token-streaming/message-per-response).
2525
2. The agent publishes one or more annotations to attach citations to the response message, each referencing the response message [`serial`](/docs/messages#properties).
2626
3. Ably automatically aggregates annotations and generates summaries showing total counts and groupings (for example, by source domain name).
2727
4. Clients receive citation summaries automatically and can optionally subscribe to individual annotation events for detailed citation data as part of the realtime stream. Alternatively, clients can obtain annotations for a given message via the REST API.
@@ -182,7 +182,7 @@ channel.annotations.publish(msgSerial, citation2);
182182
</Code>
183183

184184
<Aside data-type="note">
185-
When streaming response tokens using the [message-per-response](/docs/ai-transport/message-per-response) pattern, you can publish citations while the response is still streaming since the `serial` of the response message becomes known after you [publish the initial message](/docs/ai-transport/token-streaming/message-per-response#publishing).
185+
When streaming response tokens using the [message-per-response](/docs/ai-transport/token-streaming/message-per-response) pattern, you can publish citations while the response is still streaming since the `serial` of the response message becomes known after you [publish the initial message](/docs/ai-transport/token-streaming/message-per-response#publishing).
186186
</Aside>
187187

188188
<Aside data-type="note">

src/pages/docs/ai-transport/messaging/human-in-the-loop.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ Set [`echoMessages`](/docs/api/realtime-sdk/types#client-options) to `false` in
223223
The agent listens for human decisions and acts accordingly. When a response arrives, the agent retrieves the pending request using the `toolCallId`, verifies that the user is permitted to approve that specific action, and either executes the action or handles the rejection.
224224
225225
<Aside data-type="note">
226-
For audit trails, use [integration rules](/docs/integrations) to stream approval messages to external systems.
226+
For audit trails, use [integration rules](/docs/platform/integrations) to stream approval messages to external systems.
227227
</Aside>
228228
229229
### Verify by user identity <a id="verify-identity"/>

src/pages/docs/ai-transport/sessions-identity/identifying-users-and-agents.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ Ably recommends using token authentication with short-lived tokens and minimal c
414414

415415
### Agent capabilities <a id="agent-capabilities"/>
416416

417-
When using API key authentication, provision API keys through the [Ably dashboard](https://ably.com/dashboard) or [Control API](/docs/account/control-api) with only the capabilities required by the agent.
417+
When using API key authentication, provision API keys through the [Ably dashboard](https://ably.com/dashboard) or [Control API](/docs/platform/account/control-api) with only the capabilities required by the agent.
418418

419419
The following example uses the Control API to create an API key with specific capabilities for a weather agent:
420420

src/pages/docs/ai-transport/sessions-identity/resuming-sessions.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ An agent or user might resume an existing session when:
1616

1717
When you attach to a channel, Ably automatically syncs the complete current presence set to your client. You can then query the presence set or subscribe to presence events without any additional hydration steps. This works the same way for both users and agents.
1818

19-
For details on obtaining the synced presence set, see [Viewing who is online](/docs/ai-transport/sessions-and-identity/online-status#viewing-presence).
19+
For details on obtaining the synced presence set, see [Viewing who is online](/docs/ai-transport/sessions-identity/online-status#viewing-presence).
2020

2121
## User resumes a session
2222

src/pages/docs/ai-transport/token-streaming/message-per-response.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Token streaming with message-per-response is a pattern where every token generat
77

88
This pattern is useful for chat-style applications where you want each complete AI response stored as a single message in history, making it easy to retrieve and display multi-response conversation history. Each agent response becomes a single message that grows as tokens are appended, allowing clients joining mid-stream to catch up efficiently without processing thousands of individual tokens.
99

10-
The message-per-response pattern includes [automatic rate limit protection](/docs/ai-transport/token-rate-limits#per-response) through rollups, making it the recommended approach for most token streaming use cases.
10+
The message-per-response pattern includes [automatic rate limit protection](/docs/ai-transport/token-streaming/token-rate-limits#per-response) through rollups, making it the recommended approach for most token streaming use cases.
1111

1212
## How it works <a id="how-it-works"/>
1313

@@ -215,7 +215,7 @@ The `appendRollupWindow` parameter controls how many tokens are combined into ea
215215
The default 40ms window strikes a balance, delivering tokens at 25 messages per second - smooth enough for a great user experience while allowing you to run two simultaneous response streams on a single connection. If you need to support more concurrent streams, increase the rollup window (up to 500ms), accepting that tokens will arrive in more noticeable batches. Alternatively, instantiate a separate Ably client which uses its own connection, giving you access to additional message rate capacity.
216216

217217
<Aside data-type="further-reading">
218-
For more details on rate limits and rollup behavior, see [Token streaming limits](/docs/ai-transport/token-rate-limits#rollup).
218+
For more details on rate limits and rollup behavior, see [Token streaming limits](/docs/ai-transport/token-streaming/token-rate-limits#rollup).
219219
</Aside>
220220

221221
## Subscribing to token streams <a id="subscribing"/>

src/pages/docs/ai-transport/token-streaming/message-per-token.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ for (Event event : stream) {
8383
This approach maximizes throughput while maintaining ordering guarantees, allowing you to stream tokens as fast as your AI model generates them.
8484

8585
<Aside data-type="important">
86-
Unlike the [message-per-response](/docs/ai-transport/token-streaming/message-per-response) pattern, the message-per-token pattern requires you to [manage rate limits directly](/docs/ai-transport/token-rate-limits#per-token).
86+
Unlike the [message-per-response](/docs/ai-transport/token-streaming/message-per-response) pattern, the message-per-token pattern requires you to [manage rate limits directly](/docs/ai-transport/token-streaming/token-rate-limits#per-token).
8787
</Aside>
8888

8989
<Aside data-type="note">

src/pages/docs/api/index.mdx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ The API reference for the [Chat SDK](https://sdk.ably.com/builds/ably/ably-chat-
6060

6161
In addition to the API references listed previously, our developer documentation also provides information on how these interfaces are used, and this covers key concepts such as connections, channels, messages and the pub/sub pattern. You can find that information on the following pages:
6262

63-
* [Client library Realtime SDK - Overview](/docs/realtime)
64-
* [Client library REST SDK - Overview](/docs/rest)
65-
* [Realtime and REST interface use cases](/docs/realtime#realtime-vs-rest)
66-
* [REST API - Overview](/docs/rest-api)
63+
* [Client library Realtime SDK - Overview](/docs/api/realtime-sdk)
64+
* [Client library REST SDK - Overview](/docs/api/rest-sdk)
65+
* [Realtime and REST interface use cases](/docs/api/realtime-sdk#realtime-vs-rest)
66+
* [REST API - Overview](/docs/api/rest-api)
6767
* [SSE API - Overview](/docs/protocols/sse)
68-
* [Control API - Overview](/docs/platform/account/control-api)
68+
* [Control API - Overview](/docs/api/control-api)

src/pages/docs/api/realtime-sdk.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ A reference to the [ARTLocalDevice](/docs/api/realtime-sdk/push#local-device) ob
206206

207207
### <If lang="csharp">`Channels`</If><If lang="javascript,nodejs,ruby,java,swift,objc,flutter">`channels`</If> <a id="channels" />
208208

209-
[Channels](/docs/api/realtime-sdk/channels#channels-object) is a reference to the [Channel](/docs/channels) collection instance for this library indexed by the channel name. You can use the [Get](/docs/api/realtime-sdk/channels#get) method of this to get a `Channel` instance. See [channels](/docs/channels) and [messages](/docs/channels/messages) for more information.
209+
[Channels](/docs/api/realtime-sdk/channels#channels-object) is a reference to the [Channel](/docs/channels) collection instance for this library indexed by the channel name. You can use the [Get](/docs/api/realtime-sdk/channels#get) method of this to get a `Channel` instance. See [channels](/docs/channels) and [messages](/docs/messages) for more information.
210210

211211
### <If lang="csharp">`Connection`</If><If lang="javascript,nodejs,ruby,java,swift,objc,flutter">`connection`</If> <a id="connection" />
212212

src/pages/docs/api/realtime-sdk/history.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ A `PresenceMessage` represents an individual presence update that is sent to or
367367
|----------|-------------|------|
368368
| <If lang="java,javascript,nodejs,ruby,objc,swift">action</If><If lang="csharp">Action</If> | the event signified by a PresenceMessage. See [`PresenceMessage.action`](/docs/api/realtime-sdk/types#presence-action) | <If lang="java">`enum { ABSENT, PRESENT, ENTER, LEAVE, UPDATE }`</If><If lang="csharp">`enum { Absent, Present, Enter, Leave, Update }`</If><If lang="javascript,nodejs">`int enum { ABSENT, PRESENT, ENTER, LEAVE, UPDATE }`</If><If lang="ruby">`enum { :absent, :present, :enter, :leave, :update }`</If><If lang="objc,swift">`ARTPresenceAction`</If> |
369369
| <If lang="javascript,nodejs,java,objc,swift,ruby">data</If><If lang="csharp">Data</If> | The presence update payload, if provided | <If lang="java">`String`, `ByteArray`, `JSONObject`, `JSONArray`</If><If lang="csharp">`String`, `byte[]`, plain C# object that can be converted to Json</If><If lang="javascript,nodejs">`String`, `StringBuffer`, `JSON Object`</If><If lang="ruby">`String`, `Binary` (ASCII-8BIT String), `Hash`, `Array`</If><If lang="swift">`String`, `NSData`, `Dictionary`, `Array`</If><If lang="objc">`NSString *`, `NSData *`, `NSDictionary *`, `NSArray *`</If> |
370-
| <If lang="javascript,nodejs,java,objc,swift,ruby">extras</If><If lang="csharp">Extras</If> | Metadata and/or ancillary payloads, if provided. The only currently valid payloads for extras are the [`push`](/docs/push/publish#sub-channels), [`ref`](/docs/channels/messages#interactions) and [`privileged`](/docs/platform/integrations/webhooks#skipping) objects. | <If lang="java">`JSONObject`, `JSONArray`</If><If lang="csharp">plain C# object that can be converted to Json</If><If lang="javascript,nodejs">`JSON Object`</If><If lang="ruby">`Hash`, `Array`</If><If lang="swift">`Dictionary`, `Array`</If><If lang="objc">`NSDictionary *`, `NSArray *`</If> |
370+
| <If lang="javascript,nodejs,java,objc,swift,ruby">extras</If><If lang="csharp">Extras</If> | Metadata and/or ancillary payloads, if provided. The only currently valid payloads for extras are the [`push`](/docs/push/publish#sub-channels), [`ref`](/docs/messages#interactions) and [`privileged`](/docs/platform/integrations/webhooks#skipping) objects. | <If lang="java">`JSONObject`, `JSONArray`</If><If lang="csharp">plain C# object that can be converted to Json</If><If lang="javascript,nodejs">`JSON Object`</If><If lang="ruby">`Hash`, `Array`</If><If lang="swift">`Dictionary`, `Array`</If><If lang="objc">`NSDictionary *`, `NSArray *`</If> |
371371
| <If lang="javascript,nodejs,java,objc,swift,ruby">id</If><If lang="csharp">Id</If> | Unique ID assigned by Ably to this presence update | `String` |
372372
| <If lang="javascript,nodejs">clientId</If><If lang="ruby">client_id</If><If lang="csharp">ClientId</If><If lang="java,objc,swift">clientId</If> | The client ID of the publisher of this presence update | `String` |
373373
| <If lang="javascript,nodejs">connectionId</If><If lang="ruby">connection_id</If><If lang="csharp">ConnectionId</If><If lang="java,objc,swift">connectionId</If> | The connection ID of the publisher of this presence update | `String` |
@@ -701,7 +701,7 @@ Returns a new `PaginatedResult` loaded with the next page of results. If there a
701701

702702
`Task<PaginatedResult<T>> NextAsync()`
703703

704-
Returns a new [`PaginatedResult`](/docs/api/realtime-sdk/historypaginated-result) loaded with the next page of results. If there are no further pages, then a blank PaginatedResult will be returned. The method is asynchronous and return a Task which needs to be awaited to get the `PaginatedResult`
704+
Returns a new [`PaginatedResult`](/docs/api/realtime-sdk/history#paginated-result) loaded with the next page of results. If there are no further pages, then a blank PaginatedResult will be returned. The method is asynchronous and return a Task which needs to be awaited to get the `PaginatedResult`
705705

706706
</If>
707707

0 commit comments

Comments
 (0)