

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Connexion à Freshsales
<a name="connecting-to-data-freshsales"></a>

Freshsales est un CRM intuitif qui aide les commerciaux à éliminer les incertitudes liées aux ventes. Grâce au téléphone, au courrier électronique, aux tâches, aux rendez-vous et aux notes intégrés, les commerciaux n’ont pas à passer d’un onglet à l’autre pour suivre les prospects. Vous pouvez mieux gérer vos transactions grâce à la vue du pipeline et faire en sorte qu’un plus grand nombre de transactions soient conclues. Si vous êtes un utilisateur de Freshsales, vous pouvez vous connecter AWS Glue à votre compte Freshsales. Vous pouvez utiliser Freshsales comme source de données dans vos tâches ETL. Exécutez ces tâches pour transférer les données de Freshsales vers des AWS services ou d'autres applications prises en charge.

**Topics**
+ [AWS Glue support pour Freshsales](freshsales-support.md)
+ [Politiques contenant les opérations API pour la création et l’utilisation des connexions](freshsales-configuring-iam-permissions.md)
+ [Configuration de Freshsales](freshsales-configuring.md)
+ [Configuration de connexions Freshsales](freshsales-configuring-connections.md)
+ [Lecture à partir d’entités Freshsales](freshsales-reading-from-entities.md)
+ [Options de connexion Freshsales](freshsales-connection-options.md)
+ [Restrictions de Freshsales](freshsales-connection-limitations.md)

# AWS Glue support pour Freshsales
<a name="freshsales-support"></a>

AWS Glue soutient Freshsales comme suit :

**Prise en charge en tant que source ?**  
Oui. Vous pouvez utiliser les tâches AWS Glue ETL pour interroger les données de Freshsales.

**Prise en charge en tant que cible ?**  
Non.

**Versions de l’API Freshsales prises en charge**  
Les versions d’API Freshsales suivantes sont prises en charge :
+ v1.0

# Politiques contenant les opérations API pour la création et l’utilisation des connexions
<a name="freshsales-configuring-iam-permissions"></a>

L'exemple de politique suivant décrit les autorisations AWS IAM requises pour créer et utiliser des connexions. Si vous créez un rôle, créez une politique contenant les éléments suivants :

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

Si vous ne voulez pas utiliser la méthode ci-dessus, vous pouvez également utiliser les politiques IAM gérées suivantes :
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole)— Accorde l'accès aux ressources dont AWS Glue les différents processus ont besoin pour s'exécuter en votre nom. Ces ressources incluent AWS Glue Amazon S3, IAM, CloudWatch Logs et Amazon EC2. Si vous suivez la convention de dénomination des ressources spécifiée dans cette politique, AWS Glue les processus disposent des autorisations requises. Cette politique est généralement attachée aux rôles spécifiés lorsque vous définissez les crawlers, les tâches et les points de terminaison de développement.
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess)— Accorde un accès complet aux AWS Glue ressources lorsqu'une identité à laquelle la politique est attachée utilise la console AWS de gestion. Si vous suivez la convention de dénomination pour les ressources spécifiées dans la politique, les utilisateurs bénéficient des capacités totales de la console. Cette politique s'applique généralement aux utilisateurs de la AWS Glue console.

# Configuration de Freshsales
<a name="freshsales-configuring"></a>

Avant de pouvoir AWS Glue transférer des données depuis Freshsales, vous devez répondre aux exigences suivantes :

## Configuration requise
<a name="freshsales-configuring-min-requirements"></a>

Les exigences minimales sont les suivantes :
+ Vous disposez d’un compte Freshsales.
+ Vous disposez d’une clé d’API utilisateur.

Si vous remplissez ces conditions, vous êtes prêt à vous connecter AWS Glue à votre compte Freshsales. Pour les connexions classiques, vous n’avez rien d’autre à faire dans Freshsales.

# Configuration de connexions Freshsales
<a name="freshsales-configuring-connections"></a>

Freshsales prend en charge l’authentification personnalisée.

