{
  "openapi": "3.0.1",
  "info": {
    "title": "FullRemote Jobs API",
    "description": "API de recherche d'emplois 100% télétravail (CDI, Freelance, CDD, Stage) en France, Europe et Worldwide.",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://remote-jobs.app"
    }
  ],
  "paths": {
    "/api/jobs": {
      "get": {
        "operationId": "searchJobs",
        "summary": "Rechercher des offres 100% télétravail avec filtres précis",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Mots-clés de recherche (ex: react, go, senior)"
          },
          {
            "name": "region",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "worldwide",
                "france",
                "europe",
                "americas",
                "apac_mea"
              ]
            },
            "description": "Zone géographique"
          },
          {
            "name": "category",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "tech",
                "devops",
                "data_ai",
                "design",
                "product",
                "marketing_sales"
              ]
            },
            "description": "Domaine professionnel"
          },
          {
            "name": "contract",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "cdi_fulltime",
                "freelance_contract",
                "cdd_parttime",
                "internship"
              ]
            },
            "description": "Type de contrat"
          },
          {
            "name": "lang",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "fr",
                "en"
              ]
            },
            "description": "Langue de l'offre"
          },
          {
            "name": "min_salary",
            "in": "query",
            "schema": {
              "type": "integer"
            },
            "description": "Salaire annuel minimum en € ou $"
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 1
            },
            "description": "Numéro de page"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 60
            },
            "description": "Nombre de résultats par page"
          }
        ],
        "responses": {
          "200": {
            "description": "Liste des offres trouvées avec métadonnées",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "jobs": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "company": {
                            "type": "string"
                          },
                          "url": {
                            "type": "string"
                          },
                          "category": {
                            "type": "string"
                          },
                          "contractType": {
                            "type": "string"
                          },
                          "region": {
                            "type": "string"
                          },
                          "salary": {
                            "type": "string"
                          },
                          "description_snippet": {
                            "type": "string"
                          },
                          "published_at": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/stats": {
      "get": {
        "operationId": "getStats",
        "summary": "Obtenir les statistiques du marché du full remote",
        "responses": {
          "200": {
            "description": "Statistiques globales par région, contrat et catégorie"
          }
        }
      }
    }
  }
}