Skip to content

03.1 API Documentation

sunithvs edited this page Feb 23, 2025 · 2 revisions

API Documentation

The API module provides the main FastAPI application endpoints and middleware for the devb.io service.

Key Components

Base URL

  • The base URL for the v1 is: https://user.devb.io/
  • The base URL for the v2 is: https://v2.devb.io/

API Endpoints

  1. Basic Profile Endpoint

    • Route: /user/{username}/profile
    • Function: fetch_basic_profile
    • Purpose: Fetches basic GitHub user profile information
    • Includes background task processing
    • Response Example:
    {
      "username": "sunithvs",
      "name": "sunith vs",
      "bio": "Backend Developer @Eduport | CUSATian  | Engineeeeeeeeeeer",
      "location": "Perinthalmanna, Malappuram,Kerala ,India",
      "avatar_url": "https://avatars.githubusercontent.com/u/63339782?v=4",
      "profile_url": "https://github.com/sunithvs",
      "followers": 117,
      "following": 26,
      "public_repos": 116,
      "pull_requests_merged": 24,
      "issues_closed": 11,
      "achievements": {
        "total_contributions": 662,
        "repositories_contributed_to": 4
      },
      "social_accounts": [
        {
          "provider": "linkedin",
          "url": "https://www.linkedin.com/in/sunithvs/"
        },
        {
          "provider": "generic",
          "url": "https://medium.com/@sunithvs"
        },
        {
          "provider": "instagram",
          "url": "https://www.instagram.com/sunithvs_/"
        },
        {
          "provider": "generic",
          "url": "https://devb.io/sunithvs"
        }
      ],
      "readme_content": "[![main Screenshot](images/main_screenshot.png)](https://devb.io/sunithvs)\n",
      "about": "I'm sunith vs, a seasoned backend developer with expertise in driving scalable solutions at Eduport, where I leverage my passion for software engineering to deliver high-quality products. With a strong foundation in backend development, my skills include proficiency in various technologies that I utilize to design and implement efficient, reliable systems. As a CUSATian, I bring a unique blend of technical acumen and problem-solving skills honed through real-world projects and contributions."
    }
  2. Projects Data Endpoint

    • Route: /user/{username}/projects
    • Function: fetch_projects_data
    • Purpose: Fetches GitHub user's projects and languages data
    • Response Example:
    {
      "top_projects": [
        {
          "name": "stories",
          "description": "A project created for maintinaing life highlights.",
          "score": null,
          "stars": 0,
          "forks": 0,
          "language": "TypeScript",
          "url": "https://github.com/sunithvs/stories",
          "updatedAt": "2025-02-22T10:23:35Z",
          "isPinned": false,
          "homepage": null
        },
        {
          "name": "devb.io",
          "description": "DevB.io seamlessly transforms your GitHub footprint into a living, breathing portfolio. Powered by AI, it tells your developer story while you focus on what matters most: writing great code. No more portfolio maintenance headaches, just pure coding brilliance on display.",
          "score": 23.426172810236,
          "stars": 100,
          "forks": 12,
          "language": "Python",
          "url": "https://github.com/sunithvs/devb.io",
          "updatedAt": "2025-02-22T17:58:49Z",
          "isPinned": true,
          "homepage": "http://devb.io/"
        },
        {
          "name": "kph-products",
          "description": "A platform for listing products from kph(kerala product hunt) communitiy. ",
          "score": 12.7382352176696,
          "stars": 2,
          "forks": 0,
          "language": "TypeScript",
          "url": "https://github.com/sunithvs/kph-products",
          "updatedAt": "2025-02-17T18:23:45Z",
          "isPinned": true,
          "homepage": "https://products.kph.club"
        },
        {
          "name": "event-checkin",
          "description": "An event checking platform developed for cusat to host International Conclave on Next-Gen Higher Education 2025.",
          "score": 11.7803403276407,
          "stars": 1,
          "forks": 0,
          "language": "TypeScript",
          "url": "https://github.com/sunithvs/event-checkin",
          "updatedAt": "2025-02-17T18:27:24Z",
          "isPinned": true,
          "homepage": "https://ticket.radr.in"
        },
        {
          "name": "marine-science",
          "description": "A Django-based web application for managing marine science conference registrations, abstract submissions, and payments. The system provides a complete solution for conference organization, including user authentication, payment processing, and content management.",
          "score": 11.2897650886137,
          "stars": 0,
          "forks": 1,
          "language": "HTML",
          "url": "https://github.com/sunithvs/marine-science",
          "updatedAt": "2025-01-17T08:11:06Z",
          "isPinned": true,
          "homepage": "https://marine.cusat.ac.in/"
        },
        {
          "name": "thanthavibe.in",
          "description": "A thanthavibe calculator which hit 500+ users in the release date. ",
          "score": 10.6036444065728,
          "stars": 0,
          "forks": 0,
          "language": "HTML",
          "url": "https://github.com/sunithvs/thanthavibe.in",
          "updatedAt": "2025-02-17T18:26:05Z",
          "isPinned": true,
          "homepage": "https://thanthavibe.in/"
        },
        {
          "name": "git-session",
          "description": "a project to learn git and github",
          "score": 5.64308852159903,
          "stars": 1,
          "forks": 11,
          "language": "HTML",
          "url": "https://github.com/sunithvs/git-session",
          "updatedAt": "2025-02-06T15:26:39Z",
          "isPinned": false,
          "homepage": null
        },
        {
          "name": "EOC-FRONTEND",
          "description": null,
          "score": 4.7552476900004,
          "stars": 1,
          "forks": 8,
          "language": "JavaScript",
          "url": "https://github.com/sunithvs/EOC-FRONTEND",
          "updatedAt": "2022-12-05T07:59:49Z",
          "isPinned": false,
          "homepage": ""
        }
      ],
      "top_languages": [
        ["Python", 29],
        ["TypeScript", 11],
        ["C", 2]
      ]
    }
  3. About Data Endpoint

    • Route: /user/{username}/about
    • Function: fetch_about_data
    • Purpose: Fetches GitHub user's README content
    • Response Example:
    {
      "readme_content": "# About Me\n\nHello, I'm a developer...",
      "about": "Brief extracted summary about the user"
    }
  4. LinkedIn Profile Endpoint

    • Route: /user/{username}/linkedin
    • Function: fetch_linkedin_profile
    • Purpose: Fetches LinkedIn profile data
    • Note: Both experience and education arrays can be empty ([]) if no data is available
    • Response Example:
    {
      "basic_info": {
        "full_name": "Sunith Vs",
        "headline": "Backend Developer at Eduport | Building Lamsta.",
        "location": {
          "city": "Malappuram",
          "state": "Kerala",
          "country": "IN"
        },
        "summary": "Having embarked on an entrepreneurial journey with my startup, Lamsta, where I connected with inspiring founders and co-founders, I am now eager to transition into a role that allows me to utilise my project management, leadership, and software development skills. My experience includes completing over four projects and numerous side projects and consistently working on innovative ideas. Beyond technical skills, I've mentored at hackathons and led over 30 workshops, refining my leadership and team-building abilities. I am enthusiastic about joining a forward-thinking organisation where I can apply my diverse skill set and continue my professional growth.",
        "profile_url": "https://linkedin.com/in/sunithvs",
        "connections": 907
      },
      "experience": [
        {
          "title": "Back End Developer",
          "company": "Eduport ",
          "location": "Kozhikode, Kerala, India",
          "description": null,
          "duration": {
            "start": {
              "month": 5,
              "year": 2024
            },
            "end": null
          }
        },
        {
          "title": "Founder",
          "company": "Lamsta",
          "location": "Ernakulam, Kerala, India",
          "description": null,
          "duration": {
            "start": {
              "month": 2,
              "year": 2023
            },
            "end": null
          }
        },
        {
          "title": "Django Developer Intern",
          "company": "Eduport ",
          "location": "Kozhikode, Kerala, India",
          "description": null,
          "duration": {
            "start": {
              "month": 3,
              "year": 2024
            },
            "end": {
              "month": 6,
              "year": 2024
            }
          }
        },
        {
          "title": "Organizer",
          "company": "Make-a-Ton",
          "location": "Kochi, Kerala, India",
          "description": null,
          "duration": {
            "start": {
              "month": 8,
              "year": 2022
            },
            "end": {
              "month": 3,
              "year": 2024
            }
          }
        },
        {
          "title": "Chief Operating Officer",
          "company": "Trebuchet Systems",
          "location": "Kochi, Kerala, India",
          "description": null,
          "duration": {
            "start": {
              "month": 5,
              "year": 2021
            },
            "end": {
              "month": 12,
              "year": 2023
            }
          }
        }
      ],
      "education": [
        {
          "school": "Cochin University of Science and Technology",
          "degree": "Bachelor of Technology - BTech",
          "field": "Computer Science",
          "duration": {
            "start": {
              "year": 2020
            },
            "end": {
              "year": 2024
            }
          }
        },
        {
          "school": "Government Higher Secondary School , Cherpulassery, Palakkad ",
          "degree": "Computer science ",
          "field": null,
          "duration": {
            "start": {
              "year": 2018
            },
            "end": {
              "year": 2020
            }
          }
        }
      ]
    }

Middleware

APIKeyMiddleware

  • Purpose: Handles API key authentication
  • Excludes certain paths: /docs, /redoc, /openapi.json
  • Validates API keys against configured settings

Caching

The API implements caching mechanisms for GitHub profiles using:

  • get_cached_github_profile function
  • Background tasks for data updates
  • Username validation middleware

Security Features

  • API Key authentication required for endpoints
  • Input validation through dependency injection
  • Rate limiting through middleware
Clone this wiki locally