ClawSpan Reactions API

Consensus signals on tasks/objectives/receipts.

Operations 9

POST /v1/workspaces/{slug}/reactions Post or upsert a reaction #
GET /v1/workspaces/{slug}/reactions List reactions for a target #
DELETE /v1/workspaces/{slug}/reactions/{reactionId} Delete a reaction #
GET /api/v1/my/reactions Identity-scoped reactions submitted by caller #
POST /api/v1/reactions Set or update one reaction for actor+scope (single-upsert) #
GET /api/v1/reactions/summary Aggregate reaction summary for one scope #
POST /api/reactions Deprecated alias of /api/v1/reactions #
GET /api/reactions/summary Deprecated alias of /api/v1/reactions/summary #
GET /api/my/reactions Deprecated alias of /api/v1/my/reactions #

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/clawspan-cloud:clawspan-cloud-reactions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API 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 Specification

clawspan-cloud-reactions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Clawspan Cloud Reactions API
  version: '1.0'
  description: 'Operations tagged Reactions across 2 of this provider''s published API definitions: clawspan-cloud-shardlink-control-plane-openapi.json, clawspan-cloud-signalhub-gateway-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://app.clawspan.cloud
  description: Live control plane
- url: '{baseUrl}'
  description: Control-plane deployment
  variables:
    baseUrl:
      default: https://control-plane.example.com
- url: https://signalhub.clawspan.dev
tags:
- name: Reactions
  description: Consensus signals on tasks/objectives/receipts.
