@bowmark/web 1.21.0 → 1.22.0
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.
- package/README.md +18 -4
- package/dist/generated/library.d.ts +684 -16
- package/dist/generated/validators.js +671 -10
- package/dist/transport.d.ts +16 -2
- package/dist/transport.js +12 -2
- package/package.json +1 -1
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
// rather than imported. An `import` or `export` at the top level of this file would
|
|
6
6
|
// turn it into a module and every declaration below would stop being global.
|
|
7
7
|
//
|
|
8
|
-
// Manifest version:
|
|
9
|
-
//
|
|
8
|
+
// Manifest version: 629f1aeb04463086ca99af95377a310bbd807733f6a06b36d16890fbc8e3314d
|
|
9
|
+
// 48 capabilities, 410 providers, 1008 typed functions, 20 refused.
|
|
10
10
|
// 51,715 family members, sharing 2 interface(s) — declared once and pointed at, never repeated per member.
|
|
11
11
|
//
|
|
12
12
|
// REFUSED — these functions are real and callable, and their declared arguments
|
|
@@ -36,6 +36,125 @@
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
|
|
39
|
+
declare namespace BowmarkCapability_booking_links {
|
|
40
|
+
// ── Booking links — find a person's Calendly or Cal.com link and read its form — the unit's own declarations, verbatim ──
|
|
41
|
+
type BookingPlatform = "calendly" | "cal.com" | "savvycal" | "tidycal" | "zcal" | "hubspot"
|
|
42
|
+
| "acuity" | "chilipiper" | "google-calendar" | "microsoft-bookings"
|
|
43
|
+
|
|
44
|
+
// published: READ off a page (foundOn is the citation). archived: read off an old
|
|
45
|
+
// Wayback capture of a page (archivedAt dates it). indexed: Google's site:cal.com search for
|
|
46
|
+
// the name returned it (context quotes the result). name_match: built from the name and
|
|
47
|
+
// it exists — nothing shows the person published it, and a namesake can own it.
|
|
48
|
+
type BookingLinkMethod = "published" | "archived" | "indexed" | "name_match"
|
|
49
|
+
|
|
50
|
+
interface BookingLinkFinding {
|
|
51
|
+
url: string
|
|
52
|
+
platform: BookingPlatform
|
|
53
|
+
method: BookingLinkMethod // the strongest way it was found
|
|
54
|
+
foundBy: BookingLinkMethod[] // every way it was found
|
|
55
|
+
foundOn: string | null // the page it was written on
|
|
56
|
+
archivedAt: string | null // YYYY-MM-DD capture date, for "archived"
|
|
57
|
+
archiveUrl: string | null
|
|
58
|
+
context: string | null // the link's anchor text or the words around it
|
|
59
|
+
ownerName: string | null // the name the booking page itself shows (name_match)
|
|
60
|
+
nameConfirmed: boolean // name_match: page owner carries both names; published/archived: the name is on that page
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
interface FindBookingLinksInput {
|
|
64
|
+
name: string // full name, first and last
|
|
65
|
+
company?: string // name or domain — adds "first-company" slugs
|
|
66
|
+
domain?: string // their company site: about/team/contact/services pages + homepage scanned
|
|
67
|
+
github?: string // a handle READ off a page that names them, never guessed
|
|
68
|
+
urls?: string[] // personal site, speaker bio, blog post — any page of theirs
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
interface FindBookingLinksOptions {
|
|
72
|
+
archive?: boolean // read Wayback captures of the domain's about/team/contact pages; default true with a domain
|
|
73
|
+
search?: boolean // Google site:cal.com "<name>" via Serper; default true; each search is charged to your account, or send your own key as the x-bowmark-vendor-key-serper header
|
|
74
|
+
timeoutMs?: number
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
interface BookingLinkSearch {
|
|
78
|
+
name: string
|
|
79
|
+
links: BookingLinkFinding[] // published first, then archived, then name_match
|
|
80
|
+
checked: { pagesScanned: number; pagesUnreachable: string[]; archivedPagesRead: number; slugsChecked: string[] }
|
|
81
|
+
warnings: string[]
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
interface PublishedBookingLink { url: string; platform: BookingPlatform; context: string; nearbyText: string }
|
|
85
|
+
interface PageScan { url: string; finalUrl: string; status: number; links: PublishedBookingLink[]; warnings: string[] }
|
|
86
|
+
|
|
87
|
+
interface BookingQuestion { label: string; kind: string; required: boolean; choices: string[] }
|
|
88
|
+
interface BookingEvent { name: string; url: string; description: string | null; durationMinutes: number | null }
|
|
89
|
+
|
|
90
|
+
interface BookingPage {
|
|
91
|
+
url: string
|
|
92
|
+
platform: "calendly" | "cal.com"
|
|
93
|
+
ownerName: string | null
|
|
94
|
+
organization: string | null // the org/team the platform files the account under (Cal.com)
|
|
95
|
+
avatarUrl: string | null
|
|
96
|
+
events: BookingEvent[] // every event a profile lists
|
|
97
|
+
event: BookingEvent | null // the event whose form was read; null if several and none named
|
|
98
|
+
questions: BookingQuestion[] // everything the form asks
|
|
99
|
+
qualifyingQuestions: string[] // the questions beyond name/email/notes — "company", "team size": a sales funnel asks these, a personal chat does not
|
|
100
|
+
bookable: "open" | "fully_booked" | "closed" | "unknown" // Cal.com is always "unknown" here; use cal_com.getAvailability
|
|
101
|
+
nextAvailability: string | null
|
|
102
|
+
unavailableReason: string | null // the platform's own words when it cannot be booked
|
|
103
|
+
warnings: string[]
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
interface ReadBookingPageOptions { event?: string; timeoutMs?: number }
|
|
107
|
+
|
|
108
|
+
type CallOptions = {
|
|
109
|
+
timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
|
|
110
|
+
// A provider slower than this is DROPPED from the results and
|
|
111
|
+
// NAMED in warnings — never silently absent
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Finds the public booking link (Calendly, Cal.com, SavvyCal, HubSpot…) a named person
|
|
116
|
+
* publishes — on their company's pages, their GitHub, an old archived copy of their site, or
|
|
117
|
+
* under their own name on Calendly and Cal.com — and reads what the booking form asks and
|
|
118
|
+
* whether the calendar is open, without booking anything.
|
|
119
|
+
*/
|
|
120
|
+
interface Unit {
|
|
121
|
+
/**
|
|
122
|
+
* Finds a person's public booking links from their name. Runs four searches at once and merges
|
|
123
|
+
* them, strongest evidence first: links PUBLISHED on their company's
|
|
124
|
+
* about/team/contact/services pages and homepage, their GitHub profile README, the website
|
|
125
|
+
* that profile lists and any `urls` of theirs (each with the page it was on and the words
|
|
126
|
+
* around it); links on ARCHIVED Wayback Machine captures of the company's about/team/contact
|
|
127
|
+
* pages, dated (catches a link since removed); Cal.com pages Google has INDEXED under their
|
|
128
|
+
* name (a `site:cal.com "<name>"` Google search through Serper — each search is charged to
|
|
129
|
+
* your account on Bowmark's key, or send your own as the `x-bowmark-vendor-key-serper` header;
|
|
130
|
+
* if no key can serve it, it is skipped and named in `warnings`); and their name as a slug on
|
|
131
|
+
* Calendly and Cal.com, including "first-company" shapes (NAME_MATCH — exists, but a namesake
|
|
132
|
+
* can own it, so check `ownerName` and tie it to the company). Pass `company` and `domain`
|
|
133
|
+
* whenever known. Google does not index Calendly pages, so the slug check is the only way to
|
|
134
|
+
* find those. Never books.
|
|
135
|
+
*/
|
|
136
|
+
find(person: FindBookingLinksInput, options?: FindBookingLinksOptions): Promise<BookingLinkSearch>;
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Lists every booking link written on one page — hrefs, Cal.com embed buttons
|
|
140
|
+
* (`data-cal-link`) and plain-text links — with each link's anchor text and the words around
|
|
141
|
+
* it, ignoring the platforms' own pricing/login/blog pages. Use it on a personal site, a
|
|
142
|
+
* speaker bio or a newsletter footer.
|
|
143
|
+
*/
|
|
144
|
+
scanPage(url: string, options?: CallOptions): Promise<PageScan>;
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Reads a Calendly or Cal.com booking page without booking: who owns it, the events it offers,
|
|
148
|
+
* every question its form asks, `qualifyingQuestions` (anything beyond name/email/notes — a
|
|
149
|
+
* sales funnel asks for your company, a personal chat does not), and whether it can be booked
|
|
150
|
+
* (Calendly: open, fully booked, or closed with the platform's own reason). Works on a
|
|
151
|
+
* fully-booked calendar. A profile with several events returns `event: null` and the list
|
|
152
|
+
* unless `options.event` names one (slug or part of the name).
|
|
153
|
+
*/
|
|
154
|
+
read(url: string, options?: ReadBookingPageOptions): Promise<BookingPage>;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
39
158
|
declare namespace BowmarkCapability_bundles {
|
|
40
159
|
// ── Check whether a set of products can be built and bought right now — the unit's own declarations, verbatim ──
|
|
41
160
|
interface BundleItemAvailability {
|
|
@@ -291,6 +410,25 @@ type CallOptions = {
|
|
|
291
410
|
}
|
|
292
411
|
}
|
|
293
412
|
|
|
413
|
+
declare namespace BowmarkCapability_currency_exchange {
|
|
414
|
+
// ── Currency exchange — the unit's own declarations, verbatim ──
|
|
415
|
+
interface currency_exchangeResult {
|
|
416
|
+
rate: number;
|
|
417
|
+
warnings: string[];
|
|
418
|
+
}
|
|
419
|
+
type CallOptions = {
|
|
420
|
+
timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
|
|
421
|
+
// A provider slower than this is DROPPED from the results and
|
|
422
|
+
// NAMED in warnings — never silently absent
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
/** Get real-time exchange rates between currencies */
|
|
426
|
+
interface Unit {
|
|
427
|
+
/** Returns the current exchange rate between two currencies */
|
|
428
|
+
getRate(from: string, to: string, options?: CallOptions): Promise<currency_exchangeResult>;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
|
|
294
432
|
declare namespace BowmarkCapability_custom_sofa_configurator {
|
|
295
433
|
// ── Custom sofa configurator (fabric selection, live pricing) — the unit's own declarations, verbatim ──
|
|
296
434
|
type CustomSofa = {
|
|
@@ -4402,11 +4540,59 @@ interface archive_orgAvailability {
|
|
|
4402
4540
|
archivedStatus: string | null; // the original page's own HTTP status when captured
|
|
4403
4541
|
}
|
|
4404
4542
|
|
|
4543
|
+
interface archive_orgSnapshotOptions {
|
|
4544
|
+
scope?: "exact" | "prefix"; // default: "prefix" for a bare domain (every page under it), "exact" for a url with a path
|
|
4545
|
+
limit?: number; // 1-500, default 50 — newest first
|
|
4546
|
+
pathContains?: string[]; // keep only urls whose path contains one of these, e.g. ["about", "team", "contact"]
|
|
4547
|
+
}
|
|
4548
|
+
|
|
4549
|
+
interface archive_orgSnapshot {
|
|
4550
|
+
timestamp: string; // YYYYMMDDhhmmss
|
|
4551
|
+
originalUrl: string;
|
|
4552
|
+
archivedUrl: string; // the browsable capture, web.archive.org/web/<ts>/<url>
|
|
4553
|
+
statusCode: string;
|
|
4554
|
+
mimeType: string;
|
|
4555
|
+
}
|
|
4556
|
+
|
|
4557
|
+
interface archive_orgSnapshotList {
|
|
4558
|
+
query: string;
|
|
4559
|
+
scope: "exact" | "prefix";
|
|
4560
|
+
snapshots: archive_orgSnapshot[]; // prefix: newest capture of each distinct url; exact: each distinct VERSION of the page
|
|
4561
|
+
warnings: string[];
|
|
4562
|
+
}
|
|
4563
|
+
|
|
4564
|
+
interface archive_orgSnapshotPage {
|
|
4565
|
+
originalUrl: string;
|
|
4566
|
+
timestamp: string;
|
|
4567
|
+
archivedUrl: string;
|
|
4568
|
+
html: string; // the ORIGINAL bytes as captured, without the archive's toolbar or rewritten links
|
|
4569
|
+
warnings: string[];
|
|
4570
|
+
}
|
|
4571
|
+
|
|
4405
4572
|
/**
|
|
4406
|
-
* The Wayback Machine
|
|
4407
|
-
*
|
|
4573
|
+
* The Wayback Machine — is a site or page archived, every capture it holds, and the page
|
|
4574
|
+
* itself as it was captured, so a caller can see what a site published before it was changed
|
|
4575
|
+
* or removed.
|
|
4408
4576
|
*/
|
|
4409
4577
|
interface Unit {
|
|
4578
|
+
/**
|
|
4579
|
+
* Lists what the Wayback Machine has captured, newest first. A bare domain ("humanlayer.dev")
|
|
4580
|
+
* returns the newest capture of every distinct page under it — narrow it with `pathContains:
|
|
4581
|
+
* ["about", "team", "contact"]`. A url with a path returns every distinct VERSION of that one
|
|
4582
|
+
* page, which is the axis that answers "was this ever on the page". Each row carries the
|
|
4583
|
+
* capture timestamp, the original url and its browsable archive url. Use getSnapshot to read
|
|
4584
|
+
* one.
|
|
4585
|
+
*/
|
|
4586
|
+
listSnapshots(site: string, opts?: archive_orgSnapshotOptions): Promise<archive_orgSnapshotList>;
|
|
4587
|
+
|
|
4588
|
+
/**
|
|
4589
|
+
* Reads one archived page as it was captured — the original HTML, without the archive's
|
|
4590
|
+
* toolbar or rewritten links — for a url and a `YYYYMMDDhhmmss` timestamp from listSnapshots
|
|
4591
|
+
* (a nearby timestamp is redirected to the closest capture). Use it to find something a page
|
|
4592
|
+
* carried in the past and has since removed.
|
|
4593
|
+
*/
|
|
4594
|
+
getSnapshot(url: string, timestamp: string): Promise<archive_orgSnapshotPage>;
|
|
4595
|
+
|
|
4410
4596
|
/**
|
|
4411
4597
|
* Checks the Wayback Machine's own public availability endpoint for one site or page — a bare
|
|
4412
4598
|
* domain ("carpetlandusa.net"), a domain plus path
|
|
@@ -5896,15 +6082,17 @@ interface bestbuyProduct {
|
|
|
5896
6082
|
* Runs a Best Buy product search the way bestbuy.com's own search box does, via Best Buy's
|
|
5897
6083
|
* documented Products API, and returns the matching products — name, sale/regular price,
|
|
5898
6084
|
* online and in-store availability, manufacturer, model number, UPC and review stats.
|
|
5899
|
-
* `pageSize` caps the row count (default 10, Best Buy's own ceiling 100).
|
|
5900
|
-
*
|
|
6085
|
+
* `pageSize` caps the row count (default 10, Best Buy's own ceiling 100). Uses Bowmark's Best
|
|
6086
|
+
* Buy key and charges each request to your account; send your own key as the
|
|
6087
|
+
* `x-bowmark-vendor-key-bestbuy` header instead.
|
|
5901
6088
|
*/
|
|
5902
6089
|
search(args: string | { query: string; pageSize?: number }): Promise<bestbuyProduct[]>;
|
|
5903
6090
|
|
|
5904
6091
|
/**
|
|
5905
6092
|
* Looks up one product by Best Buy's own numeric SKU (the id `search`'s rows carry) and
|
|
5906
|
-
* returns its full detail — the same fields as `search`.
|
|
5907
|
-
*
|
|
6093
|
+
* returns its full detail — the same fields as `search`. Uses Bowmark's Best Buy key and
|
|
6094
|
+
* charges each request to your account; send your own key as the
|
|
6095
|
+
* `x-bowmark-vendor-key-bestbuy` header instead.
|
|
5908
6096
|
*/
|
|
5909
6097
|
getProduct(sku: string | number): Promise<bestbuyProduct>;
|
|
5910
6098
|
}
|
|
@@ -7562,9 +7750,58 @@ interface CalComAvailabilityResult {
|
|
|
7562
7750
|
otherEventTypes: CalComEventType[];
|
|
7563
7751
|
}
|
|
7564
7752
|
|
|
7753
|
+
interface CalComFormQuestion {
|
|
7754
|
+
label: string; // what a booker reads
|
|
7755
|
+
name: string; // Cal.com's own field name ("name", "email", or a custom slug)
|
|
7756
|
+
type: string; // Cal.com's own type: "name" | "email" | "phone" | "text" | "textarea" | "select" | "radio" | …
|
|
7757
|
+
required: boolean;
|
|
7758
|
+
choices: string[];
|
|
7759
|
+
}
|
|
7760
|
+
|
|
7761
|
+
interface CalComBookingEvent {
|
|
7762
|
+
title: string;
|
|
7763
|
+
slug: string;
|
|
7764
|
+
url: string;
|
|
7765
|
+
description: string | null;
|
|
7766
|
+
lengthInMinutes: number | null;
|
|
7767
|
+
}
|
|
7768
|
+
|
|
7769
|
+
interface CalComBookingFormOptions {
|
|
7770
|
+
event?: string; // which event on a multi-event profile — its slug or part of its title
|
|
7771
|
+
}
|
|
7772
|
+
|
|
7773
|
+
interface CalComBookingForm {
|
|
7774
|
+
url: string;
|
|
7775
|
+
username: string;
|
|
7776
|
+
eventTypes: CalComEventType[]; // a profile's list; empty when the url already named an event
|
|
7777
|
+
event: CalComBookingEvent | null; // null when several events exist and none was named
|
|
7778
|
+
ownerName: string | null;
|
|
7779
|
+
organization: string | null; // the org/team Cal.com itself files the account under
|
|
7780
|
+
avatarUrl: string | null;
|
|
7781
|
+
questions: CalComFormQuestion[]; // only what a booker is shown — hidden and reschedule-only fields dropped
|
|
7782
|
+
warnings: string[];
|
|
7783
|
+
}
|
|
7784
|
+
|
|
7785
|
+
interface CalComProfileCandidate {
|
|
7786
|
+
slug: string;
|
|
7787
|
+
url: string; // where the page landed; a one-event profile redirects to that event
|
|
7788
|
+
title: string; // the page's own <title>
|
|
7789
|
+
ownerName: string | null; // read off the title
|
|
7790
|
+
nameMatches: boolean; // ownerName carries BOTH names asked for — a hint, a namesake passes too
|
|
7791
|
+
}
|
|
7792
|
+
|
|
7793
|
+
interface CalComFindProfilesResult {
|
|
7794
|
+
name: string;
|
|
7795
|
+
company: string | null;
|
|
7796
|
+
slugsChecked: string[];
|
|
7797
|
+
candidates: CalComProfileCandidate[];
|
|
7798
|
+
warnings: string[];
|
|
7799
|
+
}
|
|
7800
|
+
|
|
7565
7801
|
/**
|
|
7566
|
-
* Cal.com's own
|
|
7567
|
-
*
|
|
7802
|
+
* Cal.com's own public surfaces — find a person's Cal.com page from their name, read the event
|
|
7803
|
+
* types it offers, the questions its booking form asks and who owns it, and the real,
|
|
7804
|
+
* currently-open time slots — no browser, no key.
|
|
7568
7805
|
*/
|
|
7569
7806
|
interface Unit {
|
|
7570
7807
|
/**
|
|
@@ -7581,6 +7818,28 @@ interface CalComAvailabilityResult {
|
|
|
7581
7818
|
* event type and reports the rest in `otherEventTypes`.
|
|
7582
7819
|
*/
|
|
7583
7820
|
getAvailability(username: string, opts?: CalComAvailabilityOptions): Promise<CalComAvailabilityResult>;
|
|
7821
|
+
|
|
7822
|
+
/**
|
|
7823
|
+
* Reads what a Cal.com booking page will ask before anyone books: the event's
|
|
7824
|
+
* title/description/length, every question on its booking form (only the ones a booker is
|
|
7825
|
+
* actually shown, with choices and whether each is required), the owner's name and avatar, and
|
|
7826
|
+
* the organization or team Cal.com files the account under. Needs no open slot. Takes an event
|
|
7827
|
+
* url ("https://cal.com/alexatallah/15min"), a team or org-subdomain event url, or a profile
|
|
7828
|
+
* url — a profile with several events returns `event: null` and the list unless `opts.event`
|
|
7829
|
+
* names one. Never books anything.
|
|
7830
|
+
*/
|
|
7831
|
+
getBookingForm(url: string, opts?: CalComBookingFormOptions): Promise<CalComBookingForm>;
|
|
7832
|
+
|
|
7833
|
+
/**
|
|
7834
|
+
* Finds a person's own Cal.com page from their full name, and optionally their company (pass
|
|
7835
|
+
* it). Checks the slug shapes that measured reliable (first-last, firstlast, lastfirst,
|
|
7836
|
+
* first-company, firstcompany, last-company, and the bare company slug — which often belongs
|
|
7837
|
+
* to a stranger, so read `ownerName`) and returns each page that exists with its own title,
|
|
7838
|
+
* the owner name the title states, and `nameMatches`. A match is a GUESS: a namesake passes,
|
|
7839
|
+
* so tie the page to the company before relying on it. Works on pages no search engine has
|
|
7840
|
+
* indexed.
|
|
7841
|
+
*/
|
|
7842
|
+
findProfiles(name: string, company?: string): Promise<CalComFindProfilesResult>;
|
|
7584
7843
|
}
|
|
7585
7844
|
}
|
|
7586
7845
|
|
|
@@ -7629,10 +7888,58 @@ interface CalendlyAvailabilityResult {
|
|
|
7629
7888
|
otherEventTypes: CalendlyEventType[];
|
|
7630
7889
|
}
|
|
7631
7890
|
|
|
7891
|
+
interface CalendlyFormQuestion {
|
|
7892
|
+
label: string;
|
|
7893
|
+
format: string; // Calendly's own: "string" | "text" | "phone_number" | "select" | "multi_select" | "radios" | "checkboxes"
|
|
7894
|
+
required: boolean;
|
|
7895
|
+
choices: string[];
|
|
7896
|
+
}
|
|
7897
|
+
|
|
7898
|
+
interface CalendlyBookingEvent {
|
|
7899
|
+
name: string;
|
|
7900
|
+
slug: string | null;
|
|
7901
|
+
url: string;
|
|
7902
|
+
description: string | null;
|
|
7903
|
+
durationMinutes: number | null;
|
|
7904
|
+
}
|
|
7905
|
+
|
|
7906
|
+
interface CalendlyBookingFormOptions {
|
|
7907
|
+
event?: string; // which event on a multi-event profile — its slug or part of its name
|
|
7908
|
+
}
|
|
7909
|
+
|
|
7910
|
+
interface CalendlyBookingForm {
|
|
7911
|
+
url: string;
|
|
7912
|
+
profileSlug: string | null; // null for a calendly.com/d/<hash> share link
|
|
7913
|
+
ownerName: string | null;
|
|
7914
|
+
eventTypes: CalendlyEventType[];
|
|
7915
|
+
event: CalendlyBookingEvent | null; // null when several events exist and none was named
|
|
7916
|
+
questions: CalendlyFormQuestion[]; // CUSTOM questions; name + email are always asked on top
|
|
7917
|
+
nextAvailability: string | null; // null + unavailableReason null = fully booked, not unread
|
|
7918
|
+
unavailableReason: string | null; // non-null = Calendly says this cannot be booked
|
|
7919
|
+
warnings: string[];
|
|
7920
|
+
}
|
|
7921
|
+
|
|
7922
|
+
interface CalendlyProfileCandidate {
|
|
7923
|
+
slug: string;
|
|
7924
|
+
url: string;
|
|
7925
|
+
ownerName: string; // the name the profile itself shows
|
|
7926
|
+
nameMatches: boolean; // ownerName carries BOTH names asked for — a hint, a namesake passes too
|
|
7927
|
+
timezone: string;
|
|
7928
|
+
}
|
|
7929
|
+
|
|
7930
|
+
interface CalendlyFindProfilesResult {
|
|
7931
|
+
name: string;
|
|
7932
|
+
company: string | null;
|
|
7933
|
+
slugsChecked: string[];
|
|
7934
|
+
candidates: CalendlyProfileCandidate[];
|
|
7935
|
+
warnings: string[];
|
|
7936
|
+
}
|
|
7937
|
+
|
|
7632
7938
|
/**
|
|
7633
|
-
* Calendly's own public booking-widget data —
|
|
7634
|
-
*
|
|
7635
|
-
* undocumented JSON endpoints, no
|
|
7939
|
+
* Calendly's own public booking-widget data — find a person's Calendly page from their name,
|
|
7940
|
+
* read the event types it offers, the questions its booking form asks, and the real,
|
|
7941
|
+
* currently-open time slots — read straight off the widget's undocumented JSON endpoints, no
|
|
7942
|
+
* browser, no key.
|
|
7636
7943
|
*/
|
|
7637
7944
|
interface Unit {
|
|
7638
7945
|
/**
|
|
@@ -7650,6 +7957,29 @@ interface CalendlyAvailabilityResult {
|
|
|
7650
7957
|
* first event type and reports the rest in `otherEventTypes`.
|
|
7651
7958
|
*/
|
|
7652
7959
|
getAvailability(profile: string, opts?: CalendlyAvailabilityOptions): Promise<CalendlyAvailabilityResult>;
|
|
7960
|
+
|
|
7961
|
+
/**
|
|
7962
|
+
* Reads what a Calendly booking page will ask before anyone books: the owner's name, the
|
|
7963
|
+
* event's name/description/duration, every custom form question (with its choices and whether
|
|
7964
|
+
* it is required), the next open time, and Calendly's own reason when the calendar cannot be
|
|
7965
|
+
* booked. Needs no open slot, so it reads a fully-booked calendar too. Takes a profile url
|
|
7966
|
+
* ("https://calendly.com/eric-ciarla"), an event url, or a one-off share link
|
|
7967
|
+
* ("https://calendly.com/d/ctbt-d45-rgb/simbie-ai-demo"). A profile with several events
|
|
7968
|
+
* returns `event: null` and the list unless `opts.event` names one. Never books anything.
|
|
7969
|
+
*/
|
|
7970
|
+
getBookingForm(url: string, opts?: CalendlyBookingFormOptions): Promise<CalendlyBookingForm>;
|
|
7971
|
+
|
|
7972
|
+
/**
|
|
7973
|
+
* Finds a person's own Calendly page from their full name, and optionally their company (pass
|
|
7974
|
+
* it — "caleb-firecrawl" is found only by the company shape). Checks the slug shapes that
|
|
7975
|
+
* measured reliable (first-last, firstlast, lastfirst, first-company, firstcompany,
|
|
7976
|
+
* last-company, and the bare company slug — which often belongs to a stranger, so read
|
|
7977
|
+
* `ownerName`) and returns every one that exists with the name the page itself shows and
|
|
7978
|
+
* `nameMatches`. A match is a GUESS: a namesake with the same first and last name passes, so
|
|
7979
|
+
* tie the page to the company before relying on it. Search engines do not index Calendly
|
|
7980
|
+
* pages, so this is the way to find one.
|
|
7981
|
+
*/
|
|
7982
|
+
findProfiles(name: string, company?: string): Promise<CalendlyFindProfilesResult>;
|
|
7653
7983
|
}
|
|
7654
7984
|
}
|
|
7655
7985
|
|
|
@@ -10485,6 +10815,19 @@ interface CuriocityListEventsQuery {
|
|
|
10485
10815
|
}
|
|
10486
10816
|
}
|
|
10487
10817
|
|
|
10818
|
+
declare namespace BowmarkProvider_currency_exchange {
|
|
10819
|
+
// ── ExchangeRate-API — the unit's own declarations, verbatim ──
|
|
10820
|
+
interface currency_exchangeRow {
|
|
10821
|
+
rate: number;
|
|
10822
|
+
}
|
|
10823
|
+
|
|
10824
|
+
/** Get real-time exchange rates from ExchangeRate-API */
|
|
10825
|
+
interface Unit {
|
|
10826
|
+
/** Returns the current exchange rate between two currencies */
|
|
10827
|
+
getRate(from: string, to: string): Promise<currency_exchangeRow>;
|
|
10828
|
+
}
|
|
10829
|
+
}
|
|
10830
|
+
|
|
10488
10831
|
declare namespace BowmarkProvider_cyberpowerpc {
|
|
10489
10832
|
// ── CyberPowerPC — the unit's own declarations, verbatim ──
|
|
10490
10833
|
interface CyberpowerpcConfigurator {
|
|
@@ -11025,6 +11368,29 @@ interface DdCartHandoff {
|
|
|
11025
11368
|
}
|
|
11026
11369
|
}
|
|
11027
11370
|
|
|
11371
|
+
declare namespace BowmarkProvider_dell {
|
|
11372
|
+
// ── Dell — the unit's own declarations, verbatim ──
|
|
11373
|
+
interface SearchForumThreadsArgs {
|
|
11374
|
+
query: string;
|
|
11375
|
+
}
|
|
11376
|
+
|
|
11377
|
+
interface DellForumThread {
|
|
11378
|
+
title: string;
|
|
11379
|
+
url: string;
|
|
11380
|
+
postCount: number;
|
|
11381
|
+
}
|
|
11382
|
+
|
|
11383
|
+
/** Search Dell's community forum for discussion threads. */
|
|
11384
|
+
interface Unit {
|
|
11385
|
+
/**
|
|
11386
|
+
* Search Dell community forums for threads matching a query — needs a topic or keywords (e.g.
|
|
11387
|
+
* "storage issues", "laptop battery"), never a bare "search the forum" with nothing to search
|
|
11388
|
+
* for.
|
|
11389
|
+
*/
|
|
11390
|
+
searchForumThreads(args: SearchForumThreadsArgs): Promise<DellForumThread[]>;
|
|
11391
|
+
}
|
|
11392
|
+
}
|
|
11393
|
+
|
|
11028
11394
|
declare namespace BowmarkProvider_deltadentalma {
|
|
11029
11395
|
// ── Delta Dental of Massachusetts — the unit's own declarations, verbatim ──
|
|
11030
11396
|
// Delta Dental of Massachusetts's OWN shapes — not a capability contract.
|
|
@@ -12354,7 +12720,8 @@ interface etsyListing {
|
|
|
12354
12720
|
* Searches Etsy's live catalog of active listings by keyword, via Etsy's documented Open API
|
|
12355
12721
|
* v3, and returns the matching listings — id, title, price, currency, quantity available, tags
|
|
12356
12722
|
* and the listing's own etsy.com URL. `limit` caps the row count (default 10, Etsy's own
|
|
12357
|
-
* ceiling 100).
|
|
12723
|
+
* ceiling 100). Uses Bowmark's Etsy key and charges each request to your account; send your
|
|
12724
|
+
* own key as the `x-bowmark-vendor-key-etsy` header instead.
|
|
12358
12725
|
*/
|
|
12359
12726
|
search(args: string | { query: string; limit?: number }): Promise<etsyListing[]>;
|
|
12360
12727
|
}
|
|
@@ -14608,6 +14975,19 @@ interface GithubListReleasesResult {
|
|
|
14608
14975
|
warnings: string[];
|
|
14609
14976
|
}
|
|
14610
14977
|
|
|
14978
|
+
interface GithubProfileReadme {
|
|
14979
|
+
login: string;
|
|
14980
|
+
name: string | null;
|
|
14981
|
+
company: string | null;
|
|
14982
|
+
blog: string | null; // the website they list on their profile
|
|
14983
|
+
bio: string | null;
|
|
14984
|
+
twitterUsername: string | null;
|
|
14985
|
+
profileUrl: string;
|
|
14986
|
+
readme: string | null; // the profile README's raw markdown; null when they have none
|
|
14987
|
+
readmeUrl: string | null;
|
|
14988
|
+
warnings: string[];
|
|
14989
|
+
}
|
|
14990
|
+
|
|
14611
14991
|
/**
|
|
14612
14992
|
* GitHub's own REST API, keyless. Built: a public repo's commit log (sha, author, date,
|
|
14613
14993
|
* message), paged and windowed; a public repo's release history (tag, name, dates, release
|
|
@@ -14639,6 +15019,16 @@ interface GithubListReleasesResult {
|
|
|
14639
15019
|
* `releases: []`, not a throw.
|
|
14640
15020
|
*/
|
|
14641
15021
|
listReleases(owner: string, repo: string, options?: GithubListReleasesOptions): Promise<GithubListReleasesResult>;
|
|
15022
|
+
|
|
15023
|
+
/**
|
|
15024
|
+
* Reads a person's own GitHub profile — display name, company, the website they list, bio, X
|
|
15025
|
+
* handle — and the raw markdown of their profile README (the `<handle>/<handle>` repo GitHub
|
|
15026
|
+
* shows on the profile page), which is where people put a personal site, a booking link or
|
|
15027
|
+
* contact details. Takes a username, `@handle` or github.com url. `readme` is null when they
|
|
15028
|
+
* have no profile README. Unauthenticated calls share GitHub's 60 requests/hour per IP; this
|
|
15029
|
+
* spends two. THROWS on an unknown user or a rate limit.
|
|
15030
|
+
*/
|
|
15031
|
+
getProfileReadme(handle: string): Promise<GithubProfileReadme>;
|
|
14642
15032
|
}
|
|
14643
15033
|
}
|
|
14644
15034
|
|
|
@@ -14971,6 +15361,189 @@ interface GooglePriceGraph {
|
|
|
14971
15361
|
}
|
|
14972
15362
|
}
|
|
14973
15363
|
|
|
15364
|
+
declare namespace BowmarkProvider_google_maps {
|
|
15365
|
+
// ── Google Maps — the unit's own declarations, verbatim ──
|
|
15366
|
+
interface GoogleMapsPlace {
|
|
15367
|
+
featureId: string;
|
|
15368
|
+
name: string;
|
|
15369
|
+
}
|
|
15370
|
+
interface SuggestPlacesArgs {
|
|
15371
|
+
query: string;
|
|
15372
|
+
}
|
|
15373
|
+
interface SearchPlacesArgs {
|
|
15374
|
+
query: string;
|
|
15375
|
+
}
|
|
15376
|
+
interface SearchPlacesResult {
|
|
15377
|
+
featureId: string;
|
|
15378
|
+
name: string;
|
|
15379
|
+
address: string;
|
|
15380
|
+
coordinates: { lat: number; lng: number } | null;
|
|
15381
|
+
categories: string[];
|
|
15382
|
+
rating?: number;
|
|
15383
|
+
reviewCount?: number;
|
|
15384
|
+
}
|
|
15385
|
+
interface GeocodeAddressArgs {
|
|
15386
|
+
address: string;
|
|
15387
|
+
}
|
|
15388
|
+
interface GeocodeAddressResult {
|
|
15389
|
+
featureId: string;
|
|
15390
|
+
name: string;
|
|
15391
|
+
formattedAddress: string;
|
|
15392
|
+
coordinates: { lat: number; lng: number } | null;
|
|
15393
|
+
}
|
|
15394
|
+
interface GetPlaceArgs {
|
|
15395
|
+
query: string;
|
|
15396
|
+
}
|
|
15397
|
+
interface GetPlaceResult {
|
|
15398
|
+
featureId: string;
|
|
15399
|
+
name: string;
|
|
15400
|
+
address: string;
|
|
15401
|
+
coordinates: { lat: number; lng: number } | null;
|
|
15402
|
+
categories: string[];
|
|
15403
|
+
neighborhood?: string;
|
|
15404
|
+
phone?: string;
|
|
15405
|
+
website?: string;
|
|
15406
|
+
rating?: number;
|
|
15407
|
+
reviewCount?: number;
|
|
15408
|
+
hours?: { day: string; hours: string[] }[];
|
|
15409
|
+
}
|
|
15410
|
+
interface ListReviewsArgs {
|
|
15411
|
+
query: string;
|
|
15412
|
+
}
|
|
15413
|
+
interface Review {
|
|
15414
|
+
author: string;
|
|
15415
|
+
authorId?: string;
|
|
15416
|
+
rating: number;
|
|
15417
|
+
text: string;
|
|
15418
|
+
relativeDate?: string;
|
|
15419
|
+
}
|
|
15420
|
+
|
|
15421
|
+
/**
|
|
15422
|
+
* Local business search on Google Maps — find places by what a person would say, then read the
|
|
15423
|
+
* address, hours, rating, reviews and route. suggestPlaces (autocomplete), searchPlaces (the
|
|
15424
|
+
* door), geocodeAddress, getPlace and listReviews are built; everything else is still a
|
|
15425
|
+
* declared stub.
|
|
15426
|
+
*/
|
|
15427
|
+
interface Unit {
|
|
15428
|
+
/**
|
|
15429
|
+
* Google Maps' own autocomplete for a half-typed query — what the search box offers while
|
|
15430
|
+
* somebody types. Returns the completed queries, ready to hand to searchPlaces once it lands.
|
|
15431
|
+
*/
|
|
15432
|
+
suggestPlaces(args: SuggestPlacesArgs): Promise<string[]>;
|
|
15433
|
+
|
|
15434
|
+
/**
|
|
15435
|
+
* The door every other Maps function chains off. Takes what a person would say — "coffee shops
|
|
15436
|
+
* in Seattle WA", "pizza near Austin TX" — and returns the ranked places Google shows for it:
|
|
15437
|
+
* feature id, name, address, coordinates and categories, plus rating and review count when the
|
|
15438
|
+
* site's response carries them. The location lives in the query text; Google resolves it from
|
|
15439
|
+
* there rather than from a separate coordinate.
|
|
15440
|
+
*/
|
|
15441
|
+
searchPlaces(args: SearchPlacesArgs): Promise<SearchPlacesResult[]>;
|
|
15442
|
+
|
|
15443
|
+
/**
|
|
15444
|
+
* A street address, a city, or a business name in — the matching Google Maps place, its
|
|
15445
|
+
* feature id and its coordinates out. Rides the same door as searchPlaces (a second reading of
|
|
15446
|
+
* the same response), so it only resolves a query that names ONE place; a category or
|
|
15447
|
+
* list-style query throws.
|
|
15448
|
+
*/
|
|
15449
|
+
geocodeAddress(args: GeocodeAddressArgs): Promise<GeocodeAddressResult>;
|
|
15450
|
+
|
|
15451
|
+
/**
|
|
15452
|
+
* Everything Google Maps shows on one business's panel — name, full address, coordinates,
|
|
15453
|
+
* category, neighborhood, phone, website, rating, review count and weekly hours, each present
|
|
15454
|
+
* only when the site's own response carried it. A THIRD reading of searchPlaces' door: takes
|
|
15455
|
+
* the same resolving query geocodeAddress does (typically a name plus address, since this does
|
|
15456
|
+
* not take a feature id — measured live, neither the raw id nor a cid string resolves through
|
|
15457
|
+
* this door), and throws when the query names a category or list rather than one business.
|
|
15458
|
+
*/
|
|
15459
|
+
getPlace(args: GetPlaceArgs): Promise<GetPlaceResult>;
|
|
15460
|
+
|
|
15461
|
+
/**
|
|
15462
|
+
* The reviews Google Maps shows on a business's own panel — up to 5, each with author, star
|
|
15463
|
+
* rating, review text and the site's own relative date. A FOURTH reading of searchPlaces' door
|
|
15464
|
+
* (the same record getPlace reads, one section further in), not the listugcposts route the
|
|
15465
|
+
* survey planned: that route needed a session token minted by a place-page bootstrap that was
|
|
15466
|
+
* never cracked, but the same reviews the token would have fetched are already sitting in the
|
|
15467
|
+
* panel response. Takes the same resolving query getPlace does. Returns [] for a place with no
|
|
15468
|
+
* reviews rather than throwing; throws only when the query itself does not resolve to one
|
|
15469
|
+
* place.
|
|
15470
|
+
*/
|
|
15471
|
+
listReviews(args: ListReviewsArgs): Promise<Review[]>;
|
|
15472
|
+
}
|
|
15473
|
+
}
|
|
15474
|
+
|
|
15475
|
+
declare namespace BowmarkProvider_google_news {
|
|
15476
|
+
// ── Google News — the unit's own declarations, verbatim ──
|
|
15477
|
+
interface GoogleNewsClusterEntry {
|
|
15478
|
+
title: string;
|
|
15479
|
+
link: string;
|
|
15480
|
+
publisher: string;
|
|
15481
|
+
}
|
|
15482
|
+
interface GoogleNewsArticle {
|
|
15483
|
+
articleId: string;
|
|
15484
|
+
title: string;
|
|
15485
|
+
link: string;
|
|
15486
|
+
publisher: string;
|
|
15487
|
+
publisherUrl: string | null;
|
|
15488
|
+
publishedAt: string | null;
|
|
15489
|
+
cluster: GoogleNewsClusterEntry[];
|
|
15490
|
+
}
|
|
15491
|
+
interface GoogleNewsSearchResult {
|
|
15492
|
+
query: string;
|
|
15493
|
+
articles: GoogleNewsArticle[];
|
|
15494
|
+
}
|
|
15495
|
+
interface GoogleNewsTopStories {
|
|
15496
|
+
title: string;
|
|
15497
|
+
clusters: GoogleNewsArticle[];
|
|
15498
|
+
}
|
|
15499
|
+
interface GoogleNewsTopicHeadlines {
|
|
15500
|
+
section: "World" | "Nation" | "Business" | "Technology" | "Entertainment" | "Sports" | "Science" | "Health";
|
|
15501
|
+
title: string;
|
|
15502
|
+
articles: GoogleNewsArticle[];
|
|
15503
|
+
}
|
|
15504
|
+
|
|
15505
|
+
/**
|
|
15506
|
+
* Headlines from every publisher at once — today's top stories as clusters, a section or a
|
|
15507
|
+
* city's local news, and everything indexed about a subject with Google's own when: and site:
|
|
15508
|
+
* operators. searchNews (the door) and topStories are built; everything else is still a
|
|
15509
|
+
* declared stub.
|
|
15510
|
+
*/
|
|
15511
|
+
interface Unit {
|
|
15512
|
+
/**
|
|
15513
|
+
* Everything Google News has indexed about a subject, across every publisher at once —
|
|
15514
|
+
* headline, publisher, publication time and the Google News link, newest first. `query` is
|
|
15515
|
+
* exactly what a person would type into Google News' own search box, and Google's own
|
|
15516
|
+
* operators work inside it: `when:1h`/`when:1d`/`when:7d` narrows the window,
|
|
15517
|
+
* `site:reuters.com` pins one publisher, quotes pin a phrase and `(a OR b)` unions two
|
|
15518
|
+
* subjects — measured 2026-09-15: `site:reuters.com tesla` returned 100 items of which 100
|
|
15519
|
+
* carried `<source>Reuters</source>`. This is the provider's main door: a caller holding only
|
|
15520
|
+
* words gets in here. A query that matches nothing returns an empty `articles` array rather
|
|
15521
|
+
* than throwing.
|
|
15522
|
+
*/
|
|
15523
|
+
searchNews(query: string): Promise<GoogleNewsSearchResult>;
|
|
15524
|
+
|
|
15525
|
+
/**
|
|
15526
|
+
* What Google News is leading with right now — the front page, as ranked story CLUSTERS rather
|
|
15527
|
+
* than a flat list. Each entry carries the lead headline and publisher plus every other outlet
|
|
15528
|
+
* covering the same story, which is the one thing a single publisher's own feed can never give
|
|
15529
|
+
* a caller asking "what is everyone saying about this today". No arguments: the front page is
|
|
15530
|
+
* the whole ask.
|
|
15531
|
+
*/
|
|
15532
|
+
topStories(): Promise<GoogleNewsTopStories>;
|
|
15533
|
+
|
|
15534
|
+
/**
|
|
15535
|
+
* The latest headlines in one of Google News' own eight sections — World, Nation, Business,
|
|
15536
|
+
* Technology, Entertainment, Sports, Science or Health — by section NAME, so a caller who has
|
|
15537
|
+
* only the word "technology" never has to hold an opaque topic id. The name is matched
|
|
15538
|
+
* case-insensitively against the closed list of eight; anything else throws before any request
|
|
15539
|
+
* is made, because an unrecognized section answers 200 with Google News' own app-shell HTML
|
|
15540
|
+
* rather than a 404 (measured 2026-09-15) — reading that as an empty section would be silently
|
|
15541
|
+
* wrong rather than refused.
|
|
15542
|
+
*/
|
|
15543
|
+
listTopicHeadlines(section: string): Promise<GoogleNewsTopicHeadlines>;
|
|
15544
|
+
}
|
|
15545
|
+
}
|
|
15546
|
+
|
|
14974
15547
|
declare namespace BowmarkProvider_gostoreit {
|
|
14975
15548
|
// ── Go Store It — the unit's own declarations, verbatim ──
|
|
14976
15549
|
interface GetFacilityUnitsArgs { facilityUrl: string; }
|
|
@@ -15608,6 +16181,14 @@ interface HavenPricingProgram {
|
|
|
15608
16181
|
|
|
15609
16182
|
interface HavenPricingProgramsResult { programs: HavenPricingProgram[] }
|
|
15610
16183
|
|
|
16184
|
+
interface HavenListPricingProgramsResult {
|
|
16185
|
+
property: HavenPropertyDetails;
|
|
16186
|
+
state: string | null; // read off the caller's own address, e.g. "CA"
|
|
16187
|
+
programs: HavenPricingProgram[]; // filtered to what `state` qualifies for
|
|
16188
|
+
}
|
|
16189
|
+
|
|
16190
|
+
interface HavenListPricingProgramsArgs { address: string }
|
|
16191
|
+
|
|
15611
16192
|
/**
|
|
15612
16193
|
* Haven Energy home battery quoting — read a US address's own property attributes (home size,
|
|
15613
16194
|
* county, energy-community status) the way Haven's /quote flow does, and read the site's own
|
|
@@ -15633,6 +16214,16 @@ interface HavenPricingProgramsResult { programs: HavenPricingProgram[] }
|
|
|
15633
16214
|
* county/utility context to narrow to the programs a specific home actually qualifies for.
|
|
15634
16215
|
*/
|
|
15635
16216
|
getPricingPrograms(): Promise<HavenPricingProgramsResult>;
|
|
16217
|
+
|
|
16218
|
+
/**
|
|
16219
|
+
* One call for the question getPropertyDetails + getPricingPrograms need composing to answer:
|
|
16220
|
+
* which of Haven's active programs does THIS address actually qualify for. Reads the property
|
|
16221
|
+
* attributes and the full program table (the same two live calls the two other functions make)
|
|
16222
|
+
* and filters to the state parsed out of the address string. `state` is null and `programs` is
|
|
16223
|
+
* the full unfiltered table when no 2-letter state code could be read from the address —
|
|
16224
|
+
* Haven's own property-details response never returns one to fall back on.
|
|
16225
|
+
*/
|
|
16226
|
+
listPricingPrograms(arg0: HavenListPricingProgramsArgs): Promise<HavenListPricingProgramsResult>;
|
|
15636
16227
|
}
|
|
15637
16228
|
}
|
|
15638
16229
|
|
|
@@ -15697,6 +16288,32 @@ interface HaydenhomesSearchFilters {
|
|
|
15697
16288
|
}
|
|
15698
16289
|
}
|
|
15699
16290
|
|
|
16291
|
+
declare namespace BowmarkProvider_hccts {
|
|
16292
|
+
// ── hccts.org Online Application Appointment Booking — the unit's own declarations, verbatim ──
|
|
16293
|
+
interface ApplicationStatus {
|
|
16294
|
+
available: boolean;
|
|
16295
|
+
formUrl: string;
|
|
16296
|
+
message: string;
|
|
16297
|
+
lastChecked: string;
|
|
16298
|
+
}
|
|
16299
|
+
|
|
16300
|
+
interface CheckApplicationAvailabilityArgs {
|
|
16301
|
+
refresh?: boolean;
|
|
16302
|
+
}
|
|
16303
|
+
|
|
16304
|
+
/**
|
|
16305
|
+
* Checks application availability and appointment scheduling for Highlands' adult education
|
|
16306
|
+
* programs.
|
|
16307
|
+
*/
|
|
16308
|
+
interface Unit {
|
|
16309
|
+
/**
|
|
16310
|
+
* Checks if the HCCTS online application form is currently accessible and returns the
|
|
16311
|
+
* application status.
|
|
16312
|
+
*/
|
|
16313
|
+
checkApplicationAvailability(args: CheckApplicationAvailabilityArgs): Promise<ApplicationStatus>;
|
|
16314
|
+
}
|
|
16315
|
+
}
|
|
16316
|
+
|
|
15700
16317
|
declare namespace BowmarkProvider_healthcare_gov {
|
|
15701
16318
|
// ── HealthCare.gov — the unit's own declarations, verbatim ──
|
|
15702
16319
|
interface healthcare_govPlan {
|
|
@@ -19229,12 +19846,14 @@ interface KeepaProduct { asin: string; domainId: number; title: string; csv?: un
|
|
|
19229
19846
|
|
|
19230
19847
|
/**
|
|
19231
19848
|
* Keepa's documented Amazon product API — reads a product's native price history and metadata
|
|
19232
|
-
* by ASIN.
|
|
19849
|
+
* by ASIN. Uses Bowmark's Keepa key and charges each request to your account; send your own
|
|
19850
|
+
* key as the `x-bowmark-vendor-key-keepa` header to spend your own Keepa tokens instead.
|
|
19233
19851
|
*/
|
|
19234
19852
|
interface Unit {
|
|
19235
19853
|
/**
|
|
19236
19854
|
* Reads Keepa's native Amazon product record and compact price-history series for one ASIN.
|
|
19237
|
-
*
|
|
19855
|
+
* Uses Bowmark's Keepa key and charges each request to your account; send your own key as the
|
|
19856
|
+
* `x-bowmark-vendor-key-keepa` header to spend your own Keepa tokens instead.
|
|
19238
19857
|
*/
|
|
19239
19858
|
getProduct(args: { asin: string; domain?: number; stats?: number }): Promise<KeepaProductResult>;
|
|
19240
19859
|
}
|
|
@@ -27356,6 +27975,47 @@ interface SemihandmadePriceResult {
|
|
|
27356
27975
|
}
|
|
27357
27976
|
}
|
|
27358
27977
|
|
|
27978
|
+
declare namespace BowmarkProvider_serper {
|
|
27979
|
+
// ── Serper — the unit's own declarations, verbatim ──
|
|
27980
|
+
interface SerperOrganicResult {
|
|
27981
|
+
position: number;
|
|
27982
|
+
title: string;
|
|
27983
|
+
link: string; // the destination url
|
|
27984
|
+
snippet: string | null;
|
|
27985
|
+
date: string | null;
|
|
27986
|
+
}
|
|
27987
|
+
|
|
27988
|
+
interface SerperSearchOptions {
|
|
27989
|
+
num?: number; // 1-100, default 10
|
|
27990
|
+
gl?: string; // country, e.g. "us"
|
|
27991
|
+
hl?: string; // language, e.g. "en"
|
|
27992
|
+
}
|
|
27993
|
+
|
|
27994
|
+
interface SerperSearchResult {
|
|
27995
|
+
query: string;
|
|
27996
|
+
results: SerperOrganicResult[]; // empty only when Google matched nothing
|
|
27997
|
+
credits: number | null; // Serper credits this search spent
|
|
27998
|
+
warnings: string[];
|
|
27999
|
+
}
|
|
28000
|
+
|
|
28001
|
+
/**
|
|
28002
|
+
* Google's own search results as JSON through Serper's API — honours site:, quoted phrases and
|
|
28003
|
+
* every other Google operator, in about a second. Uses Bowmark's Serper key and charges each
|
|
28004
|
+
* search to your account, or your own key sent as the `x-bowmark-vendor-key-serper` header.
|
|
28005
|
+
*/
|
|
28006
|
+
interface Unit {
|
|
28007
|
+
/**
|
|
28008
|
+
* Runs a Google search and returns Google's organic results — position, title, destination
|
|
28009
|
+
* url, snippet — with every Google operator honoured. `site:cal.com "Chris Field"` returns
|
|
28010
|
+
* only cal.com pages naming him (cal.com/analytics/quick-chat among them), which is how to
|
|
28011
|
+
* find a page on one site by any words printed on it. An empty `results` is Google matching
|
|
28012
|
+
* nothing. Uses Bowmark's Serper key and charges each search to your account; send your own
|
|
28013
|
+
* key as the `x-bowmark-vendor-key-serper` header to spend your own credits instead.
|
|
28014
|
+
*/
|
|
28015
|
+
searchGoogle(query: string, opts?: SerperSearchOptions): Promise<SerperSearchResult>;
|
|
28016
|
+
}
|
|
28017
|
+
}
|
|
28018
|
+
|
|
27359
28019
|
declare namespace BowmarkProvider_sitmeanssit {
|
|
27360
28020
|
// ── Sit Means Sit — the unit's own declarations, verbatim ──
|
|
27361
28021
|
interface SitmeanssitLocation {
|
|
@@ -32690,6 +33350,7 @@ interface BowmarkProviders {
|
|
|
32690
33350
|
cruiselakegeneva: BowmarkProvider_cruiselakegeneva.Unit;
|
|
32691
33351
|
culturefly: BowmarkProvider_culturefly.Unit;
|
|
32692
33352
|
curiocity: BowmarkProvider_curiocity.Unit;
|
|
33353
|
+
currency_exchange: BowmarkProvider_currency_exchange.Unit;
|
|
32693
33354
|
cyberpowerpc: BowmarkProvider_cyberpowerpc.Unit;
|
|
32694
33355
|
dahlconsulting: BowmarkProvider_dahlconsulting.Unit;
|
|
32695
33356
|
dansons: BowmarkProvider_dansons.Unit;
|
|
@@ -32697,6 +33358,7 @@ interface BowmarkProviders {
|
|
|
32697
33358
|
deangroup: BowmarkProvider_deangroup.Unit;
|
|
32698
33359
|
decked: BowmarkProvider_decked.Unit;
|
|
32699
33360
|
decksdirect: BowmarkProvider_decksdirect.Unit;
|
|
33361
|
+
dell: BowmarkProvider_dell.Unit;
|
|
32700
33362
|
deltadentalma: BowmarkProvider_deltadentalma.Unit;
|
|
32701
33363
|
dentalplans: BowmarkProvider_dentalplans.Unit;
|
|
32702
33364
|
detailxperts: BowmarkProvider_detailxperts.Unit;
|
|
@@ -32754,6 +33416,8 @@ interface BowmarkProviders {
|
|
|
32754
33416
|
goloadup: BowmarkProvider_goloadup.Unit;
|
|
32755
33417
|
goodway: BowmarkProvider_goodway.Unit;
|
|
32756
33418
|
google_flights: BowmarkProvider_google_flights.Unit;
|
|
33419
|
+
google_maps: BowmarkProvider_google_maps.Unit;
|
|
33420
|
+
google_news: BowmarkProvider_google_news.Unit;
|
|
32757
33421
|
gostoreit: BowmarkProvider_gostoreit.Unit;
|
|
32758
33422
|
gotchacovered: BowmarkProvider_gotchacovered.Unit;
|
|
32759
33423
|
grainger: BowmarkProvider_grainger.Unit;
|
|
@@ -32767,6 +33431,7 @@ interface BowmarkProviders {
|
|
|
32767
33431
|
hauslabs: BowmarkProvider_hauslabs.Unit;
|
|
32768
33432
|
havenenergy: BowmarkProvider_havenenergy.Unit;
|
|
32769
33433
|
haydenhomes: BowmarkProvider_haydenhomes.Unit;
|
|
33434
|
+
hccts: BowmarkProvider_hccts.Unit;
|
|
32770
33435
|
healthcare_gov: BowmarkProvider_healthcare_gov.Unit;
|
|
32771
33436
|
heatherwood: BowmarkProvider_heatherwood.Unit;
|
|
32772
33437
|
hellofresh: BowmarkProvider_hellofresh.Unit;
|
|
@@ -32903,6 +33568,7 @@ interface BowmarkProviders {
|
|
|
32903
33568
|
selectblinds: BowmarkProvider_selectblinds.Unit;
|
|
32904
33569
|
sellcell: BowmarkProvider_sellcell.Unit;
|
|
32905
33570
|
semihandmade: BowmarkProvider_semihandmade.Unit;
|
|
33571
|
+
serper: BowmarkProvider_serper.Unit;
|
|
32906
33572
|
sitmeanssit: BowmarkProvider_sitmeanssit.Unit;
|
|
32907
33573
|
sixflags: BowmarkProvider_sixflags.Unit;
|
|
32908
33574
|
smartsign: BowmarkProvider_smartsign.Unit;
|
|
@@ -84690,11 +85356,13 @@ interface BowmarkProviders {
|
|
|
84690
85356
|
* `run()` script, and the Proxy over HTTP in a caller's own process. They are
|
|
84691
85357
|
* generated once precisely so those two cannot drift. */
|
|
84692
85358
|
interface BowmarkLibrary {
|
|
85359
|
+
booking_links: BowmarkCapability_booking_links.Unit;
|
|
84693
85360
|
bundles: BowmarkCapability_bundles.Unit;
|
|
84694
85361
|
cable_railing_quote: BowmarkCapability_cable_railing_quote.Unit;
|
|
84695
85362
|
cars: BowmarkCapability_cars.Unit;
|
|
84696
85363
|
costume_size_check: BowmarkCapability_costume_size_check.Unit;
|
|
84697
85364
|
coworking: BowmarkCapability_coworking.Unit;
|
|
85365
|
+
currency_exchange: BowmarkCapability_currency_exchange.Unit;
|
|
84698
85366
|
custom_sofa_configurator: BowmarkCapability_custom_sofa_configurator.Unit;
|
|
84699
85367
|
delivery: BowmarkCapability_delivery.Unit;
|
|
84700
85368
|
developer_api_key_signup: BowmarkCapability_developer_api_key_signup.Unit;
|