MediaGrade SFTP Server API (1.0.0)

Download OpenAPI specification:

MediaGrade Team: support@mediagrade.com License: Proprietary

API REST pour la gestion des comptes SFTP et des fichiers MediaGrade.

Authentification

Tous les endpoints (sauf /health) nécessitent une authentification via clé API. Deux méthodes sont supportées :

  • Header X-API-Key : X-API-Key: your-api-secret-key
  • Header Authorization : Authorization: Bearer your-api-secret-key

Rate Limiting

Les limites de taux suivantes s'appliquent par clé API :

  • Requêtes générales : 100 requêtes par minute
  • Uploads de fichiers : 10 requêtes par minute
  • Téléchargements : 50 requêtes par minute

En cas de dépassement, une réponse 429 Too Many Requests est retournée avec les headers suivants :

  • X-RateLimit-Limit : Limite totale
  • X-RateLimit-Remaining : Requêtes restantes
  • X-RateLimit-Reset : Timestamp de réinitialisation

Pagination

Les endpoints retournant des listes supportent la pagination via les paramètres de requête :

  • limit : Nombre d'éléments par page (défaut: 50, max: 1000)
  • offset : Nombre d'éléments à ignorer (défaut: 0)

La réponse inclut un objet pagination avec :

  • total : Nombre total d'éléments
  • limit : Limite utilisée
  • offset : Offset utilisé
  • returned : Nombre d'éléments retournés dans cette page

Mécanismes de Retry

En cas d'erreur temporaire (codes 5xx, 429), il est recommandé d'implémenter une stratégie de retry avec backoff exponentiel :

  • Tentatives : Maximum 3 tentatives
  • Délai initial : 1 seconde
  • Backoff : Multiplier par 2 à chaque tentative (1s, 2s, 4s)
  • Codes à retry : 429, 500, 502, 503, 504

Ne pas retry sur les codes 4xx (sauf 429) car ce sont des erreurs client.

Exemple de Retry

async function retryRequest(fn, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fn();
    } catch (error) {
      if (i === maxRetries - 1) throw error;
      if ([429, 500, 502, 503, 504].includes(error.status)) {
        await new Promise(resolve => setTimeout(resolve, Math.pow(2, i) * 1000));
        continue;
      }
      throw error;
    }
  }
}

Health

Vérification de l'état du serveur

Vérifier l'état de santé du serveur

Endpoint de health check, ne nécessite pas d'authentification

Responses

Response samples

Content type
application/json
{
  • "status": "healthy",
  • "timestamp": "2025-09-24T17:27:19.450Z",
  • "version": "1.0.0",
  • "services": {
    }
}

Accounts

Gestion des comptes SFTP

Lister tous les comptes SFTP

Retourne la liste de tous les comptes SFTP. Peut être filtrée par une liste d'account IDs via le paramètre account_ids.

Authorizations:
ApiKeyAuth
query Parameters
account_ids
string
Example: account_ids=123e4567-e89b-12d3-a456-426614174000,987fcdeb-51a2-4d6c-b543-678901234567

Liste d'account IDs séparés par des virgules pour filtrer les résultats

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": [
    ]
}

Créer un compte SFTP

Crée un nouveau compte SFTP pour un compte MediaGrade. Génère automatiquement un username et un mot de passe sécurisé.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
accountId
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89...

UUID du compte MediaGrade

companyName
required
string [ 1 .. 100 ] characters

Nom de l'entreprise

machineName
required
string [ 1 .. 10 ] characters

Nom de la machine SFTP (ex: "fr", "us")

Responses

Request samples

Content type
application/json
{
  • "accountId": "123e4567-e89b-12d3-a456-426614174000",
  • "companyName": "Ma Société",
  • "machineName": "fr"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Obtenir les détails d'un compte

Retourne les informations détaillées d'un compte SFTP spécifique

Authorizations:
ApiKeyAuth
path Parameters
accountId
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89...
Example: 123e4567-e89b-12d3-a456-426614174000

UUID du compte MediaGrade

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Supprimer un compte SFTP

Supprime définitivement un compte SFTP et tous ses fichiers. ⚠️ Attention : Cette opération est irréversible.

Authorizations:
ApiKeyAuth
path Parameters
accountId
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89...
Example: 123e4567-e89b-12d3-a456-426614174000

UUID du compte MediaGrade

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "SFTP account deleted successfully"
}

