@bowmark/web 1.20.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 +855 -16
- package/dist/generated/validators.js +875 -4
- 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; }
|
|
@@ -15570,6 +16143,90 @@ interface HauslabsShadeMatch {
|
|
|
15570
16143
|
}
|
|
15571
16144
|
}
|
|
15572
16145
|
|
|
16146
|
+
declare namespace BowmarkProvider_havenenergy {
|
|
16147
|
+
// ── Haven Energy — the unit's own declarations, verbatim ──
|
|
16148
|
+
// Haven Energy's OWN shapes — not a capability contract.
|
|
16149
|
+
|
|
16150
|
+
interface HavenPropertyDetails {
|
|
16151
|
+
homeSize: string | null; // e.g. "SIZE_1500_2499"
|
|
16152
|
+
livingSquareFeet: number | null;
|
|
16153
|
+
latitude: number | null;
|
|
16154
|
+
longitude: number | null;
|
|
16155
|
+
county: string | null;
|
|
16156
|
+
highFireThreatZone: string | null;
|
|
16157
|
+
isInEnergyCommunity: boolean | null;
|
|
16158
|
+
}
|
|
16159
|
+
|
|
16160
|
+
interface HavenPricingTier {
|
|
16161
|
+
batteryModel: string; // e.g. "TESLA_POWERWALL_3"
|
|
16162
|
+
quantity: number;
|
|
16163
|
+
baseMonthlyPayment: number;
|
|
16164
|
+
basePrepaidPayment: number;
|
|
16165
|
+
installationCost: number;
|
|
16166
|
+
billSavings: string; // e.g. "$300-$600"
|
|
16167
|
+
}
|
|
16168
|
+
|
|
16169
|
+
interface HavenPricingProgram {
|
|
16170
|
+
id: string;
|
|
16171
|
+
label: string; // e.g. "PG&E Permanent Battery Storage Rebate"
|
|
16172
|
+
offerType: string;
|
|
16173
|
+
pricingType: string;
|
|
16174
|
+
states: string[];
|
|
16175
|
+
utilities: string[];
|
|
16176
|
+
dwellingsAllowed: string[];
|
|
16177
|
+
requiresIncomeOrMedical: boolean;
|
|
16178
|
+
requiresHomeOwnership: boolean;
|
|
16179
|
+
tiers: HavenPricingTier[];
|
|
16180
|
+
}
|
|
16181
|
+
|
|
16182
|
+
interface HavenPricingProgramsResult { programs: HavenPricingProgram[] }
|
|
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
|
+
|
|
16192
|
+
/**
|
|
16193
|
+
* Haven Energy home battery quoting — read a US address's own property attributes (home size,
|
|
16194
|
+
* county, energy-community status) the way Haven's /quote flow does, and read the site's own
|
|
16195
|
+
* live incentive/pricing program table (real monthly payment, prepaid payment, installation
|
|
16196
|
+
* cost and bill-savings tiers per program), with no name/email/phone collected anywhere in
|
|
16197
|
+
* this path.
|
|
16198
|
+
*/
|
|
16199
|
+
interface Unit {
|
|
16200
|
+
/**
|
|
16201
|
+
* Reads Haven's own property-attributes lookup for a US street address — the same call /quote
|
|
16202
|
+
* makes on step 1 before any pricing is shown. Returns home-size band, county, lat/lng and
|
|
16203
|
+
* energy-community/fire-zone flags used to match pricing programs. THROWS on a malformed
|
|
16204
|
+
* address; Haven's endpoint itself answers a real but unrecognized address with nulled fields
|
|
16205
|
+
* rather than an error.
|
|
16206
|
+
*/
|
|
16207
|
+
getPropertyDetails(address: string): Promise<HavenPropertyDetails>;
|
|
16208
|
+
|
|
16209
|
+
/**
|
|
16210
|
+
* Returns every currently active incentive/pricing program Haven prices against — eligible
|
|
16211
|
+
* states, utilities and dwelling types, plus real per-tier monthly payment, prepaid payment,
|
|
16212
|
+
* installation cost and typical bill savings for a Tesla Powerwall 3 (with or without an
|
|
16213
|
+
* expansion unit). This is the site's own live table; combine with getPropertyDetails'
|
|
16214
|
+
* county/utility context to narrow to the programs a specific home actually qualifies for.
|
|
16215
|
+
*/
|
|
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>;
|
|
16227
|
+
}
|
|
16228
|
+
}
|
|
16229
|
+
|
|
15573
16230
|
declare namespace BowmarkProvider_haydenhomes {
|
|
15574
16231
|
// ── Hayden Homes — the unit's own declarations, verbatim ──
|
|
15575
16232
|
// Hayden Homes' OWN shapes — not a capability contract.
|
|
@@ -15631,6 +16288,32 @@ interface HaydenhomesSearchFilters {
|
|
|
15631
16288
|
}
|
|
15632
16289
|
}
|
|
15633
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
|
+
|
|
15634
16317
|
declare namespace BowmarkProvider_healthcare_gov {
|
|
15635
16318
|
// ── HealthCare.gov — the unit's own declarations, verbatim ──
|
|
15636
16319
|
interface healthcare_govPlan {
|
|
@@ -18475,6 +19158,71 @@ interface IvoryHomesSearchFilters {
|
|
|
18475
19158
|
}
|
|
18476
19159
|
}
|
|
18477
19160
|
|
|
19161
|
+
declare namespace BowmarkProvider_iyc {
|
|
19162
|
+
// ── IYC — the unit's own declarations, verbatim ──
|
|
19163
|
+
interface IycCharterSearchFilters {
|
|
19164
|
+
destination?: string;
|
|
19165
|
+
guestsMin?: number;
|
|
19166
|
+
lengthFeetMin?: number;
|
|
19167
|
+
lengthFeetMax?: number;
|
|
19168
|
+
budgetMaxUsd?: number;
|
|
19169
|
+
sort?: string;
|
|
19170
|
+
page?: number;
|
|
19171
|
+
}
|
|
19172
|
+
interface IycCharterYacht {
|
|
19173
|
+
yachtId: string;
|
|
19174
|
+
slug: string;
|
|
19175
|
+
name: string;
|
|
19176
|
+
url: string;
|
|
19177
|
+
builder: string | null;
|
|
19178
|
+
lengthInFeet: string | null;
|
|
19179
|
+
lengthInMeters: string | null;
|
|
19180
|
+
guests: number | null;
|
|
19181
|
+
cabins: number | null;
|
|
19182
|
+
crew: number | null;
|
|
19183
|
+
priceToDisplay: string | null;
|
|
19184
|
+
priceUsd: string | null;
|
|
19185
|
+
priceEur: string | null;
|
|
19186
|
+
isPriceOnApplication: boolean;
|
|
19187
|
+
image: string | null;
|
|
19188
|
+
availabilityUrl: string | null;
|
|
19189
|
+
}
|
|
19190
|
+
interface IycCharterSearchResult {
|
|
19191
|
+
total: number;
|
|
19192
|
+
page: number;
|
|
19193
|
+
pages: number;
|
|
19194
|
+
filters: IycCharterSearchFilters;
|
|
19195
|
+
yachts: IycCharterYacht[];
|
|
19196
|
+
}
|
|
19197
|
+
interface IycCharterAvailability {
|
|
19198
|
+
yachtId: string;
|
|
19199
|
+
isAvailable: boolean;
|
|
19200
|
+
unavailableDates: string[];
|
|
19201
|
+
maxDateWithPrice: string | null;
|
|
19202
|
+
}
|
|
19203
|
+
|
|
19204
|
+
/**
|
|
19205
|
+
* IYC's superyacht charter search, run for real — filtered inventory with live USD/EUR pricing
|
|
19206
|
+
* and each yacht's own booked-date calendar, off the site's own undocumented filter API.
|
|
19207
|
+
*/
|
|
19208
|
+
interface Unit {
|
|
19209
|
+
/**
|
|
19210
|
+
* Runs IYC's live charter search — destination, minimum guests, length range and max budget —
|
|
19211
|
+
* and returns real matching yachts with USD/EUR pricing, specs and a charter-detail URL. The
|
|
19212
|
+
* entry point: call with {} for the site's own default window, or narrow it.
|
|
19213
|
+
* checkCharterAvailability takes the yachtId this returns.
|
|
19214
|
+
*/
|
|
19215
|
+
searchCharterYachts(filters?: IycCharterSearchFilters): Promise<IycCharterSearchResult>;
|
|
19216
|
+
|
|
19217
|
+
/**
|
|
19218
|
+
* Reads one yacht's real charter calendar for a yachtId from searchCharterYachts — whether
|
|
19219
|
+
* it's marked available at all, and the exact list of dates the site's own calendar has
|
|
19220
|
+
* booked. THROWS if the endpoint's shape changes underneath it.
|
|
19221
|
+
*/
|
|
19222
|
+
checkCharterAvailability(yachtId: string): Promise<IycCharterAvailability>;
|
|
19223
|
+
}
|
|
19224
|
+
}
|
|
19225
|
+
|
|
18478
19226
|
declare namespace BowmarkProvider_jasmine_dilucci {
|
|
18479
19227
|
// ── Jasmine DiLucci Life Coaching — the unit's own declarations, verbatim ──
|
|
18480
19228
|
interface FormField {
|
|
@@ -19098,12 +19846,14 @@ interface KeepaProduct { asin: string; domainId: number; title: string; csv?: un
|
|
|
19098
19846
|
|
|
19099
19847
|
/**
|
|
19100
19848
|
* Keepa's documented Amazon product API — reads a product's native price history and metadata
|
|
19101
|
-
* 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.
|
|
19102
19851
|
*/
|
|
19103
19852
|
interface Unit {
|
|
19104
19853
|
/**
|
|
19105
19854
|
* Reads Keepa's native Amazon product record and compact price-history series for one ASIN.
|
|
19106
|
-
*
|
|
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.
|
|
19107
19857
|
*/
|
|
19108
19858
|
getProduct(args: { asin: string; domain?: number; stats?: number }): Promise<KeepaProductResult>;
|
|
19109
19859
|
}
|
|
@@ -24656,6 +25406,43 @@ interface positivegridRetailerSearch {
|
|
|
24656
25406
|
}
|
|
24657
25407
|
}
|
|
24658
25408
|
|
|
25409
|
+
declare namespace BowmarkProvider_postiz {
|
|
25410
|
+
// ── Postiz — the unit's own declarations, verbatim ──
|
|
25411
|
+
interface PostizPost {
|
|
25412
|
+
id: string;
|
|
25413
|
+
content: string;
|
|
25414
|
+
state?: string;
|
|
25415
|
+
publishDate?: string;
|
|
25416
|
+
integration?: string;
|
|
25417
|
+
group?: string;
|
|
25418
|
+
}
|
|
25419
|
+
|
|
25420
|
+
interface ListPostsArgs {
|
|
25421
|
+
/** ISO 8601 — Postiz's own list endpoint requires both bounds. */
|
|
25422
|
+
startDate: string;
|
|
25423
|
+
endDate: string;
|
|
25424
|
+
customer?: string;
|
|
25425
|
+
}
|
|
25426
|
+
|
|
25427
|
+
interface CreatePostArgs {
|
|
25428
|
+
integrationId: string;
|
|
25429
|
+
content: string;
|
|
25430
|
+
type?: "draft" | "schedule" | "now";
|
|
25431
|
+
date?: string;
|
|
25432
|
+
settings?: Record<string, unknown>;
|
|
25433
|
+
shortLink?: boolean;
|
|
25434
|
+
}
|
|
25435
|
+
|
|
25436
|
+
/** Schedule and publish posts across multiple social media platforms */
|
|
25437
|
+
interface Unit {
|
|
25438
|
+
/** List scheduled and published posts for a workspace within a date range. */
|
|
25439
|
+
listPosts(args: ListPostsArgs): Promise<PostizPost[]>;
|
|
25440
|
+
|
|
25441
|
+
/** Create and schedule a new post across a connected social media account. */
|
|
25442
|
+
createPost(args: CreatePostArgs): Promise<PostizPost>;
|
|
25443
|
+
}
|
|
25444
|
+
}
|
|
25445
|
+
|
|
24659
25446
|
declare namespace BowmarkProvider_premierbuildings {
|
|
24660
25447
|
// ── Premier Portable Buildings — the unit's own declarations, verbatim ──
|
|
24661
25448
|
interface PremierbuildingsStyle {
|
|
@@ -27188,6 +27975,47 @@ interface SemihandmadePriceResult {
|
|
|
27188
27975
|
}
|
|
27189
27976
|
}
|
|
27190
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
|
+
|
|
27191
28019
|
declare namespace BowmarkProvider_sitmeanssit {
|
|
27192
28020
|
// ── Sit Means Sit — the unit's own declarations, verbatim ──
|
|
27193
28021
|
interface SitmeanssitLocation {
|
|
@@ -32522,6 +33350,7 @@ interface BowmarkProviders {
|
|
|
32522
33350
|
cruiselakegeneva: BowmarkProvider_cruiselakegeneva.Unit;
|
|
32523
33351
|
culturefly: BowmarkProvider_culturefly.Unit;
|
|
32524
33352
|
curiocity: BowmarkProvider_curiocity.Unit;
|
|
33353
|
+
currency_exchange: BowmarkProvider_currency_exchange.Unit;
|
|
32525
33354
|
cyberpowerpc: BowmarkProvider_cyberpowerpc.Unit;
|
|
32526
33355
|
dahlconsulting: BowmarkProvider_dahlconsulting.Unit;
|
|
32527
33356
|
dansons: BowmarkProvider_dansons.Unit;
|
|
@@ -32529,6 +33358,7 @@ interface BowmarkProviders {
|
|
|
32529
33358
|
deangroup: BowmarkProvider_deangroup.Unit;
|
|
32530
33359
|
decked: BowmarkProvider_decked.Unit;
|
|
32531
33360
|
decksdirect: BowmarkProvider_decksdirect.Unit;
|
|
33361
|
+
dell: BowmarkProvider_dell.Unit;
|
|
32532
33362
|
deltadentalma: BowmarkProvider_deltadentalma.Unit;
|
|
32533
33363
|
dentalplans: BowmarkProvider_dentalplans.Unit;
|
|
32534
33364
|
detailxperts: BowmarkProvider_detailxperts.Unit;
|
|
@@ -32586,6 +33416,8 @@ interface BowmarkProviders {
|
|
|
32586
33416
|
goloadup: BowmarkProvider_goloadup.Unit;
|
|
32587
33417
|
goodway: BowmarkProvider_goodway.Unit;
|
|
32588
33418
|
google_flights: BowmarkProvider_google_flights.Unit;
|
|
33419
|
+
google_maps: BowmarkProvider_google_maps.Unit;
|
|
33420
|
+
google_news: BowmarkProvider_google_news.Unit;
|
|
32589
33421
|
gostoreit: BowmarkProvider_gostoreit.Unit;
|
|
32590
33422
|
gotchacovered: BowmarkProvider_gotchacovered.Unit;
|
|
32591
33423
|
grainger: BowmarkProvider_grainger.Unit;
|
|
@@ -32597,7 +33429,9 @@ interface BowmarkProviders {
|
|
|
32597
33429
|
hansons: BowmarkProvider_hansons.Unit;
|
|
32598
33430
|
harmar: BowmarkProvider_harmar.Unit;
|
|
32599
33431
|
hauslabs: BowmarkProvider_hauslabs.Unit;
|
|
33432
|
+
havenenergy: BowmarkProvider_havenenergy.Unit;
|
|
32600
33433
|
haydenhomes: BowmarkProvider_haydenhomes.Unit;
|
|
33434
|
+
hccts: BowmarkProvider_hccts.Unit;
|
|
32601
33435
|
healthcare_gov: BowmarkProvider_healthcare_gov.Unit;
|
|
32602
33436
|
heatherwood: BowmarkProvider_heatherwood.Unit;
|
|
32603
33437
|
hellofresh: BowmarkProvider_hellofresh.Unit;
|
|
@@ -32621,6 +33455,7 @@ interface BowmarkProviders {
|
|
|
32621
33455
|
islllc: BowmarkProvider_islllc.Unit;
|
|
32622
33456
|
istanbulkart: BowmarkProvider_istanbulkart.Unit;
|
|
32623
33457
|
ivoryhomes: BowmarkProvider_ivoryhomes.Unit;
|
|
33458
|
+
iyc: BowmarkProvider_iyc.Unit;
|
|
32624
33459
|
jasmine_dilucci: BowmarkProvider_jasmine_dilucci.Unit;
|
|
32625
33460
|
jennikayne: BowmarkProvider_jennikayne.Unit;
|
|
32626
33461
|
joybird: BowmarkProvider_joybird.Unit;
|
|
@@ -32703,6 +33538,7 @@ interface BowmarkProviders {
|
|
|
32703
33538
|
polytex: BowmarkProvider_polytex.Unit;
|
|
32704
33539
|
poshmark: BowmarkProvider_poshmark.Unit;
|
|
32705
33540
|
positivegrid: BowmarkProvider_positivegrid.Unit;
|
|
33541
|
+
postiz: BowmarkProvider_postiz.Unit;
|
|
32706
33542
|
premierbuildings: BowmarkProvider_premierbuildings.Unit;
|
|
32707
33543
|
progressive: BowmarkProvider_progressive.Unit;
|
|
32708
33544
|
prolook: BowmarkProvider_prolook.Unit;
|
|
@@ -32732,6 +33568,7 @@ interface BowmarkProviders {
|
|
|
32732
33568
|
selectblinds: BowmarkProvider_selectblinds.Unit;
|
|
32733
33569
|
sellcell: BowmarkProvider_sellcell.Unit;
|
|
32734
33570
|
semihandmade: BowmarkProvider_semihandmade.Unit;
|
|
33571
|
+
serper: BowmarkProvider_serper.Unit;
|
|
32735
33572
|
sitmeanssit: BowmarkProvider_sitmeanssit.Unit;
|
|
32736
33573
|
sixflags: BowmarkProvider_sixflags.Unit;
|
|
32737
33574
|
smartsign: BowmarkProvider_smartsign.Unit;
|
|
@@ -84519,11 +85356,13 @@ interface BowmarkProviders {
|
|
|
84519
85356
|
* `run()` script, and the Proxy over HTTP in a caller's own process. They are
|
|
84520
85357
|
* generated once precisely so those two cannot drift. */
|
|
84521
85358
|
interface BowmarkLibrary {
|
|
85359
|
+
booking_links: BowmarkCapability_booking_links.Unit;
|
|
84522
85360
|
bundles: BowmarkCapability_bundles.Unit;
|
|
84523
85361
|
cable_railing_quote: BowmarkCapability_cable_railing_quote.Unit;
|
|
84524
85362
|
cars: BowmarkCapability_cars.Unit;
|
|
84525
85363
|
costume_size_check: BowmarkCapability_costume_size_check.Unit;
|
|
84526
85364
|
coworking: BowmarkCapability_coworking.Unit;
|
|
85365
|
+
currency_exchange: BowmarkCapability_currency_exchange.Unit;
|
|
84527
85366
|
custom_sofa_configurator: BowmarkCapability_custom_sofa_configurator.Unit;
|
|
84528
85367
|
delivery: BowmarkCapability_delivery.Unit;
|
|
84529
85368
|
developer_api_key_signup: BowmarkCapability_developer_api_key_signup.Unit;
|