Skip to content

Fix: Resolve broken links and formatting typos from folder restructuring#11517

Open
ttmagedara2001 wants to merge 1 commit into
wso2:masterfrom
ttmagedara2001:dev-branch
Open

Fix: Resolve broken links and formatting typos from folder restructuring#11517
ttmagedara2001 wants to merge 1 commit into
wso2:masterfrom
ttmagedara2001:dev-branch

Conversation

@ttmagedara2001

Copy link
Copy Markdown

Purpose

Describe the problems, issues, or needs driving this feature/fix and include links to related issues in the following format: Resolves issue1, issue2, etc.

Goals

Describe the solutions that this feature/fix will introduce to resolve the problems described above

Approach

Describe how you are implementing the solutions. Include an animated GIF or screenshot if the change affects the UI (email documentation@wso2.com to review all UI text). Include a link to a Markdown file or Google doc if the feature write-up is too long to paste here.

User stories

Summary of user stories addressed by this change>

Release note

Brief description of the new feature or bug fix as it will appear in the release notes

Documentation

Link(s) to product documentation that addresses the changes of this PR. If no doc impact, enter “N/A” plus brief explanation of why there’s no doc impact

Training

Link to the PR for changes to the training content in https://github.com/wso2/WSO2-Training, if applicable

Certification

Type “Sent” when you have provided new/updated certification questions, plus four answers for each question (correct answer highlighted in bold), based on this change. Certification questions/answers should be sent to certification@wso2.com and NOT pasted in this PR. If there is no impact on certification exams, type “N/A” and explain why.

Marketing

Link to drafts of marketing content that will describe and promote this feature, including product page changes, technical articles, blog posts, videos, etc., if applicable

Automation tests

  • Unit tests

    Code coverage information

  • Integration tests

    Details about the test cases and coverage

Security checks

Samples

Provide high-level details about the samples related to this feature

Related PRs

List any other related PRs

Migrations (if applicable)

Describe migration steps and platforms on which migration has been tested

Test environment

List all JDK versions, operating systems, databases, and browser/versions on which this feature/fix was tested

Learning

Describe the research phase and any blog posts, patterns, libraries, or add-ons you used to solve the problem.

@CLAassistant

CLAassistant commented Jun 16, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@coderabbitai

coderabbitai Bot commented Jun 16, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Overview

This PR addresses broken documentation links and outdated path references resulting from folder restructuring in the WSO2 API Manager documentation repository. The changes span 143 documentation files across the entire documentation suite, systematically updating internal cross-references to align with the new directory structure.

Scope of Changes

Files Modified: 143

Total Line Changes: Approximately 280 lines added/removed across all files

The PR updates internal documentation links across all major sections including:

  • Administration and governance documentation
  • API design and management guides
  • API developer portal documentation
  • API gateway and security guides
  • API operations CLI (apictl) documentation
  • Installation and setup documentation
  • Integration and monitoring documentation
  • Reference guides and tutorials

Key Link Updates

The PR systematically updates documentation path references following these primary patterns:

  1. Consumer/Developer Portal paths: Updates from /consume/... to /api-developer-portal/...
  2. API Management paths: Updates from /manage-apis/... to /api-design-manage/...
  3. Setup paths: Updates from /install-and-setup/deploying-wso2-api-manager/... to /install-and-setup/setup/...
  4. Administration paths: Relocates from /administer/... to appropriate new locations (/api-security/key-management/third-party-key-managers/..., /reference/..., etc.)
  5. Reference paths: Updates from /develop/... to /reference/...
  6. CLI paths: Updates from /install-and-setup/setup/api-controller/... to /apiops/cli/...

Additional Standardizations

  • Adds {{base_path}} template variables to standardize link prefixes
  • Appends .md file extensions to documentation links for consistency
  • Updates anchor fragments and path segments to reflect reorganized hierarchy
  • Converts relative filesystem-style paths to absolute template-based references

Impact Assessment

The changes are purely documentation-focused with no code modifications. All updates maintain the semantic intent of the original links while redirecting them to reorganized destinations. The systematic nature of the updates suggests the PR is addressing a comprehensive documentation restructuring initiative.

Effort to Review: Low to Medium - Changes follow consistent patterns and are primarily link/path updates without substantive content modifications.

Outstanding Item

The PR is awaiting Contributor License Agreement (CLA) validation from the contributor before it can be merged. This procedural requirement must be resolved regardless of the technical quality of the changes.

Walkthrough

This PR is a documentation-only update that refreshes internal links, anchors, and a small number of related note texts across many pages. The changes align references with newer canonical paths in administration, API design, API Developer Portal, AI Gateway, API Ops CLI, setup and deployment, monitoring, customization, reference, tutorials, and shared include files. A few pages also add brief explanatory text, heading adjustments, or note blocks while keeping the documented procedures and commands largely unchanged.

Suggested reviewers

  • chamilaadhi
  • tharikaGitHub
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 20

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-websocket-streaming-api.md (1)

183-183: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Restore the missing api-design-manage segment in this deploy link.

The current path skips the canonical route used throughout the docs, so this link will not resolve to the intended page.

🔗 Suggested edit
- {{base_path}}/deploy-and-publish/deploy-on-gateway/deploy-api/deploy-an-api/
+ {{base_path}}/api-design-manage/deploy-and-publish/deploy-on-gateway/deploy-api/deploy-an-api/
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-websocket-streaming-api.md`
at line 183, The href attribute in the deployment link on line 183 is missing
the `api-design-manage` segment which is part of the canonical documentation
route structure. Restore the missing segment by updating the path from
`{{base_path}}/deploy-and-publish/deploy-on-gateway/deploy-api/deploy-an-api/`
to include `api-design-manage` as the first segment after `{{base_path}}` so the
link follows the correct documentation structure and resolves to the intended
page.
en/docs/api-design-manage/design/create-api/create-rest-api/create-a-rest-api-from-an-openapi-definition.md (1)

180-183: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Refresh the remaining Rate Limiting links to the new canonical path.

Both pages still point this reference at the legacy manage-apis/... route while the rest of the section has been moved to api-design-manage/....

  • en/docs/api-design-manage/design/create-api/create-rest-api/create-a-rest-api-from-an-openapi-definition.md#L180-L183: update the Rate Limiting link to the new canonical destination.
  • en/docs/api-design-manage/design/create-api/create-an-api-using-a-service.md#L73-L75: update the REST API rate-limiting link to the same destination.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@en/docs/api-design-manage/design/create-api/create-rest-api/create-a-rest-api-from-an-openapi-definition.md`
around lines 180 - 183, Update the Rate Limiting links to point to the new
canonical path instead of the legacy route. In file
en/docs/api-design-manage/design/create-api/create-rest-api/create-a-rest-api-from-an-openapi-definition.md
at lines 180-183, change the Rate Limiting link reference from the legacy
manage-apis path to the new api-design-manage path. In the sibling file
en/docs/api-design-manage/design/create-api/create-an-api-using-a-service.md at
lines 73-75, update the REST API rate-limiting link to use the same new
canonical destination path.
en/docs/apiops/cli/getting-started-with-wso2-api-controller.md (1)

455-456: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Shared broken export-directory fragment.

Both links use ##set-export-directory, so neither lands on the intended section.

  • en/docs/apiops/cli/getting-started-with-wso2-api-controller.md#L455-L456: change the fragment to #set-export-directory.
  • en/docs/apiops/cli/ci-cd-with-wso2-api-management.md#L455-L456: change the fragment to #set-export-directory.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@en/docs/apiops/cli/getting-started-with-wso2-api-controller.md` around lines
455 - 456, Both files contain broken markdown anchor fragments that use double
hash symbols instead of single hash symbols, preventing links from navigating to
the intended section. In
en/docs/apiops/cli/getting-started-with-wso2-api-controller.md at lines 455-456,
change the fragment from ##set-export-directory to `#set-export-directory`.
Similarly, in en/docs/apiops/cli/ci-cd-with-wso2-api-management.md at lines
455-456, change the fragment from ##set-export-directory to
`#set-export-directory`. This will ensure the links correctly reference the
intended section heading.
🧹 Nitpick comments (2)
en/docs/apiops/cli/advanced-topics/configuring-environment-specific-parameters.md (1)

