@tutti-os/tutti-ops-cli 0.1.9 → 0.1.10

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 CHANGED
@@ -130,4 +130,4 @@ Legacy App commands retain their original success output and flags. Legacy
130
130
  `--brand` does not enforce brand isolation. Use canonical entries for schema,
131
131
  dry-run, confirmation, structured output and workflow request history.
132
132
 
133
- 渠道归因:`tutti-ops acquisition summary`、`acquisition bindings list --traffic-content-id campus-test`、`acquisition users get --user-id example-user`。需要独立的 acquisition:read Token 和创建者当前读取授权。见 [渠道归因查询](docs/acquisition-reporting.md)。
133
+ 渠道归因:`tutti-ops acquisition summary`、`acquisition bindings list --traffic-content-id campus-test`、`acquisition users get --user-id example-user`。需要显式的 acquisition:read Token,且创建者须仍是当前管理员。见 [渠道归因查询](docs/acquisition-reporting.md)。
@@ -47,7 +47,7 @@ api('auth status', 'read', 'POST', `${A}/admin/auth/token/inspect`, object({ met
47
47
  const acquisitionCode = { type: 'string', pattern: '^[a-z0-9_-]{1,64}$' };
48
48
  const acquisitionQuery = object({ trafficContentId: acquisitionCode, startAt: s, endAt: s, pageSize: { type: 'integer', minimum: 1, maximum: 200 }, pageToken: { type: 'string', pattern: '^[a-f0-9]{64}$' } });
49
49
  const acquisitionPage = { location: 'params', kind: 'cursor', key: 'pageToken', size: 'pageSize', items: 'items', next: 'nextPageToken' };
50
- const acquisitionOptions = { scope: 'acquisition', permission: 'acquisition.read', source: 'tsh-admin-server acquisition_attribution/v1 API' };
50
+ const acquisitionOptions = { scope: 'acquisition', permission: 'acquisition:read', source: 'tsh-admin-server acquisition_attribution/v1 API' };
51
51
  api('acquisition summary', 'read', 'GET', `${A}/admin/acquisition-attributions/summary`, undefined, acquisitionQuery, { ...acquisitionOptions, pagination: acquisitionPage, description: 'Count first successful user bindings by channel; includes existing accounts' });
52
52
  api('acquisition bindings list', 'read', 'GET', `${A}/admin/acquisition-attributions/bindings`, undefined, { ...acquisitionQuery, required: ['trafficContentId'] }, { ...acquisitionOptions, pagination: acquisitionPage, description: 'List immutable user bindings for one exact TC channel' });
53
53
  api('acquisition users get', 'read', 'GET', `${A}/admin/acquisition-attributions/users/{userId}`, undefined, object({ userId: { type: 'string', pattern: '^[A-Za-z0-9_.@:-]{1,191}$' } }, ['userId']), { ...acquisitionOptions, description: 'Look up one user channel binding; bound=false does not establish account existence' });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tutti-os/tutti-ops-cli",
3
- "version": "0.1.9",
3
+ "version": "0.1.10",
4
4
  "description": "Internal CLI for Tutti operations.",
5
5
  "type": "module",
6
6
  "bin": {