Skip to main content

Code Discovery - Automatic API Discovery System

GitHub release License: MIT Python 3.9+

Overview

Code Discovery is an automated system that discovers API endpoints in code repositories and generates OpenAPI specifications. It supports multiple version control systems and frameworks, running entirely within your VCS runners for maximum security.

โšก Quick Start

# 1. Clone the repository
git clone https://github.com/YOUR_USERNAME/code-discovery.git
cd code-discovery

# 2. Install
pip install -r requirements.txt
pip install -e .

# 3. Run on your project
code-discovery --repo-path /path/to/your/api/project

โœ… That's it! Your OpenAPI spec is generated at openapi-spec.yaml

๐Ÿ“– Documentation: See docs/ directory for detailed guides

Features

  • Multi-VCS Support: GitHub, GitLab, Jenkins, CircleCI, Harness
  • Multi-Framework Support:
    • Java: Spring Boot, Micronaut
    • Python: FastAPI, Flask
    • .NET: ASP.NET Core
  • Automatic OpenAPI Generation: Discovers endpoints, inputs, outputs, and authentication requirements
  • Secure Execution: Runs entirely on your infrastructure - code never leaves your VCS environment
  • Extensible Architecture: Easy to add new frameworks and VCS platforms

Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    VCS Platform                         โ”‚
โ”‚  (GitHub/GitLab/Jenkins/CircleCI/Harness)              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                          โ”‚
                          โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                   Orchestrator                          โ”‚
โ”‚  - Coordinates the discovery workflow                   โ”‚
โ”‚  - Manages VCS interactions                            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                          โ”‚
            โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
            โ–ผ             โ–ผ             โ–ผ
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚ Detectorsโ”‚   โ”‚  Parsers โ”‚   โ”‚Generator โ”‚
    โ”‚          โ”‚   โ”‚          โ”‚   โ”‚          โ”‚
    โ”‚Framework โ”‚   โ”‚API Info  โ”‚   โ”‚ OpenAPI  โ”‚
    โ”‚Detection โ”‚   โ”‚Extractionโ”‚   โ”‚   Spec   โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Installation

Method 1: Install from GitHub (Recommended)

# Clone the repository
git clone https://github.com/YOUR_USERNAME/code-discovery.git
cd code-discovery

# Install dependencies and package
pip install -r requirements.txt
pip install -e .

# Verify installation
code-discovery --version

๐Ÿ“– Installation: Install from PyPI: pip install code-discovery

Method 2: CI/CD Integration

GitHub Actions - Add to .github/workflows/api-discovery.yml:

- name: Install Code Discovery
  run: |
    git clone https://github.com/YOUR_USERNAME/code-discovery.git /tmp/code-discovery
    cd /tmp/code-discovery
    pip install -r requirements.txt
    pip install -e .

- name: Run Discovery
  run: code-discovery --repo-path .

GitLab CI - Add to .gitlab-ci.yml:

before_script:
  - git clone https://github.com/YOUR_USERNAME/code-discovery.git /tmp/code-discovery
  - cd /tmp/code-discovery && pip install -r requirements.txt && pip install -e .
  - cd $CI_PROJECT_DIR

script:
  - code-discovery --repo-path .

See example configurations in .github/workflows/, .gitlab-ci.yml, Jenkinsfile, etc.

Configuration

API Security Configuration (.apisec)

Create a .apisec file for API authentication:

code-discovery --create-apisec

Edit the file with your API endpoint and token:

[api-discovery]
endpoint = https://api.your-service.com/v1/discovery
token = your-api-token-here

See docs/APISEC_CONFIGURATION.md for details.

Project Configuration (.codediscovery.yml)

Create a .codediscovery.yml file in your repository root (optional):

# API Discovery Configuration
api_discovery:
  enabled: true
  
  # Frameworks to scan (leave empty to auto-detect all)
  frameworks:
    - spring-boot
    - micronaut
    - fastapi
    - flask
    - aspnet-core
  
  # OpenAPI specification settings
  openapi:
    version: "3.0.0"
    output_path: "openapi-spec.yaml"
    include_examples: true
  
  # External API endpoint (optional)
  external_api:
    enabled: true
    endpoint: "https://api.example.com/openapi/upload"
    auth_token_env: "API_DISCOVERY_TOKEN"

Usage

Automatic (Recommended)

Once installed as a VCS app, the system automatically:

  1. Triggers on push/PR events
  2. Scans the repository for API frameworks
  3. Extracts API endpoint information
  4. Generates OpenAPI specification
  5. Commits the spec back to the repository
  6. Notifies your external API endpoint

Manual Execution

# Run discovery on current directory
python -m src.main

# Specify repository path
python -m src.main --repo-path /path/to/repo

# Dry run (don't commit back)
python -m src.main --dry-run

Extending the System

Adding a New Framework

  1. Create a detector in src/detectors/your_framework.py:
from src.detectors.base import BaseDetector

class YourFrameworkDetector(BaseDetector):
    def detect(self) -> bool:
        # Detection logic
        pass
  1. Create a parser in src/parsers/your_framework_parser.py:
from src.parsers.base import BaseParser

class YourFrameworkParser(BaseParser):
    def parse(self) -> List[APIEndpoint]:
        # Parsing logic
        pass

Adding a New VCS Platform

Implement the BaseVCSAdapter interface in src/vcs/your_platform.py:

from src.vcs.base import BaseVCSAdapter

class YourPlatformAdapter(BaseVCSAdapter):
    def get_repository_path(self) -> str:
        pass
    
    def commit_file(self, file_path: str, message: str):
        pass

Security Considerations

  • Code never leaves your VCS environment
  • Runs on your own runners/agents
  • Supports secret management via environment variables
  • OpenAPI specs are committed to your repository under your control

Documentation

License

MIT License - See LICENSE file for details

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for guidelines.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

code_discovery-0.7.0.tar.gz (139.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

code_discovery-0.7.0-py3-none-any.whl (167.0 kB view details)

Uploaded Python 3

File details

Details for the file code_discovery-0.7.0.tar.gz.

File metadata

  • Download URL: code_discovery-0.7.0.tar.gz
  • Upload date:
  • Size: 139.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for code_discovery-0.7.0.tar.gz
Algorithm Hash digest
SHA256 63acb171f4c4e1a1ec973c092a90ade425ce96366b056fe348fcc2e485724aac
MD5 6f262bb90d3e49f6dd0f9d69abd4f9ed
BLAKE2b-256 8d190d2d9642be11794cbb4e9bd5fa14912284377195756b0135fb22884eef1c

See more details on using hashes here.

File details

Details for the file code_discovery-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: code_discovery-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 167.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for code_discovery-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f342ed6bd944d30aefaa9066f6e69afd97e5020f405ea2cf6462fc4a0a9be285
MD5 364a3ae303a76c5f23c852580165dff1
BLAKE2b-256 8cee4854666494b9c51d74f947fbf06713999591cef239768aff7caf40391eb1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page