@myapihq/cli 2.9.0 → 2.11.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/dist/commands/container.js +35 -14
- package/dist/commands/flag-reachability.test.js +14 -4
- package/dist/commands/import-key.test.d.ts +1 -0
- package/dist/commands/import-key.test.js +69 -0
- package/dist/commands/org.js +5 -1
- package/dist/commands/setup.d.ts +5 -1
- package/dist/commands/setup.js +67 -6
- package/dist/commands/storage.js +151 -14
- package/dist/config.d.ts +2 -0
- package/dist/errors.d.ts +4 -0
- package/dist/errors.js +36 -3
- package/dist/helpers.d.ts +20 -1
- package/dist/helpers.js +79 -1
- package/dist/index.js +6 -1
- package/dist/org-not-found.test.d.ts +1 -0
- package/dist/org-not-found.test.js +42 -0
- package/dist/org-notice.test.d.ts +1 -0
- package/dist/org-notice.test.js +37 -0
- package/dist/output.d.ts +6 -0
- package/dist/output.js +8 -1
- package/dist/skills/my-api-hq/SKILL.md +34 -14
- package/dist/skills/my-audience-api/SKILL.md +16 -1
- package/dist/skills/my-auth-api/SKILL.md +17 -2
- package/dist/skills/my-company-api/SKILL.md +16 -1
- package/dist/skills/my-container-api/SKILL.md +45 -24
- package/dist/skills/my-crm-api/SKILL.md +16 -1
- package/dist/skills/my-database-api/SKILL.md +13 -17
- package/dist/skills/my-domain-api/SKILL.md +16 -1
- package/dist/skills/my-email-api/SKILL.md +12 -16
- package/dist/skills/my-email-verify-api/SKILL.md +16 -1
- package/dist/skills/my-feedback-api/README.md +33 -0
- package/dist/skills/my-feedback-api/SKILL.md +118 -0
- package/dist/skills/my-feedback-api/claude/.claude-plugin/plugin.json +7 -0
- package/dist/skills/my-function-api/README.md +34 -0
- package/dist/skills/my-function-api/SKILL.md +16 -1
- package/dist/skills/my-funnel-api/SKILL.md +16 -1
- package/dist/skills/my-git-api/SKILL.md +17 -1
- package/dist/skills/my-image-api/SKILL.md +17 -1
- package/dist/skills/my-llm-api/SKILL.md +20 -6
- package/dist/skills/my-payments-api/README.md +33 -0
- package/dist/skills/my-payments-api/SKILL.md +16 -1
- package/dist/skills/my-people-api/SKILL.md +16 -1
- package/dist/skills/my-pixel-api/SKILL.md +26 -3
- package/dist/skills/my-queue-api/SKILL.md +35 -2
- package/dist/skills/my-storage-api/SKILL.md +37 -29
- package/dist/skills/my-task-api/SKILL.md +35 -2
- package/dist/skills/my-url-to/SKILL.md +16 -1
- package/dist/skills/my-webhook-api/SKILL.md +23 -3
- package/dist/skills/my-workflow-api/SKILL.md +32 -6
- package/package.json +2 -2
|
@@ -4,7 +4,7 @@ version: 1.0.0
|
|
|
4
4
|
description: >
|
|
5
5
|
Register new domains and manage edge settings. Required before a funnel can go live on a custom URL.
|
|
6
6
|
triggers: [domain, register domain, dns, custom domain, edge, cdn, security level, browser check, renew, namecheap]
|
|
7
|
-
checksum: sha256-
|
|
7
|
+
checksum: sha256-ffe00d434534f444320a3e84323e87168c0c5797445fa0f39eeb55ad8278f721
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MyDomainAPI
|
|
@@ -133,4 +133,19 @@ myapi domain records create <domain> --type CNAME --name app --content x.com --p
|
|
|
133
133
|
reassign path, so pass `--org` explicitly and check `domain list --filter all`
|
|
134
134
|
first.
|
|
135
135
|
|
|
136
|
+
## HTTP (from deployed code)
|
|
137
|
+
|
|
138
|
+
<!-- http:start -->
|
|
139
|
+
<!-- generated by `npm run canonical-sync` — do not edit -->
|
|
140
|
+
```
|
|
141
|
+
base https://api.mydomainapi.com
|
|
142
|
+
path GET /domain/orgs/{org_id}/list
|
|
143
|
+
auth Authorization: Bearer <key> (fn: env.__MYAPI_KEY · container: env.MYAPI_KEY)
|
|
144
|
+
reply { "success": true, "data": …, "error": null, "meta": {…} }
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
- **Per-slot host** — do not assume one host serves every slot.
|
|
148
|
+
- **Org id goes in the PATH** — there is no `X-Org-Id` header.
|
|
149
|
+
<!-- http:end -->
|
|
150
|
+
|
|
136
151
|
Run `myapi domain --help` or `myapi domain <subcommand> --help` for full flag reference.
|
|
@@ -4,7 +4,7 @@ version: 1.0.0
|
|
|
4
4
|
description: >
|
|
5
5
|
Send transactional and bulk email from your own domain. Create mailboxes, send/receive messages, generate AI templates, and manage warmup.
|
|
6
6
|
triggers: [email, mailbox, send email, transactional email, template, warmup, inbox, outbox, ses, sender reputation]
|
|
7
|
-
checksum: sha256-
|
|
7
|
+
checksum: sha256-98aedd0274a450fdd68a2d0cfe3a8af33520c58b2ce6e7cfaee7840fd5526aa6
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MyEmailAPI
|
|
@@ -64,6 +64,7 @@ myapi email warmup stats --address hello@yourdomain.com
|
|
|
64
64
|
|
|
65
65
|
- A mailbox is uniquely identified by its address (`username@domain`).
|
|
66
66
|
- Sending is opt-in per mailbox. Newly-created mailboxes can receive but not send until `activate-sending` runs.
|
|
67
|
+
- **`402`** — `INSUFFICIENT_FUNDS`: top up or enable `myapi billing auto-recharge`. `SPEND_CAP_EXCEEDED`: raise your own ceiling with `myapi billing spend-cap`.
|
|
67
68
|
- Templates are org-scoped. Set a default org once: `myapi config set-org <id>`.
|
|
68
69
|
|
|
69
70
|
|
|
@@ -81,24 +82,19 @@ Two things that read as contradictory and are not:
|
|
|
81
82
|
to run Google Workspace or another provider on the apex, check the existing
|
|
82
83
|
records first with `myapi domain records <domain>`.
|
|
83
84
|
|
|
84
|
-
##
|
|
85
|
-
|
|
86
|
-
The CLI is not what runs in production — a deployed function or container calls
|
|
87
|
-
the HTTP API directly. That surface was previously only discoverable by
|
|
88
|
-
grepping the CLI bundle, which cost one team an hour per slot.
|
|
85
|
+
## HTTP (from deployed code)
|
|
89
86
|
|
|
87
|
+
<!-- http:start -->
|
|
88
|
+
<!-- generated by `npm run canonical-sync` — do not edit -->
|
|
90
89
|
```
|
|
91
|
-
base
|
|
92
|
-
path
|
|
93
|
-
auth
|
|
94
|
-
|
|
95
|
-
body application/json
|
|
96
|
-
reply { "success": true, "data": …, "error": null, "meta": {…} }
|
|
97
|
-
Unwrap `data`. On failure `success` is false and `error` is
|
|
98
|
-
{ code, message }.
|
|
90
|
+
base https://api.myemailapi.com
|
|
91
|
+
path POST /email/send
|
|
92
|
+
auth Authorization: Bearer <key> (fn: env.__MYAPI_KEY · container: env.MYAPI_KEY)
|
|
93
|
+
reply { "success": true, "data": …, "error": null, "meta": {…} }
|
|
99
94
|
```
|
|
100
95
|
|
|
101
|
-
**
|
|
102
|
-
**
|
|
96
|
+
- **Per-slot host** — do not assume one host serves every slot.
|
|
97
|
+
- **Account-scoped, not org-scoped** — no `{org_id}` segment; the key identifies the account.
|
|
98
|
+
<!-- http:end -->
|
|
103
99
|
|
|
104
100
|
Run `myapi email --help` or `myapi email <namespace> --help` for full flag reference.
|
|
@@ -4,7 +4,7 @@ version: 1.0.0
|
|
|
4
4
|
description: >
|
|
5
5
|
Synchronous single-address email verification — syntax + DNS + Microsoft GetCredentialType probe. Returns a verdict in <1s for ~50% of inputs; the rest get verdict='unknown' with smtp_recommended=true. The pre-send quality gate for any outbound campaign.
|
|
6
6
|
triggers: [email verify, email validation, deliverability, smtp, syntax check, dns mx, microsoft, mx lookup, bounce prevention]
|
|
7
|
-
checksum: sha256-
|
|
7
|
+
checksum: sha256-c8ae836c355066eee8a12753f818d3a90c35b99983d74913c8fc76edcc99668f
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MyEmailVerifyAPI
|
|
@@ -90,4 +90,19 @@ done < emails.txt | grep -v ' undeliverable$' > verified.txt
|
|
|
90
90
|
- For bulk verification use the async batch endpoint: `myapi email verify bulk < emails.txt` (one address per line) returns a `job_id`, then poll `myapi email verify job <job_id>` for status + per-address results.
|
|
91
91
|
- Verification is per-org; you'll get rate-limited if you blast more than ~1 req/sec per key.
|
|
92
92
|
|
|
93
|
+
## HTTP (from deployed code)
|
|
94
|
+
|
|
95
|
+
<!-- http:start -->
|
|
96
|
+
<!-- generated by `npm run canonical-sync` — do not edit -->
|
|
97
|
+
```
|
|
98
|
+
base https://api.myemailapi.com
|
|
99
|
+
path POST /email/orgs/{org_id}/verify
|
|
100
|
+
auth Authorization: Bearer <key> (fn: env.__MYAPI_KEY · container: env.MYAPI_KEY)
|
|
101
|
+
reply { "success": true, "data": …, "error": null, "meta": {…} }
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
- **Per-slot host** — do not assume one host serves every slot.
|
|
105
|
+
- **Org id goes in the PATH** — there is no `X-Org-Id` header.
|
|
106
|
+
<!-- http:end -->
|
|
107
|
+
|
|
93
108
|
Run `myapi email verify --help` for inline reference.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
# my-feedback-api
|
|
3
|
+
|
|
4
|
+
The loop back from the people using what you built. A page collects feedback with a public widget key that authenticates nobody; you read, filter, and close it.
|
|
5
|
+
|
|
6
|
+
## What it does
|
|
7
|
+
|
|
8
|
+
- Public widget keys — embed in page source, restrict by origin, revoke without losing collected feedback
|
|
9
|
+
- Three kinds (`bug` | `issue` | `suggestion`), chosen by the reporter rather than inferred
|
|
10
|
+
- Filterable listing by kind and status, newest first, paged with `--limit` / `--offset`
|
|
11
|
+
- `resolve` closes an item; unknown ids answer identically so ids can't be probed across orgs
|
|
12
|
+
|
|
13
|
+
## Quickstart
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
myapi feedback widget create marketing --origins example.com,www.example.com
|
|
17
|
+
myapi feedback list --status open
|
|
18
|
+
myapi feedback resolve <id>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Authentication
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
export MYAPI_KEY=hq_live_...
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Requires `api_key` + `org_id` from **myapihq**. The widget key is separate and deliberately public — it goes in your page source.
|
|
28
|
+
|
|
29
|
+
## Documentation
|
|
30
|
+
|
|
31
|
+
Full command reference and why `kind` is a claim rather than a guess: see `SKILL.md`.
|
|
32
|
+
|
|
33
|
+
Run `myapi feedback --help` for inline reference.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: my-feedback-api
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: >
|
|
5
|
+
Collect feedback from the people using what you built. A public widget key lets a page submit without a credential; you list, filter and resolve the results. Kind is chosen by the person reporting, not inferred from their wording.
|
|
6
|
+
triggers: [feedback, bug report, user feedback, feature request, widget, support, complaints, praise]
|
|
7
|
+
checksum: sha256-41627c4bdf19a5af131adc0e7bab76816e7be47acdc15601bdcef7cdb47b2e26
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# MyFeedbackAPI
|
|
11
|
+
|
|
12
|
+
The loop back from the people using your product. A page collects feedback with
|
|
13
|
+
a public key that authenticates nobody; you read, filter and close it.
|
|
14
|
+
|
|
15
|
+
## Capabilities
|
|
16
|
+
<!-- llm:start -->
|
|
17
|
+
Two halves: a **widget key** a page embeds, and the **items** it produces.
|
|
18
|
+
|
|
19
|
+
### The widget key is public, and that is the point
|
|
20
|
+
|
|
21
|
+
`myapi feedback widget create <name>` mints a key that ships in your page
|
|
22
|
+
source. It is **not a secret** — it names your org so a visitor can submit
|
|
23
|
+
without signing in, and it authenticates nobody.
|
|
24
|
+
|
|
25
|
+
Treating it as a credential is the mistake to avoid: people hide it, and then
|
|
26
|
+
the widget cannot work. What it does need is `--origins`, so another site
|
|
27
|
+
cannot post through it:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
myapi feedback widget create site --origins app.example.com,example.com
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Revoke with `myapi feedback widget revoke <id>`. Submissions stop immediately;
|
|
34
|
+
feedback already collected is kept.
|
|
35
|
+
|
|
36
|
+
**The browser-side submit contract is not documented yet.** The CLI and SDK
|
|
37
|
+
cover minting, revoking, listing and resolving; how a page posts with only the
|
|
38
|
+
widget key is not published anywhere you can read it, so don't guess the
|
|
39
|
+
endpoint. Until it lands, collect through a route you control — a funnel form
|
|
40
|
+
(`my-funnel-api`) or a webhook (`my-webhook-api`) — and file items with
|
|
41
|
+
`myapi feedback create`.
|
|
42
|
+
|
|
43
|
+
### Kind is a claim, not a guess
|
|
44
|
+
|
|
45
|
+
`--kind` is one of `bug`, `issue`, `suggestion`, and it is **what the person
|
|
46
|
+
reporting says it is**. Someone filing a `bug` is telling you
|
|
47
|
+
they believe the product is broken — which is a different and more urgent
|
|
48
|
+
signal than a wish for something new. Do not re-classify from the wording.
|
|
49
|
+
|
|
50
|
+
Classification and duplicate-grouping exist in the platform's design and are
|
|
51
|
+
not built yet, so treat `kind` as the person's own label rather than a
|
|
52
|
+
processed signal.
|
|
53
|
+
|
|
54
|
+
### Reading it back
|
|
55
|
+
|
|
56
|
+
`myapi feedback list` is newest first, filterable by `--kind` and `--status`
|
|
57
|
+
(`open` | `resolved`), paged with `--limit` / `--offset`. **`total` is the
|
|
58
|
+
number of matches, not the size of the page**, and `has_more` flags a truncated
|
|
59
|
+
result — both describe the whole match set.
|
|
60
|
+
|
|
61
|
+
`myapi feedback resolve <id>` closes an item. An unknown id answers the same
|
|
62
|
+
way as an already-resolved one, so a success is not proof the item existed —
|
|
63
|
+
that is deliberate, so ids cannot be probed across orgs.
|
|
64
|
+
<!-- llm:end -->
|
|
65
|
+
|
|
66
|
+
## Commands
|
|
67
|
+
<!-- generated:start -->
|
|
68
|
+
| Command | What it does |
|
|
69
|
+
|---|---|
|
|
70
|
+
| `myapi feedback create "<text>" --kind <k>` | Record one item (`--page-url`, `--route` for context) |
|
|
71
|
+
| `myapi feedback list [--kind bug\|issue\|suggestion] [--status open\|resolved] [--limit N] [--offset N]` | List feedback, newest first |
|
|
72
|
+
| `myapi feedback resolve <id>` | Close an item |
|
|
73
|
+
| `myapi feedback widget create <name> [--origins a.com,b.com]` | Mint a PUBLIC widget key for a site |
|
|
74
|
+
| `myapi feedback widget revoke <id>` | Revoke a key; collected feedback is kept |
|
|
75
|
+
<!-- generated:end -->
|
|
76
|
+
|
|
77
|
+
## Examples
|
|
78
|
+
<!-- llm:start -->
|
|
79
|
+
```bash
|
|
80
|
+
# 1. Mint a key for your site. Restrict the origins.
|
|
81
|
+
myapi feedback widget create marketing --origins example.com,www.example.com
|
|
82
|
+
# → prints a PUBLIC key to embed in the page
|
|
83
|
+
|
|
84
|
+
# 2. Read what came back, newest first
|
|
85
|
+
myapi feedback list --status open
|
|
86
|
+
myapi feedback list --kind bug --limit 20
|
|
87
|
+
|
|
88
|
+
# 3. Record something yourself (support call, your own testing)
|
|
89
|
+
myapi feedback create "checkout 500s on the second attempt" --kind bug \
|
|
90
|
+
--route /checkout
|
|
91
|
+
|
|
92
|
+
# 4. Close it
|
|
93
|
+
myapi feedback resolve <id>
|
|
94
|
+
```
|
|
95
|
+
<!-- llm:end -->
|
|
96
|
+
|
|
97
|
+
## Notes
|
|
98
|
+
|
|
99
|
+
- The widget key is public by design — restrict it with `--origins` rather than hiding it.
|
|
100
|
+
- `resolve` is idempotent and deliberately indistinguishable from an unknown id.
|
|
101
|
+
- Feedback survives widget revocation.
|
|
102
|
+
|
|
103
|
+
## HTTP (from deployed code)
|
|
104
|
+
|
|
105
|
+
<!-- http:start -->
|
|
106
|
+
<!-- generated by `npm run canonical-sync` — do not edit -->
|
|
107
|
+
```
|
|
108
|
+
base https://api.myapihq.com
|
|
109
|
+
path POST /feedback/orgs/{org_id}/widgets
|
|
110
|
+
auth Authorization: Bearer <key> (fn: env.__MYAPI_KEY · container: env.MYAPI_KEY)
|
|
111
|
+
reply { "success": true, "data": …, "error": null, "meta": {…} }
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
- **Per-slot host** — do not assume one host serves every slot.
|
|
115
|
+
- **Org id goes in the PATH** — there is no `X-Org-Id` header.
|
|
116
|
+
<!-- http:end -->
|
|
117
|
+
|
|
118
|
+
Run `myapi feedback --help` for the full flag reference.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "my-feedback-api",
|
|
3
|
+
"description": "Collect feedback from the people using what you built. A public widget key lets a page submit without a credential; you list, filter, and resolve the results.",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"status": "preview",
|
|
6
|
+
"published": true
|
|
7
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
# my-function-api
|
|
3
|
+
|
|
4
|
+
Deploy JavaScript to the MyAPI edge runtime. Register a function, upload a single-file bundle, and it goes live on a public invocation URL — or runs on a cron schedule.
|
|
5
|
+
|
|
6
|
+
## What it does
|
|
7
|
+
|
|
8
|
+
- Two-step lifecycle: `create` registers and mints a scoped key, `deploy` ships a ≤4MB single-file bundle
|
|
9
|
+
- HTTP or cron triggers, fixed at create time
|
|
10
|
+
- Scoped capability key, org-locked, narrowable with `--scope <slot>,...` — a function never out-reaches the credential that made it
|
|
11
|
+
- The key is injected as `env.__MYAPI_KEY` and stays current across deploys
|
|
12
|
+
- Encrypted secrets via `fn env`, invocation history via `fn runs`
|
|
13
|
+
|
|
14
|
+
## Quickstart
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
myapi fn create --name my-app-api
|
|
18
|
+
myapi fn deploy fn_abc123 ./dist/bundle.js
|
|
19
|
+
myapi fn runs fn_abc123
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Authentication
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
export MYAPI_KEY=hq_live_...
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Requires `api_key` + `org_id` from **myapihq**.
|
|
29
|
+
|
|
30
|
+
## Documentation
|
|
31
|
+
|
|
32
|
+
Full command reference, the `__MYAPI_KEY` injection contract, and why `--scope` is effectively permanent: see `SKILL.md`.
|
|
33
|
+
|
|
34
|
+
Run `myapi fn --help` for inline reference.
|
|
@@ -4,7 +4,7 @@ version: 1.0.0
|
|
|
4
4
|
description: >
|
|
5
5
|
Deploy JavaScript functions to the MyAPI edge runtime. Register a function, upload a single-file JS bundle, get a live HTTP invocation URL or run it on a cron schedule. Each function gets a scoped capability key for cross-slot calls.
|
|
6
6
|
triggers: [function, deploy function, edge function, serverless, cloudflare worker, cron, scoped api key, capability key, invocation url, bundle]
|
|
7
|
-
checksum: sha256-
|
|
7
|
+
checksum: sha256-0ab1d08fb6c9cc917fd3d1aa5d730ff3e4fe5dd37e8e30ebe225085593139cca
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MyFunctionAPI
|
|
@@ -135,4 +135,19 @@ curl -H "Authorization: Bearer $SCOPED_KEY" \
|
|
|
135
135
|
handed out — docs, front-end config, webhooks, anything given to a third
|
|
136
136
|
party. Decide the full slot list before you publish the URL.
|
|
137
137
|
|
|
138
|
+
## HTTP (from deployed code)
|
|
139
|
+
|
|
140
|
+
<!-- http:start -->
|
|
141
|
+
<!-- generated by `npm run canonical-sync` — do not edit -->
|
|
142
|
+
```
|
|
143
|
+
base https://api.myapihq.com
|
|
144
|
+
path POST /function/orgs/{org_id}/functions
|
|
145
|
+
auth Authorization: Bearer <key> (fn: env.__MYAPI_KEY · container: env.MYAPI_KEY)
|
|
146
|
+
reply { "success": true, "data": …, "error": null, "meta": {…} }
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
- **Per-slot host** — do not assume one host serves every slot.
|
|
150
|
+
- **Org id goes in the PATH** — there is no `X-Org-Id` header.
|
|
151
|
+
<!-- http:end -->
|
|
152
|
+
|
|
138
153
|
Run `myapi fn --help` or `myapi fn <subcommand> --help` for full flag reference.
|
|
@@ -4,7 +4,7 @@ version: 1.0.0
|
|
|
4
4
|
description: >
|
|
5
5
|
Create and publish websites (funnels) to the edge. Push raw HTML to any slug and it goes live instantly on your org's domain or preview subdomain.
|
|
6
6
|
triggers: [funnel, landing page, website, page, publish, push, slug, html, edge, preview subdomain, makeautonomous]
|
|
7
|
-
checksum: sha256-
|
|
7
|
+
checksum: sha256-24c12e48a6153087641369319ac67e79c1fa36b950b140621d1e118128755b53
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MyFunnelAPI
|
|
@@ -121,4 +121,19 @@ myapi funnel form <funnel_id> --slug survey \
|
|
|
121
121
|
- Deleting a funnel purges all its edge pages immediately.
|
|
122
122
|
- `402 INSUFFICIENT_FUNDS` → top up (`myapi billing topup`) or enable `myapi billing auto-recharge`.
|
|
123
123
|
|
|
124
|
+
## HTTP (from deployed code)
|
|
125
|
+
|
|
126
|
+
<!-- http:start -->
|
|
127
|
+
<!-- generated by `npm run canonical-sync` — do not edit -->
|
|
128
|
+
```
|
|
129
|
+
base https://api.myfunnelapi.com
|
|
130
|
+
path POST /funnel/orgs/{org_id}/funnels
|
|
131
|
+
auth Authorization: Bearer <key> (fn: env.__MYAPI_KEY · container: env.MYAPI_KEY)
|
|
132
|
+
reply { "success": true, "data": …, "error": null, "meta": {…} }
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
- **Per-slot host** — do not assume one host serves every slot.
|
|
136
|
+
- **Org id goes in the PATH** — there is no `X-Org-Id` header.
|
|
137
|
+
<!-- http:end -->
|
|
138
|
+
|
|
124
139
|
Run `myapi funnel --help` or `myapi funnel <subcommand> --help` for full flag reference.
|
|
@@ -4,7 +4,7 @@ version: 1.0.0
|
|
|
4
4
|
description: >
|
|
5
5
|
Hosted git repositories over HTTP. Create repos, read history (log/show/tree/blob/diff), and write atomically (commit/branch/tag/merge) — no clone needed. Real `git clone`/`push` also work over HTTPS with your API key as the password.
|
|
6
6
|
triggers: [git, repo, repository, clone, push, commit, branch, tag, merge, diff, version control, source control, vcs]
|
|
7
|
-
checksum: sha256-
|
|
7
|
+
checksum: sha256-0ce9ebdde1ec29160d186ab0e4fb254d47473af3b57829f0156845bfb08c4ab1
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MyGitAPI
|
|
@@ -117,6 +117,7 @@ surface never leaks which repos exist).
|
|
|
117
117
|
- **`commit --base`** is the concurrency guard: pass the expected tip SHA to reject a stale write, or `--base ""` to require the branch be newly created. Omit it to create-or-update.
|
|
118
118
|
- **Metering.** A `git push` (and `myapi git commit`) is metered like a commit. Clone/fetch (`upload-pack`) is free.
|
|
119
119
|
- **Limits.** A push body is capped at 100 MiB; per-repo size limits apply (a push past the cap is reported as a receive-pack failure).
|
|
120
|
+
- **`402`** — `INSUFFICIENT_FUNDS`: top up or enable `myapi billing auto-recharge`. `SPEND_CAP_EXCEEDED`: raise your own ceiling with `myapi billing spend-cap`.
|
|
120
121
|
- **Auth field.** git may put the API key in the username or password slot — both work. Embedding it in the URL (`https://x:$KEY@…`) avoids the interactive prompt but writes the API key into `.git/config`; use a credential helper for anything persistent.
|
|
121
122
|
|
|
122
123
|
## Commit authorship
|
|
@@ -125,4 +126,19 @@ surface never leaks which repos exist).
|
|
|
125
126
|
author. Without them the commit is attributed to the API key's account, which
|
|
126
127
|
makes every agent-written commit look like the same person.
|
|
127
128
|
|
|
129
|
+
## HTTP (from deployed code)
|
|
130
|
+
|
|
131
|
+
<!-- http:start -->
|
|
132
|
+
<!-- generated by `npm run canonical-sync` — do not edit -->
|
|
133
|
+
```
|
|
134
|
+
base https://api.myapihq.com
|
|
135
|
+
path POST /git/orgs/{org_id}/repos
|
|
136
|
+
auth Authorization: Bearer <key> (fn: env.__MYAPI_KEY · container: env.MYAPI_KEY)
|
|
137
|
+
reply { "success": true, "data": …, "error": null, "meta": {…} }
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
- **Per-slot host** — do not assume one host serves every slot.
|
|
141
|
+
- **Org id goes in the PATH** — there is no `X-Org-Id` header.
|
|
142
|
+
<!-- http:end -->
|
|
143
|
+
|
|
128
144
|
Run `myapi git --help` for the full flag reference.
|
|
@@ -4,7 +4,7 @@ version: 1.0.0
|
|
|
4
4
|
description: >
|
|
5
5
|
Generate AI images from a text prompt. Async — submit a prompt, the CLI polls until the image is ready, then returns a public CDN URL. Image lands automatically in your org's storage.
|
|
6
6
|
triggers: [image, generate image, ai image, hero image, logo, illustration, watercolor, prompt, cyberpunk, ratio, aspect ratio]
|
|
7
|
-
checksum: sha256-
|
|
7
|
+
checksum: sha256-c12686cd9f53f18dbc692c3aca9391409cc1540b693b6f2059074e02bafff72c
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MyImageAPI
|
|
@@ -73,6 +73,22 @@ Tips for agents:
|
|
|
73
73
|
|
|
74
74
|
- Cost is per-image at the selected model's catalog rate (`myapi image models`). Failed jobs aren't charged.
|
|
75
75
|
- The asset URL is public — don't generate sensitive content.
|
|
76
|
+
- **`402`** — `INSUFFICIENT_FUNDS`: top up or enable `myapi billing auto-recharge`. `SPEND_CAP_EXCEEDED`: raise your own ceiling with `myapi billing spend-cap`.
|
|
76
77
|
- `delete` is permanent for the asset; the job record (prompt + metadata) stays for history. Look before you delete: `myapi image list` first, pass `--org` explicitly; delete verbs require `--yes` in non-interactive runs.
|
|
77
78
|
|
|
79
|
+
## HTTP (from deployed code)
|
|
80
|
+
|
|
81
|
+
<!-- http:start -->
|
|
82
|
+
<!-- generated by `npm run canonical-sync` — do not edit -->
|
|
83
|
+
```
|
|
84
|
+
base https://api.myimageapi.com
|
|
85
|
+
path POST /image/orgs/{org_id}/generate
|
|
86
|
+
auth Authorization: Bearer <key> (fn: env.__MYAPI_KEY · container: env.MYAPI_KEY)
|
|
87
|
+
reply { "success": true, "data": …, "error": null, "meta": {…} }
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
- **Per-slot host** — do not assume one host serves every slot.
|
|
91
|
+
- **Org id goes in the PATH** — there is no `X-Org-Id` header.
|
|
92
|
+
<!-- http:end -->
|
|
93
|
+
|
|
78
94
|
Run `myapi image --help` or `myapi image <subcommand> --help` for full flag reference.
|
|
@@ -7,7 +7,7 @@ description: >
|
|
|
7
7
|
(classify / extract / summarize / draft) that hide the model behind a
|
|
8
8
|
task. Pricing in cents per 1M tokens; charged from your MyAPI balance.
|
|
9
9
|
triggers: [llm, completion, chat, embed, embedding, inference, classify, extract, summarize, draft, qwen]
|
|
10
|
-
checksum: sha256-
|
|
10
|
+
checksum: sha256-d89e5c7ccadb7e967f97ec201b745f2313e4263f8f08a695f4cc9fbaa0c4b500
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# MyLLMAPI
|
|
@@ -17,8 +17,6 @@ A two-surface LLM gateway:
|
|
|
17
17
|
- **Raw** — `complete` / `embed` / `models`. You pick a self-hosted catalog model (run `myapi llm models` for the live list). Proprietary models are not callable here.
|
|
18
18
|
- **Verbs** — `classify` / `extract` / `summarize` / `draft`. You ask for a task done; the model is implementation detail.
|
|
19
19
|
|
|
20
|
-
Pricing is cents per 1M tokens at the actual upstream rate, debited from your MyAPI balance.
|
|
21
|
-
|
|
22
20
|
## Capabilities
|
|
23
21
|
<!-- llm:start -->
|
|
24
22
|
For workflow tasks — summarize, classify, extract, draft. The reply goes to stdout and the usage footer (tokens, cost, finish reason) to stderr, so `myapi llm complete ... | jq` works.
|
|
@@ -112,7 +110,7 @@ r = client.chat.completions.create(model="<model-id>",
|
|
|
112
110
|
| `myapi llm classify "<input>" --labels <csv> [--multi] [--tier <t>] [--json]` | Pick a label from a set |
|
|
113
111
|
| `myapi llm extract "<input>" --schema <path\|json> [--tier <t>] [--json]` | Pull structured data conforming to a JSON Schema |
|
|
114
112
|
| `myapi llm summarize "<input>" [--style brief\|exec\|bullet] [--tier <t>] [--json]` | Summarize text |
|
|
115
|
-
| `myapi llm draft --kind <what> [--prompt "<s>"] [--
|
|
113
|
+
| `myapi llm draft --kind <what> [--prompt "<s>"] [--facts <json>] [--directives <json>] ["<src>"] [--tier <t>] [--json]` | Draft an email / reply / message / … |
|
|
116
114
|
<!-- generated:end -->
|
|
117
115
|
|
|
118
116
|
Pass `-` as the prompt/input to read from stdin. Pass `--file <path>` to read longer content from disk.
|
|
@@ -145,7 +143,7 @@ myapi llm summarize --file long-thread.txt --style bullet
|
|
|
145
143
|
|
|
146
144
|
myapi llm draft --kind email \
|
|
147
145
|
--prompt "Friendly welcome, under 60 words." \
|
|
148
|
-
--
|
|
146
|
+
--facts '{"recipient":"a new signup","product":"MyAPI"}'
|
|
149
147
|
|
|
150
148
|
# Classify + route an inbound webhook delivery
|
|
151
149
|
BODY=$(myapi webhook delivery <id> --json | jq -r '.body')
|
|
@@ -156,7 +154,8 @@ INTENT=$(printf '%s' "$BODY" | myapi llm classify - \
|
|
|
156
154
|
|
|
157
155
|
## Notes
|
|
158
156
|
|
|
159
|
-
- **`draft`
|
|
157
|
+
- **`draft --facts` safety.** Fact values are quoted into the prompt verbatim and sensitive-named keys (`secret`, `api_key`, `password`, …) are NOT redacted. Two guards: injection-defense strips `instructions`/`system`/`prompt`/`override` keys into `meta.warnings`; an output guardrail substring-scans fact values (≥4 chars) and lists hits in `meta.guardrails.facts_in_output` (signal, not redaction). Never put credentials, PII, or internal metadata in `--facts` — pass identifiers and reference them indirectly.
|
|
158
|
+
- **`402`** — `INSUFFICIENT_FUNDS`: top up or enable `myapi billing auto-recharge`. `SPEND_CAP_EXCEEDED`: raise your own ceiling with `myapi billing spend-cap`.
|
|
160
159
|
- **Self-hosted raw, server-picked verbs.** Raw runs on MyAPI's TPU; verbs route wherever the server picks.
|
|
161
160
|
- **Cost + latency.** `usage.cost_cents` is authoritative — no markup. Varies by tier: 200–600 ms to first token, 1–3 s end-to-end.
|
|
162
161
|
- **Live catalog, no streaming, no BYOK.** Don't hard-code ids — `models` is truth (CLI auto-picks if `--model` omitted). Full reply only.
|
|
@@ -173,3 +172,18 @@ myapi llm draft --kind email --prompt "the invoice is due" \
|
|
|
173
172
|
```
|
|
174
173
|
|
|
175
174
|
`--context` is the old name for `--facts`; accepted, deprecated upstream.
|
|
175
|
+
|
|
176
|
+
## HTTP (from deployed code)
|
|
177
|
+
|
|
178
|
+
<!-- http:start -->
|
|
179
|
+
<!-- generated by `npm run canonical-sync` — do not edit -->
|
|
180
|
+
```
|
|
181
|
+
base https://api.myapihq.com
|
|
182
|
+
path POST /llm/orgs/{org_id}/complete
|
|
183
|
+
auth Authorization: Bearer <key> (fn: env.__MYAPI_KEY · container: env.MYAPI_KEY)
|
|
184
|
+
reply { "success": true, "data": …, "error": null, "meta": {…} }
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
- **Per-slot host** — do not assume one host serves every slot.
|
|
188
|
+
- **Org id goes in the PATH** — there is no `X-Org-Id` header.
|
|
189
|
+
<!-- http:end -->
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
# my-payments-api
|
|
3
|
+
|
|
4
|
+
Take payments via Stripe. Connect your own Stripe account, then create hosted Checkout URLs for one-off or recurring charges. No raw card data touches your code.
|
|
5
|
+
|
|
6
|
+
## What it does
|
|
7
|
+
|
|
8
|
+
- Bring your own Stripe key (T0) — your account stays the merchant of record
|
|
9
|
+
- One verb for both models: `charge --amount 9.99`, or add `--every month|year` for a subscription
|
|
10
|
+
- Returns a hosted Stripe Checkout URL to paste into a frontend, email, or redirect
|
|
11
|
+
- Full refunds; list and inspect charges
|
|
12
|
+
|
|
13
|
+
## Quickstart
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
myapi payments connect --stripe-key sk_live_...
|
|
17
|
+
myapi payments charge --amount 9.99 --description "Pro plan upgrade"
|
|
18
|
+
myapi payments refund <charge_id>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Authentication
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
export MYAPI_KEY=hq_live_...
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Requires `api_key` + `org_id` from **myapihq**, plus your own Stripe secret key.
|
|
28
|
+
|
|
29
|
+
## Documentation
|
|
30
|
+
|
|
31
|
+
Full command reference and what is deliberately not available yet (T1 Connect Express, partial refunds, coupons, Stripe Tax): see `SKILL.md`.
|
|
32
|
+
|
|
33
|
+
Run `myapi payments --help` for inline reference.
|
|
@@ -4,7 +4,7 @@ version: 1.1.0
|
|
|
4
4
|
description: >
|
|
5
5
|
Take payments via Stripe — one-off or recurring. Connect your own Stripe account, then create hosted Stripe Checkout URLs. No raw card data ever touches your code.
|
|
6
6
|
triggers: [payment, stripe, checkout, charge, subscription, take payments, billing, refund, recurring, sell]
|
|
7
|
-
checksum: sha256-
|
|
7
|
+
checksum: sha256-742d42da2441fb3ce1317b503dd68f706a1f3d4a7d0f8128473683c26fa3be18
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MyPaymentsAPI
|
|
@@ -82,4 +82,19 @@ myapi payments refund <charge_id>
|
|
|
82
82
|
- Multi-currency on a single charge.
|
|
83
83
|
- Customer object as a first-class resource (Stripe tracks by email; `my-crm-api` has the engagement view).
|
|
84
84
|
|
|
85
|
+
## HTTP (from deployed code)
|
|
86
|
+
|
|
87
|
+
<!-- http:start -->
|
|
88
|
+
<!-- generated by `npm run canonical-sync` — do not edit -->
|
|
89
|
+
```
|
|
90
|
+
base https://api.myapihq.com
|
|
91
|
+
path POST /payments/orgs/{org_id}/connect
|
|
92
|
+
auth Authorization: Bearer <key> (fn: env.__MYAPI_KEY · container: env.MYAPI_KEY)
|
|
93
|
+
reply { "success": true, "data": …, "error": null, "meta": {…} }
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
- **Per-slot host** — do not assume one host serves every slot.
|
|
97
|
+
- **Org id goes in the PATH** — there is no `X-Org-Id` header.
|
|
98
|
+
<!-- http:end -->
|
|
99
|
+
|
|
85
100
|
Run `myapi payments --help` or `myapi payments <subcommand> --help` for full flag reference.
|
|
@@ -4,7 +4,7 @@ version: 1.0.0
|
|
|
4
4
|
description: >
|
|
5
5
|
Contact database backed by the Goldfox crawl. Filter people by Goldfox confidence tier, seniority, email type, country, link confidence, plus rich behavioral company signals (has_c_level, has_careers_page, has_decision_maker, etc.). The targeting layer for outbound campaigns.
|
|
6
6
|
triggers: [people, contacts, leads, prospects, search, filter, goldfox, decision-makers, c-level, b2b targeting, corporate email]
|
|
7
|
-
checksum: sha256-
|
|
7
|
+
checksum: sha256-e3f793369aebacfedad165f6bfa1ef831cbf17951e18f34110197697149bf416
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MyPeopleAPI
|
|
@@ -104,4 +104,19 @@ myapi audience members $AID --limit 100 --json > targets.json
|
|
|
104
104
|
- `keyword` matches the row's **domain**, not name/title. Use `--keyword acme` to find people whose domain contains "acme".
|
|
105
105
|
- For a persistent target list, use `my-audience-api` (snapshot the filter; re-evaluate on `audience refresh`).
|
|
106
106
|
|
|
107
|
+
## HTTP (from deployed code)
|
|
108
|
+
|
|
109
|
+
<!-- http:start -->
|
|
110
|
+
<!-- generated by `npm run canonical-sync` — do not edit -->
|
|
111
|
+
```
|
|
112
|
+
base https://api.myapihq.com
|
|
113
|
+
path POST /people/orgs/{org_id}/search
|
|
114
|
+
auth Authorization: Bearer <key> (fn: env.__MYAPI_KEY · container: env.MYAPI_KEY)
|
|
115
|
+
reply { "success": true, "data": …, "error": null, "meta": {…} }
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
- **Per-slot host** — do not assume one host serves every slot.
|
|
119
|
+
- **Org id goes in the PATH** — there is no `X-Org-Id` header.
|
|
120
|
+
<!-- http:end -->
|
|
121
|
+
|
|
107
122
|
Run `myapi people --help` for full flag reference.
|
|
@@ -4,7 +4,7 @@ version: 1.0.0
|
|
|
4
4
|
description: >
|
|
5
5
|
Tracking pixel + identity resolution for MyAPI funnels and email. Capture visits and events, resolve known users to anonymous sessions, stream interaction events for analytics. Pairs with mycrmapi for auto-ingest of pixel_visit events on known contacts.
|
|
6
6
|
triggers: [pixel, analytics, tracking, visit, event, identity, session, attribution, geo, open pixel]
|
|
7
|
-
checksum: sha256-
|
|
7
|
+
checksum: sha256-2c6508a5fdfa752cc5fd4231c087380e6d904f514973830a34e919b277ad31de
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MyPixelAPI
|
|
@@ -50,9 +50,13 @@ Pixel data lives ~90 days hot; aggregated geo/audience samples persist longer. D
|
|
|
50
50
|
| `myapi pixel events (--campaign-id <id> \| --domain <domain>) [--from <iso>] [--to <iso>] [--limit N] [--offset N]` | Engagement events (sent / open / click / page_visit). Requires at least one filter: `--campaign-id` or `--domain` |
|
|
51
51
|
| `myapi pixel interactions [--website <domain>] [--campaign-id <id>] [--domain <domain>] [--from <iso>] [--to <iso>] [--limit N] [--offset N]` | Unified timeline of visits + events |
|
|
52
52
|
| `myapi pixel identity <pixel_id> --website <domain>` | Resolve a pixel ID's identity graph (returns `{uuid, is_resolved, nodes, …}`) |
|
|
53
|
+
| `myapi pixel identify <pixel_id> (--email <addr> \| --external-id <id>)` | Attach a known identity to an anonymous visitor — the write half of identity resolution |
|
|
53
54
|
| `myapi pixel audience` | Geographic distribution sample of your pixel audience |
|
|
54
55
|
<!-- generated:end -->
|
|
55
56
|
|
|
57
|
+
`identity` reads the graph; `identify` writes to it. Everything else in this
|
|
58
|
+
slot is read-only.
|
|
59
|
+
|
|
56
60
|
## Examples
|
|
57
61
|
<!-- llm:start -->
|
|
58
62
|
```bash
|
|
@@ -94,8 +98,27 @@ visitor:
|
|
|
94
98
|
Pass either or both. After this, `pixel identity <pixel_id>` resolves the
|
|
95
99
|
graph across the visitor's sessions.
|
|
96
100
|
|
|
101
|
+
## HTTP (from deployed code)
|
|
102
|
+
|
|
103
|
+
<!-- http:start -->
|
|
104
|
+
<!-- generated by `npm run canonical-sync` — do not edit -->
|
|
105
|
+
```
|
|
106
|
+
base https://api.mypixelapi.com
|
|
107
|
+
path POST /pixel/orgs/{org_id}/identify
|
|
108
|
+
auth Authorization: Bearer <key> (fn: env.__MYAPI_KEY · container: env.MYAPI_KEY)
|
|
109
|
+
reply { "success": true, "data": …, "error": null, "meta": {…} }
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
- **Per-slot host** — do not assume one host serves every slot.
|
|
113
|
+
- **Org id goes in the PATH** — there is no `X-Org-Id` header.
|
|
114
|
+
<!-- http:end -->
|
|
115
|
+
|
|
97
116
|
Run `myapi pixel --help` for inline reference.
|
|
98
117
|
|
|
99
|
-
##
|
|
118
|
+
## Maturity
|
|
100
119
|
|
|
101
|
-
|
|
120
|
+
Reads are live and the CLI surface is stable. The slot is `preview` for one
|
|
121
|
+
reason: **pixel → CRM auto-ingest is not wired yet**, so a `pixel_visit` does
|
|
122
|
+
not appear on a contact's CRM timeline today. Every read verb works; the
|
|
123
|
+
cross-primitive examples that join pixel data to CRM contacts do not resolve
|
|
124
|
+
end-to-end until that lands.
|