Trouver une opération
Le schéma fait foi pour le sous-ensemble GraphQL pris en charge : racines des opérations, noms, arguments, types d’entrée et valeurs d’enum. Les descriptions fournissent des conseils d’utilisation, et le GraphQL Explorer expose les deux. Pour les fonctionnalités disponibles uniquement en REST, utilisez la référence de l’API REST. Les noms d’opérations suivent les points de terminaison REST qu’ils atteignent, en camelCase.GET /history correspond à postHistory, GET /analytics/social à socialAnalytics, POST /post à createPost.
Les queries lisent, les mutations écrivent
Les queries sont des lectures et des validations qui ne modifient rien de notre côté. Les mutations publient ou modifient un état, lancent un traitement ou envoient un e-mail. Ni le verbe HTTP REST ni le coût d’un appel ne déterminent la racine :validatePostvérifie une publication sans la publier.validateMediavérifie qu’une URL de média est accessible.generatePostest une query car rien ne change de notre côté. Elle compte tout de même comme un appel API et renvoie un texte différent à chaque fois ; assurez-vous donc qu’un cache client ou un refetch automatique ne la répète pas à votre insu.mediaUploadUrlest une mutation car elle crée une URL de téléversement pour votre compte.linkAnalyticsest une mutation car elle peut demander un rapport envoyé par e-mail.userBatchest une mutation car elle lance une tâche d’export.
Créer une publication
createPost prend un seul argument input, de sorte que la publication entière est un seul objet :
Types d’arguments
La plupart des arguments sont des chaînes, des nombres et des booléens ordinaires. Trois cas méritent d’être connus.Enums
De nombreux arguments de type chaîne dont l’ensemble de valeurs prises en charge est fermé sont des enums GraphQL, écrits sans guillemets et en majuscules :"instagram". Le serveur associe chaque enum accepté à la valeur exacte attendue par le contrôleur REST sous-jacent, souvent (mais pas toujours) une chaîne en minuscules. Un enum invalide est rejeté lors de la validation GraphQL avant l’exécution de l’opération ; une faute de frappe ne vous coûte donc rien.
Certains arguments partagent un nom entre plusieurs opérations mais acceptent des valeurs différentes, car les points de terminaison diffèrent réellement. reviews(platform:) n’accepte que GMB et FACEBOOK, car ce sont les seuls réseaux proposant des avis. L’autocomplétion de votre client affichera l’ensemble correct pour chaque opération.
Le scalaire JSON
Quelques arguments sont typésJSON plutôt qu’avec un type spécifique. C’est le cas lorsqu’une valeur peut légitimement avoir plusieurs structures et qu’aucun type GraphQL unique ne pourrait la décrire fidèlement :
explainError(code:)accepte215ou“215”, car les clients conservent les codes d’erreur sous les deux formes.createPost(input:)utilise JSON pour des champs tels quepostetmediaUrls, qui peuvent être des valeurs partagées ou des objets par plateforme.createAutomation(triggers:, actions:)prennent des tableaux dont les champs dépendent dutypede chaque entrée.boostFacebookPost(interests:)accepte les identifiants de centres d’intérêt Meta sous forme de chaînes ou de nombres.
JSON n’est pas une échappatoire : le resolver le valide avant l’envoi, de sorte qu’une valeur invalide renvoie une erreur de validation et ne consomme aucun appel API.
Arguments facultatifs et valeurs null
Pour les arguments facultatifs et les champs facultatifs des objets d’entrée, unnull explicite est traité comme une omission. Les éléments null au sein des listes sont conservés lorsque le type de liste les autorise.
Lire les réponses
La plupart des opérations renvoient un scalaireJSON contenant l’enveloppe de réponse REST complète ; sélectionnez donc le champ racine sans sous-champs. createPost renvoie actuellement un PostResult typé ; sélectionnez donc ses champs :
PostResult incluent également raw: JSON!, qui contient la réponse REST complète et non modifiée :
raw est permanent et existe pour qu’un nouveau champ apparaissant dans la réponse REST ne soit jamais inaccessible depuis GraphQL pendant que nous rattrapons son typage. Si vous avez besoin de quelque chose que les champs typés n’exposent pas, demandez raw.
Téléverser des médias
Les octets des médias ne peuvent pas transiter par une requête GraphQL. Une requête GraphQL est un document JSON unique soumis à une limite de 64 Ko ; il n’existe donc aucun champ acceptant un fichier, et encoder une image en base64 dans la query dépasserait cette limite pour tout ce qui est plus grand qu’une miniature. La méthode prise en charge évite entièrement le problème, et elle est de toute façon plus rapide qu’un téléversement via une API, car vos octets vont directement vers le stockage :-
Demandez une URL de téléversement :
-
Lisez
data.mediaUploadUrl.uploadUrl,accessUrletcontentTypedans le JSON renvoyé. -
Envoyez votre fichier via
PUTdirectement versuploadUrl, et non vers l’API Ayrshare, en définissant l’en-têteContent-Typede la requête sur lecontentTyperenvoyé. -
Une fois le téléversement réussi, transmettez
accessUrldanscreatePost.input.mediaUrls:
uploadUrl comme un identifiant d’écriture à courte durée de vie et ne le journalisez ni ne l’exposez. accessUrl est l’URL du média utilisée lors de la création de la publication.
Vous pouvez aussi continuer à utiliser les points de terminaison REST de téléversement et référencer les URL obtenues depuis GraphQL. Les deux interfaces partagent la même médiathèque.
À lire ensuite
- Erreurs : codes de statut HTTP, structure des erreurs et succès partiel.
- Limites et facturation : plafonds de taille des requêtes et mode de décompte des requêtes.