drop elastic

This commit is contained in:
2025-07-11 19:24:30 -03:00
parent 1b710c81f6
commit ef2ba6d114
5 changed files with 55 additions and 58 deletions

View File

@@ -1,17 +1,17 @@
import json
import urllib.parse as parse
from aws_lambda_powertools.event_handler.api_gateway import Router
from elasticsearch import Elasticsearch
from layercake.dynamodb import (
DynamoDBCollection,
DynamoDBPersistenceLayer,
SortKey,
TransactKey,
)
from meilisearch import Client as Meilisearch
import elastic
import meili
from boto3clients import dynamodb_client
from config import ELASTIC_CONN, ENROLLMENT_TABLE, USER_TABLE
from config import ENROLLMENT_TABLE, MEILISEARCH_API_KEY, MEILISEARCH_HOST, USER_TABLE
from middlewares import Tenant, TenantMiddleware
from .cancel import router as cancel
from .enroll import router as enroll
@@ -21,30 +21,52 @@ __all__ = ['slots', 'cancel', 'enroll']
router = Router()
elastic_client = Elasticsearch(**ELASTIC_CONN)
enrollment_layer = DynamoDBPersistenceLayer(ENROLLMENT_TABLE, dynamodb_client)
enrollment_collect = DynamoDBCollection(enrollment_layer)
user_layer = DynamoDBPersistenceLayer(USER_TABLE, dynamodb_client)
user_collect = DynamoDBCollection(user_layer)
meili_client = Meilisearch(MEILISEARCH_HOST, MEILISEARCH_API_KEY)
@router.get('/', compress=True, tags=['Enrollment'])
@router.get(
'/',
compress=True,
tags=['Enrollment'],
middlewares=[
TenantMiddleware(user_layer.collection),
],
)
def get_enrollments():
tenant: Tenant = router.context['tenant']
event = router.current_event
query = event.get_query_string_value('query', '{}')
page_size = event.get_query_string_value('page_size', '25')
query = parse.unquote(event.get_query_string_value('q', ''))
sort = event.get_query_string_value('sort', 'create_date:desc')
page = int(event.get_query_string_value('page', '1'))
hits_per_page = int(event.get_query_string_value('hitsPerPage', '25'))
filter_ = meili.parse(event.get_query_string_value('filter', ''))
return elastic.search( # type: ignore
index=ENROLLMENT_TABLE,
page_size=int(page_size),
query=json.loads(query),
elastic_client=elastic_client,
if tenant.id != '*':
filter_ = [
{
'attr': 'tenant_id',
'op': '=',
'value': tenant.id,
},
] + filter_
return meili_client.index(ENROLLMENT_TABLE).search(
query,
{
'sort': [sort],
'locales': ['pt'],
'page': page,
'hitsPerPage': hits_per_page,
'filter': meili.encode(filter_),
},
)
@router.get('/<id>', compress=True, tags=['Enrollment'])
def get_enrollment(id: str):
return enrollment_collect.get_items(
return enrollment_layer.collection.get_items(
TransactKey(id)
+ SortKey('0')
+ SortKey('started_date')

View File

@@ -2,29 +2,22 @@ from http import HTTPStatus
from aws_lambda_powertools.event_handler import Response, content_types
from aws_lambda_powertools.event_handler.api_gateway import Router
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search
from glom import glom
from layercake.funcs import pick
from meilisearch import Client as Meilisearch
from config import ELASTIC_CONN, USER_TABLE
from config import MEILISEARCH_API_KEY, MEILISEARCH_HOST, USER_TABLE
router = Router()
elastic_client = Elasticsearch(**ELASTIC_CONN)
meili_client = Meilisearch(MEILISEARCH_HOST, MEILISEARCH_API_KEY)
@router.get('/<username>', include_in_schema=False)
def lookup(username: str):
s = Search(using=elastic_client, index=USER_TABLE).query(
'bool',
should=[
{'term': {'email.keyword': username}},
{'term': {'cpf.keyword': username}},
],
minimum_should_match=1,
)
r = meili_client.index(USER_TABLE).search(f'"{username}"')
for hit in s.execute():
return pick(('id', 'name', 'email', 'cognito:sub'), hit.to_dict())
if user := glom(r, 'hits.0', default=None):
return pick(('id', 'name', 'email', 'cognito__sub'), user)
return Response(
content_type=content_types.APPLICATION_JSON,

View File

@@ -109,22 +109,6 @@ if __name__ == '__main__':
for line in tqdm(reader, desc=f'Processing lines in {file}'):
put_item(line, table_name, dynamodb_client) # type: ignore
# Scan DynamoDB tables and index the data into Elasticsearch
# for file in tqdm(jsonl_files, desc='Scanning tables'):
# table_name = file.removesuffix('.jsonl')
# elastic.delete_index(table_name)
# for doc in tqdm(
# scan_table(
# table_name,
# dynamodb_client,
# FilterExpression='sk = :sk',
# ExpressionAttributeValues={':sk': {'S': '0'}},
# ),
# desc=f'Indexing {table_name}',
# ):
# elastic.index_item(id=doc['id'], index=table_name, doc=doc)
# Scan DynamoDB tables and index the data into Meilisearch
for file in tqdm(jsonl_files, desc='Scanning tables'):
table_name = file.removesuffix('.jsonl')
@@ -139,15 +123,12 @@ if __name__ == '__main__':
desc=f'Indexing {table_name}',
):
meili_client.index(table_name).add_documents([doc], serializer=JSONEncoder)
if table_name == 'test-enrollments':
print('a')
print(doc)
meili_client.index('pytest').add_documents([doc], serializer=JSONEncoder)
index = meili_client.index(table_name)
index.update_settings(
{
'sortableAttributes': ['create_date'],
'filterableAttributes': ['metadata__tenant_id'],
'sortableAttributes': ['create_date', 'createDate'],
'filterableAttributes': ['tenant_id', 'status'],
}
)

View File

@@ -103,4 +103,5 @@
{"id": {"S": "N9VpcNSKGaXx3aGeGihqeE"}, "sk": {"S": "0"}, "status": {"S": "ARCHIVED"}, "progress": {"S": "100"}, "score": {"S": "87"}, "user": {"M": {"id": {"S": "af200eb9-8084-4275-a0c2-749f4d1d023f"}, "name": {"S": "Jonas Cabral"}, "email": {"S": "jonas.cabral@unigel.com.br"}, "cpf": {"S": "29181018851"}}}, "course": {"M": {"id": {"S": "83"}, "name": {"S": "NR-20 Inicia\u00e7\u00e3o"}, "cert": {"NULL": true}, "access_period": {"N": "360"}}}, "create_date": {"S": "2022-07-22T14:14:41"}, "update_date": {"S": "2024-03-31T21:02:50.678858-03:00"}}
{"id": {"S": "YREgchZHhYLiYaSKBtT9Fm"}, "sk": {"S": "0"}, "status": {"S": "ARCHIVED"}, "progress": {"S": "100"}, "score": {"S": "87"}, "user": {"M": {"id": {"S": "ff19941a-9471-48de-8fe7-6858e9ce4549"}, "name": {"S": "Jose Alessandro De Souza"}, "email": {"S": "jose.souza@semeq.com"}, "cpf": {"S": "00878884165"}}}, "course": {"M": {"id": {"S": "54"}, "name": {"S": "NR-33 Trabalhadores Autorizados e Vigias em Espa\u00e7o Confinado"}, "cert": {"NULL": true}, "access_period": {"N": "360"}}}, "create_date": {"S": "2019-05-23T10:32:46"}, "update_date": {"S": "2021-05-27T10:09:06"}}
{"id": {"S": "kMKA4jzGnT6GwwXfvqWxW9"}, "sk": {"S": "0"}, "status": {"S": "ARCHIVED"}, "progress": {"S": "100"}, "score": {"S": "88"}, "user": {"M": {"id": {"S": "68278489572"}, "name": {"S": "ALEXSANDRO SANTOS DE OLIVEIRA"}, "email": {"S": "68278489572@users.noreply.betaeducacao.com.br"}, "cpf": {"S": "68278489572"}}}, "course": {"M": {"id": {"S": "40"}, "name": {"S": "Reciclagem em NR-10 B\u00e1sico"}, "cert": {"NULL": true}, "access_period": {"N": "360"}}}, "create_date": {"S": "2022-05-19T08:37:15"}, "update_date": {"S": "2024-05-16T19:19:29.284660-03:00"}}
{"id": {"S": "c6AmTVrLo2fACM93MG866m"}, "sk": {"S": "0"}, "status": {"S": "ARCHIVED"}, "progress": {"S": "100"}, "score": {"S": "100"}, "user": {"M": {"id": {"S": "6093"}, "name": {"S": "Sergio Weinfuter"}, "email": {"S": "sweinfuter@hotmail.com"}, "cpf": {"S": "75326256991"}}}, "course": {"M": {"id": {"S": "62"}, "name": {"S": "NR-12 M\u00e1quinas e Equipamentos"}, "cert": {"NULL": true}, "access_period": {"N": "360"}}}, "create_date": {"S": "2015-05-11T00:00:00"}, "update_date": {"S": "2019-01-16T10:33:32"}}
{"id": {"S": "c6AmTVrLo2fACM93MG866m"}, "sk": {"S": "0"}, "status": {"S": "ARCHIVED"}, "progress": {"S": "100"}, "score": {"S": "100"}, "user": {"M": {"id": {"S": "6093"}, "name": {"S": "Sergio Weinfuter"}, "email": {"S": "sweinfuter@hotmail.com"}, "cpf": {"S": "75326256991"}}}, "course": {"M": {"id": {"S": "62"}, "name": {"S": "NR-12 M\u00e1quinas e Equipamentos"}, "cert": {"NULL": true}, "access_period": {"N": "360"}}}, "create_date": {"S": "2015-05-11T00:00:00"}, "update_date": {"S": "2019-01-16T10:33:32"}}
{"id": {"S": "vacancies#cJtK9SsnJhKPyxESe7g3DG"},"sk": {"S": "QV4sXY3DvSTUMGJ4QqsrwJ#280cdb77-f6b6-4bd3-bbbf-f770de69389c"},"course": {"M": {"id": {"S": "a6775b71-d68a-4263-8ab4-acb3a4f8a8b9"},"name": {"S": "NR-18 PEMT PTA"},"time_in_days": {"N": "365"}}},"create_date": {"S": "2025-04-28T12:04:09.389782-03:00"}}

View File

@@ -1,5 +1,5 @@
{"id": {"S": "apikey"}, "sk": {"S": "MzI1MDQ0NTctZjEzMy00YzAwLTkzNmItNmFhNzEyY2E5ZjQw"}, "tenant": {"M": {"id": {"S": "*"}, "name": {"S": "default"}}}, "user": {"M": {"id": {"S": "5OxmMjL-ujoR5IMGegQz"}, "name": {"S": "Sérgio R Siqueira"}, "email": {"S": "sergio@somosbeta.com.br"}}}}
{"updateDate": {"S": "2024-02-08T16:42:33.776409-03:00"}, "createDate": {"S": "2019-03-25T00:00:00-03:00"}, "email_verified": {"BOOL": true}, "cognito:sub": {"S": "58efed8d-d276-41a8-8502-4ab8b5a6415e"}, "cpf": {"S": "07879819908"}, "sk": {"S": "0"}, "email": {"S": "sergio@somosbeta.com.br"}, "id": {"S": "5OxmMjL-ujoR5IMGegQz"}, "name": {"S": "S\u00e9rgio Rafael de Siqueira"}, "lastLogin": {"S": "2024-02-08T20:53:45.818126-03:00"}, "orgs": {"L": [{"S": "cJtK9SsnJhKPyxESe7g3DG"}, {"S": "edp8njvgQuzNkLx2ySNfAD"}, {"S": "8TVSi5oACLxTiT8ycKPmaQ"}]}}
{"updateDate": {"S": "2024-02-08T16:42:33.776409-03:00"}, "createDate": {"S": "2019-03-25T00:00:00-03:00"}, "email_verified": {"BOOL": true}, "cognito:sub": {"S": "58efed8d-d276-41a8-8502-4ab8b5a6415e"}, "cpf": {"S": "07879819908"}, "sk": {"S": "0"}, "email": {"S": "sergio@somosbeta.com.br"}, "id": {"S": "5OxmMjL-ujoR5IMGegQz"}, "name": {"S": "S\u00e9rgio Rafael de Siqueira"}, "lastLogin": {"S": "2024-02-08T20:53:45.818126-03:00"}, "tenant_id": {"L": [{"S": "cJtK9SsnJhKPyxESe7g3DG"}, {"S": "edp8njvgQuzNkLx2ySNfAD"}, {"S": "8TVSi5oACLxTiT8ycKPmaQ"}]}}
{"sk": {"S": "acl#admin"}, "id": {"S": "5OxmMjL-ujoR5IMGegQz"}, "create_date": {"S": "2022-06-13T15:00:24.309410-03:00"}}
{"email_verified": {"BOOL": true}, "update_date": {"S": "2024-02-08T16:42:33.776409-03:00"}, "create_date": {"S": "2024-01-19T22:53:43.135080-03:00"}, "deliverability": {"S": "DELIVERABLE"}, "sk": {"S": "emails#osergiosiqueira@gmail.com"}, "id": {"S": "5OxmMjL-ujoR5IMGegQz"}, "primaryEmail": {"BOOL": false}, "mx_record_exists": {"BOOL": true}}
{"email_verified": {"BOOL": true}, "update_date": {"S": "2024-02-08T16:42:33.776409-03:00"}, "create_date": {"S": "2019-03-25T00:00:00-03:00"}, "sk": {"S": "emails#sergio@somosbeta.com.br"}, "id": {"S": "5OxmMjL-ujoR5IMGegQz"}, "email_primary": {"BOOL": true}, "mx_record_exists": {"BOOL": true}, "update_date": {"S": "2023-11-09T12:13:04.308986-03:00"}}
@@ -29,7 +29,7 @@
{"sk": {"S": "admin#hT2CD9lDeeqlOXLjR4mG"}, "create_date": {"S": "2023-09-22T18:27:30.344151-03:00"}, "id": {"S": "cJtK9SsnJhKPyxESe7g3DG"}, "email": {"S": "alessandraw@unc.br"}, "name": {"S": "Alessandra Wagner Jusviacky"}}
{"emailVerified": {"BOOL": true}, "createDate": {"S": "2023-09-22T18:27:30.193484-03:00"}, "sk": {"S": "emails#org+15608435000190@users.noreply.betaeducacao.com.br"}, "id": {"S": "cJtK9SsnJhKPyxESe7g3DG"}, "primaryEmail": {"BOOL": true}, "emailDeliverable": {"BOOL": true}}
{"expiry_date": {"S": "2024-07-08T17:38:29.159112-03:00"}, "user": {"M": {"name": {"S": "S\u00e9rgio R Siqueira"}, "email": {"S": "sergio@somosbeta.com.br"}}}, "ttl": {"N": "1720471109"}, "sk": {"S": "schedules#follow_up#5OxmMjL-ujoR5IMGegQz"}, "id": {"S": "cJtK9SsnJhKPyxESe7g3DG"}, "create_date": {"S": "2024-01-10T17:38:29.159148-03:00"}}
{"updateDate": {"S": "2022-08-09T09:44:39.386636-03:00"}, "createDate": {"S": "2022-06-13T10:20:00.528685-03:00"}, "status": {"S": "CONFIRMED"}, "cpf": {"S": "08679004901"}, "sk": {"S": "0"}, "email": {"S": "tiago@somosbeta.com.br"}, "id": {"S": "9a41e867-55e1-4573-bd27-7b5d1d1bcfde"}, "mobileNumber": {"S": ""}, "name": {"S": "Tiago Maciel"}, "lastLogin": {"S": "2024-02-07T11:14:34.516596-03:00"}, "orgs": {"L": [{"S": "cJtK9SsnJhKPyxESe7g3DG"}]}}
{"updateDate": {"S": "2022-08-09T09:44:39.386636-03:00"}, "createDate": {"S": "2022-06-13T10:20:00.528685-03:00"}, "status": {"S": "CONFIRMED"}, "cpf": {"S": "08679004901"}, "sk": {"S": "0"}, "email": {"S": "tiago@somosbeta.com.br"}, "id": {"S": "9a41e867-55e1-4573-bd27-7b5d1d1bcfde"}, "mobileNumber": {"S": ""}, "name": {"S": "Tiago Maciel"}, "lastLogin": {"S": "2024-02-07T11:14:34.516596-03:00"}, "tenant_id": {"L": [{"S": "cJtK9SsnJhKPyxESe7g3DG"}]}}
{"emailVerified": {"BOOL": true}, "updateDate": {"S": "2022-08-09T09:44:39.400384-03:00"}, "createDate": {"S": "2022-06-13T10:20:00.528685-03:00"}, "sk": {"S": "emails#tiago@somosbeta.com.br"}, "id": {"S": "9a41e867-55e1-4573-bd27-7b5d1d1bcfde"}, "primaryEmail": {"BOOL": true}, "emailDeliverable": {"BOOL": true}}
{"emailVerified": {"BOOL": true}, "updateDate": {"S": "2022-08-09T09:44:39.400384-03:00"}, "createDate": {"S": "2022-06-13T10:20:00.528685-03:00"}, "sk": {"S": "emails#tiago+1@somosbeta.com.br"}, "id": {"S": "9a41e867-55e1-4573-bd27-7b5d1d1bcfde"}, "primaryEmail": {"BOOL": false}, "emailDeliverable": {"BOOL": true}}
{"emailVerified": {"BOOL": true}, "updateDate": {"S": "2022-08-09T09:44:39.400384-03:00"}, "createDate": {"S": "2022-06-13T10:20:00.528685-03:00"}, "sk": {"S": "emails#tiago+2@somosbeta.com.br"}, "id": {"S": "9a41e867-55e1-4573-bd27-7b5d1d1bcfde"}, "primaryEmail": {"BOOL": false}, "emailDeliverable": {"BOOL": true}}
@@ -55,7 +55,7 @@
{"id": {"S": "5ad1d654-efe5-4bcf-8016-332677c4ba61"}, "sk": {"S": "0"}, "createDate": {"S": "2023-09-22T18:34:46.517274-03:00"}, "email": {"S": "vera@somosbeta.com.br"}, "name": {"S": "Vera L\u00facia Machado"}, "status": {"S": "CREATED"}, "updateDate": {"S": "2024-02-26T14:58:50.688790-03:00"}}
{"id": {"S": "5ad1d654-efe5-4bcf-8016-332677c4ba61"}, "sk": {"S": "emails#vera@somosbeta.com.br"}, "createDate": {"S": "2024-02-26T14:45:04.980636-03:00"}, "deliverability": {"S": "DELIVERABLE"}, "emailVerified": {"BOOL": false}, "primaryEmail": {"BOOL": true}, "updateDate": {"S": "2024-02-26T14:51:30.188894-03:00"}}
{"id": {"S": "email"}, "sk": {"S": "vera@somosbeta.com.br"}, "createDate": {"S": "2019-11-12T00:00:00-03:00"}, "userRefId": {"S": "5ad1d654-efe5-4bcf-8016-332677c4ba61"}}
{"updateDate": {"S": "2024-02-08T16:42:33.776409-03:00"}, "createDate": {"S": "2019-03-25T00:00:00-03:00"}, "status": {"S": "CONFIRMED"}, "sk": {"S": "0"}, "email": {"S": "maite@somosbeta.com.br"}, "id": {"S": "ZoV7w6mZsdAABjXzeAodSQ"}, "name": {"S": "Mait\u00ea Laurenti Siqueira"}, "lastLogin": {"S": "2024-02-08T20:53:45.818126-03:00"}, "orgs": {"L": [{"S": "cJtK9SsnJhKPyxESe7g3DG"}]}}
{"updateDate": {"S": "2024-02-08T16:42:33.776409-03:00"}, "createDate": {"S": "2019-03-25T00:00:00-03:00"}, "status": {"S": "CONFIRMED"}, "sk": {"S": "0"}, "email": {"S": "maite@somosbeta.com.br"}, "id": {"S": "ZoV7w6mZsdAABjXzeAodSQ"}, "name": {"S": "Mait\u00ea Laurenti Siqueira"}, "lastLogin": {"S": "2024-02-08T20:53:45.818126-03:00"}, "tenant_id": {"L": [{"S": "cJtK9SsnJhKPyxESe7g3DG"}]}}
{"id": {"S": "5OxmMjL-ujoR5IMGegQz"}, "sk": {"S": "orgs#cJtK9SsnJhKPyxESe7g3DG"}, "cnpj": {"S": "15608435000190"}, "create_date": {"S": "2023-12-24T20:50:27.656310-03:00"}, "name": {"S": "Beta Educa\u00e7\u00e3o"}}
{"id": {"S": "5OxmMjL-ujoR5IMGegQz"}, "sk": {"S": "orgs#edp8njvgQuzNkLx2ySNfAD"}, "cnpj": {"S": "13573332000107"}, "create_date": {"S": "2023-12-24T20:50:27.656310-03:00"}, "name": {"S": "KORD S.A"}}
{"id": {"S": "5OxmMjL-ujoR5IMGegQz"}, "sk": {"S": "acls#cJtK9SsnJhKPyxESe7g3DG"}, "create_date": {"S": "2022-06-13T15:00:24.309410-03:00"}, "roles": {"L": [{"S": "ADMIN"}]}}
@@ -70,6 +70,6 @@
{"id": {"S": "webhook_requests#*#0e7f4d2e62ec525fc94465a6dd7299d2"}, "sk": {"S": "2025-03-03T15:47:42.039256-03:00"}, "request": {"M": {"id": {"S": "cJtK9SsnJhKPyxESe7g3DG"}, "headers": {"M": {"Accept": {"S": "*/*"}, "Accept-Encoding": {"S": "gzip, deflate"}, "Connection": {"S": "keep-alive"}, "Content-Length": {"S": "108"}, "Content-Type": {"S": "application/json"}, "User-Agent": {"S": "eduseg/python-requests/2.32.3"}}}, "payload": {"M": {"id": {"S": "5OxmMjL-ujoR5IMGegQz"}, "email": {"S": "sergio@somosbeta.com.br"}, "name": {"S": "S\u00e9rgio Rafael de Siqueira"}}}}}, "response": {"M": {"body": {"S": "{\"message\":\"Workflow was started\"}"}, "elapsed_time": {"S": "0.14"}, "headers": {"M": {"alt-svc": {"S": "h3=\":443\"; ma=86400"}, "cf-cache-status": {"S": "DYNAMIC"}, "CF-RAY": {"S": "8fc528b57b62a3f0-GRU"}, "Connection": {"S": "keep-alive"}, "Content-Length": {"S": "34"}, "Content-Type": {"S": "application/json; charset=utf-8"}, "Date": {"S": "Fri, 03 Jan 2025 18:47:44 GMT"}, "etag": {"S": "W/\"22-6OS7cK0FzqnV2NeDHdOSGS1bVUs\""}, "NEL": {"S": "{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}"}, "Report-To": {"S": "{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=FMkgKCTOnFvNgtE30yiYnM4XtK8q99O62s7Ep57KDNc3YGiy3W1j%2BzfS0vqJNylSAn5viU3MMGJvTIwPsYQ6jQ298t1p0hYd1KPwURhxchME4hc%2BsO0NNAv%2FFEpXv1ZYWw%3D%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}"}, "Server": {"S": "cloudflare"}, "server-timing": {"S": "cfL4;desc=\"?proto=TCP&rtt=1016&min_rtt=998&rtt_var=411&sent=4&recv=7&lost=0&retrans=0&sent_bytes=2836&recv_bytes=999&delivery_rate=2522648&cwnd=251&unsent_bytes=0&cid=1b26053952909423&ts=93&x=0\""}, "Strict-Transport-Security": {"S": "max-age=0; includeSubDomains"}, "vary": {"S": "Accept-Encoding"}}}, "status_code": {"S": "200"}}}, "update_date": {"S": "2025-01-03T15:47:44.537597-03:00"}, "url": {"S": "https://n8n.sergio.run/webhook/56bb43b8-533c-4e8b-bdaa-3f7c2b0e548f"}}
{"id": {"S": "webhooks#*"}, "sk": {"S": "1e3759c9c4cfa7aaf86ac281bdb8fd6f"}, "author": {"M": {"id": {"S": "5OxmMjL-ujoR5IMGegQz"}, "name": {"S": "S\u00e9rgio Rafael de Siqueira"}}}, "create_date": {"S": "2025-01-06T15:00:39.363207-03:00"}, "event_type": {"S": "insert"}, "resource": {"S": "users"}, "url": {"S": "https://hook.us2.make.com/hgkc5oj5dbpfld5qvu1xmsu22ond93l9"}}
{"id": {"S": "log:5OxmMjL-ujoR5IMGegQz"},"sk": {"S": "2024-02-26T11:48:17.605911-03:00"},"action": {"S": "OPEN_EMAIL"},"data": {"M": {"ip_address": {"S": "66.249.83.73"},"message_id": {"S": "0103018de5de75cf-670bf01f-7ccf-4ce0-88b4-7c85cd0d06d0-000000"},"recipients": {"L": [{"S": "sergio@somosbeta.com.br"}]},"subject": {"S": "Re: (sem assunto)"},"timestamp": {"S": "2024-02-26T14:48:16.976Z"},"user_agent": {"S": "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)"}}},"ttl": {"N": "1772030897"}}
{"id": {"S": "7zf52CWrTS3csRBFWU5rkq"},"sk": {"S": "0"},"cognito:sub": {"S": "58efed8d-d276-41a8-8502-4ab8b5a6415e"},"cpf": {"S": "04330965275"},"createDate": {"S": "2025-04-08T10:24:46.493980-03:00"},"email": {"S": "barbara.gomes@sinobras.com.br"},"email_verified": {"BOOL": true},"konviva:id": {"N": "199205"},"lastLogin": {"S": "2025-04-10T12:01:48.380215-03:00"},"name": {"S": "Barbara Kamyla Vasconcelos Gomes"},"tenant__org_id": {"SS": ["EkvQwpmmL6vzWtJunM5dCJ"]},"update_date": {"S": "2025-04-10T08:50:22.530758-03:00"}}
{"id": {"S": "7zf52CWrTS3csRBFWU5rkq"},"sk": {"S": "0"},"cognito:sub": {"S": "58efed8d-d276-41a8-8502-4ab8b5a6415e"},"cpf": {"S": "04330965275"},"createDate": {"S": "2025-04-08T10:24:46.493980-03:00"},"email": {"S": "barbara.gomes@sinobras.com.br"},"email_verified": {"BOOL": true},"konviva:id": {"N": "199205"},"lastLogin": {"S": "2025-04-10T12:01:48.380215-03:00"},"name": {"S": "Barbara Kamyla Vasconcelos Gomes"},"tenant_id": {"SS": ["EkvQwpmmL6vzWtJunM5dCJ"]},"update_date": {"S": "2025-04-10T08:50:22.530758-03:00"}}
{"id": {"S": "7zf52CWrTS3csRBFWU5rkq"},"sk": {"S": "acls#EkvQwpmmL6vzWtJunM5dCJ"},"create_date": {"S": "2025-04-10T09:36:41.133157-03:00"},"roles": {"L": [{"S": "ADMIN"}]}}
{"id": {"S": "7zf52CWrTS3csRBFWU5rkq"},"sk": {"S": "orgs#EkvQwpmmL6vzWtJunM5dCJ"},"cnpj": {"S": "07933914000154"},"create_date": {"S": "2025-04-08T10:24:46.493980-03:00"},"name": {"S": "SIDERURGICA NORTE BRASIL S.A"}}