easydata-api 1.2.0__tar.gz → 1.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {easydata_api-1.2.0 → easydata_api-1.3.0}/PKG-INFO +11 -5
- {easydata_api-1.2.0 → easydata_api-1.3.0}/README.md +10 -4
- {easydata_api-1.2.0 → easydata_api-1.3.0}/easydata_api/client.py +33 -5
- {easydata_api-1.2.0 → easydata_api-1.3.0}/easydata_api.egg-info/PKG-INFO +11 -5
- {easydata_api-1.2.0 → easydata_api-1.3.0}/pyproject.toml +1 -1
- {easydata_api-1.2.0 → easydata_api-1.3.0}/LICENSE +0 -0
- {easydata_api-1.2.0 → easydata_api-1.3.0}/easydata_api/__init__.py +0 -0
- {easydata_api-1.2.0 → easydata_api-1.3.0}/easydata_api/errors.py +0 -0
- {easydata_api-1.2.0 → easydata_api-1.3.0}/easydata_api/webhooks.py +0 -0
- {easydata_api-1.2.0 → easydata_api-1.3.0}/easydata_api.egg-info/SOURCES.txt +0 -0
- {easydata_api-1.2.0 → easydata_api-1.3.0}/easydata_api.egg-info/dependency_links.txt +0 -0
- {easydata_api-1.2.0 → easydata_api-1.3.0}/easydata_api.egg-info/requires.txt +0 -0
- {easydata_api-1.2.0 → easydata_api-1.3.0}/easydata_api.egg-info/top_level.txt +0 -0
- {easydata_api-1.2.0 → easydata_api-1.3.0}/setup.cfg +0 -0
- {easydata_api-1.2.0 → easydata_api-1.3.0}/tests/test_client.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: easydata-api
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.0
|
|
4
4
|
Summary: Official Python client for the EasyData LinkedIn enrichment API
|
|
5
5
|
Author-email: EasyData Development <dev@easydata.win>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -191,10 +191,16 @@ ed.account() # allowance, ceilings, secre
|
|
|
191
191
|
ed.usage(from_="2026-09-01", to="2026-09-30") # spend by day and operation
|
|
192
192
|
```
|
|
193
193
|
|
|
194
|
-
Operations are attributes: `profiles_enrich`, `
|
|
195
|
-
`
|
|
196
|
-
`
|
|
197
|
-
`sales_search_companies`.
|
|
194
|
+
Operations are attributes: `profiles_enrich`, `profiles_enrich_detailed`,
|
|
195
|
+
`profiles_activity`, `profiles_posts`, `profiles_comments`,
|
|
196
|
+
`profiles_reactions`, `companies_enrich`, `posts_enrich`,
|
|
197
|
+
`sales_search_people`, `sales_search_employees`, `sales_search_companies`.
|
|
198
|
+
|
|
199
|
+
`profiles_enrich_detailed` is `profiles_enrich` plus the optional sections -
|
|
200
|
+
`include_counts=True` for follower and connection counts,
|
|
201
|
+
`include_experience_detail=True` for what each role actually says. Each is one
|
|
202
|
+
more request to LinkedIn and costs +0.5 per target, charged only when the
|
|
203
|
+
section answered, and at least one of them is required.
|
|
198
204
|
|
|
199
205
|
## Reference
|
|
200
206
|
|
|
@@ -170,10 +170,16 @@ ed.account() # allowance, ceilings, secre
|
|
|
170
170
|
ed.usage(from_="2026-09-01", to="2026-09-30") # spend by day and operation
|
|
171
171
|
```
|
|
172
172
|
|
|
173
|
-
Operations are attributes: `profiles_enrich`, `
|
|
174
|
-
`
|
|
175
|
-
`
|
|
176
|
-
`sales_search_companies`.
|
|
173
|
+
Operations are attributes: `profiles_enrich`, `profiles_enrich_detailed`,
|
|
174
|
+
`profiles_activity`, `profiles_posts`, `profiles_comments`,
|
|
175
|
+
`profiles_reactions`, `companies_enrich`, `posts_enrich`,
|
|
176
|
+
`sales_search_people`, `sales_search_employees`, `sales_search_companies`.
|
|
177
|
+
|
|
178
|
+
`profiles_enrich_detailed` is `profiles_enrich` plus the optional sections -
|
|
179
|
+
`include_counts=True` for follower and connection counts,
|
|
180
|
+
`include_experience_detail=True` for what each role actually says. Each is one
|
|
181
|
+
more request to LinkedIn and costs +0.5 per target, charged only when the
|
|
182
|
+
section answered, and at least one of them is required.
|
|
177
183
|
|
|
178
184
|
## Reference
|
|
179
185
|
|
|
@@ -35,11 +35,12 @@ __all__ = [
|
|
|
35
35
|
DEFAULT_BASE_URL = "https://api.easydata.win/v1"
|
|
36
36
|
|
|
37
37
|
#: Every operation, as `attribute name -> path`. The client builds one method
|
|
38
|
-
#: per entry rather than defining
|
|
39
|
-
#: identical: one request shape, one response shape, and the
|
|
40
|
-
#: path. A new operation is a row here.
|
|
38
|
+
#: per entry rather than defining one near-identical method per operation,
|
|
39
|
+
#: because they ARE identical: one request shape, one response shape, and the
|
|
40
|
+
#: operation is the path. A new operation is a row here.
|
|
41
41
|
OPERATIONS: dict[str, str] = {
|
|
42
42
|
"profiles_enrich": "/profiles/enrich",
|
|
43
|
+
"profiles_enrich_detailed": "/profiles/enrich/detailed",
|
|
43
44
|
"profiles_activity": "/profiles/activity",
|
|
44
45
|
"profiles_posts": "/profiles/posts",
|
|
45
46
|
"profiles_comments": "/profiles/comments",
|
|
@@ -315,6 +316,8 @@ class EasyData:
|
|
|
315
316
|
max_results: int | None = None,
|
|
316
317
|
enrich: bool | None = None,
|
|
317
318
|
find_emails: bool | None = None,
|
|
319
|
+
include_counts: bool | None = None,
|
|
320
|
+
include_experience_detail: bool | None = None,
|
|
318
321
|
include_results: bool | None = None,
|
|
319
322
|
idempotency_key: str | None = None,
|
|
320
323
|
) -> Batch:
|
|
@@ -322,6 +325,18 @@ class EasyData:
|
|
|
322
325
|
|
|
323
326
|
A batch of one is a batch. There is no separate single-target path and
|
|
324
327
|
no ceiling to discover between one target and fifty thousand.
|
|
328
|
+
|
|
329
|
+
With ``find_emails`` the addresses are looked up after the scraping, so
|
|
330
|
+
results carrying one arrive minutes later than results that do not. Each
|
|
331
|
+
entry still appears exactly once, complete, and the batch is not
|
|
332
|
+
``completed`` until every one has.
|
|
333
|
+
|
|
334
|
+
``include_counts`` and ``include_experience_detail`` are the optional
|
|
335
|
+
sections of ``profiles_enrich_detailed`` and are refused with a 400 on
|
|
336
|
+
anything else. Each is one more request to LinkedIn and costs +0.5 per
|
|
337
|
+
target, charged only when the section actually answered; at least one of
|
|
338
|
+
them is required on that operation, because with neither set it is
|
|
339
|
+
``profiles_enrich``, which returns the same record for less.
|
|
325
340
|
"""
|
|
326
341
|
if not targets:
|
|
327
342
|
raise ValueError("targets is empty: a batch needs at least one target")
|
|
@@ -329,7 +344,9 @@ class EasyData:
|
|
|
329
344
|
body: dict[str, Any] = {"targets": list(targets)}
|
|
330
345
|
_put(body, external_id=external_id, callback_url=callback_url,
|
|
331
346
|
webhook_tag=webhook_tag, max_results=max_results, enrich=enrich,
|
|
332
|
-
find_emails=find_emails,
|
|
347
|
+
find_emails=find_emails, include_counts=include_counts,
|
|
348
|
+
include_experience_detail=include_experience_detail,
|
|
349
|
+
include_results=include_results)
|
|
333
350
|
|
|
334
351
|
data = self._request(
|
|
335
352
|
"POST", path, body=body,
|
|
@@ -347,6 +364,9 @@ class EasyData:
|
|
|
347
364
|
*,
|
|
348
365
|
external_id: str | None = None,
|
|
349
366
|
max_results: int | None = None,
|
|
367
|
+
find_emails: bool | None = None,
|
|
368
|
+
include_counts: bool | None = None,
|
|
369
|
+
include_experience_detail: bool | None = None,
|
|
350
370
|
idempotency_key: str | None = None,
|
|
351
371
|
) -> SyncResult:
|
|
352
372
|
"""One entity, answered in this response, at twice the credits.
|
|
@@ -354,6 +374,12 @@ class EasyData:
|
|
|
354
374
|
`target`, singular - not a list of one. The bounds are refusals rather
|
|
355
375
|
than downgrades: no `enrich`, no webhooks, and one upstream page for a
|
|
356
376
|
paged operation.
|
|
377
|
+
|
|
378
|
+
The optional sections are allowed - a section is one bounded extra
|
|
379
|
+
request, which is what this path is for - and priced like everything
|
|
380
|
+
else here, at double: +1 each. So is ``find_emails`` for a profile, at
|
|
381
|
+
+8: one person is one bounded lookup. It is refused on a search, where
|
|
382
|
+
it would be one lookup per row inside a single HTTP request.
|
|
357
383
|
"""
|
|
358
384
|
if isinstance(target, (list, tuple, set)):
|
|
359
385
|
raise ValueError(
|
|
@@ -361,7 +387,9 @@ class EasyData:
|
|
|
361
387
|
)
|
|
362
388
|
|
|
363
389
|
body: dict[str, Any] = {"target": target}
|
|
364
|
-
_put(body, external_id=external_id, max_results=max_results
|
|
390
|
+
_put(body, external_id=external_id, max_results=max_results,
|
|
391
|
+
find_emails=find_emails, include_counts=include_counts,
|
|
392
|
+
include_experience_detail=include_experience_detail)
|
|
365
393
|
|
|
366
394
|
data = self._request(
|
|
367
395
|
"POST", path + "/sync", body=body,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: easydata-api
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.0
|
|
4
4
|
Summary: Official Python client for the EasyData LinkedIn enrichment API
|
|
5
5
|
Author-email: EasyData Development <dev@easydata.win>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -191,10 +191,16 @@ ed.account() # allowance, ceilings, secre
|
|
|
191
191
|
ed.usage(from_="2026-09-01", to="2026-09-30") # spend by day and operation
|
|
192
192
|
```
|
|
193
193
|
|
|
194
|
-
Operations are attributes: `profiles_enrich`, `
|
|
195
|
-
`
|
|
196
|
-
`
|
|
197
|
-
`sales_search_companies`.
|
|
194
|
+
Operations are attributes: `profiles_enrich`, `profiles_enrich_detailed`,
|
|
195
|
+
`profiles_activity`, `profiles_posts`, `profiles_comments`,
|
|
196
|
+
`profiles_reactions`, `companies_enrich`, `posts_enrich`,
|
|
197
|
+
`sales_search_people`, `sales_search_employees`, `sales_search_companies`.
|
|
198
|
+
|
|
199
|
+
`profiles_enrich_detailed` is `profiles_enrich` plus the optional sections -
|
|
200
|
+
`include_counts=True` for follower and connection counts,
|
|
201
|
+
`include_experience_detail=True` for what each role actually says. Each is one
|
|
202
|
+
more request to LinkedIn and costs +0.5 per target, charged only when the
|
|
203
|
+
section answered, and at least one of them is required.
|
|
198
204
|
|
|
199
205
|
## Reference
|
|
200
206
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|