Attention : cette API est dépréciée, utilisez maintenant l'API OAuth : http://skyrock.com/developer/
l'API XML-RPC ne sera plus disponible au 1er janvier 2012.

  1. API XML-RPC
    1. Pour les partenaires
    2. Pour les membres de skyrock et développeurs tiers
    3. Changelog
    4. API supportées
    5. Sessions
      1. login(string appkey, string username, string password)
      2. logout(string sessionkey)
    6. API Blogger
      1. blogger.getUserInfo(string appkey, string username, string password)
      2. blogger.getUsersBlogs(string appkey, string username, string password)
      3. blogger.getPost(string appkey, string postid, string username, string ?
      4. blogger.getRecentPosts(string appkey, string blogid, string username, ?
      5. blogger.newPost(string appkey, string blogid, string username, string ?
      6. blogger.editPost(string appkey, string postid, string username, string ?
      7. blogger.deletePost(string appkey, string postid, string username, string ?
    7. API metaWeblog
      1. metaWeblog.newPost (string blogid, string username, string password, ?
      2. metaWeblog.editPost (string postid, string username, string password, ?
      3. metaWeblog.newMediaObject (string blogid, string username, string ?
    8. API Skyrock
      1. skyrock.getUserInfos(string appkey, string username, string password, int ?
      2. skyrock.listUserFriends(string appkey, string username)
      3. skyrock.setBlogConfig(string appkey, string username, string password, ?
      4. skyrock.getBlogConfig(string appkey, string username, string password)
      5. skyrock.listBlogSkins(string appkey, string username, string password)
      6. skyrock.getPostMedias (string appkey, string username, string password, ?
      7. skyrock.getUserEvents(string appkey, string username, string password, ?
      8. skyrock.getMessages(string appkey, string username, string password)
      9. skyrock.getMessagesFromTimestamp(string appkey, string username, string ?
      10. skyrock.getMessage(string appkey, string username, string password, int ?
      11. skyrock.acceptFriendRequest(string appkey, string username, string ?
      12. skyrock.denyFriendRequest(string appkey, string username, string password, ?
      13. skyrock.getMood(string appkey, string username, string password)
      14. skyrock.setMood(string appkey, string username, string password, string ?
      15. skyrock.addPhotoProfile(string appkey, string username, string password, ?
      16. skyrock.getPhotosProfile(string appkey, string username, string password)
      17. skyrock.getLastVisitors(string appkey, string username, string password)
      18. skyrock.getGifts(string appkey, string username, string password)
      19. skyrock.getFriendsNewStatuses(string appkey, string username, string ?
    9. API Movable Type
    10. Erreurs retournées
      1. 100 - Erreur de protocole
      2. 101 - Erreur inconnue / autre erreur
      3. 700 - Clé d'application invalide ou non fournie
      4. 701 - L'application n'a pas accès à cette fonction
      5. 702 - Limite atteinte
      6. 703 - Session invalide
      7. 800 - Login invalide
      8. 801 - L'utilisateur n'a pas de blog
      9. 802 - Le blog de l'utilisateur n'est pas un blog music
      10. 803 - Cette propriété est inconnue
      11. 804 - L'utilisateur n'a pas de profil
      12. 805 - Nombre maximum de photos profil atteint
      13. 900 - L'article demandé n'existe pas
      14. 901 - Type de média non supporté
      15. 902 - Le destinataire du message est invalide
      16. 903 - Il n'est pas possible de contacter cet utilisateur

API XML-RPC

L'API de Skyrock.com permet de contrôler la plupart des fonctions d'un blog ou d'un profil. Cette documentation, destinée aux développeurs, se veux la plus exhaustive possible. Pour contacter les développeurs de cette API (problème, question, etc.) envoyez un mail à api arobas skyrock point com ou rendez-vous sur http://devteam.skyrock.com/

L'API de Skyrock.com peut fonctionner de deux manières différentes, selon votre rôle.

Pour les partenaires

Si vous êtes partenaire de Skyrock, vous avez obtenu une clé d'API (secrète) qui vous permet d'accéder à tous les comptes de nos utilisateurs, il suffit de leur demander leur vrais pseudo et mot de passe Skyrock. Cependant il vous faudra spécifier votre clé d'API à chaque requête. Pour cela soit vous pouvez spécifier la clé dans les arguments des méthodes qui le permettent (méthodes blogger et skyrock), soit vous devrez passer la clé dans l'URL de l'API : http://www.skyrock.com/api/xmlrpc.php?appkey=MaCleSecrete

Pour les membres de skyrock et développeurs tiers

Si vous n'êtes pas partenaire de Skyrock, vous devrez utiliser notre API en mode utilisateur, où le pseudo et le mot de passe sont différents des vrais pseudos et mots de passes du compte Skyrock.

L'utilisateur peut obtenir ces informations de connexion à l'adresse http://www.skyrock.com/m/account/api.php

Dans cette utilisation, vous pouvez spécifier n'importe quelle clé d'API dans les méthodes qui en demandent une (par exemple "bloublou" me semble un très bon choix).

Vous pouvez utiliser les sessions (voir plus bas) pour ne pas renvoyer le pseudo et mot de passe à chaque requête.

Changelog

API supportées

Nous supportons les API Blogger, metaWeblog, movableType et quelques fonctions custom. Il est fortement conseillé d'utiliser de préférence l'API metaWeblog ou blogger.

L'URL de l'API est toujours http://www.skyrock.com/api/xmlrpc.php

Sessions

Afin de libérer un peu nos serveurs, et afin de ne pas renvoyer le login / mot de passe de l'utilisateur à chaque fois, il vous est possible d'utiliser un système de sessions. Pour cela vous devez utiliser la méthode login qui vous renverra une clé API temporaire (une clé de session en réalité, qui sera du genre "S.(HASH_MD5)"). Ainsi dans les requêtes suivantes vous pourrez renvoyer cette clé en tant que clé d'API, et envoyez un string vide pour login et password quand ils sont demandés dans les autres méthodes. Cela fonctionne autant pour les partenaires que les non-partenaires. Si vous êtes partenaire envoyez votre clé d'API secrète en premier argument de la méthode login, comme pour n'importe quelle méthode, sinon envoyez une chaîne vide puis le pseudo précédé d'un signe dièse en second argument, comme expliqué ci-dessus. Une fois que vous avez terminé vos requêtes vous pouvez déconnecter l'utilisateur avec la méthode logout.

login(string appkey, string username, string password)

Connecte l'utilisateur indiqué à l'api.

Paramètres : string appkey, string username, string password.

Renvoie : en cas de succès un string contenant une clé de session (clé d'API temporaire), en cas d'échec à la connexion une erreur XML/RPC.

logout(string sessionkey)

Déconnecte l'utilisateur associé à cette clé de session.

Renvoie : true.

API Blogger

Spécificités :

blogger.getUserInfo(string appkey, string username, string password)

Renvoie un tableau contenant userid (correspond à l'ID utilisateur/blog), firstname (vide), lastname (vide), nickname (pseudo), email (vide), et url (adresse du blog).

Paramètres : String appkey, String username, String password.

Retourne : En cas de succès, un struct contenant String userid, String firstname, String lastname, String nickname, String email, String url ; sinon une erreur XML/RPC.

blogger.getUsersBlogs(string appkey, string username, string password)

Renvoie la liste des blogs de l'utilisateur dans un tableau (blogId, blogName, url). Sur Skyrock, ça sera toujours un seul blog.

Paramètres : String appkey, String username, String password.

Retourne : En cas de succès, un tableau de structs contenant String url, String blogid, String blogName ; sinon une erreur XML/RPC.

blogger.getPost(string appkey, string postid, string username, string password)

Renvoie un billet donné (déterminé par postid)

Paramètres : String appkey, String postid, String username, String password.

Retourne : En cas de succès, struct contenant String userid, ISO.8601 dateCreated, String content (format brut, BBCode); sinon une erreur XML/RPC

blogger.getRecentPosts(string appkey, string blogid, string username, string password, int numberOfPosts)

Renvoie un tableau des 20 derniers posts avec dateCreated (au format ISO 8601), postid, userid, et content (formatté, en HTML).

Paramètres : String appkey, String blogid (ignoré), String username, String password, int numberOfPosts (maxi. 50)

Retourne: En cas de succès, un tableau de structs contenant ISO.8601 dateCreated, String userid, String postid, String content ; sinon une erreur XML/PRC.

blogger.newPost(string appkey, string blogid, string username, string password, string content, int publish)

Paramètres : String appkey, String blogid (ignoré), String username, String password, String content, int publish.

Retourne : En cas de succès, String postid, l'id du nouvel article ; en cas d'erreur, une erreur XML/RPC.

Content doit être en BBcode. Le HTML est supprimé, sauf les balises a, b, i, em, et strong qui sont transformées en BBCode. Les br sont transformés en retours à la ligne. Si content contient un embed de vidéo dailymotion ou une URL de vidéo youtube/veoh/googlevideo, cette vidéo sera associée à l'article automatiquement. Il est possible de mettre {skyrock_user_id}, {skyrock_user_name} ou {skyrock_article_id} comme tags dans le texte, qui seront remplacés par leurs équivalents.

Publish doit être 0 pour article hors ligne ou 1 pour en ligne.

Cette méthode ne permet pas de donner un titre à l'article, pour mettre un titre à l'article, utilisez metaWeblog.newPost.

blogger.editPost(string appkey, string postid, string username, string password, string content, int publish)

Modifier un article.

Paramètres : String appkey, String postid, String username, String password, String content, int publish.

Retourne : En cas de succès, valeur booléenne vraie, sinon une erreur XML/RPC.

Content doit être en BBcode. Le HTML est supprimé, sauf les balises a, b, i, em, et strong qui sont transformées en BBCode. Les br sont transformés en retours à la ligne. Il est possible de mettre {skyrock_user_id}, {skyrock_user_name} ou {skyrock_article_id} comme tags dans le texte, qui seront remplacés par leurs équivalents.

Publish doit être 0 pour article hors ligne ou 1 pour en ligne.

Cette méthode ne permet pas de donner un titre à l'article, pour mettre un titre à l'article, utilisez metaWeblog.editPost.

blogger.deletePost(string appkey, string postid, string username, string password, int publish)

Supprime un article.

Paramètres : String appkey, String postid, String username, String password, int publish (ignoré)

Retourne : En cas de succès, valeur booléenne vraie, sinon une erreur XML/RPC.

API metaWeblog

Si vous êtes un partenaire Skyrock, il faut spécifier la clé de l'application dans l'URL de l'API pour toutes les requêtes. Exemple : http://www.skyrock.com/api/xmlrpc.php?appkey=ABCD

metaWeblog.newPost (string blogid, string username, string password, struct content, boolean publish)

Création d'un nouvel article.

Paramètres : String blogid (ignoré), String username, String password, struct content, boolean publish.

Retourne : En cas de succès, String postid, l'id du nouveau billet ; en cas d'erreur, une erreur XML/RPC.

Le struct content peut contenir les valeurs courantes suivantes :

Description doit être en BBcode. Le HTML est supprimé, sauf les balises <a>, <b>, <i>, <em>, et <strong> qui sont transformées en BBCode. Les <br /> sont transformés en retours à la ligne. Il est possible de mettre {skyrock_user_id}, {skyrock_user_name} ou {skyrock_article_id} comme tags dans le texte, qui seront remplacés par leurs équivalents.

metaWeblog.editPost (string postid, string username, string password, struct content, boolean publish)

Edition d'un article.

Paramètres : String postid, String username, String password, struct content, boolean publish.

Retourne : En cas de succès, true ; en cas d'erreur, une erreur XML/RPC.

Le struct content peut contenir les valeurs courantes suivantes :

Description doit être en BBcode. Le HTML est supprimé, sauf les balises <a>, <b>, <i>, <em>, et <strong> qui sont transformées en BBCode. Les <br /> sont transformés en retours à la ligne. Il est possible de mettre {skyrock_user_id}, {skyrock_user_name} ou {skyrock_article_id} comme tags dans le texte, qui seront remplacés par leurs équivalents.

metaWeblog.newMediaObject (string blogid, string username, string password, struct content)

Paramètres : string blogid, string username, string password, struct content (type, bits[, postid][, align]).

Retourne : un struct contenant url qui est l'url de l'article modifié.

Codes erreur possibles : 901 (média non supporté), 101 (erreur dans l'upload de l'image, notamment si la taille demandée est invalide), 100 (fichier trop gros), 900 (article demandé introuvable ou stockage des médias indisponible).

Sur skyrock, les médias sont obligatoirement associés à un article. Il faut donc passer l'id de l'article soit dans blogid, soit dans le struct.

Le struct doit contenir donc :

Cette méthode permet d'ajouter :

API Skyrock

Si vous êtes un partenaire Skyrock, il faut spécifier la clé de l'application dans le premier paramètre de chaque méthode.

skyrock.getUserInfos(string appkey, string username, string password, int getBlogInfos)

Renvoie les informations relatives à un utilisateur (idem que blogger.getUserInfo + nb_friends + nb_friends_requests + nb_messages). Si getBlogInfos est à 1, les infos du blog seront également renvoyées (nb_favoris, nb_fans, nb_articles, nb_articles_offline, nb_comments, nb_unread_comments, nb_stats).

skyrock.listUserFriends(string appkey, string username)

Renvoie la liste des ami-e-s d'un utilisateur (limité à 100), avec les meilleur-e-s ami-e-s en premier, sous forme d'un struct composé d'un struct pour chaque ami, composé comme ceci :

skyrock.setBlogConfig(string appkey, string username, string password, struct config)

Modifier la configuration du blog d'un utilisateur, config doit contenir un tableau des données à modifier. Les données modifiables dans le struct config sont les suivantes :

Renvoie : true en cas de succès.

skyrock.getBlogConfig(string appkey, string username, string password)

Renvoie la configuration actuelle du blog sous la forme d'un struct avec ces données-ci (se référer à skyrock.setBlogConfig pour une explication plus détaillée de chaque donnée) :

skyrock.listBlogSkins(string appkey, string username, string password)

Renvoie la liste des habillages disponibles pour les blogs Skyrock. La liste est classée par type d'habillage de cette manière :

classic =>
  1 => Dark
  2 => Grey blue
  ...
new =>
  101 => Beach
  102 => Chic
  ...
perso =>
  240 => Perso
  ...

Pour obtenir une image miniature de l'habillage, utilisez l'URL http://www.skyrock.com/img/templates/thumbs/[ID].jpg en remplaçant [ID] par le numéro de l'habillage.

skyrock.getPostMedias (string appkey, string username, string password, string postid)

Renvoie la liste des médias associés à un article.

Retourne : un struct contenant lui-même un struct par média (en général il n'y a qu'un seul média par article, sauf les articles music avec un morceau mp3 et une image);

Trois types de struct médias sont possibles : image, music, et embed (pour les vidéos et widgets externes). On détermine le genre de média par le champ 'type' dans le struct du média.

Struct retourné pour les images :

Struct retourné pour les embed :

Struct retourné pour les articles music :

skyrock.getUserEvents(string appkey, string username, string password, string locale)

Renvoie la liste des derniers événements associés à un utilisateur, sous la forme d'un struct composé d'un struct pour chaque événement :

Le paramètre locale permet de spécifier la locale à utiliser pour la traduction des descriptions d'événements ("de_DE" pour l'allemand par exemple).

skyrock.getMessages(string appkey, string username, string password)

Renvoie la liste des 15 derniers messages reçus par un utilisateur, classé du plus récent ou plus ancien, sous la forme d'un struct composé d'un struct pour chaque message :

skyrock.getMessagesFromTimestamp(string appkey, string username, string password, int timestamp)

Renvoie la liste des messages reçus par un utilisateur depuis un timestamp unix donné, dans la limite de 50 messages. Les messages sont classés du plus ancien au plus récent, et renvoyés sous la forme d'un struct composé d'un struct pour chaque message:

skyrock.getMessage(string appkey, string username, string password, int message_id)

Renvoie le message identifié par le paramètre message_id sous la forme d'un struct composé des champs suivants :

skyrock.acceptFriendRequest(string appkey, string username, string password, int user_id)

Permet d'accepter l'invitation à être ami envoyée par l'utilisateur identifié par le paramètre user_id.

Renvoie true (1) en cas de succès, ou false (0) si l'utilisateur spécifié n'avait pas envoyé d'invitation.

skyrock.denyFriendRequest(string appkey, string username, string password, int user_id)

Permet de refuser l'invitation à être ami envoyée par l'utilisateur identifié par le paramètre user_id.

Renvoie true (1) en cas de succès, ou false (0) si l'utilisateur spécifié n'avait pas envoyé d'invitation.

skyrock.getMood(string appkey, string username, string password)

Renvoie le message d'actu courant d'un utilisateur sous la forme d'un struct composé des champs :

skyrock.setMood(string appkey, string username, string password, string message)

Met à jour le message d'actu d'un utilisateur avec le texte fourni dans le paramètre message.

Renvoie true (1) en cas de succès.

skyrock.addPhotoProfile(string appkey, string username, string password, string description, int main, struct image)

Cette méthode permet d'ajouter une photo au profil de l'utilisateur. Chaque photo peut être accompagnée d'un texte de description, d'une longueur max de 60 caractères. Pour indiquer que la photo ajoutée doit devenir la photo principale du profil, le paramètre 'main' doit avoir pour valeur 1, sinon sa valeur doit être 0. Attention, le nombre maximum de photos par profil est limité à 24.

Le struct image doit contenir:

Les formats d'images supportés sont: JPEG, PNG, GIF. Le poids max est de 1 Mo.

Codes erreur possibles : 901 (média non supporté), 804 (l'utilisateur n'a pas de profil), 805 (Nombre maximum de photos atteint), 101 (erreur dans l'upload de l'image, notamment si la taille demandée est invalide), 100 (fichier trop gros)

Valeur de retour: La méthode renvoie true (1) en cas de succès.

skyrock.getPhotosProfile(string appkey, string username, string password)

Cette méthode permet d'obtenir la liste des photos du profil, avec leurs URL.

Valeur de retour: Un struct contenant lui même un struct pour chaque photo. Chaque struct contient les clés suivantes:

Codes erreur possibles: 804 (l'utilisateur n'a pas de profil)

skyrock.getLastVisitors(string appkey, string username, string password)

Renvoie la liste des 20 derniers utilisateurs de Skyrock ayant visité le profil.

Les données sont renvoyées sous la forme d'un struct lui même composé d'un struct par visiteur, contenant les informations suivantes:

Codes erreur possibles: 804 (l'utilisateur n'a pas de profil)

skyrock.getGifts(string appkey, string username, string password)

Cette méthode renvoie la liste des 30 derniers cadeaux reçus par l'utilisateur.

Les données sont renvoyées sous la forme d'un struct, lui même composé d'un struct par cadeau, composé des informations suivantes:

skyrock.getFriendsNewStatuses(string appkey, string username, string password)

Cette méthode retourne la liste des 50 derniers statuts ("actus" sur Skyrock) modifées par les amis de l'utilisateur, de la mise à jour la plus récente à la plus ancienne.

Les données sont renvoyées sous la forme d'un struct lui même composé d'un struct pour chaque mise à jour d'actu, avec les informations suivantes:

API Movable Type

Les méthodes getCategoryList, getPostCategories, setPostCategories ne renvoient que true ou une valeur vide et n'ont aucun effet, les blogs ne gérant pas de catégories.

Erreurs retournées

Le numéro correspond au faultCode renvoyé. Merci d'utiliser les codes d'erreur en priorité sur les messages d'erreur pour reconnaître un problème dans votre code.

100 - Erreur de protocole

Voir le message d'erreur pour plus de précisions.

101 - Erreur inconnue / autre erreur

Voir le message pour plus de précisions.

700 - Clé d'application invalide ou non fournie

Si vous rencontrez cette erreur alors que vous essayez d'utiliser l'API en mode "membre", vérifiez que vous préfixez bien le pseudo que vous envoyez du caractère "#".

701 - L'application n'a pas accès à cette fonction

Votre clé d'application ne vous donne pas le droit d'utiliser cette fonction.

702 - Limite atteinte

Contre les abus il existe deux type de limites qui sont valables chacun pour 24 à 36h :

Ces limites sont relatives au compte skynaute associé à la requête, elles ne sont pas relatives à la clé d'API.

703 - Session invalide

La session donnée en clé n'est pas valide ou a expiré.

800 - Login invalide

Le pseudo ou le mot de passe que vous avez fournis sont incorrects, cet utilisateur n'a pas un compte validé, ou cet utilisateur n'existe pas.

801 - L'utilisateur n'a pas de blog

Renvoyé uniquement par les fonctions qui demandent un accès au blog (API blogger, metaweblog, etc.)

802 - Le blog de l'utilisateur n'est pas un blog music

Renvoyé pour l'appel à une fonction faisant appel aux spécificités music d'un blog (ajout de morceau mp3).

803 - Cette propriété est inconnue

Si vous essayez dans skyrock.setBlogConfig de modifier une propriété qui n'est pas dans la liste définie dans cette documentation.

804 - L'utilisateur n'a pas de profil

Renvoyé uniquement par les fonctions qui demandent un accès au profil de l'utilisateur

805 - Nombre maximum de photos profil atteint

Renvoyé par la méthode d'ajout de photo au profil, skyrock.addPhotoProfile()

900 - L'article demandé n'existe pas

Pour editPost et getPost, renvoyé si l'ID de l'article ne correspond à aucun article existant pour le blog demandé.

901 - Type de média non supporté

Renvoyé en cas de type de média non supporté dans les fonctions d'association de média à un article.

902 - Le destinataire du message est invalide

Son pseudo n'existe pas, ou un truc du genre.

903 - Il n'est pas possible de contacter cet utilisateur

Le destinataire du message a choisi de ne pas accepter les messages venant de cet expéditeur-ci.