331-333: ⚡ Quick win

Use descriptive link text for the environment-variable references.

Both here links are vague and triggered the link-text warning. Rename them to the guide title in both locations.

Also applies to: 670-670

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@en/docs/apiops/cli/advanced-topics/configuring-environment-specific-parameters.md`
around lines 331 - 333, The link text "here" used in the parameters file
documentation is vague and should be replaced with descriptive text that
indicates what the link is about. Replace the "here" link text at line 331 (in
the sentence about environment variable notation) with a descriptive label based
on the guide title, such as "Using Dynamic Data in API Controller Projects" or
similar. Apply the same improvement at line 670 where another vague "here" link
appears in the documentation.

Source: Linters/SAST tools

en/docs/install-and-setup/setup/multi-dc-deployment/multi-dc-deployment-patterns-overview.md (1)

135-135: 💤 Low value

Use a descriptive link label.

“here” hides the destination and weakens the navigation cue. Please name the linked page in the sentence.

💡 Suggested wording
-Please note the recommendations mentioned [here]({{base_path}}/api-design-manage/deploy-and-publish/deploy-on-gateway/api-gateway/scaling-the-gateway.md) when scaling the Gateways.
+Please note the recommendations in [Scaling the Gateway]({{base_path}}/api-design-manage/deploy-and-publish/deploy-on-gateway/api-gateway/scaling-the-gateway.md) when scaling the Gateways.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@en/docs/install-and-setup/setup/multi-dc-deployment/multi-dc-deployment-patterns-overview.md`
at line 135, Replace the generic link text "here" with a descriptive label that
clearly indicates the destination and purpose of the link. Since the linked page
is about scaling the Gateway (as evident from the URL path
scaling-the-gateway.md), change the link text from "here" to something
descriptive like "Gateway scaling recommendations" or "scaling the Gateway" to
improve navigation clarity and accessibility.

Source: Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@en/docs/administer/rate-limiting/manage-ai-subscription-policies.md`:
- Line 39: Fix the Custom Attributes table row by addressing two issues: First,
correct the grammatical error where "objective ... are" has a subject-verb
disagreement (should be either "objectives are" or "objective is"). Second,
remove the stray hyphen at the end of the link label "Enabling Monetization of
APIs-" so it reads "Enabling Monetization of APIs" without the trailing hyphen.
Review the overall wording to ensure it reads naturally and is concise while
maintaining clarity for the end user.

In
`@en/docs/api-design-manage/design/create-api/create-rest-api/create-a-rest-api.md`:
- Around line 180-187: The Rate Limiting link in the diff points to a deleted
file (introducing-throttling-use-cases.md that was removed as part of
documentation restructuring). Fix this by either removing the Rate Limiting list
item entirely, or replacing the stale URL with a valid rate-limiting topic such
as assign-business-plans.md or set-api-level-throttling.md that aligns with your
documentation goals. Choose the action based on whether rate-limiting
information should remain in this list of related topics.

In
`@en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-websocket-streaming-api.md`:
- Line 7: The introductory sentence on line 7 contains an incorrect protocol
reference. In the phrase "import [existing AsyncAPI definitions to create SSE
APIs in WSO2 API-M]", the protocol name "SSE" is incorrect since this
documentation page is specifically for WebSocket APIs, not SSE APIs. Replace
"SSE APIs" with "WebSocket APIs" to correctly reflect the protocol being
documented on this page.

In `@en/docs/api-design-manage/design/rate-limiting/rate-limiting-for-ai-apis.md`:
- Line 40: In the Custom Attributes table row, fix the grammar error by changing
"fields are" to "field is" to match the singular subject "objective".
Additionally, remove the trailing hyphen from the link label text "Enabling
Monetization of APIs-" so it reads "Enabling Monetization of APIs" without the
trailing dash. These are minor text cleanup edits to improve readability and
correctness.

In
`@en/docs/api-developer-portal/invoke-apis/invoke-apis-using-tools/include-additional-headers-in-the-api-console.md`:
- Line 8: The link text "Enabling Cors per API" uses inconsistent capitalization
of the CORS acronym. Change the link text from "Enabling Cors per API" to
"Enabling CORS per API" to maintain consistency with the CORS terminology used
throughout the surrounding text and documentation. The URL portion of the link
remains unchanged.

In `@en/docs/api-developer-portal/manage-application/create-application.md`:
- Line 11: Fix the grammar error in the sentence at line 11 of the
create-application.md file. Change the phrase "in to the" to "into the" where it
appears in the context of "adding the configuration
`"DisableDefaultApplicationCreation" : true` in to the `Advanced
Configurations`". This is a simple word correction to improve the clarity and
correctness of the user-facing documentation.

In
`@en/docs/api-security/runtime/authorization/role-based-access-control-using-xacml.md`:
- Line 27: Update the link labels across two locations to align with their
destination page titles and improve consistency. In
en/docs/api-security/runtime/authorization/role-based-access-control-using-xacml.md
at line 27, update the link text to match the read-write LDAP user-store
destination page and change the phrase "read write" to "read-write" (with
hyphen). In en/docs/get-started/apim-architecture.md at line 49, rename the link
label to match the MoESIF destination page title to ensure consistent labeling
across all references.

In `@en/docs/apiops/cli/building-jenkins-ci-cd-pipeline.md`:
- Line 141: The link text "Download the WSO2 API Manager" does not match its
destination, which points to the apictl setup page rather than the API Manager
installation page. Either update the link text to accurately describe the apictl
setup (e.g., "Download and initialize the WSO2 API Controller") to match the
current destination URL, or change the destination link to point to the actual
API Manager installation and startup documentation page so the text and
destination are aligned.

In
`@en/docs/apiops/cli/managing-apis-api-products/importing-apis-via-dev-first-approach.md`:
- Line 348: The internal link anchor
`#initialize-api-projects-with-dynamic-data` referenced in the line does not
exist on the target page using-dynamic-data-in-api-controller-projects.md.
Identify the actual heading anchor that exists on the target documentation page
that covers the relevant content about initializing API projects with dynamic
data, and update the link fragment from
`#initialize-api-projects-with-dynamic-data` to match the correct existing
anchor on that page.

In `@en/docs/apiops/cli/managing-applications/managing-applications.md`:
- Around line 12-13: The permission tip phrase "import/export APIs" has been
copied across multiple documentation pages but not adapted to match each page's
subject. In en/docs/apiops/cli/managing-applications/managing-applications.md at
lines 12-13, replace "import/export APIs" with "import/export Applications". In
en/docs/apiops/cli/managing-applications/migrating-applications-to-different-environments.md
at lines 12-13, replace "import/export APIs" with "import/export Applications".
In
en/docs/apiops/cli/managing-apis-api-products/migrating-api-products-to-different-environments.md
at lines 13-14, replace "import/export APIs" with "import/export API Products".
Each change should swap in the page-specific noun to match the subject matter of
that documentation page.

In
`@en/docs/install-and-setup/setup/single-node/configuring-an-active-active-deployment.md`:
- Line 250: The link fragment in the Production Deployment Guidelines reference
has a trailing slash that prevents it from matching the heading anchor. Remove
the trailing slash from the fragment in the URL so it reads
`#common-guidelines-and-checklist` instead of
`#common-guidelines-and-checklist/`, which will correctly resolve to the target
heading anchor.

In `@en/docs/integrate/develop/working-with-service-catalog.md`:
- Around line 94-96: Fix the grammatical error in the first step of the numbered
list. Change "Create and API" to "Create an API" in the link text. The current
text reads awkwardly due to using "and" instead of "an" before "API".

In
`@en/docs/reference/customize-product/extending-api-manager/extending-gateway/customizing-api-template-for-gateway.md`:
- Around line 75-77: The ordered list containing steps 1-4 has inconsistent
indentation. Step 4, which starts with "Add `custom_authentication=true`", is
indented differently from steps 1-3 (like "Save the changes"). Adjust the
indentation of step 4 to match the same indentation level as the preceding
numbered items in the list to ensure proper Markdown rendering.
- Line 9: The markdown link `[Writing a custom handler]()` in the documentation
has an empty URL destination, which renders as a broken link. Either replace the
empty parentheses with the correct documentation path for custom handler writing
instructions, or remove the link entirely if it is a placeholder pending
documentation completion. Ensure any URL path follows the same format as the
other documentation reference links in the same sentence (such as the API
properties link using the {{base_path}} pattern).

