

# Conexión a Freshsales
<a name="connecting-to-data-freshsales"></a>

Freshsales es un sistema de gestión de las relaciones con los clientes (CRM) intuitivo que permite al personal de ventas dejar de lado las conjeturas. Gracias a las funciones integradas de teléfono y correo electrónico, tareas, citas y notas, los representantes de ventas ya no tienen que alternar entre pestañas para hacer un seguimiento de los clientes potenciales. Puede gestionar mejor los acuerdos gracias a la visualización del embudo de ventas e impulsar el cierre de más acuerdos. Si es usuario de Freshsales, puede conectar AWS Glue a la cuenta de Freshsales. Puede usar Freshsales como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre Freshsales y los servicios de AWS u otras aplicaciones compatibles.

**Topics**
+ [Compatibilidad de AWS Glue con Freshsales](freshsales-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](freshsales-configuring-iam-permissions.md)
+ [Configuración de Freshsales](freshsales-configuring.md)
+ [Configuración de las conexiones de Freshsales](freshsales-configuring-connections.md)
+ [Cómo leer de las entidades de Freshsales](freshsales-reading-from-entities.md)
+ [Opciones de conexión de Freshsales](freshsales-connection-options.md)
+ [Limitaciones de Freshsales](freshsales-connection-limitations.md)

# Compatibilidad de AWS Glue con Freshsales
<a name="freshsales-support"></a>

AWS Glue es compatible con Freshsales de la siguiente manera:

**¿Es compatible como origen?**  
Sí. Puede utilizar los trabajos de ETL de AWS Glue para consultar datos de Salesforce.

**¿Es compatible como destino?**  
No.

**Versiones de la API de Freshsales compatibles**  
Se admiten las siguientes versiones de la API de Freshsales:
+ v1.0

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="freshsales-configuring-iam-permissions"></a>

En el siguiente ejemplo de política se describen los permisos de AWS IAM necesarios para crear y utilizar conexiones. Si va a crear un nuevo rol, cree una política que contenga lo siguiente:

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

****  

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

------

Si no desea utilizar el método anterior, puede utilizar las siguientes políticas de IAM administradas:
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): da acceso a recursos que precisan diversos procesos de AWS Glue para ejecutarse en su nombre. Entre estos recursos se incluyen AWS Glue, Amazon S3, IAM, CloudWatch Logs y Amazon EC2. Si aplica la convención de nomenclatura en los recursos especificados en esta política, los procesos de AWS Glue tienen los permisos necesarios. Normalmente, esta política se asocia a los roles que se especifican a la hora de definir rastreadores, trabajos y puntos de conexión de desarrollo.
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess): otorga acceso total a los recursos de AWS Glue cuando una identidad a la que está asociada la política utiliza la Consola de administración de AWS. Si sigue la convención de nomenclatura para los recursos especificados en esta política, los usuarios dispondrán de todas las funciones de la consola. Esta política se suele adjuntar a los usuarios de la consola AWS Glue.

# Configuración de Freshsales
<a name="freshsales-configuring"></a>

Antes de poder utilizar AWS Glue para transferir datos desde Freshsales, deberá cumplir estos requisitos:

## Requisitos mínimos
<a name="freshsales-configuring-min-requirements"></a>

Los requisitos mínimos son los siguientes:
+ Tener una cuenta de Freshsales.
+ Tener una clave de API de usuario.

Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Freshsales. Para conexiones típicas, no necesita hacer nada más en Freshsales.

# Configuración de las conexiones de Freshsales
<a name="freshsales-configuring-connections"></a>

Freshsales admite la autenticación personalizada.

