Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
J'essaye désespérément de récupérer certaines infos du CRM Sellsy grace à leur API (https://api.sellsy.com/doc/v2/) mais je bloque sur le filtrage des données !
Dans ma requête, j'utilise la clause "With connection" suivante :
WITH CONNECTION (
URL "https://api.sellsy.com/v2/activities/search",
HTTPHEADER "Authorization" "Bearer $(vAuthorization)",
BODY "$(vBody)"
);
vAuthorization, c'est le token que je récupére pour autoriser la connexion, aucun souci.
Et vBody, c'est ca :
Let vBody ='{""filters"":""entities"":[""calendar_event""]}';
Je precise que j'ai utilisé plusieurs modèles pour le vBody
Exemple : '{[""filters"": {""entities"": [""calendar_event""]}]}';
Et malgré ca, le filtre ne fonctionne pas du tout !
Ca ne renvoi pas d'erreur, mais ca ne filtre pas !
J'ai testé dans le requeteur Postman, et ca fonctionne très bien !
En espérant que quelqu'un ai déjà utilisé ce type de connexion !
Merci d'avance !
Bonjour David,
Je suis Nicolas de Sellsy, je ne connais pas tous les prérequis pour utiliser Qlik, par contre si le call fonctionne depuis Postman, avez-vous testé d'exporter la requête dans le language approprié ?
voici un exemple en requête http :
POST /v2/activities/search?direction=asc&limit=25 HTTP/1.1
Host: api.sellsy.com
Content-Type: application/json
Authorization: Bearer codedubearer
Cookie: PHPSESSID=0aq5u34djsb052ko6g4db38sj0
Content-Length: 104
{
"filters": {
"entities": [
"calendar_event"
]
}
}
Si vous le souhaitez, nous pouvons faire une viso rapide à ce sujet afin de vérifier le paramétrage et la structure attendue. ( je vous envois un email direct via Sellsy pour organiser ce point)
Cordialement,
Nicolas
Bonjour,
Merci pour votre réponse, j'ai copié-collé le code du body en provenance de Postman, en ajoutant des doubles quotes tel que demandé par Qlik.
Je ne penses pas que le souci vienne de Sellsy vue que cela fonctionne dans Postman ou dans d'autres outils utilisés par mes collègues.
Il semblerait plutôt que la clause BODY ne soit pas prise en compte par la connection établi par Qlik.
Salut David,
Pas d'erreur du coup ?
Essaye de remplacer les " par chr(34) LET vRequestBody = replace(vRequestBody,'"',chr(34)&chr(34))
Réf: Solved: Re: WITH CONNECTION statement - BODY with Double q... - Qlik Community - 1237635
Belle journée et à très bientôt 😉
Bonjour !
Je reprends le sujet après 1 mois d'absence, pour cause d'arrêt de travail (Mais ca va mieux ! )
Et donc en mettant les doubles quotes, je n'ai pas d'erreur certes, mais le filtre ne s'applique pas du tout !
Et c'est bien pris en compte dans la requete
Et donc, pas d'erreur, mais pas d'application du filtre non plus 😞
Bonjour et bon retour parmi nous !
Le content type est bien en application/json ?
J'ai l'impression qu'il y'a trop de " pour former un JSON valide, d'ailleurs si tu le passes dans un JSONLint celui ci devrait être en erreur/
J'aurai pensé voir "{"filters": {"entities": ["email"]}}", les "" externes étant celle de la commande Qlik et en gras celle du JSON (en gras), et du coup être un chr(34) (et du coup ça passe dans JSONLint)
Peux-tu regarder ?
Pardon, mais je ne sais pas à quel paramètre correspond le content type dans les paramètres de ma connexion Qlik ?
J'utilise une connexion de ce type pour accéder à l'API
Si je mets les doubles Quotes, en effet, le JSONLint me renvoi une erreur !
Mais si je ne les mets pas dans le script, là, c'est l'API qui me renvoi une erreur !
Meme si le contrôle du JSON est ok !
Il s'agit d'un paramètre d'en-tête soit définit sur la connexion soit avec
HTTPHEADER "Content-Type" "application/json"
vBody est bien défini de la sorte:
Let vBody = Replace('{"filters":{"entities":["email"]}}','"',chr(34)&chr(34)); ?
Bonjour,
Alors en effet, je n'utilisais pas ce parametre dans ma connexion.
Voila ma requête actuelle pour obtenir le nombre de ligne :
RestConnectorMasterTable: SQL SELECT "__KEY_root", (SELECT "limit", "count", "total", "offset", "__FK_pagination" FROM "pagination" FK "__FK_pagination") FROM JSON (wrap on) "root" PK "__KEY_root" WITH CONNECTION ( URL "https://api.sellsy.com/v2/activities/search", HTTPHEADER "Authorization" "Bearer $(vAuthorization)", HTTPHEADER "Content-Type" "application/json", BODY "$(vBody)" ); |
avec la création du vBody :
Let vBody = '{"filters":{"due_date":{"start": "2024-10-01T10:00:00Z","end": "2024-10-05T10:00:00Z"}}}';
LET vBody = replace(vBody,'"',chr(34)&chr(34));
Pas d'erreur lors de l'execution de la requête, mais le nombre de ligne renvoyés est toujours de 10 000 !
Ce qui est impossible compte tenu du filtre !
Idem avec votre filtre sur les Emails !
Bon ...
Il s'avère que c'est bien le Content-type qui me pose souci, car si je le désactive dans Postman, le contenu du Body avec les filtres n'est plus pris en compte et je récupère tout !
Par contre, y a du nouveau cotés Qlik !
J'ai modifié la connexion pour y inclure un body et le paramètre "Content-type" et là, ca marche !
Le souci, c'est que avec cette méthode, je récupère trop de ligne, et ca dépasse les 10 000, soit la limite de l'API !!
Il faut donc que je puisse passer un paramètre de période dans mon Filter
Et apparemment, ca ne marche pas dans le WITH CONNECTION !