easydata-api 1.1.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.1.0 → easydata_api-1.3.0}/PKG-INFO +11 -4
- {easydata_api-1.1.0 → easydata_api-1.3.0}/README.md +10 -3
- {easydata_api-1.1.0 → easydata_api-1.3.0}/easydata_api/client.py +34 -5
- {easydata_api-1.1.0 → easydata_api-1.3.0}/easydata_api.egg-info/PKG-INFO +11 -4
- {easydata_api-1.1.0 → easydata_api-1.3.0}/pyproject.toml +1 -1
- {easydata_api-1.1.0 → easydata_api-1.3.0}/LICENSE +0 -0
- {easydata_api-1.1.0 → easydata_api-1.3.0}/easydata_api/__init__.py +0 -0
- {easydata_api-1.1.0 → easydata_api-1.3.0}/easydata_api/errors.py +0 -0
- {easydata_api-1.1.0 → easydata_api-1.3.0}/easydata_api/webhooks.py +0 -0
- {easydata_api-1.1.0 → easydata_api-1.3.0}/easydata_api.egg-info/SOURCES.txt +0 -0
- {easydata_api-1.1.0 → easydata_api-1.3.0}/easydata_api.egg-info/dependency_links.txt +0 -0
- {easydata_api-1.1.0 → easydata_api-1.3.0}/easydata_api.egg-info/requires.txt +0 -0
- {easydata_api-1.1.0 → easydata_api-1.3.0}/easydata_api.egg-info/top_level.txt +0 -0
- {easydata_api-1.1.0 → easydata_api-1.3.0}/setup.cfg +0 -0
- {easydata_api-1.1.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,9 +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
|
-
`
|
|
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.
|
|
197
204
|
|
|
198
205
|
## Reference
|
|
199
206
|
|
|
@@ -170,9 +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
|
-
`
|
|
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.
|
|
176
183
|
|
|
177
184
|
## Reference
|
|
178
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",
|
|
@@ -47,6 +48,7 @@ OPERATIONS: dict[str, str] = {
|
|
|
47
48
|
"companies_enrich": "/companies/enrich",
|
|
48
49
|
"posts_enrich": "/posts/enrich",
|
|
49
50
|
"sales_search_people": "/sales/search/people",
|
|
51
|
+
"sales_search_employees": "/sales/search/employees",
|
|
50
52
|
"sales_search_companies": "/sales/search/companies",
|
|
51
53
|
}
|
|
52
54
|
|
|
@@ -314,6 +316,8 @@ class EasyData:
|
|
|
314
316
|
max_results: int | None = None,
|
|
315
317
|
enrich: bool | None = None,
|
|
316
318
|
find_emails: bool | None = None,
|
|
319
|
+
include_counts: bool | None = None,
|
|
320
|
+
include_experience_detail: bool | None = None,
|
|
317
321
|
include_results: bool | None = None,
|
|
318
322
|
idempotency_key: str | None = None,
|
|
319
323
|
) -> Batch:
|
|
@@ -321,6 +325,18 @@ class EasyData:
|
|
|
321
325
|
|
|
322
326
|
A batch of one is a batch. There is no separate single-target path and
|
|
323
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.
|
|
324
340
|
"""
|
|
325
341
|
if not targets:
|
|
326
342
|
raise ValueError("targets is empty: a batch needs at least one target")
|
|
@@ -328,7 +344,9 @@ class EasyData:
|
|
|
328
344
|
body: dict[str, Any] = {"targets": list(targets)}
|
|
329
345
|
_put(body, external_id=external_id, callback_url=callback_url,
|
|
330
346
|
webhook_tag=webhook_tag, max_results=max_results, enrich=enrich,
|
|
331
|
-
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)
|
|
332
350
|
|
|
333
351
|
data = self._request(
|
|
334
352
|
"POST", path, body=body,
|
|
@@ -346,6 +364,9 @@ class EasyData:
|
|
|
346
364
|
*,
|
|
347
365
|
external_id: str | None = None,
|
|
348
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,
|
|
349
370
|
idempotency_key: str | None = None,
|
|
350
371
|
) -> SyncResult:
|
|
351
372
|
"""One entity, answered in this response, at twice the credits.
|
|
@@ -353,6 +374,12 @@ class EasyData:
|
|
|
353
374
|
`target`, singular - not a list of one. The bounds are refusals rather
|
|
354
375
|
than downgrades: no `enrich`, no webhooks, and one upstream page for a
|
|
355
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.
|
|
356
383
|
"""
|
|
357
384
|
if isinstance(target, (list, tuple, set)):
|
|
358
385
|
raise ValueError(
|
|
@@ -360,7 +387,9 @@ class EasyData:
|
|
|
360
387
|
)
|
|
361
388
|
|
|
362
389
|
body: dict[str, Any] = {"target": target}
|
|
363
|
-
_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)
|
|
364
393
|
|
|
365
394
|
data = self._request(
|
|
366
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,9 +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
|
-
`
|
|
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.
|
|
197
204
|
|
|
198
205
|
## Reference
|
|
199
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
|