Discord

Endpoints destinés au bot Discord interne :

  • catalogue des technologies tagables (discord_technologies),
  • accès à la table discord_config (IDs de salons, rôles, etc.),
  • liste des écoles interdites (forbidden_schools),
  • modèles de requêtes d’emploi (job_queries).

Source : src/api/v1/discord.ts. Toutes les requêtes attaquent directement Postgres via deno.land/x/postgres.


Lister les technologies

GET/api/v1/discord/technologiessource ↗

Réponse 200

{
  "success": true,
  "technologies": [
    { "id": 1, "name": "Go" },
    { "id": 2, "name": "Rust" }
  ]
}

Récupérer un champ de configuration

GET/api/v1/discord/:name/configsource ↗

Lit une colonne ciblée dans discord_config. Le nom est validé contre une liste blanche pour empêcher l’injection SQL.

Champs autorisés

channel_inter_promo
forum_channel_id
forum_channel_id_cdi
role_ping_cdi
role_ping_alternance
guild_id
role_p1_2023
role_p2_2023
role_p1_2024
role_help
channel_progress_p1_2022
channel_progress_p1_2023
channel_progress_p2_2023
channel_progress_p1_2024
channel_progress_p1_2025

Réponse 200

{
  "success": true,
  "name": "guild_id",
  "value": 1234567890123456789
}

Erreurs

CodeCause
400name absent ou hors liste blanche
500Erreur Postgres

Exemple

curl $API/api/v1/discord/guild_id/config

Récupérer la configuration complète

GET/api/v1/discord/config/fullsource ↗

Renvoie l’intégralité de la première ligne de discord_config. Les BIGINT sont automatiquement convertis en number pour la sérialisation JSON.

Réponse 200

{
  "success": true,
  "config": {
    "guild_id": 1234567890123456789,
    "forum_channel_id": 9876543210,
    "role_ping_cdi": 555,
    "channel_progress_p1_2024": 777
  }
}

Erreurs

CodeCause
404discord_config est vide
500Erreur Postgres

Lister les écoles interdites

GET/api/v1/discord/forbidden-schoolssource ↗

Réponse 200

{
  "success": true,
  "schools": [
    { "id": 1, "name": "École X" }
  ]
}

Lister les requêtes d’emploi

GET/api/v1/discord/job-queriessource ↗

Renvoie tous les enregistrements de la table job_queries (templates de recherches LinkedIn / Welcome to the Jungle / Indeed utilisés par le bot).

Réponse 200

{
  "success": true,
  "queries": [
    {
      "id": 1,
      "query": "développeur fullstack alternance Rouen",
      "...": "…"
    }
  ]
}