In
`@en/docs/reference/customize-product/extending-api-manager/extending-key-management/extending-the-key-manager-interface.md`:
- Around line 17-18: Fix the grammatical error in the sentence that precedes the
link to Configure a Custom Key Manager. Change "as explain in" to "as explained
in" to make the sentence grammatically correct and complete. The phrase "as
explained in" properly uses the past participle form of the verb to match the
structure of the sentence.

In `@en/docs/reference/faq.md`:
- Around line 184-188: Replace all instances of "self signup" (two words,
unhyphenated) with "self-signup" (hyphenated) in the FAQ section to maintain
consistent user-facing terminology. Specifically, update "self signup" in both
the question heading "How can I disable self signup to the Developer Portal ?"
and in the explanation text "To disable the self signup capability" to use the
hyphenated form "self-signup" to align with the coding guidelines and
surrounding documentation references.

In `@en/docs/tutorials/enforce-throttling-and-resource-access-policies.md`:
- Line 8: The anchor text "Subscribe to an API" in the prerequisites section
currently points to the integrated API console invocation guide, but it should
reference the API subscription guide instead. Update the href for the "Subscribe
to an API" link to use the correct path
`{{base_path}}/api-developer-portal/manage-subscription/subscribe-to-an-api.md`
so users are directed to the proper subscription documentation rather than the
API invocation guide.

In `@en/docs/tutorials/scenarios/scenario14-external-key-manager.md`:
- Line 19: Replace the generic link text "WSO2 Documentation" with a more
specific and descriptive label such as "Keycloak connector guide" to better
indicate the purpose of the link and make it easier for readers to scan and
understand the content they will be accessing. This change improves clarity by
explicitly connecting the link text to the Keycloak configuration topic being
discussed.

In `@en/docs/tutorials/scenarios/scenario5-developer-community-feature.md`:
- Line 24: The phrase "client side SDKs" uses a compound modifier that requires
hyphenation when it appears before the noun. Change "client side SDKs" to
"client-side SDKs" to properly hyphenate the compound adjective modifying the
noun SDKs.

In `@en/docs/tutorials/streaming-api/create-and-publish-sse-api.md`:
- Line 3: The introductory sentence uses the indefinite article "a" before "SSE
Streaming API," but since SSE begins with a vowel sound, it should use "an"
instead. Change "a [SSE Streaming API]" to "an [SSE Streaming API]" in the
opening sentence to improve readability and follow proper English grammar
conventions.

---

Outside diff comments:
In
`@en/docs/api-design-manage/design/create-api/create-rest-api/create-a-rest-api-from-an-openapi-definition.md`:
- Around line 180-183: Update the Rate Limiting links to point to the new
canonical path instead of the legacy route. In file
en/docs/api-design-manage/design/create-api/create-rest-api/create-a-rest-api-from-an-openapi-definition.md
at lines 180-183, change the Rate Limiting link reference from the legacy
manage-apis path to the new api-design-manage path. In the sibling file
en/docs/api-design-manage/design/create-api/create-an-api-using-a-service.md at
lines 73-75, update the REST API rate-limiting link to use the same new
canonical destination path.

In
`@en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-websocket-streaming-api.md`:
- Line 183: The href attribute in the deployment link on line 183 is missing the
`api-design-manage` segment which is part of the canonical documentation route
structure. Restore the missing segment by updating the path from
`{{base_path}}/deploy-and-publish/deploy-on-gateway/deploy-api/deploy-an-api/`
to include `api-design-manage` as the first segment after `{{base_path}}` so the
link follows the correct documentation structure and resolves to the intended
page.

In `@en/docs/apiops/cli/getting-started-with-wso2-api-controller.md`:
- Around line 455-456: Both files contain broken markdown anchor fragments that
use double hash symbols instead of single hash symbols, preventing links from
navigating to the intended section. In
en/docs/apiops/cli/getting-started-with-wso2-api-controller.md at lines 455-456,
change the fragment from ##set-export-directory to `#set-export-directory`.
Similarly, in en/docs/apiops/cli/ci-cd-with-wso2-api-management.md at lines
455-456, change the fragment from ##set-export-directory to
`#set-export-directory`. This will ensure the links correctly reference the
intended section heading.

---

Nitpick comments:
In
`@en/docs/apiops/cli/advanced-topics/configuring-environment-specific-parameters.md`:
- Around line 331-333: The link text "here" used in the parameters file
documentation is vague and should be replaced with descriptive text that
indicates what the link is about. Replace the "here" link text at line 331 (in
the sentence about environment variable notation) with a descriptive label based
on the guide title, such as "Using Dynamic Data in API Controller Projects" or
similar. Apply the same improvement at line 670 where another vague "here" link
appears in the documentation.

In
`@en/docs/install-and-setup/setup/multi-dc-deployment/multi-dc-deployment-patterns-overview.md`:
- Line 135: Replace the generic link text "here" with a descriptive label that
clearly indicates the destination and purpose of the link. Since the linked page
is about scaling the Gateway (as evident from the URL path
scaling-the-gateway.md), change the link text from "here" to something
descriptive like "Gateway scaling recommendations" or "scaling the Gateway" to
improve navigation clarity and accessibility.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b9137a8f-54bd-4b1c-9301-ad789e1198ad

📥 Commits

Reviewing files that changed from the base of the PR and between e8cfaac and 6b08156.

