naftiko: 1.0.0-alpha2 info: label: Pulsoid API description: Pulsoid enables real-time heart rate data transmission from peripherals (BLE heart rate monitors, smartwatches, etc.) to clients. The Pulsoid REST API provides endpoints to read and submit heart rate data, manage widgets, profile, and validate tokens. Real-time streaming is available via WebSocket endpoints. tags: - Pulsoid - API created: '2026-05-06' modified: '2026-05-06' capability: consumes: - type: http namespace: pulsoid baseUri: https://dev.pulsoid.net description: Pulsoid API HTTP API. authentication: type: bearer token: '{{PULSOID_TOKEN}}' resources: - name: api-v1-token-validate path: /api/v1/token/validate operations: - name: validatetoken method: GET description: Validate authorization token outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v1-data-heart-rate-latest path: /api/v1/data/heart_rate/latest operations: - name: getlatestheartrate method: GET description: Get latest heart rate outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v1-data path: /api/v1/data operations: - name: submitheartrate method: POST description: Submit heart rate data outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v1-statistics path: /api/v1/statistics operations: - name: getstatistics method: GET description: Read heart rate statistics outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v1-widgets path: /api/v1/widgets operations: - name: listwidgets method: GET description: List widgets outputRawFormat: json outputParameters: - name: result type: object value: $. - name: createwidget method: POST description: Create widget outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v1-widgets-widgetid path: /api/v1/widgets/{widgetId} operations: - name: updatewidget method: POST description: Update widget configuration inputParameters: - name: widgetId in: path type: string required: true outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v1-profile path: /api/v1/profile operations: - name: getprofile method: GET description: Read user profile outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v1-geometry-dash-mod-configuration path: /api/v1/geometry-dash-mod/configuration operations: - name: getgdconfig method: GET description: Get GD mod configuration outputRawFormat: json outputParameters: - name: result type: object value: $. - name: updategdconfig method: POST description: Update GD mod configuration outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v1-features-featureid path: /api/v1/features/{featureId} operations: - name: getfeature method: GET description: Check feature availability inputParameters: - name: featureId in: path type: string required: true outputRawFormat: json outputParameters: - name: result type: object value: $. - name: oauth2-authorize path: /oauth2/authorize operations: - name: oauthauthorize method: POST description: OAuth2 authorize outputRawFormat: json outputParameters: - name: result type: object value: $. - name: oauth2-token path: /oauth2/token operations: - name: oauthtoken method: POST description: OAuth2 token exchange/refresh outputRawFormat: json outputParameters: - name: result type: object value: $. - name: oauth2-device-authorization path: /oauth2/device_authorization operations: - name: oauthdeviceauthorization method: POST description: OAuth2 device authorization outputRawFormat: json outputParameters: - name: result type: object value: $. - name: oauth2-revoke path: /oauth2/revoke operations: - name: oauthrevoke method: POST description: Revoke access token outputRawFormat: json outputParameters: - name: result type: object value: $. exposes: - type: rest port: 8080 namespace: pulsoid-rest description: REST adapter for Pulsoid API. resources: - path: /api/v1/token/validate name: validatetoken operations: - method: GET name: validatetoken description: Validate authorization token call: pulsoid.validatetoken outputParameters: - type: object mapping: $. - path: /api/v1/data/heart_rate/latest name: getlatestheartrate operations: - method: GET name: getlatestheartrate description: Get latest heart rate call: pulsoid.getlatestheartrate outputParameters: - type: object mapping: $. - path: /api/v1/data name: submitheartrate operations: - method: POST name: submitheartrate description: Submit heart rate data call: pulsoid.submitheartrate outputParameters: - type: object mapping: $. - path: /api/v1/statistics name: getstatistics operations: - method: GET name: getstatistics description: Read heart rate statistics call: pulsoid.getstatistics outputParameters: - type: object mapping: $. - path: /api/v1/widgets name: listwidgets operations: - method: GET name: listwidgets description: List widgets call: pulsoid.listwidgets outputParameters: - type: object mapping: $. - path: /api/v1/widgets name: createwidget operations: - method: POST name: createwidget description: Create widget call: pulsoid.createwidget outputParameters: - type: object mapping: $. - path: /api/v1/widgets/{widgetId} name: updatewidget operations: - method: POST name: updatewidget description: Update widget configuration call: pulsoid.updatewidget with: widgetId: rest.widgetId outputParameters: - type: object mapping: $. - path: /api/v1/profile name: getprofile operations: - method: GET name: getprofile description: Read user profile call: pulsoid.getprofile outputParameters: - type: object mapping: $. - path: /api/v1/geometry-dash-mod/configuration name: getgdconfig operations: - method: GET name: getgdconfig description: Get GD mod configuration call: pulsoid.getgdconfig outputParameters: - type: object mapping: $. - path: /api/v1/geometry-dash-mod/configuration name: updategdconfig operations: - method: POST name: updategdconfig description: Update GD mod configuration call: pulsoid.updategdconfig outputParameters: - type: object mapping: $. - path: /api/v1/features/{featureId} name: getfeature operations: - method: GET name: getfeature description: Check feature availability call: pulsoid.getfeature with: featureId: rest.featureId outputParameters: - type: object mapping: $. - path: /oauth2/authorize name: oauthauthorize operations: - method: POST name: oauthauthorize description: OAuth2 authorize call: pulsoid.oauthauthorize outputParameters: - type: object mapping: $. - path: /oauth2/token name: oauthtoken operations: - method: POST name: oauthtoken description: OAuth2 token exchange/refresh call: pulsoid.oauthtoken outputParameters: - type: object mapping: $. - path: /oauth2/device_authorization name: oauthdeviceauthorization operations: - method: POST name: oauthdeviceauthorization description: OAuth2 device authorization call: pulsoid.oauthdeviceauthorization outputParameters: - type: object mapping: $. - path: /oauth2/revoke name: oauthrevoke operations: - method: POST name: oauthrevoke description: Revoke access token call: pulsoid.oauthrevoke outputParameters: - type: object mapping: $. - type: mcp port: 9090 namespace: pulsoid-mcp transport: http description: MCP adapter for Pulsoid API for AI agent use. tools: - name: validatetoken description: Validate authorization token hints: readOnly: true destructive: false idempotent: true call: pulsoid.validatetoken outputParameters: - type: object mapping: $. - name: getlatestheartrate description: Get latest heart rate hints: readOnly: true destructive: false idempotent: true call: pulsoid.getlatestheartrate outputParameters: - type: object mapping: $. - name: submitheartrate description: Submit heart rate data hints: readOnly: false destructive: false idempotent: false call: pulsoid.submitheartrate outputParameters: - type: object mapping: $. - name: getstatistics description: Read heart rate statistics hints: readOnly: true destructive: false idempotent: true call: pulsoid.getstatistics outputParameters: - type: object mapping: $. - name: listwidgets description: List widgets hints: readOnly: true destructive: false idempotent: true call: pulsoid.listwidgets outputParameters: - type: object mapping: $. - name: createwidget description: Create widget hints: readOnly: false destructive: false idempotent: false call: pulsoid.createwidget outputParameters: - type: object mapping: $. - name: updatewidget description: Update widget configuration hints: readOnly: false destructive: false idempotent: false call: pulsoid.updatewidget with: widgetId: tools.widgetId inputParameters: - name: widgetId type: string description: widgetId required: true outputParameters: - type: object mapping: $. - name: getprofile description: Read user profile hints: readOnly: true destructive: false idempotent: true call: pulsoid.getprofile outputParameters: - type: object mapping: $. - name: getgdconfig description: Get GD mod configuration hints: readOnly: true destructive: false idempotent: true call: pulsoid.getgdconfig outputParameters: - type: object mapping: $. - name: updategdconfig description: Update GD mod configuration hints: readOnly: false destructive: false idempotent: false call: pulsoid.updategdconfig outputParameters: - type: object mapping: $. - name: getfeature description: Check feature availability hints: readOnly: true destructive: false idempotent: true call: pulsoid.getfeature with: featureId: tools.featureId inputParameters: - name: featureId type: string description: featureId required: true outputParameters: - type: object mapping: $. - name: oauthauthorize description: OAuth2 authorize hints: readOnly: false destructive: false idempotent: false call: pulsoid.oauthauthorize outputParameters: - type: object mapping: $. - name: oauthtoken description: OAuth2 token exchange/refresh hints: readOnly: false destructive: false idempotent: false call: pulsoid.oauthtoken outputParameters: - type: object mapping: $. - name: oauthdeviceauthorization description: OAuth2 device authorization hints: readOnly: false destructive: false idempotent: false call: pulsoid.oauthdeviceauthorization outputParameters: - type: object mapping: $. - name: oauthrevoke description: Revoke access token hints: readOnly: false destructive: false idempotent: false call: pulsoid.oauthrevoke outputParameters: - type: object mapping: $. binds: - namespace: env keys: PULSOID_TOKEN: PULSOID_TOKEN