openapi: 3.0.3 info: title: test-siva-node-1 description: Modernized test-siva-node-1 service version: 1.0.0 servers: - url: https://test-siva-node-1.kyndemo.live description: Production - url: http://localhost:3000 description: Local development paths: /health: get: summary: Health check operationId: getHealth tags: - System responses: '200': description: Healthy /api/articles: get: summary: GET /api/articles operationId: getApi_articles responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized post: summary: POST /api/articles operationId: postApi_articles responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized requestBody: required: true content: application/json: schema: type: object /api/articles/feed: get: summary: GET /api/articles/feed operationId: getApi_articles_feed responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized /api/articles/{slug}: get: summary: GET /api/articles/{slug} operationId: getApi_articles_slug responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized parameters: - name: slug in: path required: true schema: type: string put: summary: PUT /api/articles/{slug} operationId: putApi_articles_slug responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized parameters: - name: slug in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object delete: summary: DELETE /api/articles/{slug} operationId: deleteApi_articles_slug responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized parameters: - name: slug in: path required: true schema: type: string /api/articles/{slug}/comments: get: summary: GET /api/articles/{slug}/comments operationId: getApi_articles_slug_comments responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized parameters: - name: slug in: path required: true schema: type: string post: summary: POST /api/articles/{slug}/comments operationId: postApi_articles_slug_comments responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized parameters: - name: slug in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object /api/articles/{slug}/comments/{id}: delete: summary: DELETE /api/articles/{slug}/comments/{id} operationId: deleteApi_articles_slug_comments_id responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized parameters: - name: slug in: path required: true schema: type: string - name: id in: path required: true schema: type: string /api/articles/{slug}/favorite: post: summary: POST /api/articles/{slug}/favorite operationId: postApi_articles_slug_favorite responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized parameters: - name: slug in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object delete: summary: DELETE /api/articles/{slug}/favorite operationId: deleteApi_articles_slug_favorite responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized parameters: - name: slug in: path required: true schema: type: string /api/profiles/{username}: get: summary: GET /api/profiles/{username} operationId: getApi_profiles_username responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized parameters: - name: username in: path required: true schema: type: string /api/profiles/{username}/follow: post: summary: POST /api/profiles/{username}/follow operationId: postApi_profiles_username_follow responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized parameters: - name: username in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object delete: summary: DELETE /api/profiles/{username}/follow operationId: deleteApi_profiles_username_follow responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized parameters: - name: username in: path required: true schema: type: string /api/tags: get: summary: GET /api/tags operationId: getApi_tags responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized /api/user: get: summary: GET /api/user operationId: getApi_user responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized put: summary: PUT /api/user operationId: putApi_user responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized requestBody: required: true content: application/json: schema: type: object /api/users: post: summary: POST /api/users operationId: postApi_users responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized requestBody: required: true content: application/json: schema: type: object /api/users/login: post: summary: POST /api/users/login operationId: postApi_users_login responses: '200': description: Success '400': description: Bad request '401': description: Unauthorized requestBody: required: true content: application/json: schema: type: object /metrics: get: summary: Prometheus metrics operationId: getMetrics tags: - System responses: '200': description: text/plain; Prometheus exposition format