Para consultar la documentación pública de Freshsales sobre la generación de las claves de API necesarias para la autenticación personalizada, consulte [Autenticación](https://developer.freshsales.io/api/#authentication).

Para configurar una conexión de Freshsales:

1. En AWS Secrets Manager, cree un secreto con los siguientes detalles:

   1. Para la aplicación conectada administrada por el cliente, el secreto debe contener la clave de la API de la aplicación conectada con `apiSecretKey` como clave. El secreto también debe contener otro par de clave y valor con `apiKey` como clave y `token` como valor.

   1. Nota: Debe crear un secreto para las conexiones en AWS Glue.

1. En AWS Glue Glue Studio, cree una conexión en **Conexiones de datos** según los pasos que se indican a continuación:

   1. Al seleccionar un **Origen de datos**, elija Freshsales.

   1. Proporcione la `INSTANCE_URL` de la cuenta de Freshsales a la que se desea conectar.

   1. Seleccione el rol de AWS IAM que AWS Glue pueda asumir y que tenga permisos para las siguientes acciones:

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

****  

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

------

   1. Seleccione el `secretName` que desee usar para esta conexión en AWS Glue para colocar los tokens.

   1. Seleccione las opciones de red si quiere usar su red.

1. Conceda el rol de IAM asociado a su permiso de trabajo de AWS Glue para leer `secretName`.

# Cómo leer de las entidades de Freshsales
<a name="freshsales-reading-from-entities"></a>

**Requisito previo**

Un objeto de Freshsales del que le gustaría leer. Necesitará el nombre del objeto.

**Entidades compatibles como origen:**


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite partición | 
| --- | --- | --- | --- | --- | --- | 
| Cuentas | Sí | Sí | Sí | Sí | Sí | 
| Contactos | Sí | Sí | Sí | Sí | Sí | 

**Ejemplo:**

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

**Detalles de las entidades y campos de Freshsales**:

Freshsales proporciona puntos de conexión para obtener metadatos de forma dinámica para las entidades compatibles. Por lo tanto, la compatibilidad del operador se captura según el tipo de datos.

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

## Consultas de partición
<a name="freshsales-reading-partitioning-queries"></a>

**Partición basada en filtros**:

Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere utilizar la simultaneidad en Spark. Con estos parámetros, la consulta original se dividiría en un número `NUM_PARTITIONS` de subconsultas que las tareas de Spark pueden ejecutar simultáneamente.
+ `PARTITION_FIELD`: el nombre del campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`: un valor de límite inferior **inclusivo** del campo de partición elegido.

  En el campo Datetime, aceptamos el valor en formato ISO.

  Ejemplos de valor válido:

  ```
  "2024-09-30T01:01:01.000Z"
  ```
+ `UPPER_BOUND`: un valor límite superior **exclusivo** del campo de partición elegido.
+ `NUM_PARTITIONS`: el número de particiones.

Ejemplo:

```
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"
     }
```

# Opciones de conexión de Freshsales
<a name="freshsales-connection-options"></a>

Las siguientes son opciones de conexión para Freshsales:
+ `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Freshsales.
+ `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de Rest de Freshsales que desea utilizar.
+ `SELECTED_FIELDS`(lista<Cadena>): predeterminado: empty(SELECT \$1). Se usa para leer. Columnas que desee seleccionar para el objeto.
+ `FILTER_PREDICATE`(cadena): predeterminado: vacío. Se usa para leer. Debe estar en el formato de Spark SQL.
+ `QUERY`(cadena): predeterminado: vacío. Se usa para leer. Consulta completa de Spark SQL.
+ `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta.
+ `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido.
+ `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido.
+ `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer.
+ `INSTANCE_URL`(cadena): se usa para leer. Una URL de instancia de Freshsales válida.

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

Las siguientes son limitaciones o notas correspondientes a Freshsales:
+ En Freshsales, el límite de velocidad de API es de 1000 solicitudes de API por hora por cuenta (consulte [Errores](https://developer.freshsales.io/api/#error). Sin embargo, este límite se puede ampliar con el plan de suscripción Enterprise (consulte la [comparación de planes](https://www.freshworks.com/crm/pricing-compare/)).