📒 Files selected for processing (143)
  • en/docs/administer/admin-overview.md
  • en/docs/administer/governance/api-governance-admin-capabilities.md
  • en/docs/administer/governance/api-governance-cicd.md
  • en/docs/administer/logging-and-monitoring/logging/managing-log-growth.md
  • en/docs/administer/logging-and-monitoring/monitoring/monitoring-tcp-based-messages.md
  • en/docs/administer/managing-users-and-roles/managing-user-roles.md
  • en/docs/administer/managing-users-and-roles/managing-user-stores/writing-a-custom-user-store-manager.md
  • en/docs/administer/managing-users-and-roles/managing-users.md
  • en/docs/administer/multitenancy/managing-tenants.md
  • en/docs/administer/multitenancy/tenant-sharing-with-wso2is7.md
  • en/docs/administer/rate-limiting/manage-ai-subscription-policies.md
  • en/docs/ai-gateway/getting-started-with-ai-gateway.md
  • en/docs/ai-gateway/mcp-gateway/invoke-a-mcp-server-using-playground.md
  • en/docs/ai-gateway/mcp-gateway/subscribe-to-a-mcp-server.md
  • en/docs/api-design-manage/deploy-and-publish/deploy-on-gateway/api-gateway/scaling-the-gateway.md
  • en/docs/api-design-manage/deploy-and-publish/deploy-on-gateway/deploy-api/deploy-an-api.md
  • en/docs/api-design-manage/deploy-and-publish/publish-on-dev-portal/publish-aws-apis-in-the-dev-portal.md
  • en/docs/api-design-manage/design/advanced-topics/block-subscription-to-an-api.md
  • en/docs/api-design-manage/design/create-api/create-a-graphql-api.md
  • en/docs/api-design-manage/design/create-api/create-ai-api/create-an-ai-api.md
  • en/docs/api-design-manage/design/create-api/create-an-api-using-a-service.md
  • en/docs/api-design-manage/design/create-api/create-rest-api/create-a-rest-api-from-an-openapi-definition.md
  • en/docs/api-design-manage/design/create-api/create-rest-api/create-a-rest-api.md
  • en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-sse-streaming-api.md
  • en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-streaming-api-from-an-asyncapi-definition.md
  • en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-websocket-streaming-api.md
  • en/docs/api-design-manage/design/create-api/create-streaming-api/streaming-api-overview.md
  • en/docs/api-design-manage/design/create-api/create-streaming-api/test-a-websub-api.md
  • en/docs/api-design-manage/design/prototype-api/create-mocked-js-api.md
  • en/docs/api-design-manage/design/rate-limiting/rate-limiting-for-ai-apis.md
  • en/docs/api-design-manage/governance/api-governance-api-creator-capabilities.md
  • en/docs/api-developer-portal/b2b-api-consumption/api-consumption.md
  • en/docs/api-developer-portal/collaboration/interact-with-the-community.md
  • en/docs/api-developer-portal/consume-api-overview.md
  • en/docs/api-developer-portal/discover-apis/marketplace-assistant.md
  • en/docs/api-developer-portal/generating-sdks/write-a-client-application-using-the-sdk.md
  • en/docs/api-developer-portal/invoke-apis/invoke-apis-using-tools/include-additional-headers-in-the-api-console.md
  • en/docs/api-developer-portal/invoke-apis/invoke-apis-using-tools/invoke-an-api-using-the-integrated-api-console.md
  • en/docs/api-developer-portal/invoke-apis/invoke-apis-using-tools/invoke-an-graphql-api-using-the-integrated-graphql-console.md
  • en/docs/api-developer-portal/invoke-apis/invoke-apis-using-tools/test-apis-with-apichat.md
  • en/docs/api-developer-portal/invoke-apis/invoke-apis-using-tools/try-out-using-postman.md
  • en/docs/api-developer-portal/manage-application/advanced-topics/adding-an-application-key-generation-workflow.md
  • en/docs/api-developer-portal/manage-application/create-application.md
  • en/docs/api-developer-portal/manage-application/generate-keys/generate-api-keys.md
  • en/docs/api-developer-portal/manage-application/generate-keys/revoke-oauth2-application.md
  • en/docs/api-developer-portal/manage-application/sharing-applications/sharing-applications.md
  • en/docs/api-developer-portal/manage-subscription/advanced-topics/adding-an-api-subscription-deletion-workflow.md
  • en/docs/api-developer-portal/manage-subscription/advanced-topics/adding-an-api-subscription-tier-update-workflow.md
  • en/docs/api-developer-portal/manage-subscription/subscribe-to-an-api.md
  • en/docs/api-developer-portal/rate-limiting/resetting-application-throttling-policies.md
  • en/docs/api-gateway/federated-gateways/overview.md
  • en/docs/api-gateway/policies/adding-dynamic-endpoints.md
  • en/docs/api-gateway/scaling-the-gateway.md
  • en/docs/api-security/key-management/third-party-key-managers/configure-custom-connector.md
  • en/docs/api-security/key-management/tokens/encrypting-oauth2-tokens.md
  • en/docs/api-security/runtime/authorization/oauth2-scopes/application-scopes.md
  • en/docs/api-security/runtime/authorization/role-based-access-control-using-xacml.md
  • en/docs/apiops/cli/advanced-topics/configuring-different-endpoint-security-types.md
  • en/docs/apiops/cli/advanced-topics/configuring-different-endpoint-types.md
  • en/docs/apiops/cli/advanced-topics/configuring-environment-specific-parameters.md
  • en/docs/apiops/cli/advanced-topics/configuring-git-integration.md
  • en/docs/apiops/cli/advanced-topics/using-dynamic-data-in-api-controller-projects.md
  • en/docs/apiops/cli/ai-related-operations-with-apictl.md
  • en/docs/apiops/cli/building-jenkins-ci-cd-pipeline.md
  • en/docs/apiops/cli/ci-cd-with-wso2-api-management.md
  • en/docs/apiops/cli/cicd-using-cli.md
  • en/docs/apiops/cli/enabling-correlation-logs-with-apictl.md
  • en/docs/apiops/cli/getting-started-with-wso2-api-controller.md
  • en/docs/apiops/cli/managing-apis-api-products/importing-apis-via-dev-first-approach.md
  • en/docs/apiops/cli/managing-apis-api-products/managing-apis-and-api-products.md
  • en/docs/apiops/cli/managing-apis-api-products/migrating-api-products-to-different-environments.md
  • en/docs/apiops/cli/managing-apis-api-products/migrating-apis-to-different-environments.md
  • en/docs/apiops/cli/managing-applications/managing-applications.md
  • en/docs/apiops/cli/managing-applications/migrating-applications-to-different-environments.md
  • en/docs/apiops/cli/managing-common-api-policies/managing-common-api-policies.md
  • en/docs/apiops/cli/managing-common-api-policies/migrating-common-api-policies-to-different-environments.md
  • en/docs/apiops/cli/managing-mcp-servers/importing-mcp-servers-via-dev-first-approach.md
  • en/docs/apiops/cli/managing-mcp-servers/managing-mcp-servers.md
  • en/docs/apiops/cli/managing-mcp-servers/migrating-mcp-servers-to-different-environments.md
  • en/docs/apiops/cli/managing-rate-limiting-policies/migrating-rate-limiting-policies-to-different-environments.md
  • en/docs/apiops/cli/managing-rate-limiting-policies/throttle-policy-import-export.md
  • en/docs/get-started/apim-architecture.md
  • en/docs/includes/deploy/assign-custom-hostname.md
  • en/docs/includes/deploy/steps-to-deploy-apim-in-a-distributed-setup-with-km-separation.md
  • en/docs/includes/deploy/steps-to-deploy-apim-in-a-distributed-setup-with-tm-separation.md
  • en/docs/includes/design/invoke-prerelease-api.md
  • en/docs/includes/design/redis-counter-note.md
  • en/docs/includes/design/stream-more-links.md
  • en/docs/install-and-setup/setup/advance-configurations/configuring-caching.md
  • en/docs/install-and-setup/setup/configure-userstores/configure-primary-user-store/configuring-a-jdbc-user-store.md
  • en/docs/install-and-setup/setup/configure-userstores/configure-primary-user-store/configuring-the-primary-user-store.md
  • en/docs/install-and-setup/setup/deployment-best-practices/changing-the-default-ports-with-offset.md
  • en/docs/install-and-setup/setup/distributed-deployment/configuring-wso2-identity-server-as-a-key-manager.md
  • en/docs/install-and-setup/setup/distributed-deployment/deploying-wso2-api-m-in-a-simple-scalable-setup.md
  • en/docs/install-and-setup/setup/multi-dc-deployment/multi-dc-deployment-patterns-overview.md
  • en/docs/install-and-setup/setup/security/configuring-keystores/configuring-keystores-in-wso2-api-manager.md
  • en/docs/install-and-setup/setup/security/enabling-hostname-verification.md
  • en/docs/install-and-setup/setup/security/logins-and-passwords/maintaining-logins-and-passwords.md
  • en/docs/install-and-setup/setup/security/logins-and-passwords/working-with-encrypted-passwords.md
  • en/docs/install-and-setup/setup/security/user-account-management.md
  • en/docs/install-and-setup/setup/setting-up-databases/changing-default-databases/changing-to-ibm-db2.md
  • en/docs/install-and-setup/setup/setting-up-databases/changing-default-databases/changing-to-mssql.md
  • en/docs/install-and-setup/setup/setting-up-databases/changing-default-databases/changing-to-mysql.md
  • en/docs/install-and-setup/setup/setting-up-databases/changing-default-databases/changing-to-oracle-rac.md
  • en/docs/install-and-setup/setup/setting-up-databases/changing-default-databases/changing-to-oracle.md
  • en/docs/install-and-setup/setup/setting-up-databases/changing-default-databases/changing-to-postgresql.md
  • en/docs/install-and-setup/setup/single-node/all-in-one-deployment-overview.md
  • en/docs/install-and-setup/setup/single-node/configuring-a-single-node.md
  • en/docs/install-and-setup/setup/single-node/configuring-an-active-active-deployment.md
  • en/docs/install-and-setup/setup/updating-wso2-api-manager.md
  • en/docs/integrate/develop/working-with-service-catalog.md
  • en/docs/monitoring/api-monetization/monetizing-an-api.md
  • en/docs/monitoring/observability/monitoring-api-logs.md
  • en/docs/monitoring/observability/monitoring-correlation-logs.md
  • en/docs/reference/customize-product/customizations/adding-internationalization.md
  • en/docs/reference/customize-product/customizations/customizing-login-pages-for-dev-portal-and-publisher.md
  • en/docs/reference/customize-product/customizations/customizing-the-developer-portal/enabling-or-disabling-self-signup.md
  • en/docs/reference/customize-product/customizations/log-in-to-the-dev-portal-using-social-media.md
  • en/docs/reference/customize-product/customizations/overriding-the-publisher-portal-theme.md
  • en/docs/reference/customize-product/extending-api-manager/extending-gateway/customizing-api-template-for-gateway.md
  • en/docs/reference/customize-product/extending-api-manager/extending-gateway/writing-custom-handlers.md
  • en/docs/reference/customize-product/extending-api-manager/extending-key-management/extending-key-validation.md
  • en/docs/reference/customize-product/extending-api-manager/extending-key-management/extending-the-key-manager-interface.md
  • en/docs/reference/customize-product/extending-api-manager/extending-workflows/configuring-workflows-for-tenants.md
  • en/docs/reference/customize-product/extending-api-manager/saml2-sso/configuring-external-idp-through-identity-server-for-sso.md
  • en/docs/reference/customize-product/extending-api-manager/saml2-sso/configuring-single-sign-on-with-saml2.md
  • en/docs/reference/customize-product/extending-api-manager/saml2-sso/multi-factor-authentication-mfa-for-publisher-and-developer-portals.md
  • en/docs/reference/faq.md
  • en/docs/reference/guides/message-flow-in-the-api-manager-gateway.md
  • en/docs/reference/performance-test-results-token-persistence.md
  • en/docs/reference/troubleshooting/error-handling.md
  • en/docs/tutorials/create-and-publish-websocket-api.md
  • en/docs/tutorials/develop-an-integration-with-a-managed-api.md
  • en/docs/tutorials/edit-an-api-by-modifyng-the-api-definition.md
  • en/docs/tutorials/enforce-throttling-and-resource-access-policies.md
  • en/docs/tutorials/expose-a-soap-service-as-a-rest-api.md
  • en/docs/tutorials/integrating-with-solace.md
  • en/docs/tutorials/scenarios/scenario14-external-key-manager.md
  • en/docs/tutorials/scenarios/scenario5-developer-community-feature.md
  • en/docs/tutorials/streaming-api/create-and-publish-sse-api.md
  • en/docs/tutorials/streaming-api/create-and-publish-websocket-api.md
  • en/docs/tutorials/streaming-api/create-and-publish-websub-api.md
  • en/docs/use-cases/streaming-usecase/exposing-stream-as-managed-api-in-service-catalog.md

