WSO2 Comments API
The Comments API from WSO2 — 6 operation(s) for comments.
Operations 12
Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay
The Comments API from WSO2 — 6 operation(s) for comments.
Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/wso2:wso2-comments-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: WSO2 API Manager - Developer Portal Comments API
description: This document specifies a **RESTful API** for WSO2 **API Manager** - **Developer Portal**.
contact:
name: WSO2
url: https://wso2.com/api-manager/
email: architecture@wso2.com
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
version: v3
servers:
- url: https://apis.wso2.com/api/am/devportal/v3
tags:
- name: Comments
paths:
/apis/{apiId}/comments:
get:
tags:
- Comments
summary: Retrieve API Comments
description: Get a list of Comments that are already added to APIs
operationId: getAllCommentsOfAPI
parameters:
- $ref: '#/components/parameters/apiId'
- $ref: '#/components/parameters/requestedTenant'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/includeCommenterInfo'
responses:
200:
description: 'OK.
Comments list is returned.
'
content:
application/json:
schema:
$ref: '#/components/schemas/CommentList'
404:
$ref: '#/components/responses/NotFound'
500:
$ref: '#/components/responses/InternalServerError'
security:
- OAuth2Security: []
x-code-samples:
- lang: Curl
source: curl -k "https://localhost:9443/api/am/devportal/v3/apis/e93fb282-b456-48fc-8981-003fb89086ae/comments"
post:
tags:
- Comments
summary: Add an API Comment
operationId: addCommentToAPI
parameters:
- $ref: '#/components/parameters/apiId'
- $ref: '#/components/parameters/parentCommentId'
requestBody:
description: 'Comment object that should to be added
'
content:
application/json:
schema:
$ref: '#/components/schemas/PostRequestBody'
required: true
responses:
201:
description: 'Created.
Successful response with the newly created object as entity in the body.
Location header contains URL of newly created entity.
'
headers:
ETag:
description: 'Entity Tag of the response resource. Used by caches, or in conditional request.
'
schema:
type: string
Location:
description: 'Location to the newly created Comment.
'
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/Comment'
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
415:
$ref: '#/components/responses/UnsupportedMediaType'
500:
$ref: '#/components/responses/InternalServerError'
security:
- OAuth2Security:
- apim:subscribe
x-code-samples:
- lang: Curl
source: 'curl -k -X POST -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" -H "Content-Type: application/json" -d @data.json "https://localhost:9443/api/am/devportal/v3/apis/e93fb282-b456-48fc-8981-003fb89086ae/comments"'
/apis/{apiId}/comments/{commentId}:
get:
tags:
- Comments
summary: Get Details of an API Comment
description: Get the individual comment given by a user for a certain API.
operationId: getCommentOfAPI
parameters:
- $ref: '#/components/parameters/commentId'
- $ref: '#/components/parameters/apiId'
- $ref: '#/components/parameters/requestedTenant'
- $ref: '#/components/parameters/If-None-Match'
- $ref: '#/components/parameters/includeCommenterInfo'
- $ref: '#/components/parameters/replyLimit'
- $ref: '#/components/parameters/replyOffset'
responses:
200:
description: 'OK.
Comment returned.
'
headers:
ETag:
description: 'Entity Tag of the response resource.
Used by caches, or in conditional requests.
'
schema:
type: string
Last-Modified:
description: 'Date and time the resource has been modifed the last time.
Used by caches, or in conditional requests.
'
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/Comment'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
406:
$ref: '#/components/responses/NotAcceptable'
500:
$ref: '#/components/responses/InternalServerError'
security:
- OAuth2Security: []
x-code-samples:
- lang: Curl
source: curl -k "https://localhost:9443/api/am/devportal/v3/apis/e93fb282-b456-48fc-8981-003fb89086ae/comments/d4cf1704-5d09-491c-bc48-4d19ce6ea9b4"
patch:
tags:
- Comments
summary: Edit a comment
description: Edit the individual comment
operationId: editCommentOfAPI
parameters:
- $ref: '#/components/parameters/commentId'
- $ref: '#/components/parameters/apiId'
requestBody:
description: 'Comment object that should to be updated
'
content:
application/json:
schema:
$ref: '#/components/schemas/PatchRequestBody'
required: true
responses:
200:
description: 'OK.
Comment updated.
'
headers:
ETag:
description: 'Entity Tag of the response resource. Used by caches, or in conditional request.
'
schema:
type: string
Location:
description: 'Location to the newly created Comment.
'
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/Comment'
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
403:
description: 'Forbidden.
The request must be conditional but no condition has been specified.
'
404:
$ref: '#/components/responses/NotFound'
415:
$ref: '#/components/responses/UnsupportedMediaType'
500:
$ref: '#/components/responses/InternalServerError'
security:
- OAuth2Security:
- apim:subscribe
x-code-samples:
- lang: Curl
source: 'curl -k -X PATCH -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" -H "Content-Type: application/json" -d @data.json "https://localhost:9443/api/am/devportal/v3/apis/e93fb282-b456-48fc-8981-003fb89086ae/comments/d4cf1704-5d09-491c-bc48-4d19ce6ea9b4"'
delete:
tags:
- Comments
summary: Delete an API Comment
description: Remove a Comment
operationId: deleteComment
parameters:
- $ref: '#/components/parameters/commentId'
- $ref: '#/components/parameters/apiId'
- $ref: '#/components/parameters/If-Match'
responses:
200:
description: 'OK.
Resource successfully deleted.
'
content: {}
401:
$ref: '#/components/responses/Unauthorized'
403:
description: 'Forbidden.
The request must be conditional but no condition has been specified.
'
content: {}
404:
$ref: '#/components/responses/NotFound'
405:
description: 'MethodNotAllowed.
Request method is known by the server but is not supported by the target resource.
'
content: {}
500:
$ref: '#/components/responses/InternalServerError'
security:
- OAuth2Security:
- apim:subscribe
- apim:admin
x-code-samples:
- lang: Curl
source: curl -k -X DELETE -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" "https://localhost:9443/api/am/devportal/v3/apis/e93fb282-b456-48fc-8981-003fb89086ae/comments/d4cf1704-5d09-491c-bc48-4d19ce6ea9b4"
/apis/{apiId}/comments/{commentId}/replies:
get:
tags:
- Comments
summary: Get replies of a comment
operationId: getRepliesOfComment
parameters:
- $ref: '#/components/parameters/commentId'
- $ref: '#/components/parameters/apiId'
- $ref: '#/components/parameters/requestedTenant'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/If-None-Match'
- $ref: '#/components/parameters/includeCommenterInfo'
responses:
200:
description: 'OK.
Comment returned.
'
headers:
ETag:
description: 'Entity Tag of the response resource.
Used by caches, or in conditional requests.
'
schema:
type: string
Last-Modified:
description: 'Date and time the resource has been modifed the last time.
Used by caches, or in conditional requests.
'
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/CommentList'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
406:
$ref: '#/components/responses/NotAcceptable'
500:
$ref: '#/components/responses/InternalServerError'
security:
- OAuth2Security: []
x-code-samples:
- lang: Curl
source: curl -k -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" "https://localhost:9443/api/am/devportal/v3/apis/e93fb282-b456-48fc-8981-003fb89086ae/comments/d4cf1704-5d09-491c-bc48-4d19ce6ea9b4/replies"
/mcp-servers/{mcpServerId}/comments:
get:
tags:
- Comments
summary: Retrieve MCP Server Comments
description: Get a list of Comments that are already added to MCP Servers
parameters:
- $ref: '#/components/parameters/mcpServerId'
- $ref: '#/components/parameters/requestedTenant'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/includeCommenterInfo'
responses:
200:
description: 'OK.
Comments list is returned.
'
content:
application/json:
schema:
$ref: '#/components/schemas/CommentList'
404:
$ref: '#/components/responses/NotFound'
500:
$ref: '#/components/responses/InternalServerError'
security:
- OAuth2Security: []
x-code-samples:
- lang: Curl
source: curl -k "https://localhost:9443/api/am/devportal/v3/mcp-servers/e93fb282-b456-48fc-8981-003fb89086ae/comments"
operationId: getAllCommentsOfMCPServer
post:
tags:
- Comments
summary: Add a MCP Server Comment
parameters:
- $ref: '#/components/parameters/mcpServerId'
- $ref: '#/components/parameters/parentCommentId'
requestBody:
description: 'Comment object that should to be added
'
content:
application/json:
schema:
$ref: '#/components/schemas/PostRequestBody'
required: true
responses:
201:
description: 'Created.
Successful response with the newly created object as entity in the body.
Location header contains URL of newly created entity.
'
headers:
ETag:
description: 'Entity Tag of the response resource. Used by caches, or in conditional request.
'
schema:
type: string
Location:
description: 'Location to the newly created Comment.
'
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/Comment'
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
415:
$ref: '#/components/responses/UnsupportedMediaType'
500:
$ref: '#/components/responses/InternalServerError'
security:
- OAuth2Security:
- apim:subscribe
x-code-samples:
- lang: Curl
source: 'curl -k -X POST -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" -H "Content-Type: application/json" -d @data.json "https://localhost:9443/api/am/devportal/v3/mcp-servers/e93fb282-b456-48fc-8981-003fb89086ae/comments"'
operationId: addCommentToMCPServer
/mcp-servers/{mcpServerId}/comments/{commentId}:
get:
tags:
- Comments
summary: Get Details of a MCP Server Comment
description: Get the individual comment given by a user for a certain MCP Server.
parameters:
- $ref: '#/components/parameters/mcpServerId'
- $ref: '#/components/parameters/commentId'
- $ref: '#/components/parameters/requestedTenant'
- $ref: '#/components/parameters/If-None-Match'
- $ref: '#/components/parameters/includeCommenterInfo'
- $ref: '#/components/parameters/replyLimit'
- $ref: '#/components/parameters/replyOffset'
responses:
200:
description: 'OK.
Comment returned.
'
headers:
ETag:
description: 'Entity Tag of the response resource.
Used by caches, or in conditional requests.
'
schema:
type: string
Last-Modified:
description: 'Date and time the resource has been modified the last time.
Used by caches, or in conditional requests.
'
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/Comment'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
406:
$ref: '#/components/responses/NotAcceptable'
500:
$ref: '#/components/responses/InternalServerError'
security:
- OAuth2Security: []
x-code-samples:
- lang: Curl
source: curl -k "https://localhost:9443/api/am/devportal/v3/mcp-servers/e93fb282-b456-48fc-8981-003fb89086ae/comments/d4cf1704-5d09-491c-bc48-4d19ce6ea9b4"
operationId: getCommentOfMCPServer
patch:
tags:
- Comments
summary: Edit a comment
description: Edit the individual comment
parameters:
- $ref: '#/components/parameters/mcpServerId'
- $ref: '#/components/parameters/commentId'
requestBody:
description: 'Comment object that should to be updated
'
content:
application/json:
schema:
$ref: '#/components/schemas/PatchRequestBody'
required: true
responses:
200:
description: 'OK.
Comment updated.
'
headers:
ETag:
description: 'Entity Tag of the response resource. Used by caches, or in conditional request.
'
schema:
type: string
Location:
description: 'Location to the newly created Comment.
'
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/Comment'
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
403:
description: 'Forbidden.
The request must be conditional but no condition has been specified.
'
404:
$ref: '#/components/responses/NotFound'
415:
$ref: '#/components/responses/UnsupportedMediaType'
500:
$ref: '#/components/responses/InternalServerError'
security:
- OAuth2Security:
- apim:subscribe
x-code-samples:
- lang: Curl
source: 'curl -k -X PATCH -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" -H "Content-Type: application/json" -d @data.json "https://localhost:9443/api/am/devportal/v3/mcp-servers/e93fb282-b456-48fc-8981-003fb89086ae/comments/d4cf1704-5d09-491c-bc48-4d19ce6ea9b4"'
operationId: editCommentOfMCPServer
delete:
tags:
- Comments
summary: Delete a MCP Server Comment
description: Remove a Comment
parameters:
- $ref: '#/components/parameters/mcpServerId'
- $ref: '#/components/parameters/commentId'
- $ref: '#/components/parameters/If-Match'
responses:
200:
description: 'OK.
Resource successfully deleted.
'
content: {}
401:
$ref: '#/components/responses/Unauthorized'
403:
description: 'Forbidden.
The request must be conditional but no condition has been specified.
'
content: {}
404:
$ref: '#/components/responses/NotFound'
405:
description: 'MethodNotAllowed.
Request method is known by the server but is not supported by the target resource.
'
content: {}
500:
$ref: '#/components/responses/InternalServerError'
security:
- OAuth2Security:
- apim:subscribe
- apim:admin
x-code-samples:
- lang: Curl
source: curl -k -X DELETE -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" "https://localhost:9443/api/am/devportal/v3/mcp-servers/e93fb282-b456-48fc-8981-003fb89086ae/comments/d4cf1704-5d09-491c-bc48-4d19ce6ea9b4"
operationId: deleteCommentOfMCPServer
/mcp-servers/{mcpServerId}/comments/{commentId}/replies:
get:
tags:
- Comments
summary: Get replies of a comment
parameters:
- $ref: '#/components/parameters/mcpServerId'
- $ref: '#/components/parameters/commentId'
- $ref: '#/components/parameters/requestedTenant'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
- $ref: '#/components/parameters/If-None-Match'
- $ref: '#/components/parameters/includeCommenterInfo'
responses:
200:
description: 'OK.
Comment returned.
'
headers:
ETag:
description: 'Entity Tag of the response resource.
Used by caches, or in conditional requests.
'
schema:
type: string
Last-Modified:
description: 'Date and time the resource has been modified the last time.
Used by caches, or in conditional requests.
'
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/CommentList'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
406:
$ref: '#/components/responses/NotAcceptable'
500:
$ref: '#/components/responses/InternalServerError'
security:
- OAuth2Security: []
x-code-samples:
- lang: Curl
source: curl -k -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" "https://localhost:9443/api/am/devportal/v3/mcp-servers/e93fb282-b456-48fc-8981-003fb89086ae/comments/d4cf1704-5d09-491c-bc48-4d19ce6ea9b4/replies"
operationId: getRepliesOfCommentOfMCPServer
components:
responses:
NotFound:
description: Not Found. The specified resource does not exist.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 404
message: Not Found
description: The specified resource does not exist
moreInfo: ''
error: []
NotAcceptable:
description: Not Acceptable. The requested media type is not supported.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 406
message: Not Acceptable
description: The requested media type is not supported
moreInfo: ''
error: []
BadRequest:
description: Bad Request. Invalid request or validation error.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 400
message: Bad Request
description: Invalid request or validation error
moreInfo: ''
error: []
Unauthorized:
description: Unauthorized. The user is not authorized.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 401
message: Unauthorized
description: The user is not authorized
moreInfo: ''
error: []
InternalServerError:
description: Internal Server Error.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 500
message: Internal Server Error
description: The server encountered an internal error. Please contact administrator.
moreInfo: ''
error: []
UnsupportedMediaType:
description: Unsupported Media Type. The entity of the request was not in a supported format.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 415
message: Unsupported media type
description: The entity of the request was not in a supported format
moreInfo: ''
error: []
schemas:
Comment:
title: Comment
required:
- content
type: object
properties:
id:
type: string
readOnly: true
example: 943d3002-000c-42d3-a1b9-d6559f8a4d49
content:
maxLength: 512
type: string
example: This is a comment
createdTime:
type: string
readOnly: true
example: 2021-02-11-09:57:25
createdBy:
type: string
readOnly: true
example: admin
updatedTime:
type: string
readOnly: true
example: 2021-02-12-19:57:25
category:
type: string
readOnly: true
default: general
example: general
parentCommentId:
type: string
readOnly: true
example: 6f38aea2-f41e-4ac9-b3f2-a9493d00ba97
entryPoint:
type: string
readOnly: true
enum:
- devPortal
- publisher
commenterInfo:
$ref: '#/components/schemas/CommenterInfo'
replies:
$ref: '#/components/schemas/CommentList'
CommenterInfo:
type: object
properties:
firstName:
type: string
example: John
lastName:
type: string
example: David
fullName:
type: string
example: John David
PatchRequestBody:
title: Patch request body
type: object
properties:
content:
type: string
maxLength: 512
description: 'Content of the comment
'
example: This is a comment
category:
type: string
description: 'Category of the comment
'
example: general
Pagination:
title: Pagination
type: object
properties:
offset:
type: integer
example: 0
limit:
type: integer
example: 10
total:
type: integer
example: 1
next:
type: string
description: 'Link to the next subset of resources qualified.
Empty if no more resources are to be returned.
'
example: ''
previous:
type: string
description: 'Link to the previous subset of resources qualified.
Empty if current subset is the first subset returned.
'
example: ''
CommentList:
title: Comments List
type: object
properties:
count:
type: integer
readOnly: true
description: 'Number of Comments returned.
'
example: 1
list:
type: array
readOnly: true
items:
$ref: '#/components/schemas/Comment'
pagination:
$ref: '#/components/schemas/Pagination'
Error:
title: Error object returned with 4XX HTTP status
required:
- code
- message
type: object
properties:
code:
type: integer
format: int64
message:
type: string
description: Error message.
description:
type: string
description: 'A detail description about the error message.
'
moreInfo:
type: string
description: 'Preferably an url with more details about the error.
'
error:
type: array
description: 'If there are more than one error list them out.
For example, list out validation errors by each field.
'
items:
$ref: '#/components/schemas/ErrorListItem'
ErrorListItem:
title: Description of individual errors that may have occurred during a request.
required:
- code
- message
type: object
properties:
code:
type: string
message:
type: string
description: 'Description about individual errors occurred
'
PostRequestBody:
title: Post request body
type: object
properties:
content:
type: string
maxLength: 512
description: 'Content of the comment
'
example: This is a comment
category:
type: string
description: 'Category of the comment
'
example: general
required:
- content
parameters:
apiId:
name: apiId
in: path
description: '**API ID** consisting of the **UUID** of the API.
'
required: true
schema:
type: string
includeCommenterInfo:
name: includeCommenterInfo
in: query
description: 'Whether we need to display commentor details.
'
schema:
type: boolean
default: false
replyLimit:
name: replyLimit
in: query
description: 'Maximum size of replies array to return.
'
schema:
type: integer
default: 25
parentCommentId:
name: replyTo
in: query
description: 'ID of the perent comment.
'
schema:
type: string
limit:
name: limit
in: query
description: 'Maximum size of resource array to return.
'
schema:
type: integer
default: 25
offset:
name: offset
in: query
description: 'Starting point within the complete list of items qualified.
'
schema:
type: integer
default: 0
If-Match:
name: If-Match
in: header
description: 'Validator for conditional requests; based on ETag.
'
schema:
type: string
If-None-Match:
name: If-None-Match
in: header
description: 'Validator for conditional requests; based on the ETag of the formerly retrieved
variant of the resourec.
'
schema:
type: string
mcpServerId:
name: mcpServerId
in: path
description: '**MCP Server ID** consisting of the **UUID** of the MCP Server.
'
required: true
schema:
type: string
replyOffset:
name: replyOffset
in: query
description: 'Starting point within the complete list of replies.
'
schema:
type: integer
default: 0
commentId:
name: commentId
in: path
description: 'Comment Id
'
required: true
schema:
type: string
requestedTenant:
name: X-WSO2-Tenant
in: header
description: "For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be\n retrieved from.\n"
schema:
type: string
securitySchemes:
OAuth2Security:
type: oauth2
flows:
password:
tokenUrl: https://localhost:9443/oauth2/token
scopes:
openid: Authorize access to user details
apim:subscribe: Subscribe API
apim:api_key: Generate API Keys
apim:app_manage: Retrieve, Manage and Import, Export applications
apim:sub_manage: Retrieve, Manage subscriptions
apim:store_settings: Retrieve Developer Portal settings
apim:sub_alert_manage: Retrieve, subscribe and configure Developer Portal alert types
apim:app_import_export: Import and export applications related operations
apim:admin: Manage all admin operations
x-provenance:
method: harvested
publisher: WSO2
source: https://apim.docs.wso2.com/en/latest/reference/product-apis/devportal-apis/devportal-v3/devportal-v3.yaml
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)