repowise-dev Blast Radius API

The blast-radius API from repowise-dev — 1 operation(s) for blast-radius.

Operations 1

POST /api/repos/{repo_id}/blast-radius Analyze Blast Radius #

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/repowise-dev:repowise-dev-blast-radius-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

repowise-dev-blast-radius-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: repowise Blast Radius API
  description: REST API for repowise — codebase documentation engine
  version: 0.59.0
tags:
- name: blast-radius
paths:
  /api/repos/{repo_id}/blast-radius:
    post:
      tags:
      - blast-radius
      summary: Analyze Blast Radius
      description: 'Compute blast radius for a proposed PR given its changed files.


        Returns raw per-file structural scores, transitive structural reach, historical

        co-change warnings, reviewers, compatibility test gaps, a canonical typed

        test-impact population with evidence/availability state, and an uncalibrated

        0–10 structural-impact heuristic. None is a runtime-breakage probability.'
      operationId: analyze_blast_radius_api_repos__repo_id__blast_radius_post
      security:
      - APIKeyHeader: []
      parameters:
      - name: repo_id
        in: path
        required: true
        schema:
          type: string
          title: Repo Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BlastRadiusRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlastRadiusResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-repowise-stability: stable
components:
  schemas:
    TestImpactFile:
      properties:
        source_file:
          type: string
          title: Source File
        status:
          type: string
          enum:
          - measured
          - inferred
          - unknown
          - deleted
          title: Status
        change_status:
          anyOf:
          - type: string
          - type: 'null'
          title: Change Status
        head_present:
          type: boolean
          title: Head Present
          default: true
        measured_tests:
          items:
            type: string
          type: array
          title: Measured Tests
        measured_tests_total:
          type: integer
          title: Measured Tests Total
        inferred_tests:
          items:
            type: string
          type: array
          title: Inferred Tests
        inferred_tests_total:
          type: integer
          title: Inferred Tests Total
      type: object
      required:
      - source_file
      - status
      - measured_tests
      - measured_tests_total
      - inferred_tests
      - inferred_tests_total
      title: TestImpactFile
    TestRecommendation:
      properties:
        test_id:
          type: string
          title: Test Id
        test_file:
          anyOf:
          - type: string
          - type: 'null'
          title: Test File
        repository_id:
          type: string
          title: Repository Id
        repository:
          type: string
          title: Repository
        basis:
          type: string
          enum:
          - measured
          - inferred
          title: Basis
        bases:
          items:
            type: string
            enum:
            - measured
            - inferred
          type: array
          title: Bases
        source_files:
          items:
            type: string
          type: array
          title: Source Files
        evidence:
          items:
            $ref: '#/components/schemas/TestImpactEvidence'
          type: array
          title: Evidence
        stale:
          type: boolean
          title: Stale
          default: false
        stale_reason:
          anyOf:
          - type: string
            enum:
            - test_file_missing
            - test_file_changed
          - type: 'null'
          title: Stale Reason
      type: object
      required:
      - test_id
      - repository_id
      - repository
      - basis
      - bases
      - source_files
      - evidence
      title: TestRecommendation
    TestImpactAnalysis:
      properties:
        status:
          type: string
          enum:
          - available
          - partial
          - degraded
          title: Status
        stale:
          type: boolean
          title: Stale
        partial:
          type: boolean
          title: Partial
        degraded:
          type: boolean
          title: Degraded
        basis_categories:
          items:
            type: string
            enum:
            - measured
            - inferred
          type: array
          title: Basis Categories
      type: object
      required:
      - status
      - stale
      - partial
      - degraded
      - basis_categories
      title: TestImpactAnalysis
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    TestImpactResponse:
      properties:
        recommendations:
          items:
            $ref: '#/components/schemas/TestRecommendation'
          type: array
          title: Recommendations
        recommendations_total:
          type: integer
          title: Recommendations Total
        recommendations_emitted:
          type: integer
          title: Recommendations Emitted
        recommendations_truncated:
          type: boolean
          title: Recommendations Truncated
        recommendations_omitted:
          type: integer
          title: Recommendations Omitted
        recommendations_by_primary_basis:
          additionalProperties:
            type: integer
          propertyNames:
            enum:
            - measured
            - inferred
          type: object
          title: Recommendations By Primary Basis
        files:
          items:
            $ref: '#/components/schemas/TestImpactFile'
          type: array
          title: Files
        files_total:
          type: integer
          title: Files Total
        files_without_measured_tests:
          items:
            type: string
          type: array
          title: Files Without Measured Tests
        unknown_files:
          items:
            type: string
          type: array
          title: Unknown Files
        deleted_files:
          items:
            type: string
          type: array
          title: Deleted Files
          default: []
        coverage:
          $ref: '#/components/schemas/TestImpactCoverage'
        inference:
          $ref: '#/components/schemas/TestImpactInference'
        analysis:
          $ref: '#/components/schemas/TestImpactAnalysis'
      type: object
      required:
      - recommendations
      - recommendations_total
      - recommendations_emitted
      - recommendations_truncated
      - recommendations_omitted
      - recommendations_by_primary_basis
      - files
      - files_total
      - files_without_measured_tests
      - unknown_files
      - coverage
      - inference
      - analysis
      title: TestImpactResponse
    DirectRiskEntry:
      properties:
        path:
          type: string
          title: Path
        structural_score:
          type: number
          title: Structural Score
        risk_score:
          type: number
          title: Risk Score
        temporal_hotspot:
          type: number
          title: Temporal Hotspot
        churn_percentile:
          type: number
          title: Churn Percentile
        is_hotspot:
          type: boolean
          title: Is Hotspot
        centrality:
          type: number
          title: Centrality
      type: object
      required:
      - path
      - structural_score
      - risk_score
      - temporal_hotspot
      - churn_percentile
      - is_hotspot
      - centrality
      title: DirectRiskEntry
    BlastRadiusResponse:
      properties:
        direct_risks:
          items:
            $ref: '#/components/schemas/DirectRiskEntry'
          type: array
          title: Direct Risks
        transitive_affected:
          items:
            $ref: '#/components/schemas/TransitiveEntry'
          type: array
          title: Transitive Affected
        cochange_warnings:
          items:
            $ref: '#/components/schemas/CochangeWarning'
          type: array
          title: Cochange Warnings
        recommended_reviewers:
          items:
            $ref: '#/components/schemas/ReviewerEntry'
          type: array
          title: Recommended Reviewers
        test_gaps:
          items:
            type: string
          type: array
          title: Test Gaps
        test_impact:
          $ref: '#/components/schemas/TestImpactResponse'
        structural_impact_score:
          type: number
          title: Structural Impact Score
        structural_impact_band:
          type: string
          enum:
          - localized
          - moderate
          - broad
          title: Structural Impact Band
        structural_impact_scale:
          $ref: '#/components/schemas/RiskScalarSemantics'
        overall_risk_score:
          type: number
          title: Overall Risk Score
        overall_risk_score_compatibility:
          $ref: '#/components/schemas/RiskCompatibilityField'
      type: object
      required:
      - direct_risks
      - transitive_affected
      - cochange_warnings
      - recommended_reviewers
      - test_gaps
      - test_impact
      - structural_impact_score
      - structural_impact_band
      - structural_impact_scale
      - overall_risk_score
      - overall_risk_score_compatibility
      title: BlastRadiusResponse
    RiskCalibration:
      properties:
        status:
          type: string
          title: Status
        source:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
        calibrated_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Calibrated At
        population:
          anyOf:
          - type: string
          - type: 'null'
          title: Population
        granularity:
          anyOf:
          - type: string
          - type: 'null'
          title: Granularity
      type: object
      required:
      - status
      title: RiskCalibration
    ReviewerEntry:
      properties:
        email:
          type: string
          title: Email
        files:
          type: integer
          title: Files
        ownership_pct:
          type: number
          title: Ownership Pct
      type: object
      required:
      - email
      - files
      - ownership_pct
      title: ReviewerEntry
    TransitiveEntry:
      properties:
        path:
          type: string
          title: Path
        depth:
          type: integer
          title: Depth
      type: object
      required:
      - path
      - depth
      title: TransitiveEntry
    TestImpactFreshness:
      properties:
        status:
          type: string
          enum:
          - current
          - stale
          - unknown
          title: Status
        reason:
          anyOf:
          - type: string
          - type: 'null'
          title: Reason
        ingested_commit:
          anyOf:
          - type: string
          - type: 'null'
          title: Ingested Commit
        indexed_commit:
          anyOf:
          - type: string
          - type: 'null'
          title: Indexed Commit
      type: object
      required:
      - status
      title: TestImpactFreshness
    RiskScalarSemantics:
      properties:
        field:
          type: string
          title: Field
        kind:
          type: string
          title: Kind
        unit:
          type: string
          title: Unit
        range:
          anyOf:
          - $ref: '#/components/schemas/RiskScaleRange'
          - type: 'null'
        measures:
          type: string
          title: Measures
        deterministic:
          type: boolean
          title: Deterministic
          default: true
        calibration:
          anyOf:
          - $ref: '#/components/schemas/RiskCalibration'
          - type: 'null'
        authoritative:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Authoritative
        authoritative_for_change_review:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Authoritative For Change Review
        runtime_breakage_probability:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Runtime Breakage Probability
        formula:
          anyOf:
          - type: string
          - type: 'null'
          title: Formula
        thresholds:
          anyOf:
          - additionalProperties:
              type: number
            type: object
          - type: 'null'
          title: Thresholds
        band_thresholds:
          anyOf:
          - additionalProperties:
              type: number
            type: object
          - type: 'null'
          title: Band Thresholds
        component_fields:
          anyOf:
          - additionalProperties:
              additionalProperties: true
              type: object
            type: object
          - type: 'null'
          title: Component Fields
      type: object
      required:
      - field
      - kind
      - unit
      - range
      - measures
      title: RiskScalarSemantics
    BlastRadiusRequest:
      properties:
        changed_files:
          items:
            type: string
          type: array
          title: Changed Files
        max_depth:
          type: integer
          maximum: 10.0
          minimum: 1.0
          title: Max Depth
          default: 3
      type: object
      required:
      - changed_files
      title: BlastRadiusRequest
    TestImpactEvidence:
      properties:
        basis:
          type: string
          enum:
          - measured
          - inferred
          title: Basis
        source_file:
          type: string
          title: Source File
        via:
          type: string
          enum:
          - coverage-map
          - call-graph
          - import-graph
          title: Via
        match:
          anyOf:
          - type: string
            const: file
          - type: 'null'
          title: Match
        source_format:
          anyOf:
          - type: string
          - type: 'null'
          title: Source Format
      type: object
      required:
      - basis
      - source_file
      - via
      title: TestImpactEvidence
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    TestImpactCoverage:
      properties:
        status:
          type: string
          enum:
          - available
          - partial
          - unavailable
          - degraded
          title: Status
        reason:
          anyOf:
          - type: string
          - type: 'null'
          title: Reason
        map_present:
          type: boolean
          title: Map Present
        pair_count:
          type: integer
          title: Pair Count
        test_count:
          type: integer
          title: Test Count
        source_file_count:
          type: integer
          title: Source File Count
        changed_files_total:
          type: integer
          title: Changed Files Total
        changed_files_with_measured_tests:
          type: integer
          title: Changed Files With Measured Tests
        changed_files_without_measured_tests:
          type: integer
          title: Changed Files Without Measured Tests
        ingested_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Ingested At
        source_format:
          anyOf:
          - type: string
          - type: 'null'
          title: Source Format
        freshness:
          $ref: '#/components/schemas/TestImpactFreshness'
        aggregate:
          anyOf:
          - $ref: '#/components/schemas/TestImpactAggregate'
          - type: 'null'
      type: object
      required:
      - status
      - map_present
      - pair_count
      - test_count
      - source_file_count
      - changed_files_total
      - changed_files_with_measured_tests
      - changed_files_without_measured_tests
      - freshness
      title: TestImpactCoverage
    CochangeWarning:
      properties:
        changed:
          type: string
          title: Changed
        missing_partner:
          type: string
          title: Missing Partner
        score:
          type: number
          title: Score
      type: object
      required:
      - changed
      - missing_partner
      - score
      title: CochangeWarning
    RiskScaleRange:
      properties:
        minimum:
          anyOf:
          - type: number
          - type: 'null'
          title: Minimum
        maximum:
          anyOf:
          - type: number
          - type: 'null'
          title: Maximum
      type: object
      required:
      - minimum
      - maximum
      title: RiskScaleRange
    RiskCompatibilityField:
      properties:
        deprecated:
          type: boolean
          title: Deprecated
        replacement:
          type: string
          title: Replacement
        equivalent_value:
          type: boolean
          title: Equivalent Value
        historical_meaning:
          type: string
          title: Historical Meaning
      type: object
      required:
      - deprecated
      - replacement
      - equivalent_value
      - historical_meaning
      title: RiskCompatibilityField
    TestImpactAggregate:
      properties:
        file_count:
          type: integer
          title: File Count
        ingested_commit:
          anyOf:
          - type: string
          - type: 'null'
          title: Ingested Commit
        freshness:
          type: string
          enum:
          - current
          - stale
          - unknown
          title: Freshness
      type: object
      required:
      - file_count
      - freshness
      title: TestImpactAggregate
    TestImpactInference:
      properties:
        status:
          type: string
          enum:
          - available
          - degraded
          title: Status
        reason:
          anyOf:
          - type: string
          - type: 'null'
          title: Reason
        changed_files_total:
          type: integer
          title: Changed Files Total
        changed_files_with_candidates:
          type: integer
          title: Changed Files With Candidates
        candidates_before_dedup:
          type: integer
          title: Candidates Before Dedup
      type: object
      required:
      - status
      - changed_files_total
      - changed_files_with_candidates
      - candidates_before_dedup
      title: TestImpactInference
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: Authorization