| Stop On Quota Reach | This indicates the action to be taken when a user goes beyond the allocated quota. If the check box is selected, the user's requests are dropped and an error response (HTTP Status code 429) is given. If the check box is cleared, the requests are allowed to pass through. |
| Billing Plan | This field only makes sense if you have API Monetization enabled. The available **billing plans** are **Free and Commercial**. An API is tagged/labelled as Free or Paid depending on its subscription tiers(e.g., Unlimited, Gold, etc.), which are the tiers selected when creating an API. |
| Custom Attributes | You can choose to display additional information about tiers using custom attributes during custom implementations. The main objective of these fields are to provide more information regarding the tier to Application Developers at the time of API subscription. An example usage of custom attributes is API Monetization. See [Enabling Monetization of APIs-]({{base_path}}/manage-apis/design/api-monetization/monetizing-an-api/) for more information on practical usage of custom attributes in the subscription tier. |
| Custom Attributes | You can choose to display additional information about tiers using custom attributes during custom implementations. The main objective of these fields are to provide more information regarding the tier to Application Developers at the time of API subscription. An example usage of custom attributes is API Monetization. See [Enabling Monetization of APIs-]({{base_path}}/monitoring/api-monetization/monetizing-an-api.md) for more information on practical usage of custom attributes in the subscription tier. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Tighten the custom-attributes note.

The row still reads awkwardly (objective ... are), and the link label ends with a stray hyphen. A small wording cleanup would make the updated reference read more naturally.

✏️ Suggested wording tweak
-     | Custom Attributes               | You can choose to display additional information about tiers using custom attributes during custom implementations. The main objective of these fields are to provide more information regarding the tier to Application Developers at the time of API subscription. An example usage of custom attributes is API Monetization. See [Enabling Monetization of APIs-]({{base_path}}/monitoring/api-monetization/monetizing-an-api.md) for more information on practical usage of custom attributes in the subscription tier.      |
+     | Custom Attributes               | You can choose to display additional information about tiers using custom attributes during custom implementations. The main objective of these fields is to provide more information regarding the tier to Application Developers at the time of API subscription. An example usage of custom attributes is API Monetization. See [Enabling Monetization of APIs]({{base_path}}/monitoring/api-monetization/monetizing-an-api.md) for more information on practical usage of custom attributes in the subscription tier.      |

As per coding guidelines, keep the user-facing prose concise and polished.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
| Custom Attributes | You can choose to display additional information about tiers using custom attributes during custom implementations. The main objective of these fields are to provide more information regarding the tier to Application Developers at the time of API subscription. An example usage of custom attributes is API Monetization. See [Enabling Monetization of APIs-]({{base_path}}/monitoring/api-monetization/monetizing-an-api.md) for more information on practical usage of custom attributes in the subscription tier. |
| Custom Attributes | You can choose to display additional information about tiers using custom attributes during custom implementations. The main objective of these fields is to provide more information regarding the tier to Application Developers at the time of API subscription. An example usage of custom attributes is API Monetization. See [Enabling Monetization of APIs]({{base_path}}/monitoring/api-monetization/monetizing-an-api.md) for more information on practical usage of custom attributes in the subscription tier. |
🧰 Tools
🪛 LanguageTool

[style] ~39-~39: Consider using a more formal alternative.
Context: ...bjective of these fields are to provide more information regarding the tier to Application Devel...