Mettre à jour le mot de passe

Change le mot de passe SFTP d'un compte. Si aucun mot de passe n'est fourni, un mot de passe sécurisé est généré automatiquement.

Authorizations:
ApiKeyAuth
path Parameters
accountId
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89...
Example: 123e4567-e89b-12d3-a456-426614174000

UUID du compte MediaGrade

Request Body schema: application/json
optional
password
string >= 8 characters

Nouveau mot de passe (optionnel, généré automatiquement si absent)

Responses

Request samples

Content type
application/json
{
  • "password": "NouveauMotDePasse123!"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Mettre à jour le quota de stockage

Modifie la limite de stockage d'un compte. Le nouveau quota doit être supérieur ou égal à l'usage actuel (sauf si force: true).

Authorizations:
ApiKeyAuth
path Parameters
accountId
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89...
Example: 123e4567-e89b-12d3-a456-426614174000

UUID du compte MediaGrade

Request Body schema: application/json
required
quotaBytes
required
integer [ 1073741824 .. 1099511627776 ]

Nouvelle limite en bytes

force
boolean
Default: false

Ignorer la validation d'usage (defaut: false)

Responses

Request samples

Content type
application/json
{
  • "quotaBytes": 21474836480,
  • "force": false
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Activer/Désactiver un compte

Active ou désactive l'accès SFTP d'un compte

Authorizations:
ApiKeyAuth
path Parameters
accountId
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89...
Example: 123e4567-e89b-12d3-a456-426614174000

UUID du compte MediaGrade

Request Body schema: application/json
required
enabled
required
boolean

État souhaité (true = activé, false = désactivé)

Responses

Request samples

Content type
application/json
{
  • "enabled": false
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Files

Gestion des fichiers et répertoires

Lister les fichiers d'un compte

Retourne la liste des fichiers et répertoires d'un compte avec pagination. Supporte le tri par nom, taille, date de création/modification.

Authorizations:
ApiKeyAuth
path Parameters
accountId
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89...
Example: 123e4567-e89b-12d3-a456-426614174000

UUID du compte MediaGrade

query Parameters
path
string
Example: path=/documents

Chemin du répertoire à lister

limit
integer [ 1 .. 1000 ]
Example: limit=50

Nombre maximum de fichiers à retourner

offset
integer >= 0

Décalage pour la pagination

sortBy
string
Example: sortBy=-createdAt

Champ de tri (préfixer par - pour ordre décroissant, + pour croissant). Valeurs possibles : name, size, createdAt, updatedAt

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Uploader des fichiers

Téléverse un ou plusieurs fichiers vers le compte SFTP. Supporte le renommage via le paramètre filenames.

Authorizations:
ApiKeyAuth
path Parameters
accountId
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89...
Example: 123e4567-e89b-12d3-a456-426614174000

UUID du compte MediaGrade

Request Body schema: multipart/form-data
required
files
required
Array of strings <binary> [ items <binary > ]

Fichiers à uploader (max 20 fichiers)

destination
string
Default: "/"

Chemin de destination (defaut: "/")

filenames
string

Noms personnalisés des fichiers (JSON array). Exemple: ["fichier1.pdf", "fichier2.jpg"]

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Télécharger un fichier

Télécharge un fichier individuel. Supporte les requêtes HTTP Range pour le téléchargement partiel.

Authorizations:
ApiKeyAuth
path Parameters
accountId
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89...
Example: 123e4567-e89b-12d3-a456-426614174000

UUID du compte MediaGrade

query Parameters
path
required
string
Example: path=/documents/file.pdf

Chemin du fichier à télécharger

Responses

Response samples

Content type
application/json
{
  • "error": "Bad Request",
  • "message": "Invalid request parameters"
}

Télécharger plusieurs fichiers (ZIP)

Télécharge plusieurs fichiers/dossiers dans une archive ZIP

Authorizations:
ApiKeyAuth
path Parameters
accountId
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89...
Example: 123e4567-e89b-12d3-a456-426614174000

UUID du compte MediaGrade

Request Body schema: application/json
required
paths
required
Array of strings

Liste des chemins de fichiers/dossiers à télécharger

archiveName
string
Default: "download.zip"

Nom de l'archive ZIP (defaut: "download.zip")

Responses

Request samples

Content type
application/json
{
  • "paths": [
    ],
  • "archiveName": "export.zip"
}

Response samples

Content type
application/json
{
  • "error": "Bad Request",
  • "message": "Invalid request parameters"
}

Créer un répertoire

Crée un nouveau répertoire

Authorizations:
ApiKeyAuth
path Parameters
accountId
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89...
Example: 123e4567-e89b-12d3-a456-426614174000

UUID du compte MediaGrade

Request Body schema: application/json
required
path
required
string

Chemin du répertoire à créer

Responses

Request samples

Content type
application/json
{
  • "path": "/nouveau-dossier"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Supprimer des fichiers/dossiers (par lot)

Supprime plusieurs fichiers et/ou dossiers

Authorizations:
ApiKeyAuth
path Parameters
accountId
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89...
Example: 123e4567-e89b-12d3-a456-426614174000

UUID du compte MediaGrade

Request Body schema: application/json
required
paths
required
Array of strings

Liste des chemins à supprimer

Responses

Request samples

Content type
application/json
{
  • "paths": [
    ]
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Renommer/déplacer un élément

Renomme ou déplace un fichier/dossier

Authorizations:
ApiKeyAuth
path Parameters
accountId
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89...
Example: 123e4567-e89b-12d3-a456-426614174000

UUID du compte MediaGrade

Request Body schema: application/json
required
oldPath
required
string

Chemin actuel

newPath
required
string

Nouveau chemin

Responses

Request samples

Content type
application/json
{
  • "oldPath": "/ancien-nom.txt",
  • "newPath": "/nouveau-nom.txt"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Déplacer des éléments (par lot)

Déplace plusieurs fichiers/dossiers vers un répertoire

Authorizations:
ApiKeyAuth
path Parameters
accountId
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89...
Example: 123e4567-e89b-12d3-a456-426614174000

UUID du compte MediaGrade

Request Body schema: application/json
required
paths
required
Array of strings

Liste des chemins à déplacer

destination
required
string

Répertoire de destination

Responses

Request samples

Content type
application/json
{
  • "paths": [
    ],
  • "destination": "/destination"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Copier des éléments (par lot)

Copie plusieurs fichiers/dossiers vers un répertoire

Authorizations:
ApiKeyAuth
path Parameters
accountId
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89...
Example: 123e4567-e89b-12d3-a456-426614174000

UUID du compte MediaGrade

Request Body schema: application/json
required
paths
required
Array of strings

Liste des chemins à copier

destination
required
string

Répertoire de destination

Responses

Request samples

Content type
application/json
{
  • "paths": [
    ],
  • "destination": "/destination"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Rechercher des fichiers

Recherche des fichiers par nom dans un compte

Authorizations:
ApiKeyAuth
path Parameters
accountId
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89...
Example: 123e4567-e89b-12d3-a456-426614174000

UUID du compte MediaGrade

query Parameters
q
required
string
Example: q=document

Terme de recherche

path
string
Example: path=/documents

Répertoire de recherche

type
string
Example: type=file

Type de fichier (file, directory, ou type MIME)

limit
integer [ 1 .. 1000 ]
Example: limit=50

Nombre maximum de résultats

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Quota

Gestion des quotas de stockage

Obtenir les informations de quota

Retourne les informations détaillées de quota pour un compte

Authorizations:
ApiKeyAuth
path Parameters
accountId
required
string^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89...
Example: 123e4567-e89b-12d3-a456-426614174000

UUID du compte MediaGrade

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Obtenir les violations de quota

Retourne l'historique des violations de quota détectées

Authorizations:
ApiKeyAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Effacer l'historique des violations

Vide l'historique des violations de quota

Authorizations:
ApiKeyAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Quota violations log cleared"
}

Statut du moniteur de quota

Vérifie le statut du service de monitoring des quotas

Authorizations:
ApiKeyAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Sync

Synchronisation des fichiers

Statut de synchronisation

Consulte l'état du service de synchronisation automatique des fichiers

Authorizations:
ApiKeyAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Redémarrer la synchronisation

Redémarre le service de surveillance des fichiers SFTP

Authorizations:
ApiKeyAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "File watcher service restarted successfully",
  • "data": {
    }
}

System

Informations système et statistiques

Statistiques serveur

Retourne les statistiques globales du serveur SFTP

Authorizations:
ApiKeyAuth

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}