@drip-apex/apex-cli 0.20.0 → 0.21.1
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 +82 -0
- package/dist/cli.js +1210 -377
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -184,6 +184,7 @@ including every subcommand, argument, option, and alias.
|
|
|
184
184
|
- `apex keys` — manage shop API keys.
|
|
185
185
|
- `apex org` — inspect and manage the organization.
|
|
186
186
|
- `apex team` — manage shop-scoped members and invitations.
|
|
187
|
+
- `apex notifications` — choose Ready to launch email recipients and toggle ready messages on an existing Slack destination.
|
|
187
188
|
|
|
188
189
|
### Experiments and delivery
|
|
189
190
|
|
|
@@ -741,4 +742,85 @@ Unavailable values print `–` (empty in CSV); `*` marks a denominator below 50.
|
|
|
741
742
|
`apex forms unmerge <key> <identity>` undoes it. `apex forms detect <url>` scans a shop page without returning values.
|
|
742
743
|
`apex tracking manifest [manifest]` includes the shop's form definitions in a schemaVersion 1 manifest.
|
|
743
744
|
|
|
745
|
+
Read sale and no-split campaign reports with `apex experiments results <id-or-slug> --sale`.
|
|
746
|
+
Use `--baseline auto|holdout|last_year|prior_period|manual` to override the saved
|
|
747
|
+
reporting preference for one read, or add `--json` for the unchanged API envelope.
|
|
748
|
+
This calls `/api/v1/experiments/{id}/commerce/sale-report`; ordinary results stay unchanged.
|
|
749
|
+
|
|
750
|
+
The report shows current campaign and pooled sale totals, labelled archived arms,
|
|
751
|
+
shop currency, launch-price markdown separately from Shopify amount-off/code allocations,
|
|
752
|
+
and baseline attempts with unavailable-data reasons. Holdout comparisons use observed
|
|
753
|
+
per-visitor order counts and money. Prior-period and manual comparisons are descriptive
|
|
754
|
+
(`not_randomised`), with no causal interval or winner. Last year currently returns
|
|
755
|
+
`last_year_unavailable` with `stored_coverage_unproven`; auto can fall back to a covered
|
|
756
|
+
prior period. Unknown values print as unavailable.
|
|
757
|
+
|
|
758
|
+
`--baseline` requires `--sale`. Sale reports reject `--currency`, audience segment
|
|
759
|
+
filters, `--explain`, `--by-channel`, `--ad-roas`, `--goal`, `--order`, `--samples`,
|
|
760
|
+
and an explicit `--wait`. Dates, environment, currency and population are fixed by
|
|
761
|
+
the experiment. A manual baseline can be saved through
|
|
762
|
+
`PUT /api/v1/experiments/{id}/commerce/sale-report/baseline` with the exact current
|
|
763
|
+
start, assignment epoch and manual revision. For running/paused campaigns, the saved
|
|
764
|
+
snapshot cutoff must be at or after start and at or before the current canonical
|
|
765
|
+
minute rounded down, never future seconds. The manual report pins both actuals and
|
|
766
|
+
baseline to that saved cutoff, shown in the report window, while computedAt stays
|
|
767
|
+
real now. Other baselines use the current window. Completed campaigns require their
|
|
768
|
+
exact completed end; refresh a running snapshot after completion. Missing/blank
|
|
769
|
+
order currencies assume shop currency in current and historical totals and visitor
|
|
770
|
+
moments; nonzero assumption counts are printed. Explicit foreign currencies are excluded.
|
|
771
|
+
|
|
744
772
|
Flag goals: `apex flags create --key banner --name "Banner" --goal <uuid> --goal <uuid> --primary-goal <uuid>`. The same options work on `flags update <id>`; `--goal` replaces the attached set. `flags get <id>` prints goals and marks the primary goal. JSON input can clear the set with `{"goal_ids":[]}`.
|
|
773
|
+
|
|
774
|
+
Flags support ordered audiences through the API and CLI. `apex flags get <flag>`
|
|
775
|
+
shows each audience's order, experience, rollout, stop setting and archive state.
|
|
776
|
+
|
|
777
|
+
```sh
|
|
778
|
+
apex flags experiences create <flag> --file experience.json
|
|
779
|
+
apex flags experiences update <flag> <experience> --file experience.json
|
|
780
|
+
apex flags rules set <flag> --file rules.json --expected-updated-at <parent-version>
|
|
781
|
+
apex flags rules reorder <flag> --file order.json
|
|
782
|
+
apex flags experiences delete <flag> <experience>
|
|
783
|
+
```
|
|
784
|
+
|
|
785
|
+
An experience file contains `key`, `name`, optional typed JSON `value`,
|
|
786
|
+
`mutations`, `custom_css`, `custom_js`, `reset_js`, `anti_flicker_selectors` and
|
|
787
|
+
`code_delivery_mode`. Update files contain only the fields to change. Code uses
|
|
788
|
+
the same validation and publication path as the flag's On version.
|
|
789
|
+
|
|
790
|
+
A rules file is an array (or an object with `rules`) of audience objects with
|
|
791
|
+
`id` (a stable UUID), `name`, `priority`, `order_index`, `variant_id`, `targeting`,
|
|
792
|
+
`rollout_percentage` and `stop_after_match`. A reorder file contains every live
|
|
793
|
+
rule's `id`, `priority` and `order_index`. The set command replaces the live set:
|
|
794
|
+
omitted audiences are archived with their history. An experience referenced by
|
|
795
|
+
any audience, including an archived one, cannot be deleted. The Off and On
|
|
796
|
+
versions keep their identities.
|
|
797
|
+
|
|
798
|
+
Every audience or experience write uses the parent `expected_updated_at`.
|
|
799
|
+
Supply it in the file or with `--expected-updated-at`; otherwise the CLI reads
|
|
800
|
+
the current flag version before saving. A stale version returns a conflict.
|
|
801
|
+
`apex personalizations` keeps its existing request and response format and
|
|
802
|
+
resolves migrated personalizations to their current flag data automatically.
|
|
803
|
+
|
|
804
|
+
Experience saves return `code_save` with artifact review and publication status.
|
|
805
|
+
A publication failure returns HTTP 502 with `error.details.saved: true`; the
|
|
806
|
+
experience is already saved. Read the flag before retrying.
|
|
807
|
+
|
|
808
|
+
### Ready to launch notifications
|
|
809
|
+
|
|
810
|
+
Use a user API key with `team:read` / `team:write` and the shop permission `members:manage`.
|
|
811
|
+
Every command accepts `--shop <id>` and `--json`; otherwise the selected shop is used.
|
|
812
|
+
|
|
813
|
+
```sh
|
|
814
|
+
apex notifications ready get --shop <id> --json
|
|
815
|
+
apex notifications ready email set --recipients a@example.com,b@example.com --shop <id>
|
|
816
|
+
apex notifications ready email add --recipients c@example.com --shop <id>
|
|
817
|
+
apex notifications ready email remove --recipients a@example.com --shop <id>
|
|
818
|
+
apex notifications ready email off --shop <id>
|
|
819
|
+
apex notifications ready slack on --shop <id>
|
|
820
|
+
apex notifications ready slack off --shop <id>
|
|
821
|
+
```
|
|
822
|
+
|
|
823
|
+
Recipients must already be current shop members. Email `off` clears the recipient list.
|
|
824
|
+
Slack `off` removes only `experiment.ready_to_launch` from the existing destination's events.
|
|
825
|
+
Connect or resume Slack in Settings > Integrations; selecting the ready event preserves its pause state.
|
|
826
|
+
There is no master switch. If settings change concurrently, retry the command to read the new version.
|