(MORE_INFO)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@en/docs/administer/rate-limiting/manage-ai-subscription-policies.md` at line
39, Fix the Custom Attributes table row by addressing two issues: First, correct
the grammatical error where "objective ... are" has a subject-verb disagreement
(should be either "objectives are" or "objective is"). Second, remove the stray
hyphen at the end of the link label "Enabling Monetization of APIs-" so it reads
"Enabling Monetization of APIs" without the trailing hyphen. Review the overall
wording to ensure it reads naturally and is concise while maintaining clarity
for the end user.

Source: Linters/SAST tools

Comment on lines +180 to +187
- [Endpoints]({{base_path}}/api-design-manage/design/endpoints/endpoint-types.md)
- [API Security]({{base_path}}/api-security/runtime/api-authentication/secure-apis-using-oauth2-tokens.md)
- [Rate Limiting]({{base_path}}/manage-apis/design/rate-limiting/introducing-throttling-use-cases/)
- [Life Cycle Management]({{base_path}}/manage-apis/design/lifecycle-management/api-lifecycle/)
- [API Monetization]({{base_path}}/manage-apis/design/api-monetization/monetizing-an-api/)
- [API Visibility]({{base_path}}/manage-apis/design/advanced-topics/control-api-visibility-and-subscription-availability-in-developer-portal/)
- [API Documentation]({{base_path}}/manage-apis/design/api-documentation/add-api-documentation/)
- [Custom Properties]({{base_path}}/manage-apis/design/create-api/adding-custom-properties-to-apis/) No newline at end of file
- [Life Cycle Management]({{base_path}}/api-design-manage/design/lifecycle-management/api-lifecycle.md)
- [API Monetization]({{base_path}}/monitoring/api-monetization/monetizing-an-api.md)
- [API Visibility]({{base_path}}/api-design-manage/design/advanced-topics/control-api-visibility-and-subscription-availability-in-developer-portal.md)
- [API Documentation]({{base_path}}/api-design-manage/design/api-documentation/add-api-documentation.md)
- [Custom Properties]({{base_path}}/api-design-manage/design/create-api/adding-custom-properties-to-apis.md) No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

fd -type f -name "*throttling*" -o -name "*rate*limiting*" | head -20

Repository: wso2/docs-apim

Length of output: 229


🏁 Script executed:

find . -type f \( -path "*manage-apis*" -o -path "*api-design-manage*" \) -name "*.md" | grep -i "rate\|throttl" | head -20

Repository: wso2/docs-apim

Length of output: 1054


🏁 Script executed:

# Search for rate-limiting or throttling documentation files
rg -l "rate.limiting|throttling" --type md | grep -E "(manage-apis|api-design-manage)" | head -20

Repository: wso2/docs-apim

Length of output: 1664


🏁 Script executed:

# List directory structure for both potential paths
find . -type d -name "rate-limiting" 2>/dev/null
find . -type d -name "throttling" 2>/dev/null

Repository: wso2/docs-apim

Length of output: 265


🏁 Script executed:

# Check if the old manage-apis path exists and what's in it
find . -type d -path "*manage-apis*rate-limiting*" 2>/dev/null

Repository: wso2/docs-apim

Length of output: 40


🏁 Script executed:

# Look for the specific file mentioned in the link
find . -type f -name "*introducing-throttling*" -o -name "*throttling-use-cases*" 2>/dev/null

Repository: wso2/docs-apim

Length of output: 40


🏁 Script executed:

# Check what files exist in the api-design-manage rate-limiting directory
ls -la ./en/docs/api-design-manage/design/rate-limiting/

Repository: wso2/docs-apim

Length of output: 622


🏁 Script executed:

# Check the actual file to see the current link
cat -n ./en/docs/api-design-manage/design/create-api/create-rest-api/create-a-rest-api.md | sed -n '180,187p'

Repository: wso2/docs-apim

Length of output: 972


🏁 Script executed:

# Search for references to "introducing-throttling" or similar in the codebase
rg "introducing.throttling|throttling.*use.*case" --type md

Repository: wso2/docs-apim

Length of output: 2605


🏁 Script executed:

# Check if the introducing-throttling-use-cases file exists anywhere
find . -type f -name "*introducing-throttling*" -o -name "*introducing*throttling*"

Repository: wso2/docs-apim

Length of output: 40


🏁 Script executed:

# Search for any index or overview file in the rate-limiting directory that might be the target
cat ./en/docs/api-design-manage/design/rate-limiting/set-api-level-throttling.md | head -20

Repository: wso2/docs-apim

Length of output: 1463


🏁 Script executed:

# Check if there's an index file or README in the rate-limiting directory
ls -la ./en/docs/api-design-manage/design/rate-limiting/ | grep -E "README|index|_"

Repository: wso2/docs-apim

Length of output: 40


🏁 Script executed:

# Search for all references to "introducing-throttling-use-cases" to see all instances
rg "introducing-throttling-use-cases" --type md

Repository: wso2/docs-apim

Length of output: 2305


🏁 Script executed:

# Check the old manage-apis path structure
find ./en/docs -type d -name "manage-apis" 2>/dev/null

Repository: wso2/docs-apim

Length of output: 40


🏁 Script executed:

# Check the git history to see if the file was renamed or moved
git log --oneline --all -- "*introducing-throttling*" 2>/dev/null | head -20

Repository: wso2/docs-apim

Length of output: 1186


🏁 Script executed:

# Look for any file that might serve as an overview/introduction for rate-limiting
ls -la ./en/docs/api-design-manage/design/rate-limiting/ && echo "---" && find ./en/docs -type f -path "*/rate-limiting/*" -name "*.md" | xargs -I {} basename {} | sort -u

Repository: wso2/docs-apim

Length of output: 1402


🏁 Script executed:

# Check what happened in the restructuring commit
git show --stat 185a441a3 | head -100

Repository: wso2/docs-apim

Length of output: 5865


🏁 Script executed:

# Check the recent commit that fixed broken links
git show --stat 3f7991c4b | head -100

Repository: wso2/docs-apim

Length of output: 2228


🏁 Script executed:

# Check the content of set-api-level-throttling.md to see if it covers rate-limiting concepts
head -30 ./en/docs/api-design-manage/design/rate-limiting/set-api-level-throttling.md

Repository: wso2/docs-apim

Length of output: 1964


🏁 Script executed:

# Check what content from the deleted introducing-throttling-use-cases.md might have been merged elsewhere
git show 3f7991c4b:en/docs/api-design-manage/design/rate-limiting/introducing-throttling-use-cases.md 2>/dev/null | head -50

Repository: wso2/docs-apim

Length of output: 40


🏁 Script executed:

# Check what other files reference similar rate-limiting introductory content
rg -B2 -A2 "assign-business-plans|protect-backend-services|set-api-level-throttling" ./en/docs/api-design-manage/design/rate-limiting/ --type md | head -40

Repository: wso2/docs-apim

Length of output: 672


🏁 Script executed:

# Look at the assign-business-plans file as it might be an overview
head -50 ./en/docs/api-design-manage/design/rate-limiting/assign-business-plans.md

Repository: wso2/docs-apim

Length of output: 3127


🏁 Script executed:

# Check what file the corrected link in create-an-api-using-a-service.md points to
cat ./en/docs/api-design-manage/design/create-api/create-an-api-using-a-service.md | grep -A2 -B2 "Rate Limiting"

Repository: wso2/docs-apim

Length of output: 721


🏁 Script executed:

# Get more context on the deleted file by checking the git diff
git show 3f7991c4b:en/docs/api-design-manage/design/rate-limiting/introducing-throttling-use-cases.md 2>/dev/null | head -100

Repository: wso2/docs-apim

Length of output: 40


🏁 Script executed:

# Check if there's a main rate-limiting overview page or index file
find ./en/docs/api-design-manage/design/rate-limiting -type f -name "*.md" | xargs ls -la

Repository: wso2/docs-apim

Length of output: 959


🏁 Script executed:

# Look for any _index or similar files
find ./en/docs/api-design-manage/design -type f -name "_*" -o -name "index*"

Repository: wso2/docs-apim

Length of output: 40


🏁 Script executed:

# Check the deleted file one more time to see what it contained in terms of description
git log --all --full-history -p -- "*introducing-throttling-use-cases.md" | head -200

Repository: wso2/docs-apim

Length of output: 15639


Update the Rate Limiting link—the target file was deleted during documentation refactoring.

The {{base_path}}/manage-apis/design/rate-limiting/introducing-throttling-use-cases/ link is stale. The introducing-throttling-use-cases.md file was removed in commit 3f7991c (December 9, 2025) as part of documentation restructuring. No equivalent overview file exists at the new canonical paths. Either remove the link or point to a specific rate-limiting topic such as assign-business-plans.md or set-api-level-throttling.md that serves your documentation purpose.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~182-~182: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...ecure-apis-using-oauth2-tokens.md) - [Rate Limiting]({{base_path}}/manage-apis/design/rate-...

(EN_COMPOUND_ADJECTIVE_INTERNAL)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@en/docs/api-design-manage/design/create-api/create-rest-api/create-a-rest-api.md`
around lines 180 - 187, The Rate Limiting link in the diff points to a deleted
file (introducing-throttling-use-cases.md that was removed as part of
documentation restructuring). Fix this by either removing the Rate Limiting list
item entirely, or replacing the stale URL with a valid rate-limiting topic such
as assign-business-plans.md or set-api-level-throttling.md that aligns with your
documentation goals. Choose the action based on whether rate-limiting
information should remain in this list of related topics.