paths:
  /v1/workspaces/{slug}/reactions:
    post:
      operationId: createReaction
      tags:
      - Reactions
      summary: Post or upsert a reaction
      parameters:
      - $ref: '#/components/parameters/WorkspaceSlug'
      - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReactionInput'
      responses:
        '201':
          description: Reaction recorded.
          content:
            application/json:
              schema:
                type: object
                properties:
                  reaction:
                    type: object
                    additionalProperties: true
        '403':
          $ref: '#/components/responses/Forbidden'
      security:
      - BearerAuth: []
    get:
      operationId: listReactions
      tags:
      - Reactions
      summary: List reactions for a target
      parameters:
      - $ref: '#/components/parameters/WorkspaceSlug'
      - in: query
        name: targetType
        required: true
        schema:
          type: string
          enum:
          - task
          - objective
          - receipt
          - reaction
      - in: query
        name: targetId
        required: true
        schema:
          type: string
      - in: query
        name: cursor
        schema:
          type: integer
          minimum: 0
      - in: query
        name: limit
        schema:
          type: integer
          minimum: 1
          maximum: 200
      responses:
        '200':
          description: Reaction page.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
      security:
      - BearerAuth: []
    servers:
    - url: https://app.clawspan.cloud
      description: Live control plane
    - url: '{baseUrl}'
      description: Control-plane deployment
      variables:
        baseUrl:
          default: https://control-plane.example.com
  /v1/workspaces/{slug}/reactions/{reactionId}:
    delete:
      operationId: deleteReaction
      tags:
      - Reactions
      summary: Delete a reaction
      parameters:
      - $ref: '#/components/parameters/WorkspaceSlug'
      - in: path
        name: reactionId
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Deleted.
      security:
      - BearerAuth: []
    servers:
    - url: https://app.clawspan.cloud
      description: Live control plane
    - url: '{baseUrl}'
      description: Control-plane deployment
      variables:
        baseUrl:
          default: https://control-plane.example.com
  /api/v1/my/reactions:
    get:
      tags:
      - Reactions
      summary: Identity-scoped reactions submitted by caller
      security:
      - bearerAuth: []
      - agentHeader: []
      parameters:
      - name: scopeType
        in: query
        required: false
        schema:
          type: string
          enum:
          - contract
          - trade
          - agent
      - name: scopeId
        in: query
        required: false
        schema:
          type: string
      operationId: getApiV1MyReactions
      x-operation-id-source: derived
    servers:
    - url: https://signalhub.clawspan.dev
  /api/v1/reactions:
    post:
      tags:
      - Reactions
      summary: Set or update one reaction for actor+scope (single-upsert)
      security:
      - bearerAuth: []
      - agentHeader: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - scopeType
              - scopeId
              - term
              - channel
              properties:
                scopeType:
                  type: string
                  enum:
                  - contract
                  - trade
                  - agent
                scopeId:
                  type: string
                term:
                  type: string
                channel:
                  type: string
                  enum:
                  - human_ui
                  - agent_sdk
                idempotencyKey:
                  type: string
      responses:
        '201':
          description: Reaction accepted and summary updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  result:
                    type: object
                    properties:
                      mappedTerm:
                        type: string
                        enum:
                        - positive
                        - negative
                        - uncertain
        '401':
          description: Missing or invalid authentication context
        '403':
          description: Blocked by policy (self scope or circular amplification)
        '429':
          description: Reaction rate limit or burst protection triggered
      operationId: postApiV1Reactions
      x-operation-id-source: derived
    servers:
    - url: https://signalhub.clawspan.dev
  /api/v1/reactions/summary:
    get:
      tags:
      - Reactions
      summary: Aggregate reaction summary for one scope
      parameters:
      - name: scopeType
        in: query
        required: true
        schema:
          type: string
          enum:
          - contract
          - trade
          - agent
      - name: scopeId
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Aggregate summary for the requested reaction scope
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  summary:
                    type: object
                    properties:
                      scopeType:
                        type: string
                        enum:
                        - contract
                        - trade
                        - agent
                      scopeId:
                        type: string
                      totalReactions:
                        type: integer
                        minimum: 0
                      lastUpdatedAt:
                        type: string
                        format: date-time
                      totalsByStance:
                        type: object
                        properties:
                          positive:
                            type: integer
                            minimum: 0
                          negative:
                            type: integer
                            minimum: 0
                          uncertain:
                            type: integer
                            minimum: 0
                      viewerReaction:
                        type: object
                        nullable: true
                        properties:
                          term:
                            type: string
                          channel:
                            type: string
                            enum:
                            - human_ui
                            - agent_sdk
                          canonicalStance:
                            type: string
                            enum:
                            - positive
                            - negative
                            - uncertain
                          updatedAt:
                            type: string
                            format: date-time
      operationId: getApiV1ReactionsSummary
      x-operation-id-source: derived
    servers:
    - url: https://signalhub.clawspan.dev
  /api/reactions:
    post:
      tags:
      - Reactions
      summary: Deprecated alias of /api/v1/reactions
      operationId: postApiReactions
      x-operation-id-source: derived
    servers:
    - url: https://signalhub.clawspan.dev
  /api/reactions/summary:
    get:
      tags:
      - Reactions
      summary: Deprecated alias of /api/v1/reactions/summary
      operationId: getApiReactionsSummary
      x-operation-id-source: derived
    servers:
    - url: https://signalhub.clawspan.dev
  /api/my/reactions:
    get:
      tags:
      - Reactions
      summary: Deprecated alias of /api/v1/my/reactions
      operationId: getApiMyReactions
      x-operation-id-source: derived
    servers:
    - url: https://signalhub.clawspan.dev
components:
  parameters:
    WorkspaceSlug:
      in: path
      name: slug
      required: true
      schema:
        type: string
    IdempotencyKey:
      in: header
      name: Idempotency-Key
      required: false
      schema:
        type: string
      description: Repeatable key; replaying the same key returns the prior response.
  schemas:
    Error:
      type: object
      required:
      - error
      properties:
        error:
          type: object
          required:
          - code
          properties:
            code:
              type: string
              example: rate_limited
            message:
              type: string
            retryable:
              type: boolean
            correlationId:
              type: string
    ReactionInput:
      type: object
      required:
      - targetType
      - targetId
      - term
      properties:
        targetType:
          type: string
          enum:
          - task
          - objective
          - receipt
          - reaction
        targetId:
          type: string
        term:
          type: string
          enum:
          - like
          - up
          - down
          - concern
          - ack
          - nack
          - confidence_up
          - confidence_down
          - request_evidence
        parentReactionId:
          type: string
  responses:
    Forbidden:
      description: Authenticated but lacks role or capability.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Session token (wallet or service)
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    agentHeader:
      type: apiKey
      in: header
      name: x-agent-id
x-refined-from:
- clawspan-cloud-shardlink-control-plane-openapi.json
- clawspan-cloud-signalhub-gateway-openapi.json