Skip to content

HelloAsso/HaApiV5

Repository files navigation

develop : develop | main : develop

Bibliothèque python facilitant l'usage de l'api Helloasso. Compatible de python3.6 jusqu'à python 3.10

INSTALLATION

pip install helloasso-apiv5

USAGE

api = HaApiV5(
        api_base='api.helloasso.com',
        client_id=XXXXXX,
        client_secret=XXXXXX,
        timeout=60
    )
paramètres info type
api_base url de l’api , exemple: api.helloasso.com str
client_id client_id pour l’authentification str
client_secret client_secret pour l’authentification str
timeout(OPTIONAL) Combien de temps faut-il attendre pour que le serveur envoie les données avant d'abandonner float or int
access_token (OPTIONAL) Le jeton d'accès OAuth s'il existe str
oauth2_token_getter (OPTIONAL) Vous pouvez utiliser les kwargs oauth2_token_getter et oauth2_token_setter sur le client pour utiliser un stockage personnalisé (partage entre instance / switch de tokens). function
oauth2_token_setter (OPTIONAL) Vous pouvez utiliser les kwargs oauth2_token_getter et oauth2_token_setter sur le client pour utiliser un stockage personnalisé (partage entre instance / switch de tokens). function

AUTHENTIFICATION

La documentation complète est disponible ici : https://api.helloasso.com/v5/swagger/ui/index

L'authentification est gérée par le SDK, Il suffit de fournir client_id et client_secret lors de l'instanciation de la classe HaApiV5. Le SDK se charge de gérer les appels pour obtenir des access et refresh tokens ainsi que les éventuels rafraichissements.

USAGE EXEMPLE

Une fois authentifié il est possible d'utiliser l'api de facon simple :

api = ApiV5(
        api_base='api.helloasso.com',
        client_id=XXXXXX,
        client_secret=XXXXXX,
        timeout=60
    )

api.call("url", method="POST", data={...})

Il est également possible d'étendre la classe HaApiV5 pour ajouter vos propres méthodes, La classe AuthorizationApi peut servir d'exemple. (helloasso_api/client/authorization)

Créez une classe contenant vos appels :

class OrganizationApi(object):
    def __init__(self, client):
        self._client = client

    def get_by_slug(self, slug: str) -> dict:
        return self._client.call(f"organizations/{slug}").json()

Puis créez une classe héritant de la classe HaApiV5 et référençant la nouvelle classe :

class MyApi(HaApiV5):
    def __init__(self, *args, **kwargs):
        super(MyApi, self).__init__(*args, **kwargs)
        self.organization = OrganizationApi(self)

api = MyApi(
        api_base='api.helloasso.com',
        client_id=XXXXXX,
        client_secret=XXXXXX,
        timeout=60
)

api.authorization.generate_authorize_request(...)

...

api.organization.get_by_slug("test-asso")

AUTHORIZATION

L'authorization est uniquement utilisée par les partenaires de HelloAsso. Elle permet aux partenaires de récuperer les informations privées d'une association qui lui est lié. Vous ne pourez pas utiliser cette fonctionnalité si vous n'êtes pas partenaire Helloasso.

Pour obtenir des droits sur des ressources protégées il est nécessaire de passer par la mire d'authorisation.

La methode generate_authorize_request génère l'url permettant de récupérer le consentement utilisateur

from apiv5 import ApiV5

api = ApiV5(
        api_base='api.helloasso.com',
        client_id=XXXXXX,
        client_secret=XXXXXX,
        timeout=60
    )

request = api.authorization.generate_authorize_request(redirect_url="https://url.de.callback/callback", state="123")
full_url = request["full_url"]
code_verifier = request["code_verifier"]

Gardez le code_verifier, il permettra plus tard de finaliser le processus d'autorisation.

Dirigez l'utilisateur vers l'url présente dans full_url, il lui sera demandé de valider l'autorisation. Un callback sera alors effectué vers la redirect_url renseignée.

Ce callback contient notamment le code nécessaire à la prochaine étape, récupérez ce code et appelez la methode suivante :

response = api.authorization.exchange_authorization_token(authorization_code, "https://url.de.callback/callback", code_verifier)

exchange_authorization_token renvoie l'access_token permettant d'accèder aux données de l'association. (Voir méthode)

api.set_access_token(response["access_token"])
response = api.call("/v5/users/me/organizations")

Pour plus de détails sur la procédure d'autorisation : https://drive.google.com/file/d/1SmzEDQsiPX6h97otai2L7JmeYvD_F0-r/view

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published