naftiko: 1.0.0-alpha2 info: label: Dev.to Forem API — Users description: 'Dev.to Forem API — Users. 9 operations. Lead operation: User''s articles. Self-contained Naftiko capability covering one Dev To business surface.' tags: - Dev To - Users created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: DEV_TO_API_KEY: DEV_TO_API_KEY capability: consumes: - type: http namespace: forem-users baseUri: https://dev.to/api description: Dev.to Forem API — Users business capability. Self-contained, no shared references. resources: - name: articles-me path: /articles/me operations: - name: getuserarticles method: GET description: User's articles outputRawFormat: json outputParameters: - name: result type: object value: $. - name: articles-me-all path: /articles/me/all operations: - name: getuserallarticles method: GET description: User's all articles outputRawFormat: json outputParameters: - name: result type: object value: $. - name: articles-me-published path: /articles/me/published operations: - name: getuserpublishedarticles method: GET description: User's published articles outputRawFormat: json outputParameters: - name: result type: object value: $. - name: articles-me-unpublished path: /articles/me/unpublished operations: - name: getuserunpublishedarticles method: GET description: User's unpublished articles outputRawFormat: json outputParameters: - name: result type: object value: $. - name: organizations-username-users path: /organizations/{username}/users operations: - name: getorgusers method: GET description: Organization's users outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: username in: path type: string description: The username (slug) of the organization. required: true - name: users-me path: /users/me operations: - name: getuserme method: GET description: The authenticated user outputRawFormat: json outputParameters: - name: result type: object value: $. - name: users-id path: /users/{id} operations: - name: getuser method: GET description: A User outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the user. required: true - name: users-id-suspend path: /users/{id}/suspend operations: - name: suspenduser method: PUT description: Suspend a User outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the user. required: true - name: users-id-unpublish path: /users/{id}/unpublish operations: - name: unpublishuser method: PUT description: Unpublish a User's Articles and Comments outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer description: The ID of the user. required: true authentication: type: apikey key: api-key value: '{{env.DEV_TO_API_KEY}}' placement: header exposes: - type: rest namespace: forem-users-rest port: 8080 description: REST adapter for Dev.to Forem API — Users. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/articles/me name: articles-me description: REST surface for articles-me. operations: - method: GET name: getuserarticles description: User's articles call: forem-users.getuserarticles outputParameters: - type: object mapping: $. - path: /v1/articles/me/all name: articles-me-all description: REST surface for articles-me-all. operations: - method: GET name: getuserallarticles description: User's all articles call: forem-users.getuserallarticles outputParameters: - type: object mapping: $. - path: /v1/articles/me/published name: articles-me-published description: REST surface for articles-me-published. operations: - method: GET name: getuserpublishedarticles description: User's published articles call: forem-users.getuserpublishedarticles outputParameters: - type: object mapping: $. - path: /v1/articles/me/unpublished name: articles-me-unpublished description: REST surface for articles-me-unpublished. operations: - method: GET name: getuserunpublishedarticles description: User's unpublished articles call: forem-users.getuserunpublishedarticles outputParameters: - type: object mapping: $. - path: /v1/organizations/{username}/users name: organizations-username-users description: REST surface for organizations-username-users. operations: - method: GET name: getorgusers description: Organization's users call: forem-users.getorgusers with: username: rest.username outputParameters: - type: object mapping: $. - path: /v1/users/me name: users-me description: REST surface for users-me. operations: - method: GET name: getuserme description: The authenticated user call: forem-users.getuserme outputParameters: - type: object mapping: $. - path: /v1/users/{id} name: users-id description: REST surface for users-id. operations: - method: GET name: getuser description: A User call: forem-users.getuser with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/users/{id}/suspend name: users-id-suspend description: REST surface for users-id-suspend. operations: - method: PUT name: suspenduser description: Suspend a User call: forem-users.suspenduser with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/users/{id}/unpublish name: users-id-unpublish description: REST surface for users-id-unpublish. operations: - method: PUT name: unpublishuser description: Unpublish a User's Articles and Comments call: forem-users.unpublishuser with: id: rest.id outputParameters: - type: object mapping: $. - type: mcp namespace: forem-users-mcp port: 9090 transport: http description: MCP adapter for Dev.to Forem API — Users. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: user-s-articles description: User's articles hints: readOnly: true destructive: false idempotent: true call: forem-users.getuserarticles outputParameters: - type: object mapping: $. - name: user-s-all-articles description: User's all articles hints: readOnly: true destructive: false idempotent: true call: forem-users.getuserallarticles outputParameters: - type: object mapping: $. - name: user-s-published-articles description: User's published articles hints: readOnly: true destructive: false idempotent: true call: forem-users.getuserpublishedarticles outputParameters: - type: object mapping: $. - name: user-s-unpublished-articles description: User's unpublished articles hints: readOnly: true destructive: false idempotent: true call: forem-users.getuserunpublishedarticles outputParameters: - type: object mapping: $. - name: organization-s-users description: Organization's users hints: readOnly: true destructive: false idempotent: true call: forem-users.getorgusers with: username: tools.username outputParameters: - type: object mapping: $. - name: authenticated-user description: The authenticated user hints: readOnly: true destructive: false idempotent: true call: forem-users.getuserme outputParameters: - type: object mapping: $. - name: user description: A User hints: readOnly: true destructive: false idempotent: true call: forem-users.getuser with: id: tools.id outputParameters: - type: object mapping: $. - name: suspend-user description: Suspend a User hints: readOnly: false destructive: false idempotent: true call: forem-users.suspenduser with: id: tools.id outputParameters: - type: object mapping: $. - name: unpublish-user-s-articles-and-comments description: Unpublish a User's Articles and Comments hints: readOnly: false destructive: false idempotent: true call: forem-users.unpublishuser with: id: tools.id outputParameters: - type: object mapping: $.