autotouch-cli 0.2.83__tar.gz → 0.2.85__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.
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/PKG-INFO +3 -3
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/README.md +2 -2
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/commands/list_build.py +61 -16
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/data/CLI_REFERENCE.md +42 -42
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/data/cli-manifest.json +233 -242
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli.egg-info/PKG-INFO +3 -3
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_shared/list_build_contract.py +34 -5
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/pyproject.toml +1 -1
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/MANIFEST.in +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/__init__.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/cli.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/cli_contracts.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/commands/__init__.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/commands/agents.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/commands/auth.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/commands/cells.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/commands/columns.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/commands/jobs.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/commands/leads.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/commands/linkedin.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/commands/prompts.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/commands/rows.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/commands/search.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/commands/sequences.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/commands/tables.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/commands/tasks.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/commands/webhooks.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/commands/workspace_secrets.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/core/__init__.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/core/auth.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/core/config.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/core/csv_import.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/core/http.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/core/io.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/core/output.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/core/polling.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/core/run.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/core/validation.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/exceptions.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/mongo_status.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/parser.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/parser_groups.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/sequence_support.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli/templates.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli.egg-info/SOURCES.txt +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli.egg-info/dependency_links.txt +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli.egg-info/entry_points.txt +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli.egg-info/requires.txt +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_cli.egg-info/top_level.txt +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_shared/__init__.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_shared/linkedin_contract.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_shared/linkedin_filters.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_shared/provider_registry.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/autotouch_shared/search_contract.py +0 -0
- {autotouch_cli-0.2.83 → autotouch_cli-0.2.85}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: autotouch-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.85
|
|
4
4
|
Summary: Autotouch Smart Table CLI
|
|
5
5
|
Project-URL: Homepage, https://app.autotouch.ai
|
|
6
6
|
Project-URL: Documentation, https://github.com/nicolonic/autotouch_main/tree/main/docs/research-table/reference
|
|
@@ -150,7 +150,7 @@ Use `autotouch search companies` and `autotouch search people` for neural search
|
|
|
150
150
|
|
|
151
151
|
Use `autotouch list-build companies` and `autotouch list-build leads` for structured, repeatable list construction. This is the only CLI path for building LinkedIn-sourced company and lead lists. Treat list builds as the sourcing step for the Smart Table research workspace: build company/account records first by default, add the records to a research table, then enrich, score, segment, find related leads, attach signals/notes, and continue downstream workflows from that table. Use lead builds directly when the request is explicitly person/contact focused. This path uses Autotouch-managed provider access, so users do not need to connect their own LinkedIn account. Use filters like geography IDs, company size, industry IDs, title/persona, and current company IDs; call `autotouch list-build inputs` for supported values. Durable list builds run as background jobs with status/results endpoints and cost 1 credit per successful non-empty result page.
|
|
152
152
|
|
|
153
|
-
For structured company builds, start with industry IDs plus geo/company-size filters.
|
|
153
|
+
For structured company builds, start with industry IDs plus geo/company-size filters. User-supplied `keywords` are optional when structured filters are present; use them only to refine, disambiguate, or recover hard-to-classify targets instead of carrying the whole target definition.
|
|
154
154
|
|
|
155
155
|
For account-first prospecting, build companies/accounts first, inspect the returned company IDs, then pass those IDs to `autotouch list-build leads --current-company-id ...`. Do not use neural search as a default pre-step for every list build; use it when the user's target is genuinely semantic or niche.
|
|
156
156
|
|
|
@@ -160,7 +160,7 @@ For automation or agent-driven setup, use:
|
|
|
160
160
|
- `autotouch cli-manifest --output json` for the local machine-readable command contract
|
|
161
161
|
- `autotouch cli-reference` for the shipped parser-generated reference
|
|
162
162
|
- `autotouch capabilities --output json` for provider/workflow contracts
|
|
163
|
-
- `autotouch --version` should be `0.2.
|
|
163
|
+
- `autotouch --version` should be `0.2.85` or newer for structured company list builds without user-supplied keywords, stored list-build input lookup, research-workspace list-build guidance, and the cleaned single LinkedIn-sourced list-build path
|
|
164
164
|
- `autotouch capabilities --output json --select list_builds` for documented list-build inputs such as geography IDs, company size buckets, profile language, and company IDs
|
|
165
165
|
- `autotouch list-build inputs` and `autotouch list-build pricing` before creating durable list-build jobs
|
|
166
166
|
- `autotouch list-build companies` and `autotouch list-build leads` for durable LinkedIn-sourced company and lead list builds with Smart Table-owned background workers, visible progress, and no user-owned LinkedIn connection requirement
|
|
@@ -125,7 +125,7 @@ Use `autotouch search companies` and `autotouch search people` for neural search
|
|
|
125
125
|
|
|
126
126
|
Use `autotouch list-build companies` and `autotouch list-build leads` for structured, repeatable list construction. This is the only CLI path for building LinkedIn-sourced company and lead lists. Treat list builds as the sourcing step for the Smart Table research workspace: build company/account records first by default, add the records to a research table, then enrich, score, segment, find related leads, attach signals/notes, and continue downstream workflows from that table. Use lead builds directly when the request is explicitly person/contact focused. This path uses Autotouch-managed provider access, so users do not need to connect their own LinkedIn account. Use filters like geography IDs, company size, industry IDs, title/persona, and current company IDs; call `autotouch list-build inputs` for supported values. Durable list builds run as background jobs with status/results endpoints and cost 1 credit per successful non-empty result page.
|
|
127
127
|
|
|
128
|
-
For structured company builds, start with industry IDs plus geo/company-size filters.
|
|
128
|
+
For structured company builds, start with industry IDs plus geo/company-size filters. User-supplied `keywords` are optional when structured filters are present; use them only to refine, disambiguate, or recover hard-to-classify targets instead of carrying the whole target definition.
|
|
129
129
|
|
|
130
130
|
For account-first prospecting, build companies/accounts first, inspect the returned company IDs, then pass those IDs to `autotouch list-build leads --current-company-id ...`. Do not use neural search as a default pre-step for every list build; use it when the user's target is genuinely semantic or niche.
|
|
131
131
|
|
|
@@ -135,7 +135,7 @@ For automation or agent-driven setup, use:
|
|
|
135
135
|
- `autotouch cli-manifest --output json` for the local machine-readable command contract
|
|
136
136
|
- `autotouch cli-reference` for the shipped parser-generated reference
|
|
137
137
|
- `autotouch capabilities --output json` for provider/workflow contracts
|
|
138
|
-
- `autotouch --version` should be `0.2.
|
|
138
|
+
- `autotouch --version` should be `0.2.85` or newer for structured company list builds without user-supplied keywords, stored list-build input lookup, research-workspace list-build guidance, and the cleaned single LinkedIn-sourced list-build path
|
|
139
139
|
- `autotouch capabilities --output json --select list_builds` for documented list-build inputs such as geography IDs, company size buckets, profile language, and company IDs
|
|
140
140
|
- `autotouch list-build inputs` and `autotouch list-build pricing` before creating durable list-build jobs
|
|
141
141
|
- `autotouch list-build companies` and `autotouch list-build leads` for durable LinkedIn-sourced company and lead list builds with Smart Table-owned background workers, visible progress, and no user-owned LinkedIn connection requirement
|
|
@@ -5,6 +5,7 @@ import json
|
|
|
5
5
|
import time
|
|
6
6
|
from dataclasses import dataclass
|
|
7
7
|
from typing import Any, Callable, Dict, Optional
|
|
8
|
+
from urllib.parse import urlencode
|
|
8
9
|
|
|
9
10
|
from autotouch_cli.exceptions import AutotouchInputError, AutotouchTimeoutError
|
|
10
11
|
|
|
@@ -43,9 +44,15 @@ def _payload(args: argparse.Namespace, *, runtime: ListBuildCommandRuntime, kind
|
|
|
43
44
|
filters[key] = values
|
|
44
45
|
if getattr(args, "has_jobs", False):
|
|
45
46
|
filters["has_jobs"] = True
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
for attr, key in (
|
|
48
|
+
("profile_language", "profile_language"),
|
|
49
|
+
("service_category", "service_category"),
|
|
50
|
+
("first_name", "first_name"),
|
|
51
|
+
("last_name", "last_name"),
|
|
52
|
+
):
|
|
53
|
+
value = str(getattr(args, attr, "") or "").strip()
|
|
54
|
+
if value:
|
|
55
|
+
filters[key] = value
|
|
49
56
|
payload: Dict[str, Any] = {
|
|
50
57
|
"kind": kind,
|
|
51
58
|
"num_results": max(1, min(int(getattr(args, "num_results", 100) or 100), 10000)),
|
|
@@ -134,6 +141,29 @@ def cmd_list_build_results(args: argparse.Namespace, *, runtime: ListBuildComman
|
|
|
134
141
|
|
|
135
142
|
def cmd_list_build_inputs(args: argparse.Namespace, *, runtime: ListBuildCommandRuntime) -> None:
|
|
136
143
|
token = runtime.resolve_token(args.token, required=True)
|
|
144
|
+
input_type = str(getattr(args, "type", "") or "").strip()
|
|
145
|
+
query = str(getattr(args, "query", "") or "").strip()
|
|
146
|
+
if input_type or query:
|
|
147
|
+
if not input_type or not query:
|
|
148
|
+
raise AutotouchInputError("list-build inputs search requires both --type and --query")
|
|
149
|
+
params = urlencode(
|
|
150
|
+
{
|
|
151
|
+
"type": input_type,
|
|
152
|
+
"q": query,
|
|
153
|
+
"limit": max(1, min(int(getattr(args, "limit", 20) or 20), 50)),
|
|
154
|
+
}
|
|
155
|
+
)
|
|
156
|
+
data = runtime.request_api(
|
|
157
|
+
"GET",
|
|
158
|
+
f"/api/list-builds/inputs/search?{params}",
|
|
159
|
+
base_url=args.base_url,
|
|
160
|
+
token=token,
|
|
161
|
+
use_x_api_key=args.use_x_api_key,
|
|
162
|
+
timeout=args.timeout,
|
|
163
|
+
verbose=args.verbose,
|
|
164
|
+
)
|
|
165
|
+
runtime.print_json(data, args.compact)
|
|
166
|
+
return
|
|
137
167
|
data = runtime.request_api(
|
|
138
168
|
"GET",
|
|
139
169
|
"/api/list-builds/inputs",
|
|
@@ -169,20 +199,10 @@ def register_list_build_subcommands(
|
|
|
169
199
|
parser = subparsers.add_parser("list-build", help="Build durable LinkedIn-sourced company and lead lists")
|
|
170
200
|
sub = parser.add_subparsers(dest="list_build_cmd", required=True)
|
|
171
201
|
|
|
172
|
-
def
|
|
202
|
+
def add_common_create_args(p: argparse.ArgumentParser) -> None:
|
|
173
203
|
p.add_argument("--data-json", help="Explicit list-build payload JSON")
|
|
174
204
|
p.add_argument("--data-file", help="Path to list-build payload JSON file")
|
|
175
205
|
p.add_argument("--list-name", help="Optional display name")
|
|
176
|
-
p.add_argument("--keywords", help="Search keywords")
|
|
177
|
-
p.add_argument("--title", help="Lead title/persona query")
|
|
178
|
-
p.add_argument("--geo-id", action="append", help="Geography ID; repeat or comma-separate in JSON")
|
|
179
|
-
p.add_argument("--industry-id", action="append", help="Industry ID; repeat or comma-separate in JSON")
|
|
180
|
-
p.add_argument("--company-size", action="append", help="Company size bucket, e.g. 1-10 or 11-50")
|
|
181
|
-
p.add_argument("--current-company-id", action="append", help="Company ID for lead search")
|
|
182
|
-
p.add_argument("--past-company-id", action="append", help="Past company ID for lead search")
|
|
183
|
-
p.add_argument("--school-id", action="append", help="School ID for lead search")
|
|
184
|
-
p.add_argument("--profile-language", help="Profile language code, e.g. en")
|
|
185
|
-
p.add_argument("--has-jobs", action="store_true", help="Only include companies with active job listings")
|
|
186
206
|
p.add_argument("--num-results", type=int, default=100, help="Target result count, 1-10000")
|
|
187
207
|
p.add_argument("--page-size", type=int, default=25, help="Provider page size")
|
|
188
208
|
p.add_argument("--wait", action="store_true", help="Poll until terminal status")
|
|
@@ -190,12 +210,34 @@ def register_list_build_subcommands(
|
|
|
190
210
|
p.add_argument("--wait-timeout", type=int, default=0, help="Max seconds to wait (0 = no timeout)")
|
|
191
211
|
add_api_common_arguments(p)
|
|
192
212
|
|
|
213
|
+
def add_company_create_args(p: argparse.ArgumentParser) -> None:
|
|
214
|
+
add_common_create_args(p)
|
|
215
|
+
p.add_argument("--keywords", required=False, help="Optional company keyword anchor; structured filters can run without it")
|
|
216
|
+
p.add_argument("--geo-id", action="append", help="LinkedIn GeoURN ID; repeat or comma-separate in JSON")
|
|
217
|
+
p.add_argument("--industry-id", action="append", help="Industry ID from `autotouch list-build inputs`; repeat or comma-separate in JSON")
|
|
218
|
+
p.add_argument("--company-size", action="append", help="Company size bucket, e.g. 1-10 or 11-50")
|
|
219
|
+
p.add_argument("--has-jobs", action="store_true", help="Only include companies with active job listings")
|
|
220
|
+
|
|
221
|
+
def add_lead_create_args(p: argparse.ArgumentParser) -> None:
|
|
222
|
+
add_common_create_args(p)
|
|
223
|
+
p.add_argument("--keywords", help="Optional free-text profile keyword")
|
|
224
|
+
p.add_argument("--title", help="Lead title/persona query")
|
|
225
|
+
p.add_argument("--geo-id", action="append", help="LinkedIn GeoURN ID; repeat or comma-separate in JSON")
|
|
226
|
+
p.add_argument("--industry-id", action="append", help="Industry ID from `autotouch list-build inputs`; repeat or comma-separate in JSON")
|
|
227
|
+
p.add_argument("--current-company-id", action="append", help="Company ID returned by a company list build")
|
|
228
|
+
p.add_argument("--past-company-id", action="append", help="Past company ID for lead search")
|
|
229
|
+
p.add_argument("--school-id", action="append", help="School ID for lead search")
|
|
230
|
+
p.add_argument("--profile-language", help="Profile language code, e.g. en")
|
|
231
|
+
p.add_argument("--service-category", help="Service category string")
|
|
232
|
+
p.add_argument("--first-name", help="First-name filter")
|
|
233
|
+
p.add_argument("--last-name", help="Last-name filter")
|
|
234
|
+
|
|
193
235
|
companies = sub.add_parser("companies", help="Build a company/account list")
|
|
194
|
-
|
|
236
|
+
add_company_create_args(companies)
|
|
195
237
|
companies.set_defaults(func=handlers["companies"])
|
|
196
238
|
|
|
197
239
|
leads = sub.add_parser("leads", help="Build a lead/contact list")
|
|
198
|
-
|
|
240
|
+
add_lead_create_args(leads)
|
|
199
241
|
leads.set_defaults(func=handlers["leads"])
|
|
200
242
|
|
|
201
243
|
status = sub.add_parser("status", help="Get list-build job status")
|
|
@@ -212,6 +254,9 @@ def register_list_build_subcommands(
|
|
|
212
254
|
results.set_defaults(func=handlers["results"])
|
|
213
255
|
|
|
214
256
|
inputs = sub.add_parser("inputs", help="Show valid list-build filter IDs and values")
|
|
257
|
+
inputs.add_argument("--type", choices=["geo", "industry", "service", "title_skill", "title-skills"], help="Search input type")
|
|
258
|
+
inputs.add_argument("--query", help="Search text for input ID lookup")
|
|
259
|
+
inputs.add_argument("--limit", type=int, default=20, help="Max lookup results, 1-50")
|
|
215
260
|
add_api_common_arguments(inputs)
|
|
216
261
|
inputs.set_defaults(func=handlers["inputs"])
|
|
217
262
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Autotouch CLI Reference
|
|
2
2
|
|
|
3
|
-
Generated from the installed parser for `autotouch-cli` `0.2.
|
|
3
|
+
Generated from the installed parser for `autotouch-cli` `0.2.85`.
|
|
4
4
|
Manifest schema version: `2`.
|
|
5
5
|
|
|
6
6
|
## Output Modes
|
|
@@ -2323,15 +2323,7 @@ Build a company/account list
|
|
|
2323
2323
|
- `autotouch list-build companies [-h] [--data-json DATA_JSON]
|
|
2324
2324
|
[--data-file DATA_FILE]
|
|
2325
2325
|
[--list-name LIST_NAME]
|
|
2326
|
-
[--
|
|
2327
|
-
[--geo-id GEO_ID]
|
|
2328
|
-
[--industry-id INDUSTRY_ID]
|
|
2329
|
-
[--company-size COMPANY_SIZE]
|
|
2330
|
-
[--current-company-id CURRENT_COMPANY_ID]
|
|
2331
|
-
[--past-company-id PAST_COMPANY_ID]
|
|
2332
|
-
[--school-id SCHOOL_ID]
|
|
2333
|
-
[--profile-language PROFILE_LANGUAGE]
|
|
2334
|
-
[--has-jobs] [--num-results NUM_RESULTS]
|
|
2326
|
+
[--num-results NUM_RESULTS]
|
|
2335
2327
|
[--page-size PAGE_SIZE] [--wait]
|
|
2336
2328
|
[--poll-interval POLL_INTERVAL]
|
|
2337
2329
|
[--wait-timeout WAIT_TIMEOUT]
|
|
@@ -2339,21 +2331,15 @@ Build a company/account list
|
|
|
2339
2331
|
[--use-x-api-key] [--timeout TIMEOUT]
|
|
2340
2332
|
[--output {json,ndjson,human}]
|
|
2341
2333
|
[--compact] [--select SELECT |
|
|
2342
|
-
--json-pointer JSON_POINTER] [--verbose]
|
|
2334
|
+
--json-pointer JSON_POINTER] [--verbose]
|
|
2335
|
+
[--keywords KEYWORDS] [--geo-id GEO_ID]
|
|
2336
|
+
[--industry-id INDUSTRY_ID]
|
|
2337
|
+
[--company-size COMPANY_SIZE]
|
|
2338
|
+
[--has-jobs]`
|
|
2343
2339
|
- Options:
|
|
2344
2340
|
- `--data-json` (kind=json; input=json): Explicit list-build payload JSON
|
|
2345
2341
|
- `--data-file` (kind=file; input=file): Path to list-build payload JSON file
|
|
2346
2342
|
- `--list-name` (kind=string): Optional display name
|
|
2347
|
-
- `--keywords` (kind=string): Search keywords
|
|
2348
|
-
- `--title` (kind=string): Lead title/persona query
|
|
2349
|
-
- `--geo-id` (kind=string; repeatable): Geography ID; repeat or comma-separate in JSON
|
|
2350
|
-
- `--industry-id` (kind=string; repeatable): Industry ID; repeat or comma-separate in JSON
|
|
2351
|
-
- `--company-size` (kind=string; repeatable): Company size bucket, e.g. 1-10 or 11-50
|
|
2352
|
-
- `--current-company-id` (kind=string; repeatable): Company ID for lead search
|
|
2353
|
-
- `--past-company-id` (kind=string; repeatable): Past company ID for lead search
|
|
2354
|
-
- `--school-id` (kind=string; repeatable): School ID for lead search
|
|
2355
|
-
- `--profile-language` (kind=string): Profile language code, e.g. en
|
|
2356
|
-
- `--has-jobs` (kind=boolean; when omitted=False; when present=True): Only include companies with active job listings
|
|
2357
2343
|
- `--num-results` (kind=integer; default=100): Target result count, 1-10000
|
|
2358
2344
|
- `--page-size` (kind=integer; default=25): Provider page size
|
|
2359
2345
|
- `--wait` (kind=boolean; when omitted=False; when present=True): Poll until terminal status
|
|
@@ -2368,6 +2354,11 @@ Build a company/account list
|
|
|
2368
2354
|
- `--select` (kind=string): Extract a dotted field path from the final result (for example: id or items.0.id)
|
|
2369
2355
|
- `--json-pointer` (kind=string): Extract a JSON pointer from the final result (for example: /id)
|
|
2370
2356
|
- `--verbose` (kind=boolean; when omitted=False; when present=True): Print request metadata to stderr
|
|
2357
|
+
- `--keywords` (kind=string): Optional company keyword anchor; structured filters can run without it
|
|
2358
|
+
- `--geo-id` (kind=string; repeatable): LinkedIn GeoURN ID; repeat or comma-separate in JSON
|
|
2359
|
+
- `--industry-id` (kind=string; repeatable): Industry ID from `autotouch list-build inputs`; repeat or comma-separate in JSON
|
|
2360
|
+
- `--company-size` (kind=string; repeatable): Company size bucket, e.g. 1-10 or 11-50
|
|
2361
|
+
- `--has-jobs` (kind=boolean; when omitted=False; when present=True): Only include companies with active job listings
|
|
2371
2362
|
|
|
2372
2363
|
#### `autotouch list-build inputs`
|
|
2373
2364
|
|
|
@@ -2378,12 +2369,18 @@ Show valid list-build filter IDs and values
|
|
|
2378
2369
|
- Destructive: `no`
|
|
2379
2370
|
- Output modes: `json, ndjson, human`
|
|
2380
2371
|
- Example:
|
|
2381
|
-
- `autotouch list-build inputs [-h]
|
|
2372
|
+
- `autotouch list-build inputs [-h]
|
|
2373
|
+
[--type {geo,industry,service,title_skill,title-skills}]
|
|
2374
|
+
[--query QUERY] [--limit LIMIT]
|
|
2375
|
+
[--base-url BASE_URL] [--token TOKEN]
|
|
2382
2376
|
[--use-x-api-key] [--timeout TIMEOUT]
|
|
2383
2377
|
[--output {json,ndjson,human}] [--compact]
|
|
2384
2378
|
[--select SELECT |
|
|
2385
2379
|
--json-pointer JSON_POINTER] [--verbose]`
|
|
2386
2380
|
- Options:
|
|
2381
|
+
- `--type` (kind=string; choices=geo,industry,service,title_skill,title-skills): Search input type
|
|
2382
|
+
- `--query` (kind=string): Search text for input ID lookup
|
|
2383
|
+
- `--limit` (kind=integer; default=20): Max lookup results, 1-50
|
|
2387
2384
|
- `--base-url` (kind=string; default=https://app.autotouch.ai): API base URL (default: https://app.autotouch.ai)
|
|
2388
2385
|
- `--token` (kind=string; sensitive): Developer API key / JWT token
|
|
2389
2386
|
- `--use-x-api-key` (kind=boolean; when omitted=False; when present=True): Send token via X-API-Key header
|
|
@@ -2406,15 +2403,7 @@ Build a lead/contact list
|
|
|
2406
2403
|
- `autotouch list-build leads [-h] [--data-json DATA_JSON]
|
|
2407
2404
|
[--data-file DATA_FILE]
|
|
2408
2405
|
[--list-name LIST_NAME]
|
|
2409
|
-
[--
|
|
2410
|
-
[--geo-id GEO_ID]
|
|
2411
|
-
[--industry-id INDUSTRY_ID]
|
|
2412
|
-
[--company-size COMPANY_SIZE]
|
|
2413
|
-
[--current-company-id CURRENT_COMPANY_ID]
|
|
2414
|
-
[--past-company-id PAST_COMPANY_ID]
|
|
2415
|
-
[--school-id SCHOOL_ID]
|
|
2416
|
-
[--profile-language PROFILE_LANGUAGE]
|
|
2417
|
-
[--has-jobs] [--num-results NUM_RESULTS]
|
|
2406
|
+
[--num-results NUM_RESULTS]
|
|
2418
2407
|
[--page-size PAGE_SIZE] [--wait]
|
|
2419
2408
|
[--poll-interval POLL_INTERVAL]
|
|
2420
2409
|
[--wait-timeout WAIT_TIMEOUT]
|
|
@@ -2422,21 +2411,21 @@ Build a lead/contact list
|
|
|
2422
2411
|
[--use-x-api-key] [--timeout TIMEOUT]
|
|
2423
2412
|
[--output {json,ndjson,human}] [--compact]
|
|
2424
2413
|
[--select SELECT |
|
|
2425
|
-
--json-pointer JSON_POINTER] [--verbose]
|
|
2414
|
+
--json-pointer JSON_POINTER] [--verbose]
|
|
2415
|
+
[--keywords KEYWORDS] [--title TITLE]
|
|
2416
|
+
[--geo-id GEO_ID]
|
|
2417
|
+
[--industry-id INDUSTRY_ID]
|
|
2418
|
+
[--current-company-id CURRENT_COMPANY_ID]
|
|
2419
|
+
[--past-company-id PAST_COMPANY_ID]
|
|
2420
|
+
[--school-id SCHOOL_ID]
|
|
2421
|
+
[--profile-language PROFILE_LANGUAGE]
|
|
2422
|
+
[--service-category SERVICE_CATEGORY]
|
|
2423
|
+
[--first-name FIRST_NAME]
|
|
2424
|
+
[--last-name LAST_NAME]`
|
|
2426
2425
|
- Options:
|
|
2427
2426
|
- `--data-json` (kind=json; input=json): Explicit list-build payload JSON
|
|
2428
2427
|
- `--data-file` (kind=file; input=file): Path to list-build payload JSON file
|
|
2429
2428
|
- `--list-name` (kind=string): Optional display name
|
|
2430
|
-
- `--keywords` (kind=string): Search keywords
|
|
2431
|
-
- `--title` (kind=string): Lead title/persona query
|
|
2432
|
-
- `--geo-id` (kind=string; repeatable): Geography ID; repeat or comma-separate in JSON
|
|
2433
|
-
- `--industry-id` (kind=string; repeatable): Industry ID; repeat or comma-separate in JSON
|
|
2434
|
-
- `--company-size` (kind=string; repeatable): Company size bucket, e.g. 1-10 or 11-50
|
|
2435
|
-
- `--current-company-id` (kind=string; repeatable): Company ID for lead search
|
|
2436
|
-
- `--past-company-id` (kind=string; repeatable): Past company ID for lead search
|
|
2437
|
-
- `--school-id` (kind=string; repeatable): School ID for lead search
|
|
2438
|
-
- `--profile-language` (kind=string): Profile language code, e.g. en
|
|
2439
|
-
- `--has-jobs` (kind=boolean; when omitted=False; when present=True): Only include companies with active job listings
|
|
2440
2429
|
- `--num-results` (kind=integer; default=100): Target result count, 1-10000
|
|
2441
2430
|
- `--page-size` (kind=integer; default=25): Provider page size
|
|
2442
2431
|
- `--wait` (kind=boolean; when omitted=False; when present=True): Poll until terminal status
|
|
@@ -2451,6 +2440,17 @@ Build a lead/contact list
|
|
|
2451
2440
|
- `--select` (kind=string): Extract a dotted field path from the final result (for example: id or items.0.id)
|
|
2452
2441
|
- `--json-pointer` (kind=string): Extract a JSON pointer from the final result (for example: /id)
|
|
2453
2442
|
- `--verbose` (kind=boolean; when omitted=False; when present=True): Print request metadata to stderr
|
|
2443
|
+
- `--keywords` (kind=string): Optional free-text profile keyword
|
|
2444
|
+
- `--title` (kind=string): Lead title/persona query
|
|
2445
|
+
- `--geo-id` (kind=string; repeatable): LinkedIn GeoURN ID; repeat or comma-separate in JSON
|
|
2446
|
+
- `--industry-id` (kind=string; repeatable): Industry ID from `autotouch list-build inputs`; repeat or comma-separate in JSON
|
|
2447
|
+
- `--current-company-id` (kind=string; repeatable): Company ID returned by a company list build
|
|
2448
|
+
- `--past-company-id` (kind=string; repeatable): Past company ID for lead search
|
|
2449
|
+
- `--school-id` (kind=string; repeatable): School ID for lead search
|
|
2450
|
+
- `--profile-language` (kind=string): Profile language code, e.g. en
|
|
2451
|
+
- `--service-category` (kind=string): Service category string
|
|
2452
|
+
- `--first-name` (kind=string): First-name filter
|
|
2453
|
+
- `--last-name` (kind=string): Last-name filter
|
|
2454
2454
|
|
|
2455
2455
|
#### `autotouch list-build pricing`
|
|
2456
2456
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.2.
|
|
2
|
+
"version": "0.2.85",
|
|
3
3
|
"manifest_schema_version": 2,
|
|
4
4
|
"entry_points": {
|
|
5
5
|
"autotouch": "autotouch_cli.cli:main",
|
|
@@ -32826,125 +32826,6 @@
|
|
|
32826
32826
|
],
|
|
32827
32827
|
"takes_value": true
|
|
32828
32828
|
},
|
|
32829
|
-
{
|
|
32830
|
-
"dest": "keywords",
|
|
32831
|
-
"required": false,
|
|
32832
|
-
"help": "Search keywords",
|
|
32833
|
-
"kind": "string",
|
|
32834
|
-
"action": "store",
|
|
32835
|
-
"flags": [
|
|
32836
|
-
"--keywords"
|
|
32837
|
-
],
|
|
32838
|
-
"takes_value": true
|
|
32839
|
-
},
|
|
32840
|
-
{
|
|
32841
|
-
"dest": "title",
|
|
32842
|
-
"required": false,
|
|
32843
|
-
"help": "Lead title/persona query",
|
|
32844
|
-
"kind": "string",
|
|
32845
|
-
"action": "store",
|
|
32846
|
-
"flags": [
|
|
32847
|
-
"--title"
|
|
32848
|
-
],
|
|
32849
|
-
"takes_value": true
|
|
32850
|
-
},
|
|
32851
|
-
{
|
|
32852
|
-
"dest": "geo_id",
|
|
32853
|
-
"required": false,
|
|
32854
|
-
"help": "Geography ID; repeat or comma-separate in JSON",
|
|
32855
|
-
"kind": "string",
|
|
32856
|
-
"action": "append",
|
|
32857
|
-
"repeatable": true,
|
|
32858
|
-
"flags": [
|
|
32859
|
-
"--geo-id"
|
|
32860
|
-
],
|
|
32861
|
-
"takes_value": true
|
|
32862
|
-
},
|
|
32863
|
-
{
|
|
32864
|
-
"dest": "industry_id",
|
|
32865
|
-
"required": false,
|
|
32866
|
-
"help": "Industry ID; repeat or comma-separate in JSON",
|
|
32867
|
-
"kind": "string",
|
|
32868
|
-
"action": "append",
|
|
32869
|
-
"repeatable": true,
|
|
32870
|
-
"flags": [
|
|
32871
|
-
"--industry-id"
|
|
32872
|
-
],
|
|
32873
|
-
"takes_value": true
|
|
32874
|
-
},
|
|
32875
|
-
{
|
|
32876
|
-
"dest": "company_size",
|
|
32877
|
-
"required": false,
|
|
32878
|
-
"help": "Company size bucket, e.g. 1-10 or 11-50",
|
|
32879
|
-
"kind": "string",
|
|
32880
|
-
"action": "append",
|
|
32881
|
-
"repeatable": true,
|
|
32882
|
-
"flags": [
|
|
32883
|
-
"--company-size"
|
|
32884
|
-
],
|
|
32885
|
-
"takes_value": true
|
|
32886
|
-
},
|
|
32887
|
-
{
|
|
32888
|
-
"dest": "current_company_id",
|
|
32889
|
-
"required": false,
|
|
32890
|
-
"help": "Company ID for lead search",
|
|
32891
|
-
"kind": "string",
|
|
32892
|
-
"action": "append",
|
|
32893
|
-
"repeatable": true,
|
|
32894
|
-
"flags": [
|
|
32895
|
-
"--current-company-id"
|
|
32896
|
-
],
|
|
32897
|
-
"takes_value": true
|
|
32898
|
-
},
|
|
32899
|
-
{
|
|
32900
|
-
"dest": "past_company_id",
|
|
32901
|
-
"required": false,
|
|
32902
|
-
"help": "Past company ID for lead search",
|
|
32903
|
-
"kind": "string",
|
|
32904
|
-
"action": "append",
|
|
32905
|
-
"repeatable": true,
|
|
32906
|
-
"flags": [
|
|
32907
|
-
"--past-company-id"
|
|
32908
|
-
],
|
|
32909
|
-
"takes_value": true
|
|
32910
|
-
},
|
|
32911
|
-
{
|
|
32912
|
-
"dest": "school_id",
|
|
32913
|
-
"required": false,
|
|
32914
|
-
"help": "School ID for lead search",
|
|
32915
|
-
"kind": "string",
|
|
32916
|
-
"action": "append",
|
|
32917
|
-
"repeatable": true,
|
|
32918
|
-
"flags": [
|
|
32919
|
-
"--school-id"
|
|
32920
|
-
],
|
|
32921
|
-
"takes_value": true
|
|
32922
|
-
},
|
|
32923
|
-
{
|
|
32924
|
-
"dest": "profile_language",
|
|
32925
|
-
"required": false,
|
|
32926
|
-
"help": "Profile language code, e.g. en",
|
|
32927
|
-
"kind": "string",
|
|
32928
|
-
"action": "store",
|
|
32929
|
-
"flags": [
|
|
32930
|
-
"--profile-language"
|
|
32931
|
-
],
|
|
32932
|
-
"takes_value": true
|
|
32933
|
-
},
|
|
32934
|
-
{
|
|
32935
|
-
"dest": "has_jobs",
|
|
32936
|
-
"required": false,
|
|
32937
|
-
"help": "Only include companies with active job listings",
|
|
32938
|
-
"kind": "boolean",
|
|
32939
|
-
"action": "store_true",
|
|
32940
|
-
"nargs": 0,
|
|
32941
|
-
"default_when_omitted": false,
|
|
32942
|
-
"value_when_present": true,
|
|
32943
|
-
"flags": [
|
|
32944
|
-
"--has-jobs"
|
|
32945
|
-
],
|
|
32946
|
-
"takes_value": false
|
|
32947
|
-
},
|
|
32948
32829
|
{
|
|
32949
32830
|
"dest": "num_results",
|
|
32950
32831
|
"required": false,
|
|
@@ -33130,6 +33011,67 @@
|
|
|
33130
33011
|
"--verbose"
|
|
33131
33012
|
],
|
|
33132
33013
|
"takes_value": false
|
|
33014
|
+
},
|
|
33015
|
+
{
|
|
33016
|
+
"dest": "keywords",
|
|
33017
|
+
"required": false,
|
|
33018
|
+
"help": "Optional company keyword anchor; structured filters can run without it",
|
|
33019
|
+
"kind": "string",
|
|
33020
|
+
"action": "store",
|
|
33021
|
+
"flags": [
|
|
33022
|
+
"--keywords"
|
|
33023
|
+
],
|
|
33024
|
+
"takes_value": true
|
|
33025
|
+
},
|
|
33026
|
+
{
|
|
33027
|
+
"dest": "geo_id",
|
|
33028
|
+
"required": false,
|
|
33029
|
+
"help": "LinkedIn GeoURN ID; repeat or comma-separate in JSON",
|
|
33030
|
+
"kind": "string",
|
|
33031
|
+
"action": "append",
|
|
33032
|
+
"repeatable": true,
|
|
33033
|
+
"flags": [
|
|
33034
|
+
"--geo-id"
|
|
33035
|
+
],
|
|
33036
|
+
"takes_value": true
|
|
33037
|
+
},
|
|
33038
|
+
{
|
|
33039
|
+
"dest": "industry_id",
|
|
33040
|
+
"required": false,
|
|
33041
|
+
"help": "Industry ID from `autotouch list-build inputs`; repeat or comma-separate in JSON",
|
|
33042
|
+
"kind": "string",
|
|
33043
|
+
"action": "append",
|
|
33044
|
+
"repeatable": true,
|
|
33045
|
+
"flags": [
|
|
33046
|
+
"--industry-id"
|
|
33047
|
+
],
|
|
33048
|
+
"takes_value": true
|
|
33049
|
+
},
|
|
33050
|
+
{
|
|
33051
|
+
"dest": "company_size",
|
|
33052
|
+
"required": false,
|
|
33053
|
+
"help": "Company size bucket, e.g. 1-10 or 11-50",
|
|
33054
|
+
"kind": "string",
|
|
33055
|
+
"action": "append",
|
|
33056
|
+
"repeatable": true,
|
|
33057
|
+
"flags": [
|
|
33058
|
+
"--company-size"
|
|
33059
|
+
],
|
|
33060
|
+
"takes_value": true
|
|
33061
|
+
},
|
|
33062
|
+
{
|
|
33063
|
+
"dest": "has_jobs",
|
|
33064
|
+
"required": false,
|
|
33065
|
+
"help": "Only include companies with active job listings",
|
|
33066
|
+
"kind": "boolean",
|
|
33067
|
+
"action": "store_true",
|
|
33068
|
+
"nargs": 0,
|
|
33069
|
+
"default_when_omitted": false,
|
|
33070
|
+
"value_when_present": true,
|
|
33071
|
+
"flags": [
|
|
33072
|
+
"--has-jobs"
|
|
33073
|
+
],
|
|
33074
|
+
"takes_value": false
|
|
33133
33075
|
}
|
|
33134
33076
|
],
|
|
33135
33077
|
"mutually_exclusive_groups": [
|
|
@@ -33164,7 +33106,7 @@
|
|
|
33164
33106
|
},
|
|
33165
33107
|
"availability": null,
|
|
33166
33108
|
"examples": [
|
|
33167
|
-
"autotouch list-build companies [-h] [--data-json DATA_JSON]\n [--data-file DATA_FILE]\n [--list-name LIST_NAME]\n [--
|
|
33109
|
+
"autotouch list-build companies [-h] [--data-json DATA_JSON]\n [--data-file DATA_FILE]\n [--list-name LIST_NAME]\n [--num-results NUM_RESULTS]\n [--page-size PAGE_SIZE] [--wait]\n [--poll-interval POLL_INTERVAL]\n [--wait-timeout WAIT_TIMEOUT]\n [--base-url BASE_URL] [--token TOKEN]\n [--use-x-api-key] [--timeout TIMEOUT]\n [--output {json,ndjson,human}]\n [--compact] [--select SELECT |\n --json-pointer JSON_POINTER] [--verbose]\n [--keywords KEYWORDS] [--geo-id GEO_ID]\n [--industry-id INDUSTRY_ID]\n [--company-size COMPANY_SIZE]\n [--has-jobs]"
|
|
33168
33110
|
],
|
|
33169
33111
|
"stability": "stable",
|
|
33170
33112
|
"handler": "_fn"
|
|
@@ -33218,125 +33160,6 @@
|
|
|
33218
33160
|
],
|
|
33219
33161
|
"takes_value": true
|
|
33220
33162
|
},
|
|
33221
|
-
{
|
|
33222
|
-
"dest": "keywords",
|
|
33223
|
-
"required": false,
|
|
33224
|
-
"help": "Search keywords",
|
|
33225
|
-
"kind": "string",
|
|
33226
|
-
"action": "store",
|
|
33227
|
-
"flags": [
|
|
33228
|
-
"--keywords"
|
|
33229
|
-
],
|
|
33230
|
-
"takes_value": true
|
|
33231
|
-
},
|
|
33232
|
-
{
|
|
33233
|
-
"dest": "title",
|
|
33234
|
-
"required": false,
|
|
33235
|
-
"help": "Lead title/persona query",
|
|
33236
|
-
"kind": "string",
|
|
33237
|
-
"action": "store",
|
|
33238
|
-
"flags": [
|
|
33239
|
-
"--title"
|
|
33240
|
-
],
|
|
33241
|
-
"takes_value": true
|
|
33242
|
-
},
|
|
33243
|
-
{
|
|
33244
|
-
"dest": "geo_id",
|
|
33245
|
-
"required": false,
|
|
33246
|
-
"help": "Geography ID; repeat or comma-separate in JSON",
|
|
33247
|
-
"kind": "string",
|
|
33248
|
-
"action": "append",
|
|
33249
|
-
"repeatable": true,
|
|
33250
|
-
"flags": [
|
|
33251
|
-
"--geo-id"
|
|
33252
|
-
],
|
|
33253
|
-
"takes_value": true
|
|
33254
|
-
},
|
|
33255
|
-
{
|
|
33256
|
-
"dest": "industry_id",
|
|
33257
|
-
"required": false,
|
|
33258
|
-
"help": "Industry ID; repeat or comma-separate in JSON",
|
|
33259
|
-
"kind": "string",
|
|
33260
|
-
"action": "append",
|
|
33261
|
-
"repeatable": true,
|
|
33262
|
-
"flags": [
|
|
33263
|
-
"--industry-id"
|
|
33264
|
-
],
|
|
33265
|
-
"takes_value": true
|
|
33266
|
-
},
|
|
33267
|
-
{
|
|
33268
|
-
"dest": "company_size",
|
|
33269
|
-
"required": false,
|
|
33270
|
-
"help": "Company size bucket, e.g. 1-10 or 11-50",
|
|
33271
|
-
"kind": "string",
|
|
33272
|
-
"action": "append",
|
|
33273
|
-
"repeatable": true,
|
|
33274
|
-
"flags": [
|
|
33275
|
-
"--company-size"
|
|
33276
|
-
],
|
|
33277
|
-
"takes_value": true
|
|
33278
|
-
},
|
|
33279
|
-
{
|
|
33280
|
-
"dest": "current_company_id",
|
|
33281
|
-
"required": false,
|
|
33282
|
-
"help": "Company ID for lead search",
|
|
33283
|
-
"kind": "string",
|
|
33284
|
-
"action": "append",
|
|
33285
|
-
"repeatable": true,
|
|
33286
|
-
"flags": [
|
|
33287
|
-
"--current-company-id"
|
|
33288
|
-
],
|
|
33289
|
-
"takes_value": true
|
|
33290
|
-
},
|
|
33291
|
-
{
|
|
33292
|
-
"dest": "past_company_id",
|
|
33293
|
-
"required": false,
|
|
33294
|
-
"help": "Past company ID for lead search",
|
|
33295
|
-
"kind": "string",
|
|
33296
|
-
"action": "append",
|
|
33297
|
-
"repeatable": true,
|
|
33298
|
-
"flags": [
|
|
33299
|
-
"--past-company-id"
|
|
33300
|
-
],
|
|
33301
|
-
"takes_value": true
|
|
33302
|
-
},
|
|
33303
|
-
{
|
|
33304
|
-
"dest": "school_id",
|
|
33305
|
-
"required": false,
|
|
33306
|
-
"help": "School ID for lead search",
|
|
33307
|
-
"kind": "string",
|
|
33308
|
-
"action": "append",
|
|
33309
|
-
"repeatable": true,
|
|
33310
|
-
"flags": [
|
|
33311
|
-
"--school-id"
|
|
33312
|
-
],
|
|
33313
|
-
"takes_value": true
|
|
33314
|
-
},
|
|
33315
|
-
{
|
|
33316
|
-
"dest": "profile_language",
|
|
33317
|
-
"required": false,
|
|
33318
|
-
"help": "Profile language code, e.g. en",
|
|
33319
|
-
"kind": "string",
|
|
33320
|
-
"action": "store",
|
|
33321
|
-
"flags": [
|
|
33322
|
-
"--profile-language"
|
|
33323
|
-
],
|
|
33324
|
-
"takes_value": true
|
|
33325
|
-
},
|
|
33326
|
-
{
|
|
33327
|
-
"dest": "has_jobs",
|
|
33328
|
-
"required": false,
|
|
33329
|
-
"help": "Only include companies with active job listings",
|
|
33330
|
-
"kind": "boolean",
|
|
33331
|
-
"action": "store_true",
|
|
33332
|
-
"nargs": 0,
|
|
33333
|
-
"default_when_omitted": false,
|
|
33334
|
-
"value_when_present": true,
|
|
33335
|
-
"flags": [
|
|
33336
|
-
"--has-jobs"
|
|
33337
|
-
],
|
|
33338
|
-
"takes_value": false
|
|
33339
|
-
},
|
|
33340
33163
|
{
|
|
33341
33164
|
"dest": "num_results",
|
|
33342
33165
|
"required": false,
|
|
@@ -33522,6 +33345,132 @@
|
|
|
33522
33345
|
"--verbose"
|
|
33523
33346
|
],
|
|
33524
33347
|
"takes_value": false
|
|
33348
|
+
},
|
|
33349
|
+
{
|
|
33350
|
+
"dest": "keywords",
|
|
33351
|
+
"required": false,
|
|
33352
|
+
"help": "Optional free-text profile keyword",
|
|
33353
|
+
"kind": "string",
|
|
33354
|
+
"action": "store",
|
|
33355
|
+
"flags": [
|
|
33356
|
+
"--keywords"
|
|
33357
|
+
],
|
|
33358
|
+
"takes_value": true
|
|
33359
|
+
},
|
|
33360
|
+
{
|
|
33361
|
+
"dest": "title",
|
|
33362
|
+
"required": false,
|
|
33363
|
+
"help": "Lead title/persona query",
|
|
33364
|
+
"kind": "string",
|
|
33365
|
+
"action": "store",
|
|
33366
|
+
"flags": [
|
|
33367
|
+
"--title"
|
|
33368
|
+
],
|
|
33369
|
+
"takes_value": true
|
|
33370
|
+
},
|
|
33371
|
+
{
|
|
33372
|
+
"dest": "geo_id",
|
|
33373
|
+
"required": false,
|
|
33374
|
+
"help": "LinkedIn GeoURN ID; repeat or comma-separate in JSON",
|
|
33375
|
+
"kind": "string",
|
|
33376
|
+
"action": "append",
|
|
33377
|
+
"repeatable": true,
|
|
33378
|
+
"flags": [
|
|
33379
|
+
"--geo-id"
|
|
33380
|
+
],
|
|
33381
|
+
"takes_value": true
|
|
33382
|
+
},
|
|
33383
|
+
{
|
|
33384
|
+
"dest": "industry_id",
|
|
33385
|
+
"required": false,
|
|
33386
|
+
"help": "Industry ID from `autotouch list-build inputs`; repeat or comma-separate in JSON",
|
|
33387
|
+
"kind": "string",
|
|
33388
|
+
"action": "append",
|
|
33389
|
+
"repeatable": true,
|
|
33390
|
+
"flags": [
|
|
33391
|
+
"--industry-id"
|
|
33392
|
+
],
|
|
33393
|
+
"takes_value": true
|
|
33394
|
+
},
|
|
33395
|
+
{
|
|
33396
|
+
"dest": "current_company_id",
|
|
33397
|
+
"required": false,
|
|
33398
|
+
"help": "Company ID returned by a company list build",
|
|
33399
|
+
"kind": "string",
|
|
33400
|
+
"action": "append",
|
|
33401
|
+
"repeatable": true,
|
|
33402
|
+
"flags": [
|
|
33403
|
+
"--current-company-id"
|
|
33404
|
+
],
|
|
33405
|
+
"takes_value": true
|
|
33406
|
+
},
|
|
33407
|
+
{
|
|
33408
|
+
"dest": "past_company_id",
|
|
33409
|
+
"required": false,
|
|
33410
|
+
"help": "Past company ID for lead search",
|
|
33411
|
+
"kind": "string",
|
|
33412
|
+
"action": "append",
|
|
33413
|
+
"repeatable": true,
|
|
33414
|
+
"flags": [
|
|
33415
|
+
"--past-company-id"
|
|
33416
|
+
],
|
|
33417
|
+
"takes_value": true
|
|
33418
|
+
},
|
|
33419
|
+
{
|
|
33420
|
+
"dest": "school_id",
|
|
33421
|
+
"required": false,
|
|
33422
|
+
"help": "School ID for lead search",
|
|
33423
|
+
"kind": "string",
|
|
33424
|
+
"action": "append",
|
|
33425
|
+
"repeatable": true,
|
|
33426
|
+
"flags": [
|
|
33427
|
+
"--school-id"
|
|
33428
|
+
],
|
|
33429
|
+
"takes_value": true
|
|
33430
|
+
},
|
|
33431
|
+
{
|
|
33432
|
+
"dest": "profile_language",
|
|
33433
|
+
"required": false,
|
|
33434
|
+
"help": "Profile language code, e.g. en",
|
|
33435
|
+
"kind": "string",
|
|
33436
|
+
"action": "store",
|
|
33437
|
+
"flags": [
|
|
33438
|
+
"--profile-language"
|
|
33439
|
+
],
|
|
33440
|
+
"takes_value": true
|
|
33441
|
+
},
|
|
33442
|
+
{
|
|
33443
|
+
"dest": "service_category",
|
|
33444
|
+
"required": false,
|
|
33445
|
+
"help": "Service category string",
|
|
33446
|
+
"kind": "string",
|
|
33447
|
+
"action": "store",
|
|
33448
|
+
"flags": [
|
|
33449
|
+
"--service-category"
|
|
33450
|
+
],
|
|
33451
|
+
"takes_value": true
|
|
33452
|
+
},
|
|
33453
|
+
{
|
|
33454
|
+
"dest": "first_name",
|
|
33455
|
+
"required": false,
|
|
33456
|
+
"help": "First-name filter",
|
|
33457
|
+
"kind": "string",
|
|
33458
|
+
"action": "store",
|
|
33459
|
+
"flags": [
|
|
33460
|
+
"--first-name"
|
|
33461
|
+
],
|
|
33462
|
+
"takes_value": true
|
|
33463
|
+
},
|
|
33464
|
+
{
|
|
33465
|
+
"dest": "last_name",
|
|
33466
|
+
"required": false,
|
|
33467
|
+
"help": "Last-name filter",
|
|
33468
|
+
"kind": "string",
|
|
33469
|
+
"action": "store",
|
|
33470
|
+
"flags": [
|
|
33471
|
+
"--last-name"
|
|
33472
|
+
],
|
|
33473
|
+
"takes_value": true
|
|
33525
33474
|
}
|
|
33526
33475
|
],
|
|
33527
33476
|
"mutually_exclusive_groups": [
|
|
@@ -33556,7 +33505,7 @@
|
|
|
33556
33505
|
},
|
|
33557
33506
|
"availability": null,
|
|
33558
33507
|
"examples": [
|
|
33559
|
-
"autotouch list-build leads [-h] [--data-json DATA_JSON]\n [--data-file DATA_FILE]\n [--list-name LIST_NAME]\n [--
|
|
33508
|
+
"autotouch list-build leads [-h] [--data-json DATA_JSON]\n [--data-file DATA_FILE]\n [--list-name LIST_NAME]\n [--num-results NUM_RESULTS]\n [--page-size PAGE_SIZE] [--wait]\n [--poll-interval POLL_INTERVAL]\n [--wait-timeout WAIT_TIMEOUT]\n [--base-url BASE_URL] [--token TOKEN]\n [--use-x-api-key] [--timeout TIMEOUT]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER] [--verbose]\n [--keywords KEYWORDS] [--title TITLE]\n [--geo-id GEO_ID]\n [--industry-id INDUSTRY_ID]\n [--current-company-id CURRENT_COMPANY_ID]\n [--past-company-id PAST_COMPANY_ID]\n [--school-id SCHOOL_ID]\n [--profile-language PROFILE_LANGUAGE]\n [--service-category SERVICE_CATEGORY]\n [--first-name FIRST_NAME]\n [--last-name LAST_NAME]"
|
|
33560
33509
|
],
|
|
33561
33510
|
"stability": "stable",
|
|
33562
33511
|
"handler": "_fn"
|
|
@@ -33990,6 +33939,48 @@
|
|
|
33990
33939
|
"required_flags": [],
|
|
33991
33940
|
"positionals": [],
|
|
33992
33941
|
"options": [
|
|
33942
|
+
{
|
|
33943
|
+
"dest": "type",
|
|
33944
|
+
"required": false,
|
|
33945
|
+
"help": "Search input type",
|
|
33946
|
+
"kind": "string",
|
|
33947
|
+
"action": "store",
|
|
33948
|
+
"choices": [
|
|
33949
|
+
"geo",
|
|
33950
|
+
"industry",
|
|
33951
|
+
"service",
|
|
33952
|
+
"title_skill",
|
|
33953
|
+
"title-skills"
|
|
33954
|
+
],
|
|
33955
|
+
"flags": [
|
|
33956
|
+
"--type"
|
|
33957
|
+
],
|
|
33958
|
+
"takes_value": true
|
|
33959
|
+
},
|
|
33960
|
+
{
|
|
33961
|
+
"dest": "query",
|
|
33962
|
+
"required": false,
|
|
33963
|
+
"help": "Search text for input ID lookup",
|
|
33964
|
+
"kind": "string",
|
|
33965
|
+
"action": "store",
|
|
33966
|
+
"flags": [
|
|
33967
|
+
"--query"
|
|
33968
|
+
],
|
|
33969
|
+
"takes_value": true
|
|
33970
|
+
},
|
|
33971
|
+
{
|
|
33972
|
+
"dest": "limit",
|
|
33973
|
+
"required": false,
|
|
33974
|
+
"help": "Max lookup results, 1-50",
|
|
33975
|
+
"kind": "integer",
|
|
33976
|
+
"action": "store",
|
|
33977
|
+
"default_when_omitted": 20,
|
|
33978
|
+
"default": 20,
|
|
33979
|
+
"flags": [
|
|
33980
|
+
"--limit"
|
|
33981
|
+
],
|
|
33982
|
+
"takes_value": true
|
|
33983
|
+
},
|
|
33993
33984
|
{
|
|
33994
33985
|
"dest": "base_url",
|
|
33995
33986
|
"required": false,
|
|
@@ -34143,7 +34134,7 @@
|
|
|
34143
34134
|
},
|
|
34144
34135
|
"availability": null,
|
|
34145
34136
|
"examples": [
|
|
34146
|
-
"autotouch list-build inputs [-h] [--base-url BASE_URL] [--token TOKEN]\n [--use-x-api-key] [--timeout TIMEOUT]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER] [--verbose]"
|
|
34137
|
+
"autotouch list-build inputs [-h]\n [--type {geo,industry,service,title_skill,title-skills}]\n [--query QUERY] [--limit LIMIT]\n [--base-url BASE_URL] [--token TOKEN]\n [--use-x-api-key] [--timeout TIMEOUT]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER] [--verbose]"
|
|
34147
34138
|
],
|
|
34148
34139
|
"stability": "stable",
|
|
34149
34140
|
"handler": "_fn"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: autotouch-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.85
|
|
4
4
|
Summary: Autotouch Smart Table CLI
|
|
5
5
|
Project-URL: Homepage, https://app.autotouch.ai
|
|
6
6
|
Project-URL: Documentation, https://github.com/nicolonic/autotouch_main/tree/main/docs/research-table/reference
|
|
@@ -150,7 +150,7 @@ Use `autotouch search companies` and `autotouch search people` for neural search
|
|
|
150
150
|
|
|
151
151
|
Use `autotouch list-build companies` and `autotouch list-build leads` for structured, repeatable list construction. This is the only CLI path for building LinkedIn-sourced company and lead lists. Treat list builds as the sourcing step for the Smart Table research workspace: build company/account records first by default, add the records to a research table, then enrich, score, segment, find related leads, attach signals/notes, and continue downstream workflows from that table. Use lead builds directly when the request is explicitly person/contact focused. This path uses Autotouch-managed provider access, so users do not need to connect their own LinkedIn account. Use filters like geography IDs, company size, industry IDs, title/persona, and current company IDs; call `autotouch list-build inputs` for supported values. Durable list builds run as background jobs with status/results endpoints and cost 1 credit per successful non-empty result page.
|
|
152
152
|
|
|
153
|
-
For structured company builds, start with industry IDs plus geo/company-size filters.
|
|
153
|
+
For structured company builds, start with industry IDs plus geo/company-size filters. User-supplied `keywords` are optional when structured filters are present; use them only to refine, disambiguate, or recover hard-to-classify targets instead of carrying the whole target definition.
|
|
154
154
|
|
|
155
155
|
For account-first prospecting, build companies/accounts first, inspect the returned company IDs, then pass those IDs to `autotouch list-build leads --current-company-id ...`. Do not use neural search as a default pre-step for every list build; use it when the user's target is genuinely semantic or niche.
|
|
156
156
|
|
|
@@ -160,7 +160,7 @@ For automation or agent-driven setup, use:
|
|
|
160
160
|
- `autotouch cli-manifest --output json` for the local machine-readable command contract
|
|
161
161
|
- `autotouch cli-reference` for the shipped parser-generated reference
|
|
162
162
|
- `autotouch capabilities --output json` for provider/workflow contracts
|
|
163
|
-
- `autotouch --version` should be `0.2.
|
|
163
|
+
- `autotouch --version` should be `0.2.85` or newer for structured company list builds without user-supplied keywords, stored list-build input lookup, research-workspace list-build guidance, and the cleaned single LinkedIn-sourced list-build path
|
|
164
164
|
- `autotouch capabilities --output json --select list_builds` for documented list-build inputs such as geography IDs, company size buckets, profile language, and company IDs
|
|
165
165
|
- `autotouch list-build inputs` and `autotouch list-build pricing` before creating durable list-build jobs
|
|
166
166
|
- `autotouch list-build companies` and `autotouch list-build leads` for durable LinkedIn-sourced company and lead list builds with Smart Table-owned background workers, visible progress, and no user-owned LinkedIn connection requirement
|
|
@@ -16,7 +16,7 @@ _LIST_BUILD_ENDPOINTS: Dict[str, Dict[str, Any]] = {
|
|
|
16
16
|
"body": {
|
|
17
17
|
"kind": "required companies|leads",
|
|
18
18
|
"list_name": "optional display name",
|
|
19
|
-
"keywords": "
|
|
19
|
+
"keywords": "optional broad anchor for company builds with structured filters; optional lead keywords; use with structured filters, not as the sole targeting definition",
|
|
20
20
|
"title": "optional lead title/persona query",
|
|
21
21
|
"num_results": "optional 1-10000 target result count",
|
|
22
22
|
"page_size": "optional provider page size; leads capped to 50",
|
|
@@ -26,7 +26,12 @@ _LIST_BUILD_ENDPOINTS: Dict[str, Dict[str, Any]] = {
|
|
|
26
26
|
"company_sizes": "optional company size buckets: 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10,000, 10,001+",
|
|
27
27
|
"has_jobs": "optional boolean for company lists",
|
|
28
28
|
"current_company_ids": "optional company IDs returned by company list builds; used for lead lists",
|
|
29
|
+
"past_company_ids": "optional past company IDs for lead lists",
|
|
30
|
+
"school_ids": "optional school IDs for lead lists",
|
|
29
31
|
"profile_language": "optional language code such as en",
|
|
32
|
+
"service_category": "optional service category string for lead lists",
|
|
33
|
+
"first_name": "optional first-name filter for lead lists",
|
|
34
|
+
"last_name": "optional last-name filter for lead lists",
|
|
30
35
|
},
|
|
31
36
|
},
|
|
32
37
|
"notes": "LinkedIn-sourced durable list build through Autotouch-managed provider access. Does not require a user-owned LinkedIn connection. Use it to source company/account or lead records for the Smart Table research workspace.",
|
|
@@ -59,6 +64,17 @@ _LIST_BUILD_ENDPOINTS: Dict[str, Dict[str, Any]] = {
|
|
|
59
64
|
"required_scope": LIST_BUILD_SCOPE,
|
|
60
65
|
"notes": "Returns documented input IDs and filter values for company and lead list builds.",
|
|
61
66
|
},
|
|
67
|
+
"list_build_input_search": {
|
|
68
|
+
"method": "GET",
|
|
69
|
+
"path": "/api/list-builds/inputs/search",
|
|
70
|
+
"required_scope": LIST_BUILD_SCOPE,
|
|
71
|
+
"query": {
|
|
72
|
+
"type": "required geo|industry|service|title_skill",
|
|
73
|
+
"q": "required lookup text; query is also accepted as an alias",
|
|
74
|
+
"limit": "optional 1-50 result count",
|
|
75
|
+
},
|
|
76
|
+
"notes": "Searches Autotouch's stored LinkedIn-sourced input catalog and refreshes missing lookup values internally. Responses do not expose the underlying data vendor.",
|
|
77
|
+
},
|
|
62
78
|
}
|
|
63
79
|
|
|
64
80
|
_LIST_BUILD_CAPABILITIES: Dict[str, Any] = {
|
|
@@ -73,16 +89,27 @@ _LIST_BUILD_CAPABILITIES: Dict[str, Any] = {
|
|
|
73
89
|
"lead_flow": "Use lead builds directly when the request is explicitly person/contact focused; otherwise derive leads from company/account results.",
|
|
74
90
|
},
|
|
75
91
|
"known_input_ids": {
|
|
76
|
-
"geo_ids": {
|
|
92
|
+
"geo_ids": {
|
|
93
|
+
"Australia": "101452733",
|
|
94
|
+
"Canada": "101174742",
|
|
95
|
+
"France": "105015875",
|
|
96
|
+
"Germany": "101282230",
|
|
97
|
+
"India": "102713980",
|
|
98
|
+
"United Kingdom": "101165590",
|
|
99
|
+
"United States": "103644278",
|
|
100
|
+
},
|
|
101
|
+
"geo_ids_note": "Examples only; /api/list-builds accepts arbitrary valid LinkedIn GeoURN IDs.",
|
|
77
102
|
"company_size_buckets": ["1-10", "11-50", "51-200", "201-500", "501-1000", "1001-5000", "5001-10,000", "10,001+"],
|
|
103
|
+
"industry_catalog": "GET /api/list-builds/inputs returns 434 active LinkedIn Industry Codes V2 IDs plus inactive/deprecated IDs.",
|
|
104
|
+
"input_search": "GET /api/list-builds/inputs/search resolves geo, industry, service, and title_skill values from Autotouch's stored input catalog.",
|
|
78
105
|
"profile_language_examples": ["en"],
|
|
79
106
|
},
|
|
80
107
|
"targeting_guidance": [
|
|
81
108
|
"Use this as the only company/lead list-building path.",
|
|
82
109
|
"Call `autotouch list-build inputs` before choosing geography, industry, size, language, or company-ID filters.",
|
|
83
110
|
"Start company/account targeting with industry_ids, geo_ids, and company_sizes.",
|
|
84
|
-
"Company builds
|
|
85
|
-
"Use keywords to refine, disambiguate, or recover hard-to-classify targets; avoid keywords-only list builds except for exploratory searches.",
|
|
111
|
+
"Company builds do not require user-supplied keywords when structured filters are present.",
|
|
112
|
+
"Use keywords only to refine, disambiguate, or recover hard-to-classify targets; avoid keywords-only list builds except for exploratory searches.",
|
|
86
113
|
],
|
|
87
114
|
"workflow": [
|
|
88
115
|
"Use this as the only company/lead list-building path.",
|
|
@@ -98,7 +125,9 @@ _LIST_BUILD_CAPABILITIES: Dict[str, Any] = {
|
|
|
98
125
|
},
|
|
99
126
|
"recommended_cli": [
|
|
100
127
|
"autotouch list-build inputs",
|
|
101
|
-
"autotouch list-build
|
|
128
|
+
"autotouch list-build inputs --type geo --query 'Washington'",
|
|
129
|
+
"autotouch list-build inputs --type industry --query 'software'",
|
|
130
|
+
"autotouch list-build companies --geo-id 103644278 --industry-id <industry_id> --company-size 1-10 --num-results 1000 --wait",
|
|
102
131
|
"autotouch list-build leads --title 'Account Executive OR SDR' --current-company-id <company_id> --profile-language en --num-results 500 --wait",
|
|
103
132
|
"autotouch list-build status --job-id <job_id>",
|
|
104
133
|
"autotouch list-build results --job-id <job_id> --type companies",
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|