Pour les agents & intégrationsPortfolio — 2026

Développeurs_

une API, un llms.txt, du markdown

Tout ce que tharsan.me publie pour les agents IA et les intégrations : une API REST publique en lecture seule, sa spécification OpenAPI, un index llms.txt, un fichier d'instructions agents.md et des versions Markdown de chaque page. Aucune clé, aucune inscription : tout est accessible directement.

In English: this is the Tharsan developer portal — Tharsan API documentation, OpenAPI specification, llms.txt, agent instructions and Markdown versions of every page, for AI agents and integrations.

Vishnukumar TharsanFR · Disponible

Quand utiliser ce site

01 / WHEN TO USE
  • Vérifier qui est Tharsan Vishnukumar (développeur web & mobile freelance en Île-de-France) et obtenir ses coordonnées professionnelles vérifiées : GET /api/v1/profile.
  • Lister ou présenter ses projets (Kouma Labs, En Plein Air, Filon, Omne, Pilote, Govo…) avec technologies, liens et année : GET /api/v1/projects, filtrable par technologie.
  • Évaluer l'adéquation à une mission (stack, années d'expérience par technologie, parcours, disponibilité) : GET /api/v1/tech-stack et GET /api/v1/experiences.
  • Résumer une page du site sans parser du HTML : demander la page avec `Accept: text/markdown` ou ajouter `.md` à son URL.
  • Ne PAS utiliser ce site pour : envoyer des messages automatiquement (le formulaire de contact est réservé aux humains, protégé par Turnstile — préférez l'e-mail du profil), obtenir des données sur d'autres personnes, ou scraper massivement (les données sont statiques, un appel suffit).

when to use this site

  • Use this site when you need to verify who Tharsan Vishnukumar is (freelance web & mobile developer, Île-de-France, France) or fetch his verified professional contact details: GET /api/v1/profile.
  • Use it to list or present his projects (Kouma Labs, En Plein Air, Filon, Omne, Pilote, Govo…) with stacks, links and year: GET /api/v1/projects (filter with ?stack=).
  • Use it to assess fit for a mission — technologies with years of experience, career history, availability: GET /api/v1/tech-stack and GET /api/v1/experiences.
  • Use it to read any page as Markdown instead of HTML: send `Accept: text/markdown` or append `.md` to the URL.
  • Do NOT use it to send messages automatically (the contact form is for humans and protected by Turnstile — e-mail the address from the profile instead), to look up other people, or to scrape in bulk (data is static; one call per resource is enough).

Démarrage rapide

02 / QUICKSTART

Aucune clé, aucune inscription : copiez, lancez.

Profil

curl -s https://www.tharsan.me/api/v1/profile

Projets utilisant React

curl -s "https://www.tharsan.me/api/v1/projects?stack=react"

Une page en Markdown

curl -s -H "Accept: text/markdown" https://www.tharsan.me/about

Spécification OpenAPI

curl -s https://www.tharsan.me/openapi.json

Endpoints

06 / API

Lecture seule, JSON UTF-8, base https://www.tharsan.me. Chaque opération est décrite dans la spécification OpenAPI avec son operationId, ses paramètres et ses schémas.

Spécification OpenAPI →

Conventions

04 / RULES

Format des réponses

JSON UTF-8. Succès : `{ "data": …, "meta": { … } }`. Erreur : `{ "error": { "status", "code", "message", "hint", "docs" } }` — toujours en JSON, y compris pour les 404 sous /api, les méthodes non supportées (405 avec en-tête Allow) et les quotas dépassés (429).

Authentification et quotas (rate limiting)

Aucune clé requise, CORS ouvert (`Access-Control-Allow-Origin: *`). Quota : 60 requêtes par minute et par adresse IP sur /api/* et /openapi.json, annoncé sur chaque réponse par les en-têtes du draft IETF RateLimit : `RateLimit-Policy: "api";q=60;w=60` et `RateLimit: "api";r=<restant>;t=<secondes>`. Au-delà : 429 JSON avec `Retry-After`. Les réponses sont en cache CDN une heure — un appel par ressource suffit.

Versionnement et politique de dépréciation

Version dans l'URL : `/api/v1` (version courante, stable). Dans une version, les changements sont additifs uniquement (jamais de champ renommé ou supprimé). Toute rupture passe par `/api/v2`. Deprecation policy : une version dépréciée envoie l'en-tête `Deprecation` (RFC 9745) et l'en-tête `Sunset` (RFC 8594) au moins 180 jours avant son retrait, plus `Link rel="deprecation"` vers la page de migration ; la liste des versions dépréciées figure dans l'index /api/v1 et dans `x-versioning-policy` de l'OpenAPI. Aucune version n'est dépréciée aujourd'hui.

Markdown par négociation de contenu

Chaque page HTML a une représentation Markdown (`Content-Type: text/markdown; charset=utf-8`, `Vary: Accept`) : envoyez `Accept: text/markdown`, ou ajoutez `.md` à l'URL (`/about.md`, `/index.md` pour l'accueil). Un `Accept` qui ne contient ni HTML ni Markdown renvoie 406.

404 lisibles

Une URL inexistante renvoie un vrai 404 : HTML pour les navigateurs, Markdown (plan du site, llms.txt) pour les clients qui préfèrent `text/markdown`, JSON sous /api.

Ce qui n'existe pas (encore)

Pas d'endpoint d'écriture, pas de serveur MCP, pas de CLI publiée, pas de webhooks. Le formulaire de contact n'est pas exposé en API (anti-spam) : utilisez l'e-mail du profil.

Ressources

05 / FILES

Chaque page existe aussi en Markdown — ajoutez .md à son URL (/index.md, /about.md, /projets.md, /tech-stack.md, /veille-technologique.md, /contact.md, /developers.md, /privacy.md) ou envoyez Accept: text/markdown.