Pour consulter la documentation publique de Freshsales sur la génération des clés d’API requises pour une authentification personnalisée, consultez [Authentication](https://developer.freshsales.io/api/#authentication).

Pour configurer une connexion Freshsales :

1. Dans AWS Secrets Manager, créez un secret avec les informations suivantes :

   1. Pour l’application connectée gérée par le client, le secret doit contenir la clé d’API de l’application connectée avec `apiSecretKey` comme clé. Le secret doit également contenir une autre paire clé-valeur avec `apiKey` comme clé et `token` comme valeur.

   1. Remarque : vous devez créer un secret pour vos connexions dans AWS Glue.

1. Dans AWS Glue Glue Studio, créez une connexion sous **Data Connections** en suivant les étapes ci-dessous :

   1. Lorsque vous sélectionnez une **source de données**, sélectionnez Freshsales.

   1. Indiquez l’`INSTANCE_URL` du compte Freshsales auquel vous souhaitez vous connecter.

   1. Sélectionnez le rôle AWS IAM qui AWS Glue peut assumer et dispose des autorisations nécessaires pour les actions suivantes :

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1. Sélectionnez celui `secretName` que vous souhaitez utiliser pour cette connexion AWS Glue afin d'y placer les jetons.

   1. Sélectionnez les options réseau si vous souhaitez utiliser votre réseau.

1. Accordez au rôle IAM associé à votre AWS Glue travail l'autorisation de lire`secretName`.

# Lecture à partir d’entités Freshsales
<a name="freshsales-reading-from-entities"></a>

**Prérequis**

Un objet Freshsales à partir duquel vous souhaitez lire. Vous aurez besoin du nom de l’objet.

**Entités prises en charge pour la source** :


| Entité | Peut être filtré | Limit prise en charge | Order by prise en charge | Select prise en charge\$1 | Partitionnement pris en charge | 
| --- | --- | --- | --- | --- | --- | 
| Comptes | Oui | Oui | Oui | Oui | Oui | 
| Contacts | Oui | Oui | Oui | Oui | Oui | 

**Exemple :**

```
freshSales_read = glueContext.create_dynamic_frame.from_options(
     connection_type="freshsales",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "entityName",
         "API_VERSION": "v1.0"
     }
```

**Détails des entités et des champs Freshsales** :

Freshsales fournit des points de terminaison permettant de récupérer les métadonnées de manière dynamique pour les entités prises en charge. Par conséquent, la prise en charge des opérateurs est capturée au niveau du type de données.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/glue/latest/dg/freshsales-reading-from-entities.html)

## Requêtes de partitionnement
<a name="freshsales-reading-partitioning-queries"></a>

**Partitionnement basé sur des filtres** :

Vous pouvez indiquer les options Spark supplémentaires `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` et `NUM_PARTITIONS` si vous souhaitez utiliser la simultanéité dans Spark. Avec ces paramètres, la requête d’origine serait divisée en `NUM_PARTITIONS` nombres de sous-requêtes pouvant être exécutées simultanément par les tâches Spark.
+ `PARTITION_FIELD` : le nom du champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND` : une valeur limite inférieure **inclusive** du champ de partition choisi.

  Pour le champ Datetime, nous acceptons la valeur au format ISO.

  Exemples de valeurs valides :

  ```
  "2024-09-30T01:01:01.000Z"
  ```
+ `UPPER_BOUND` : une valeur limite supérieure **exclusive** du champ de partition choisi.
+ `NUM_PARTITIONS` : le nombre de partitions.

Exemple :

```
freshSales_read = glueContext.create_dynamic_frame.from_options(
     connection_type="freshsales",
     connection_options={
         "connectionName": "connectionName",
         "ENTITY_NAME": "entityName",
         "API_VERSION": "v1",
         "PARTITION_FIELD": "Created_Time"
         "LOWER_BOUND": " 2024-10-15T21:16:25Z"
         "UPPER_BOUND": " 2024-10-20T21:25:50Z"
         "NUM_PARTITIONS": "10"
     }
```

# Options de connexion Freshsales
<a name="freshsales-connection-options"></a>

Les options de connexion pour Freshsales sont les suivantes :
+ `ENTITY_NAME`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Le nom de votre objet dans Freshsales.
+ `API_VERSION`(Chaîne) - (Obligatoire) Utilisé pour la lecture. Version d’API Rest Freshsales que vous souhaitez utiliser.
+ `SELECTED_FIELDS`(Liste<Chaîne>) - Par défaut : vide (SELECT \$1). Utilisé pour la lecture. Colonnes que vous souhaitez sélectionner pour l’objet.
+ `FILTER_PREDICATE`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Doit être au format SQL Spark.
+ `QUERY`(Chaîne) - Par défaut : vide. Utilisé pour la lecture. Requête Spark SQL complète.
+ `PARTITION_FIELD`(Chaîne) - Utilisé pour la lecture. Champ à utiliser pour partitionner la requête.
+ `LOWER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite inférieure inclusive du champ de partition choisi.
+ `UPPER_BOUND`(Chaîne) - Utilisé pour la lecture. Une valeur limite supérieure exclusive du champ de partition choisi.
+ `NUM_PARTITIONS`(Entier) - Par défaut : 1. Utilisé pour la lecture. Nombre de partitions pour la lecture.
+ `INSTANCE_URL`(Chaîne) - Utilisé pour la lecture. Une URL d’instance Freshsales valide.

# Restrictions de Freshsales
<a name="freshsales-connection-limitations"></a>

Les restrictions ou remarques suivantes concernent Freshsales :
+ Dans Freshsales, la limite de débit d’API est de 1 000 demandes d’API par heure et par compte (consultez [Errors](https://developer.freshsales.io/api/#error)). Cependant, cette limite est extensible avec l’abonnement Enterprise (consultez le [comparatif des forfaits](https://www.freshworks.com/crm/pricing-compare/)).