Fix: Resolve broken links and formatting typos from folder restructuring#11517
Fix: Resolve broken links and formatting typos from folder restructuring#11517ttmagedara2001 wants to merge 1 commit into
Conversation
📝 WalkthroughOverviewThis 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 ChangesFiles Modified: 143 Total Line Changes: Approximately 280 lines added/removed across all files The PR updates internal documentation links across all major sections including:
Key Link UpdatesThe PR systematically updates documentation path references following these primary patterns:
Additional Standardizations
Impact AssessmentThe 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 ItemThe 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. WalkthroughThis 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
✨ Finishing Touches🧪 Generate unit tests (beta)
|
There was a problem hiding this comment.
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 winRestore the missing
api-design-managesegment 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 winRefresh 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 toapi-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 winShared 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 winUse descriptive link text for the environment-variable references.
Both
herelinks 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 valueUse 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
📒 Files selected for processing (143)
en/docs/administer/admin-overview.mden/docs/administer/governance/api-governance-admin-capabilities.mden/docs/administer/governance/api-governance-cicd.mden/docs/administer/logging-and-monitoring/logging/managing-log-growth.mden/docs/administer/logging-and-monitoring/monitoring/monitoring-tcp-based-messages.mden/docs/administer/managing-users-and-roles/managing-user-roles.mden/docs/administer/managing-users-and-roles/managing-user-stores/writing-a-custom-user-store-manager.mden/docs/administer/managing-users-and-roles/managing-users.mden/docs/administer/multitenancy/managing-tenants.mden/docs/administer/multitenancy/tenant-sharing-with-wso2is7.mden/docs/administer/rate-limiting/manage-ai-subscription-policies.mden/docs/ai-gateway/getting-started-with-ai-gateway.mden/docs/ai-gateway/mcp-gateway/invoke-a-mcp-server-using-playground.mden/docs/ai-gateway/mcp-gateway/subscribe-to-a-mcp-server.mden/docs/api-design-manage/deploy-and-publish/deploy-on-gateway/api-gateway/scaling-the-gateway.mden/docs/api-design-manage/deploy-and-publish/deploy-on-gateway/deploy-api/deploy-an-api.mden/docs/api-design-manage/deploy-and-publish/publish-on-dev-portal/publish-aws-apis-in-the-dev-portal.mden/docs/api-design-manage/design/advanced-topics/block-subscription-to-an-api.mden/docs/api-design-manage/design/create-api/create-a-graphql-api.mden/docs/api-design-manage/design/create-api/create-ai-api/create-an-ai-api.mden/docs/api-design-manage/design/create-api/create-an-api-using-a-service.mden/docs/api-design-manage/design/create-api/create-rest-api/create-a-rest-api-from-an-openapi-definition.mden/docs/api-design-manage/design/create-api/create-rest-api/create-a-rest-api.mden/docs/api-design-manage/design/create-api/create-streaming-api/create-a-sse-streaming-api.mden/docs/api-design-manage/design/create-api/create-streaming-api/create-a-streaming-api-from-an-asyncapi-definition.mden/docs/api-design-manage/design/create-api/create-streaming-api/create-a-websocket-streaming-api.mden/docs/api-design-manage/design/create-api/create-streaming-api/streaming-api-overview.mden/docs/api-design-manage/design/create-api/create-streaming-api/test-a-websub-api.mden/docs/api-design-manage/design/prototype-api/create-mocked-js-api.mden/docs/api-design-manage/design/rate-limiting/rate-limiting-for-ai-apis.mden/docs/api-design-manage/governance/api-governance-api-creator-capabilities.mden/docs/api-developer-portal/b2b-api-consumption/api-consumption.mden/docs/api-developer-portal/collaboration/interact-with-the-community.mden/docs/api-developer-portal/consume-api-overview.mden/docs/api-developer-portal/discover-apis/marketplace-assistant.mden/docs/api-developer-portal/generating-sdks/write-a-client-application-using-the-sdk.mden/docs/api-developer-portal/invoke-apis/invoke-apis-using-tools/include-additional-headers-in-the-api-console.mden/docs/api-developer-portal/invoke-apis/invoke-apis-using-tools/invoke-an-api-using-the-integrated-api-console.mden/docs/api-developer-portal/invoke-apis/invoke-apis-using-tools/invoke-an-graphql-api-using-the-integrated-graphql-console.mden/docs/api-developer-portal/invoke-apis/invoke-apis-using-tools/test-apis-with-apichat.mden/docs/api-developer-portal/invoke-apis/invoke-apis-using-tools/try-out-using-postman.mden/docs/api-developer-portal/manage-application/advanced-topics/adding-an-application-key-generation-workflow.mden/docs/api-developer-portal/manage-application/create-application.mden/docs/api-developer-portal/manage-application/generate-keys/generate-api-keys.mden/docs/api-developer-portal/manage-application/generate-keys/revoke-oauth2-application.mden/docs/api-developer-portal/manage-application/sharing-applications/sharing-applications.mden/docs/api-developer-portal/manage-subscription/advanced-topics/adding-an-api-subscription-deletion-workflow.mden/docs/api-developer-portal/manage-subscription/advanced-topics/adding-an-api-subscription-tier-update-workflow.mden/docs/api-developer-portal/manage-subscription/subscribe-to-an-api.mden/docs/api-developer-portal/rate-limiting/resetting-application-throttling-policies.mden/docs/api-gateway/federated-gateways/overview.mden/docs/api-gateway/policies/adding-dynamic-endpoints.mden/docs/api-gateway/scaling-the-gateway.mden/docs/api-security/key-management/third-party-key-managers/configure-custom-connector.mden/docs/api-security/key-management/tokens/encrypting-oauth2-tokens.mden/docs/api-security/runtime/authorization/oauth2-scopes/application-scopes.mden/docs/api-security/runtime/authorization/role-based-access-control-using-xacml.mden/docs/apiops/cli/advanced-topics/configuring-different-endpoint-security-types.mden/docs/apiops/cli/advanced-topics/configuring-different-endpoint-types.mden/docs/apiops/cli/advanced-topics/configuring-environment-specific-parameters.mden/docs/apiops/cli/advanced-topics/configuring-git-integration.mden/docs/apiops/cli/advanced-topics/using-dynamic-data-in-api-controller-projects.mden/docs/apiops/cli/ai-related-operations-with-apictl.mden/docs/apiops/cli/building-jenkins-ci-cd-pipeline.mden/docs/apiops/cli/ci-cd-with-wso2-api-management.mden/docs/apiops/cli/cicd-using-cli.mden/docs/apiops/cli/enabling-correlation-logs-with-apictl.mden/docs/apiops/cli/getting-started-with-wso2-api-controller.mden/docs/apiops/cli/managing-apis-api-products/importing-apis-via-dev-first-approach.mden/docs/apiops/cli/managing-apis-api-products/managing-apis-and-api-products.mden/docs/apiops/cli/managing-apis-api-products/migrating-api-products-to-different-environments.mden/docs/apiops/cli/managing-apis-api-products/migrating-apis-to-different-environments.mden/docs/apiops/cli/managing-applications/managing-applications.mden/docs/apiops/cli/managing-applications/migrating-applications-to-different-environments.mden/docs/apiops/cli/managing-common-api-policies/managing-common-api-policies.mden/docs/apiops/cli/managing-common-api-policies/migrating-common-api-policies-to-different-environments.mden/docs/apiops/cli/managing-mcp-servers/importing-mcp-servers-via-dev-first-approach.mden/docs/apiops/cli/managing-mcp-servers/managing-mcp-servers.mden/docs/apiops/cli/managing-mcp-servers/migrating-mcp-servers-to-different-environments.mden/docs/apiops/cli/managing-rate-limiting-policies/migrating-rate-limiting-policies-to-different-environments.mden/docs/apiops/cli/managing-rate-limiting-policies/throttle-policy-import-export.mden/docs/get-started/apim-architecture.mden/docs/includes/deploy/assign-custom-hostname.mden/docs/includes/deploy/steps-to-deploy-apim-in-a-distributed-setup-with-km-separation.mden/docs/includes/deploy/steps-to-deploy-apim-in-a-distributed-setup-with-tm-separation.mden/docs/includes/design/invoke-prerelease-api.mden/docs/includes/design/redis-counter-note.mden/docs/includes/design/stream-more-links.mden/docs/install-and-setup/setup/advance-configurations/configuring-caching.mden/docs/install-and-setup/setup/configure-userstores/configure-primary-user-store/configuring-a-jdbc-user-store.mden/docs/install-and-setup/setup/configure-userstores/configure-primary-user-store/configuring-the-primary-user-store.mden/docs/install-and-setup/setup/deployment-best-practices/changing-the-default-ports-with-offset.mden/docs/install-and-setup/setup/distributed-deployment/configuring-wso2-identity-server-as-a-key-manager.mden/docs/install-and-setup/setup/distributed-deployment/deploying-wso2-api-m-in-a-simple-scalable-setup.mden/docs/install-and-setup/setup/multi-dc-deployment/multi-dc-deployment-patterns-overview.mden/docs/install-and-setup/setup/security/configuring-keystores/configuring-keystores-in-wso2-api-manager.mden/docs/install-and-setup/setup/security/enabling-hostname-verification.mden/docs/install-and-setup/setup/security/logins-and-passwords/maintaining-logins-and-passwords.mden/docs/install-and-setup/setup/security/logins-and-passwords/working-with-encrypted-passwords.mden/docs/install-and-setup/setup/security/user-account-management.mden/docs/install-and-setup/setup/setting-up-databases/changing-default-databases/changing-to-ibm-db2.mden/docs/install-and-setup/setup/setting-up-databases/changing-default-databases/changing-to-mssql.mden/docs/install-and-setup/setup/setting-up-databases/changing-default-databases/changing-to-mysql.mden/docs/install-and-setup/setup/setting-up-databases/changing-default-databases/changing-to-oracle-rac.mden/docs/install-and-setup/setup/setting-up-databases/changing-default-databases/changing-to-oracle.mden/docs/install-and-setup/setup/setting-up-databases/changing-default-databases/changing-to-postgresql.mden/docs/install-and-setup/setup/single-node/all-in-one-deployment-overview.mden/docs/install-and-setup/setup/single-node/configuring-a-single-node.mden/docs/install-and-setup/setup/single-node/configuring-an-active-active-deployment.mden/docs/install-and-setup/setup/updating-wso2-api-manager.mden/docs/integrate/develop/working-with-service-catalog.mden/docs/monitoring/api-monetization/monetizing-an-api.mden/docs/monitoring/observability/monitoring-api-logs.mden/docs/monitoring/observability/monitoring-correlation-logs.mden/docs/reference/customize-product/customizations/adding-internationalization.mden/docs/reference/customize-product/customizations/customizing-login-pages-for-dev-portal-and-publisher.mden/docs/reference/customize-product/customizations/customizing-the-developer-portal/enabling-or-disabling-self-signup.mden/docs/reference/customize-product/customizations/log-in-to-the-dev-portal-using-social-media.mden/docs/reference/customize-product/customizations/overriding-the-publisher-portal-theme.mden/docs/reference/customize-product/extending-api-manager/extending-gateway/customizing-api-template-for-gateway.mden/docs/reference/customize-product/extending-api-manager/extending-gateway/writing-custom-handlers.mden/docs/reference/customize-product/extending-api-manager/extending-key-management/extending-key-validation.mden/docs/reference/customize-product/extending-api-manager/extending-key-management/extending-the-key-manager-interface.mden/docs/reference/customize-product/extending-api-manager/extending-workflows/configuring-workflows-for-tenants.mden/docs/reference/customize-product/extending-api-manager/saml2-sso/configuring-external-idp-through-identity-server-for-sso.mden/docs/reference/customize-product/extending-api-manager/saml2-sso/configuring-single-sign-on-with-saml2.mden/docs/reference/customize-product/extending-api-manager/saml2-sso/multi-factor-authentication-mfa-for-publisher-and-developer-portals.mden/docs/reference/faq.mden/docs/reference/guides/message-flow-in-the-api-manager-gateway.mden/docs/reference/performance-test-results-token-persistence.mden/docs/reference/troubleshooting/error-handling.mden/docs/tutorials/create-and-publish-websocket-api.mden/docs/tutorials/develop-an-integration-with-a-managed-api.mden/docs/tutorials/edit-an-api-by-modifyng-the-api-definition.mden/docs/tutorials/enforce-throttling-and-resource-access-policies.mden/docs/tutorials/expose-a-soap-service-as-a-rest-api.mden/docs/tutorials/integrating-with-solace.mden/docs/tutorials/scenarios/scenario14-external-key-manager.mden/docs/tutorials/scenarios/scenario5-developer-community-feature.mden/docs/tutorials/streaming-api/create-and-publish-sse-api.mden/docs/tutorials/streaming-api/create-and-publish-websocket-api.mden/docs/tutorials/streaming-api/create-and-publish-websub-api.mden/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. | |
There was a problem hiding this comment.
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.
| | 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
| - [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 |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
fd -type f -name "*throttling*" -o -name "*rate*limiting*" | head -20Repository: 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 -20Repository: 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 -20Repository: 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/nullRepository: 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/nullRepository: 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/nullRepository: 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 mdRepository: 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 -20Repository: 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 mdRepository: 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/nullRepository: 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 -20Repository: 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 -uRepository: wso2/docs-apim
Length of output: 1402
🏁 Script executed:
# Check what happened in the restructuring commit
git show --stat 185a441a3 | head -100Repository: wso2/docs-apim
Length of output: 5865
🏁 Script executed:
# Check the recent commit that fixed broken links
git show --stat 3f7991c4b | head -100Repository: 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.mdRepository: 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 -50Repository: 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 -40Repository: 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.mdRepository: 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 -100Repository: 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 -laRepository: 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 -200Repository: 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). |
There was a problem hiding this comment.
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.
| 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. | |
There was a problem hiding this comment.
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.
| | 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)). |
There was a problem hiding this comment.
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.
| 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.
| 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 > 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 > 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). |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
🧩 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 -5Repository: 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 -20Repository: 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 -20Repository: 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.mdRepository: 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. |
There was a problem hiding this comment.
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
|  | ||
|
|
||
| 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**. |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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.
Purpose
Goals
Approach
User stories
Release note
Documentation
Training
Certification
Marketing
Automation tests
Security checks
Samples
Related PRs
Migrations (if applicable)
Test environment
Learning