A WebSocket API is a streaming API in WSO2 API Manager that is implemented based on the [WebSocket](https://www.w3.org/TR/websockets/) protocol specification, which is compatible with HTTP. The WebSocket protocol supports full-duplex communication over a channel that is established once. Therefore, WebSocket protocols allow a continuous two-way communication between the server and the client.

You can create a WebSocket API from scratch in WSO2 API-M and export the WebSocket APIs that are created within WSO2 API-M as AsyncAPI definitions. Alternatively, you can also import [existing AsyncAPI definitions to create SSE APIs in WSO2 API-M]({{base_path}}/design/create-api/create-streaming-api/create-a-streaming-api-from-an-asyncapi-definition).
You can create a WebSocket API from scratch in WSO2 API-M and export the WebSocket APIs that are created within WSO2 API-M as AsyncAPI definitions. Alternatively, you can also import [existing AsyncAPI definitions to create SSE APIs in WSO2 API-M]({{base_path}}/api-design-manage/design/create-api/create-streaming-api/create-a-streaming-api-from-an-asyncapi-definition.md).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix the protocol name in this intro sentence.

This page is for WebSocket APIs, not SSE APIs.

🛠 Suggested edit
- You can also import [existing AsyncAPI definitions to create SSE APIs in WSO2 API-M]({{base_path}}/api-design-manage/design/create-api/create-streaming-api/create-a-streaming-api-from-an-asyncapi-definition.md).
+ You can also import [existing AsyncAPI definitions to create WebSocket APIs in WSO2 API-M]({{base_path}}/api-design-manage/design/create-api/create-streaming-api/create-a-streaming-api-from-an-asyncapi-definition.md).
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
You can create a WebSocket API from scratch in WSO2 API-M and export the WebSocket APIs that are created within WSO2 API-M as AsyncAPI definitions. Alternatively, you can also import [existing AsyncAPI definitions to create SSE APIs in WSO2 API-M]({{base_path}}/api-design-manage/design/create-api/create-streaming-api/create-a-streaming-api-from-an-asyncapi-definition.md).
You can create a WebSocket API from scratch in WSO2 API-M and export the WebSocket APIs that are created within WSO2 API-M as AsyncAPI definitions. Alternatively, you can also import [existing AsyncAPI definitions to create WebSocket APIs in WSO2 API-M]({{base_path}}/api-design-manage/design/create-api/create-streaming-api/create-a-streaming-api-from-an-asyncapi-definition.md).
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-websocket-streaming-api.md`
at line 7, The introductory sentence on line 7 contains an incorrect protocol
reference. In the phrase "import [existing AsyncAPI definitions to create SSE
APIs in WSO2 API-M]", the protocol name "SSE" is incorrect since this
documentation page is specifically for WebSocket APIs, not SSE APIs. Replace
"SSE APIs" with "WebSocket APIs" to correctly reflect the protocol being
documented on this page.

| Stop On Quota Reach | This indicates the action to be taken when a user goes beyond the allocated quota. If the check box is selected, the user's requests are dropped and an error response (HTTP Status code 429) is given. If the check box is cleared, the requests are allowed to pass through. |
| Billing Plan | This field only makes sense if you have API Monetization enabled. The available **billing plans** are **Free and Commercial**. An API is tagged/labelled as Free or Paid depending on its subscription tiers(e.g., Unlimited, Gold, etc.), which are the tiers selected when creating an API. |
| Custom Attributes | You can choose to display additional information about tiers using custom attributes during custom implementations. The main objective of these fields are to provide more information regarding the tier to Application Developers at the time of API subscription. An example usage of custom attributes is API Monetization. See [Enabling Monetization of APIs-]({{base_path}}/api-design-manage/design/api-monetization/monetizing-an-api/) for more information on practical usage of custom attributes in the subscription tier. |
| Custom Attributes | You can choose to display additional information about tiers using custom attributes during custom implementations. The main objective of these fields are to provide more information regarding the tier to Application Developers at the time of API subscription. An example usage of custom attributes is API Monetization. See [Enabling Monetization of APIs-]({{base_path}}/monitoring/api-monetization/monetizing-an-api.md) for more information on practical usage of custom attributes in the subscription tier. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Polish the custom-attributes description.

The row still has a grammar typo (fields are) and the link label keeps the trailing hyphen from the old URL. A quick text cleanup would make the updated row read more naturally.

Suggested edit
- The main objective of these fields are to provide more information ...
- See [Enabling Monetization of APIs-](...)
+ The main objective of these fields is to provide more information ...
+ See [Enabling Monetization of APIs](...)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
| Custom Attributes | You can choose to display additional information about tiers using custom attributes during custom implementations. The main objective of these fields are to provide more information regarding the tier to Application Developers at the time of API subscription. An example usage of custom attributes is API Monetization. See [Enabling Monetization of APIs-]({{base_path}}/monitoring/api-monetization/monetizing-an-api.md) for more information on practical usage of custom attributes in the subscription tier. |
| Custom Attributes | You can choose to display additional information about tiers using custom attributes during custom implementations. The main objective of these fields is to provide more information regarding the tier to Application Developers at the time of API subscription. An example usage of custom attributes is API Monetization. See [Enabling Monetization of APIs]({{base_path}}/monitoring/api-monetization/monetizing-an-api.md) for more information on practical usage of custom attributes in the subscription tier. |
🧰 Tools
🪛 LanguageTool

[style] ~40-~40: Consider using a more formal alternative.
Context: ...bjective of these fields are to provide more information regarding the tier to Application Devel...

(MORE_INFO)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@en/docs/api-design-manage/design/rate-limiting/rate-limiting-for-ai-apis.md`
at line 40, In the Custom Attributes table row, fix the grammar error by
changing "fields are" to "field is" to match the singular subject "objective".
Additionally, remove the trailing hyphen from the link label text "Enabling
Monetization of APIs-" so it reads "Enabling Monetization of APIs" without the
trailing dash. These are minor text cleanup edits to improve readability and
correctness.

Source: Linters/SAST tools

The Swagger API Console is a JavaScript client that runs in the Developer Portal and makes JavaScript calls from the Developer Portal to the API Gateway. In order to successfully invoke an API by specifying an additional header via the API console, first you must specify the header that you want to add, under the CORS ([Cross Origin Resource Sharing](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS)) configuration.

Open the `<API-M_HOME>/repository/conf/deployment.toml` file, and specify the additional headers (`userId` in this case) under the `[apim.cors]` section. Alternatively, you could choose to add this additional header only to a specific API (for more information, see [Enabling Cors per API]({{base_path}}/manage-apis/design/advanced-topics/enabling-cors-for-apis/#enabling-cors-per-api)).
Open the `<API-M_HOME>/repository/conf/deployment.toml` file, and specify the additional headers (`userId` in this case) under the `[apim.cors]` section. Alternatively, you could choose to add this additional header only to a specific API (for more information, see [Enabling Cors per API]({{base_path}}/api-design-manage/design/advanced-topics/enabling-cors-for-apis.md#enabling-cors-per-api)).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Capitalize the CORS acronym in the link text.

The new label should stay consistent with the surrounding CORS terminology.

Suggested fix
-    Open the `<API-M_HOME>/repository/conf/deployment.toml` file, and specify the additional headers (`userId` in this case) under the `[apim.cors]` section. Alternatively, you could choose to add this additional header only to a specific API (for more information, see [Enabling Cors per API]({{base_path}}/api-design-manage/design/advanced-topics/enabling-cors-for-apis.md#enabling-cors-per-api)).
+    Open the `<API-M_HOME>/repository/conf/deployment.toml` file, and specify the additional headers (`userId` in this case) under the `[apim.cors]` section. Alternatively, you could choose to add this additional header only to a specific API (for more information, see [Enabling CORS per API]({{base_path}}/api-design-manage/design/advanced-topics/enabling-cors-for-apis.md#enabling-cors-per-api)).
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Open the `<API-M_HOME>/repository/conf/deployment.toml` file, and specify the additional headers (`userId` in this case) under the `[apim.cors]` section. Alternatively, you could choose to add this additional header only to a specific API (for more information, see [Enabling Cors per API]({{base_path}}/api-design-manage/design/advanced-topics/enabling-cors-for-apis.md#enabling-cors-per-api)).
Open the `<API-M_HOME>/repository/conf/deployment.toml` file, and specify the additional headers (`userId` in this case) under the `[apim.cors]` section. Alternatively, you could choose to add this additional header only to a specific API (for more information, see [Enabling CORS per API]({{base_path}}/api-design-manage/design/advanced-topics/enabling-cors-for-apis.md#enabling-cors-per-api)).
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@en/docs/api-developer-portal/invoke-apis/invoke-apis-using-tools/include-additional-headers-in-the-api-console.md`
at line 8, The link text "Enabling Cors per API" uses inconsistent
capitalization of the CORS acronym. Change the link text from "Enabling Cors per
API" to "Enabling CORS per API" to maintain consistency with the CORS
terminology used throughout the surrounding text and documentation. The URL
portion of the link remains unchanged.

Comment thread en/docs/reference/faq.md
Comment on lines +184 to +188
See [how to enable self signup]({{base_path}}/reference/customize-product/customizations/customizing-the-developer-portal/enabling-or-disabling-self-signup.md).

### How can I disable self signup to the Developer Portal ? I want to engage my own approval mechanism.

To disable the self signup capability, open the API-M management console and click the **Resources &gt; Browse** menu. The registry opens. Navigate to the `/_system/governance/apimgt/applicationdata/sign-up-config.xml` file and set the `<SelfSignUp><Enabled>` element to false. To engage your own signup process, see [Adding a User Signup Workflow]({{base_path}}/develop/customizations/adding-a-user-signup-workflow/).
To disable the self signup capability, open the API-M management console and click the **Resources &gt; Browse** menu. The registry opens. Navigate to the `/_system/governance/apimgt/applicationdata/sign-up-config.xml` file and set the `<SelfSignUp><Enabled>` element to false. To engage your own signup process, see [Adding a User Signup Workflow]({{base_path}}/reference/customize-product/customizations/adding-a-user-signup-workflow.md).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Use self-signup consistently.

The updated copy still uses self signup; hyphenating it here keeps the terminology consistent with the surrounding section.
As per coding guidelines, keep user-facing terminology hyphenated for consistency.

🧰 Tools
🪛 LanguageTool

[grammar] ~186-~186: Use a hyphen to join words.
Context: ...-signup.md). ### How can I disable self signup to the Developer Portal ? I want ...

(QB_NEW_EN_HYPHEN)


[grammar] ~188-~188: Use a hyphen to join words.
Context: ...approval mechanism. To disable the self signup capability, open the API-M manage...

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@en/docs/reference/faq.md` around lines 184 - 188, Replace all instances of
"self signup" (two words, unhyphenated) with "self-signup" (hyphenated) in the
FAQ section to maintain consistent user-facing terminology. Specifically, update
"self signup" in both the question heading "How can I disable self signup to the
Developer Portal ?" and in the explanation text "To disable the self signup
capability" to use the hyphenated form "self-signup" to align with the coding
guidelines and surrounding documentation references.

Source: Linters/SAST tools

This tutorial uses the `PizzaShack` API, which has  GET and POST methods to access it and a rate limiting policy enforced.

**Before you begin** , follow the [Create and Publish an API]({{base_path}}/create-api/create-rest-api/create-a-rest-api/) to create and publish the `PizzaShack` API and then the [Subscribe to an API]({{base_path}}/consume/invoke-apis/invoke-apis-using-tools/invoke-an-api-using-the-integrated-api-console/) to subscribe to the API using the `Bronze` rate limiting tier.
**Before you begin** , follow the [Create and Publish an API]({{base_path}}/api-design-manage/design/create-api/create-rest-api/create-a-rest-api.md) to create and publish the `PizzaShack` API and then the [Subscribe to an API]({{base_path}}/api-developer-portal/invoke-apis/invoke-apis-using-tools/invoke-an-api-using-the-integrated-api-console.md) to subscribe to the API using the `Bronze` rate limiting tier.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# First, let's find and read the file in question
find . -type f -name "enforce-throttling-and-resource-access-policies.md" | head -5

Repository: wso2/docs-apim

Length of output: 129


🏁 Script executed:

# Also search for subscription-related pages in the documentation
fd -t f "\.md$" en/docs | grep -i subscri | head -20

Repository: wso2/docs-apim

Length of output: 947


🏁 Script executed:

# Now let's read the specific file around line 8
cat -n ./en/docs/tutorials/enforce-throttling-and-resource-access-policies.md | head -20

Repository: wso2/docs-apim

Length of output: 2257


🏁 Script executed:

# Let's also check the subscription guide to understand its purpose
head -30 ./en/docs/api-developer-portal/manage-subscription/subscribe-to-an-api.md

Repository: wso2/docs-apim

Length of output: 2132


Fix the subscription link to point to the correct guide.

The anchor text "Subscribe to an API" links to the integrated API console invocation guide, but it should link to the subscription guide at {{base_path}}/api-developer-portal/manage-subscription/subscribe-to-an-api.md instead.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@en/docs/tutorials/enforce-throttling-and-resource-access-policies.md` at line
8, The anchor text "Subscribe to an API" in the prerequisites section currently
points to the integrated API console invocation guide, but it should reference
the API subscription guide instead. Update the href for the "Subscribe to an
API" link to use the correct path
`{{base_path}}/api-developer-portal/manage-subscription/subscribe-to-an-api.md`
so users are directed to the proper subscription documentation rather than the
API invocation guide.

## Step 1: Set up Keycloak

Detailed steps on how to configure Keycloak can be found in [WSO2 Documentation]({{base_path}}/administer/key-managers/configure-keycloak-connector/). Additionally, you could refer to the screencast done on this in [here](https://www.youtube.com/watch?v=xuZ6DPhXNX8). Following are the simplified steps for this setup.
Detailed steps on how to configure Keycloak can be found in [WSO2 Documentation]({{base_path}}/api-security/key-management/third-party-key-managers/configure-keycloak-connector.md). Additionally, you could refer to the screencast done on this in [here](https://www.youtube.com/watch?v=xuZ6DPhXNX8). Following are the simplified steps for this setup.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Make the link text more specific.

“WSO2 Documentation” is too generic here; a label like “Keycloak connector guide” would make the updated reference easier to scan and better match the page topic.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 19-19: Link text should be descriptive

(MD059, descriptive-link-text)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@en/docs/tutorials/scenarios/scenario14-external-key-manager.md` at line 19,
Replace the generic link text "WSO2 Documentation" with a more specific and
descriptive label such as "Keycloak connector guide" to better indicate the
purpose of the link and make it easier for readers to scan and understand the
content they will be accessing. This change improves clarity by explicitly
connecting the link text to the Keycloak configuration topic being discussed.

Source: Linters/SAST tools

![Community features]({{base_path}}/assets/img/tutorials/scenarios/dev-portal-community.png)

You could generate client side SDKs for different programming languages. You could find more information on this in our [official documentation]({{base_path}}/consume/generating-sdks/write-a-client-application-using-the-sdk/). We have provided a sample Java program created using the Java SDK downloaded from the **QuantisTrainAPI**.
You could generate client side SDKs for different programming languages. You could find more information on this in our [official documentation]({{base_path}}/api-developer-portal/generating-sdks/write-a-client-application-using-the-sdk.md). We have provided a sample Java program created using the Java SDK downloaded from the **QuantisTrainAPI**.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Use “client-side SDKs.”

The compound modifier should be hyphenated here.

🧰 Tools
🪛 LanguageTool

[grammar] ~24-~24: Use a hyphen to join words.
Context: ...ommunity.png) You could generate client side SDKs for different programming lang...

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@en/docs/tutorials/scenarios/scenario5-developer-community-feature.md` at line
24, The phrase "client side SDKs" uses a compound modifier that requires
hyphenation when it appears before the noun. Change "client side SDKs" to
"client-side SDKs" to properly hyphenate the compound adjective modifying the
noun SDKs.

Source: Linters/SAST tools

# Create and Publish a Server Sent Events API

This tutorial will guide you to create a [SSE Streaming API]({{base_path}}/manage-apis/design/create-api/create-streaming-api/create-a-sse-streaming-api) which is connected to a backend that observes your system's memory, and gives you the values in a continuous manner. Follow the instructions in this tutorial to design and publish an API with an SSE backend, and thereafter invoke it using a cURL command.
This tutorial will guide you to create a [SSE Streaming API]({{base_path}}/api-design-manage/design/create-api/create-streaming-api/create-a-sse-streaming-api.md) which is connected to a backend that observes your system's memory, and gives you the values in a continuous manner. Follow the instructions in this tutorial to design and publish an API with an SSE backend, and thereafter invoke it using a cURL command.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Use “an SSE Streaming API.”

The article reads awkwardly with the acronym.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@en/docs/tutorials/streaming-api/create-and-publish-sse-api.md` at line 3, The
introductory sentence uses the indefinite article "a" before "SSE Streaming
API," but since SSE begins with a vowel sound, it should use "an" instead.
Change "a [SSE Streaming API]" to "an [SSE Streaming API]" in the opening
sentence to improve readability and follow proper English grammar conventions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants