@greatwait/contracts 0.3.1 → 0.3.3

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.
Files changed (95) hide show
  1. package/dist/attempt-diagnostics.d.ts +1 -1
  2. package/dist/attempt-diagnostics.js +13 -1
  3. package/dist/attempt-search.d.ts +2 -0
  4. package/dist/billing.d.ts +46 -0
  5. package/dist/billing.js +29 -0
  6. package/dist/callback-safety.js +5 -1
  7. package/dist/configuration.d.ts +2 -2
  8. package/dist/configuration.js +6 -3
  9. package/dist/delivery.d.ts +12 -1
  10. package/dist/delivery.js +1 -0
  11. package/dist/effective-limits.d.ts +4 -4
  12. package/dist/endpoints.d.ts +29 -0
  13. package/dist/endpoints.js +32 -1
  14. package/dist/forecast.d.ts +2 -2
  15. package/dist/http-request.d.ts +12 -2
  16. package/dist/http-request.js +31 -1
  17. package/dist/index.d.ts +8 -7
  18. package/dist/index.js +8 -7
  19. package/dist/mcp.js +1 -0
  20. package/dist/operational-config.d.ts +174 -22
  21. package/dist/operational-config.js +207 -74
  22. package/dist/operations.d.ts +334 -52
  23. package/dist/operations.js +195 -34
  24. package/dist/project-notifications.d.ts +35 -9
  25. package/dist/project-notifications.js +43 -12
  26. package/dist/protocol.d.ts +28 -0
  27. package/dist/protocol.js +23 -0
  28. package/dist/scheduling-records.d.ts +106 -16
  29. package/dist/scheduling-records.js +36 -12
  30. package/dist/scheduling.d.ts +155 -43
  31. package/dist/scheduling.js +188 -50
  32. package/dist/service-mode.d.ts +88 -0
  33. package/dist/service-mode.js +130 -0
  34. package/dist/tenancy.d.ts +54 -30
  35. package/dist/tenancy.js +35 -17
  36. package/dist/timing.d.ts +39 -0
  37. package/dist/timing.js +51 -0
  38. package/dist/zod-values.d.ts +1 -1
  39. package/dist/zod-values.js +1 -1
  40. package/dist/zod.d.ts +1 -1
  41. package/dist/zod.js +1 -1
  42. package/generated/v1/examples/billing.noticesdismiss.request.json +3 -0
  43. package/generated/v1/examples/billing.noticesdismiss.response.json +6 -0
  44. package/generated/v1/examples/billing.reconcile.response.json +12 -0
  45. package/generated/v1/examples/billing.summary.response.json +12 -0
  46. package/generated/v1/examples/executions.list.response.json +1 -0
  47. package/generated/v1/examples/limits.read.response.json +1 -1
  48. package/generated/v1/examples/projectnotifications.rotateSigningKey.response.json +1 -0
  49. package/generated/v1/examples/projects.list.response.json +0 -6
  50. package/generated/v1/examples/projects.read.response.json +14 -0
  51. package/generated/v1/examples/schedules.list.response.json +1 -3
  52. package/generated/v1/examples/schedules.summary.response.json +174 -0
  53. package/generated/v1/examples/timing.summary.response.json +33 -1
  54. package/generated/v1/manifest.json +79 -2
  55. package/generated/v1/openapi.json +4084 -2023
  56. package/generated/v1/policy-matrix.json +22 -1
  57. package/generated/v1/schemas/attempts.list.response.json +10 -0
  58. package/generated/v1/schemas/attempts.read.response.json +10 -0
  59. package/generated/v1/schemas/attempts.search.response.json +4 -0
  60. package/generated/v1/schemas/billing.notices.query.json +4 -0
  61. package/generated/v1/schemas/billing.noticesdismiss.request.json +12 -0
  62. package/generated/v1/schemas/billing.noticesdismiss.response.json +22 -0
  63. package/generated/v1/schemas/billing.reconcile.response.json +43 -0
  64. package/generated/v1/schemas/billing.summary.response.json +43 -0
  65. package/generated/v1/schemas/endpoints.list.query.json +15 -0
  66. package/generated/v1/schemas/executions.list.response.json +4 -0
  67. package/generated/v1/schemas/occurrences.list.response.json +4 -0
  68. package/generated/v1/schemas/occurrences.read.response.json +4 -0
  69. package/generated/v1/schemas/occurrences.redeliver.response.json +10 -0
  70. package/generated/v1/schemas/projectnotifications.read.response.json +4 -0
  71. package/generated/v1/schemas/projectnotifications.rotateSigningKey.response.json +4 -0
  72. package/generated/v1/schemas/projectnotifications.update.request.json +41 -17
  73. package/generated/v1/schemas/projectnotifications.update.response.json +4 -0
  74. package/generated/v1/schemas/projects.list.response.json +0 -27
  75. package/generated/v1/schemas/projects.read.response-headers.json +11 -0
  76. package/generated/v1/schemas/projects.read.response.json +79 -0
  77. package/generated/v1/schemas/schedules.archive.response.json +8 -0
  78. package/generated/v1/schemas/schedules.cancel.response.json +8 -0
  79. package/generated/v1/schemas/schedules.create.request.json +1 -1
  80. package/generated/v1/schemas/schedules.create.response.json +8 -0
  81. package/generated/v1/schemas/schedules.list.query.json +6 -0
  82. package/generated/v1/schemas/schedules.list.response.json +4 -0
  83. package/generated/v1/schemas/schedules.pause.response.json +8 -0
  84. package/generated/v1/schemas/schedules.read.response.json +8 -0
  85. package/generated/v1/schemas/schedules.replace.request.json +1 -1
  86. package/generated/v1/schemas/schedules.replace.response.json +8 -0
  87. package/generated/v1/schemas/schedules.resume.response.json +8 -0
  88. package/generated/v1/schemas/schedules.summary.query.json +11 -0
  89. package/generated/v1/schemas/schedules.summary.response.json +144 -0
  90. package/generated/v1/schemas/timing.summary.response.json +69 -0
  91. package/generated/v1/snippets/billing.noticesdismiss.json +6 -0
  92. package/generated/v1/snippets/projectnotifications.rotateSigningKey.json +1 -1
  93. package/generated/v1/snippets/projects.read.json +6 -0
  94. package/generated/v1/snippets/schedules.summary.json +6 -0
  95. package/package.json +1 -1
@@ -182,7 +182,7 @@
182
182
  },
183
183
  "latencyClass": {
184
184
  "type": "string",
185
- "enum": ["realtime", "bulk"]
185
+ "enum": ["auto", "bulk", "realtime"]
186
186
  },
187
187
  "lateness": {
188
188
  "type": "object",
@@ -29,6 +29,7 @@
29
29
  "maxLength": 128
30
30
  },
31
31
  "timingPolicyVersion": {
32
+ "description": "Timing policy pinned with trusted first-outbound evidence. Banded occurrences use timing-v2-service-bands (realtime 1000ms, short bulk 10000ms, bulk 60000ms from plannedFor); legacy occurrences without a band retain their recorded policy, including payg-v1, and 5000ms/15000ms thresholds. Absent timing evidence means unknown.",
32
33
  "type": "string",
33
34
  "minLength": 1,
34
35
  "maxLength": 64
@@ -50,6 +51,9 @@
50
51
  "type": "string",
51
52
  "pattern": "^sch_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
52
53
  },
54
+ "scheduleName": {
55
+ "type": "string"
56
+ },
53
57
  "sequence": {
54
58
  "type": "integer",
55
59
  "exclusiveMinimum": 0,
@@ -294,6 +298,10 @@
294
298
  "type": "string",
295
299
  "enum": ["realtime", "bulk"]
296
300
  },
301
+ "requestedLatencyClass": {
302
+ "type": "string",
303
+ "enum": ["auto", "bulk", "realtime"]
304
+ },
297
305
  "lateness": {
298
306
  "type": "object",
299
307
  "properties": {
@@ -65,6 +65,12 @@
65
65
  "default": "created",
66
66
  "type": "string",
67
67
  "enum": ["created", "due"]
68
+ },
69
+ "direction": {
70
+ "default": "asc",
71
+ "description": "asc (default) walks the order oldest-created or soonest-due first; desc walks it newest-created or latest-due first. A cursor continues only in the direction that issued it.",
72
+ "type": "string",
73
+ "enum": ["asc", "desc"]
68
74
  }
69
75
  }
70
76
  }
@@ -214,6 +214,10 @@
214
214
  "type": "string",
215
215
  "enum": ["realtime", "bulk"]
216
216
  },
217
+ "requestedLatencyClass": {
218
+ "type": "string",
219
+ "enum": ["auto", "bulk", "realtime"]
220
+ },
217
221
  "lateness": {
218
222
  "type": "object",
219
223
  "properties": {
@@ -29,6 +29,7 @@
29
29
  "maxLength": 128
30
30
  },
31
31
  "timingPolicyVersion": {
32
+ "description": "Timing policy pinned with trusted first-outbound evidence. Banded occurrences use timing-v2-service-bands (realtime 1000ms, short bulk 10000ms, bulk 60000ms from plannedFor); legacy occurrences without a band retain their recorded policy, including payg-v1, and 5000ms/15000ms thresholds. Absent timing evidence means unknown.",
32
33
  "type": "string",
33
34
  "minLength": 1,
34
35
  "maxLength": 64
@@ -50,6 +51,9 @@
50
51
  "type": "string",
51
52
  "pattern": "^sch_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
52
53
  },
54
+ "scheduleName": {
55
+ "type": "string"
56
+ },
53
57
  "sequence": {
54
58
  "type": "integer",
55
59
  "exclusiveMinimum": 0,
@@ -294,6 +298,10 @@
294
298
  "type": "string",
295
299
  "enum": ["realtime", "bulk"]
296
300
  },
301
+ "requestedLatencyClass": {
302
+ "type": "string",
303
+ "enum": ["auto", "bulk", "realtime"]
304
+ },
297
305
  "lateness": {
298
306
  "type": "object",
299
307
  "properties": {
@@ -29,6 +29,7 @@
29
29
  "maxLength": 128
30
30
  },
31
31
  "timingPolicyVersion": {
32
+ "description": "Timing policy pinned with trusted first-outbound evidence. Banded occurrences use timing-v2-service-bands (realtime 1000ms, short bulk 10000ms, bulk 60000ms from plannedFor); legacy occurrences without a band retain their recorded policy, including payg-v1, and 5000ms/15000ms thresholds. Absent timing evidence means unknown.",
32
33
  "type": "string",
33
34
  "minLength": 1,
34
35
  "maxLength": 64
@@ -50,6 +51,9 @@
50
51
  "type": "string",
51
52
  "pattern": "^sch_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
52
53
  },
54
+ "scheduleName": {
55
+ "type": "string"
56
+ },
53
57
  "sequence": {
54
58
  "type": "integer",
55
59
  "exclusiveMinimum": 0,
@@ -294,6 +298,10 @@
294
298
  "type": "string",
295
299
  "enum": ["realtime", "bulk"]
296
300
  },
301
+ "requestedLatencyClass": {
302
+ "type": "string",
303
+ "enum": ["auto", "bulk", "realtime"]
304
+ },
297
305
  "lateness": {
298
306
  "type": "object",
299
307
  "properties": {
@@ -182,7 +182,7 @@
182
182
  },
183
183
  "latencyClass": {
184
184
  "type": "string",
185
- "enum": ["realtime", "bulk"]
185
+ "enum": ["auto", "bulk", "realtime"]
186
186
  },
187
187
  "lateness": {
188
188
  "type": "object",
@@ -29,6 +29,7 @@
29
29
  "maxLength": 128
30
30
  },
31
31
  "timingPolicyVersion": {
32
+ "description": "Timing policy pinned with trusted first-outbound evidence. Banded occurrences use timing-v2-service-bands (realtime 1000ms, short bulk 10000ms, bulk 60000ms from plannedFor); legacy occurrences without a band retain their recorded policy, including payg-v1, and 5000ms/15000ms thresholds. Absent timing evidence means unknown.",
32
33
  "type": "string",
33
34
  "minLength": 1,
34
35
  "maxLength": 64
@@ -50,6 +51,9 @@
50
51
  "type": "string",
51
52
  "pattern": "^sch_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
52
53
  },
54
+ "scheduleName": {
55
+ "type": "string"
56
+ },
53
57
  "sequence": {
54
58
  "type": "integer",
55
59
  "exclusiveMinimum": 0,
@@ -294,6 +298,10 @@
294
298
  "type": "string",
295
299
  "enum": ["realtime", "bulk"]
296
300
  },
301
+ "requestedLatencyClass": {
302
+ "type": "string",
303
+ "enum": ["auto", "bulk", "realtime"]
304
+ },
297
305
  "lateness": {
298
306
  "type": "object",
299
307
  "properties": {
@@ -29,6 +29,7 @@
29
29
  "maxLength": 128
30
30
  },
31
31
  "timingPolicyVersion": {
32
+ "description": "Timing policy pinned with trusted first-outbound evidence. Banded occurrences use timing-v2-service-bands (realtime 1000ms, short bulk 10000ms, bulk 60000ms from plannedFor); legacy occurrences without a band retain their recorded policy, including payg-v1, and 5000ms/15000ms thresholds. Absent timing evidence means unknown.",
32
33
  "type": "string",
33
34
  "minLength": 1,
34
35
  "maxLength": 64
@@ -50,6 +51,9 @@
50
51
  "type": "string",
51
52
  "pattern": "^sch_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
52
53
  },
54
+ "scheduleName": {
55
+ "type": "string"
56
+ },
53
57
  "sequence": {
54
58
  "type": "integer",
55
59
  "exclusiveMinimum": 0,
@@ -294,6 +298,10 @@
294
298
  "type": "string",
295
299
  "enum": ["realtime", "bulk"]
296
300
  },
301
+ "requestedLatencyClass": {
302
+ "type": "string",
303
+ "enum": ["auto", "bulk", "realtime"]
304
+ },
297
305
  "lateness": {
298
306
  "type": "object",
299
307
  "properties": {
@@ -0,0 +1,11 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "timeZone": {
6
+ "description": "IANA time zone the per-day buckets are counted in; defaults to UTC.",
7
+ "type": "string",
8
+ "minLength": 1
9
+ }
10
+ }
11
+ }
@@ -0,0 +1,144 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "counts": {
6
+ "type": "object",
7
+ "properties": {
8
+ "active": {
9
+ "type": "integer",
10
+ "minimum": 0,
11
+ "maximum": 9007199254740991
12
+ },
13
+ "paused": {
14
+ "type": "integer",
15
+ "minimum": 0,
16
+ "maximum": 9007199254740991
17
+ },
18
+ "completed": {
19
+ "type": "integer",
20
+ "minimum": 0,
21
+ "maximum": 9007199254740991
22
+ },
23
+ "cancelled": {
24
+ "type": "integer",
25
+ "minimum": 0,
26
+ "maximum": 9007199254740991
27
+ }
28
+ },
29
+ "required": ["active", "paused", "completed", "cancelled"]
30
+ },
31
+ "pausedAfterFailures": {
32
+ "type": "object",
33
+ "properties": {
34
+ "count": {
35
+ "type": "integer",
36
+ "minimum": 0,
37
+ "maximum": 9007199254740991
38
+ },
39
+ "schedules": {
40
+ "maxItems": 5,
41
+ "type": "array",
42
+ "items": {
43
+ "type": "object",
44
+ "properties": {
45
+ "id": {
46
+ "type": "string",
47
+ "pattern": "^sch_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
48
+ },
49
+ "name": {
50
+ "type": "string"
51
+ },
52
+ "autoPauseReason": {
53
+ "type": "object",
54
+ "properties": {
55
+ "failedRuns": {
56
+ "type": "integer",
57
+ "exclusiveMinimum": 0,
58
+ "maximum": 9007199254740991
59
+ },
60
+ "status": {
61
+ "type": "integer",
62
+ "minimum": 100,
63
+ "maximum": 599
64
+ },
65
+ "diagnostic": {
66
+ "type": "string",
67
+ "maxLength": 500
68
+ },
69
+ "pausedAt": {
70
+ "type": "string",
71
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
72
+ }
73
+ },
74
+ "required": ["failedRuns", "diagnostic", "pausedAt"]
75
+ }
76
+ },
77
+ "required": ["id", "autoPauseReason"]
78
+ }
79
+ }
80
+ },
81
+ "required": ["count", "schedules"]
82
+ },
83
+ "days": {
84
+ "minItems": 30,
85
+ "maxItems": 30,
86
+ "type": "array",
87
+ "items": {
88
+ "type": "object",
89
+ "properties": {
90
+ "date": {
91
+ "type": "string",
92
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
93
+ },
94
+ "created": {
95
+ "type": "integer",
96
+ "minimum": 0,
97
+ "maximum": 9007199254740991
98
+ },
99
+ "finished": {
100
+ "type": "integer",
101
+ "minimum": 0,
102
+ "maximum": 9007199254740991
103
+ }
104
+ },
105
+ "required": ["date", "created", "finished"]
106
+ }
107
+ },
108
+ "window": {
109
+ "type": "object",
110
+ "properties": {
111
+ "from": {
112
+ "type": "string",
113
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
114
+ },
115
+ "to": {
116
+ "type": "string",
117
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
118
+ },
119
+ "timeZone": {}
120
+ },
121
+ "required": ["from", "to", "timeZone"]
122
+ },
123
+ "freshness": {
124
+ "type": "object",
125
+ "properties": {
126
+ "asOf": {
127
+ "type": "string",
128
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
129
+ },
130
+ "kind": {
131
+ "type": "string",
132
+ "const": "projected"
133
+ },
134
+ "lagSeconds": {
135
+ "type": "integer",
136
+ "minimum": 0,
137
+ "maximum": 9007199254740991
138
+ }
139
+ },
140
+ "required": ["asOf", "kind", "lagSeconds"]
141
+ }
142
+ },
143
+ "required": ["counts", "pausedAfterFailures", "days", "window", "freshness"]
144
+ }
@@ -2,6 +2,75 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "type": "object",
4
4
  "properties": {
5
+ "bandTargets": {
6
+ "minItems": 3,
7
+ "maxItems": 3,
8
+ "type": "array",
9
+ "items": {
10
+ "type": "object",
11
+ "properties": {
12
+ "serviceBand": {
13
+ "type": "string",
14
+ "enum": ["realtime", "short_bulk", "bulk"]
15
+ },
16
+ "targetMs": {
17
+ "anyOf": [
18
+ {
19
+ "type": "number",
20
+ "const": 1000
21
+ },
22
+ {
23
+ "type": "number",
24
+ "const": 10000
25
+ },
26
+ {
27
+ "type": "number",
28
+ "const": 60000
29
+ }
30
+ ]
31
+ },
32
+ "breachCount": {
33
+ "type": "integer",
34
+ "minimum": 0,
35
+ "maximum": 9007199254740991
36
+ },
37
+ "customerBlockedCount": {
38
+ "type": "integer",
39
+ "minimum": 0,
40
+ "maximum": 9007199254740991
41
+ },
42
+ "eligibleOutstandingBreachCount": {
43
+ "type": "integer",
44
+ "minimum": 0,
45
+ "maximum": 9007199254740991
46
+ },
47
+ "maturedCount": {
48
+ "type": "integer",
49
+ "minimum": 0,
50
+ "maximum": 9007199254740991
51
+ },
52
+ "verdict": {
53
+ "type": "string",
54
+ "enum": ["met", "missed", "unknown"]
55
+ },
56
+ "withinTargetCount": {
57
+ "type": "integer",
58
+ "minimum": 0,
59
+ "maximum": 9007199254740991
60
+ }
61
+ },
62
+ "required": [
63
+ "serviceBand",
64
+ "targetMs",
65
+ "breachCount",
66
+ "customerBlockedCount",
67
+ "eligibleOutstandingBreachCount",
68
+ "maturedCount",
69
+ "verdict",
70
+ "withinTargetCount"
71
+ ]
72
+ }
73
+ },
5
74
  "customerBlockedCount": {
6
75
  "type": "integer",
7
76
  "minimum": 0,
@@ -0,0 +1,6 @@
1
+ {
2
+ "curl": "curl -sS -X POST \"$GREATWAIT_API_URL/v1/billing/notices/dismiss\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\" \\\n -H 'Content-Type: application/json' \\\n --data-binary '{\"through\":\"2026-09-10T12:00:00.000Z\"}'",
3
+ "environments": ["test", "live"],
4
+ "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst body = {\n \"through\": \"2026-09-10T12:00:00.000Z\"\n};\n\nconst result = await greatwait.request(\"billing_noticesdismiss\", body);",
5
+ "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {\n \"through\": \"2026-09-10T12:00:00.000Z\"\n },\n \"name\": \"billing_noticesdismiss\"\n}"
6
+ }
@@ -2,5 +2,5 @@
2
2
  "curl": "curl -sS -X POST \"$GREATWAIT_API_URL/v1/projects/$GREATWAIT_PROJECTID/notification-settings/status-signing-key\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\" \\\n -H 'Content-Type: application/json' \\\n --data-binary '{\"expectedRevision\":1}'",
3
3
  "environments": ["test", "live"],
4
4
  "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst projectId = process.env.GREATWAIT_PROJECTID;\n\nconst body = {\n \"expectedRevision\": 1\n};\n\nconst result = await greatwait.request(\"projectnotifications_rotateSigningKey\", projectId, body);",
5
- "mcp": "// projectnotifications.rotateSigningKey is not on the MCP surface.\n// Minting or rotating returns a one-time signing secret. MCP has no negotiated secure-result channel that keeps it out of ordinary tool history. Configure preferences with projectnotifications_update, then use the dashboard or an authenticated REST/SDK/CLI client for the secret."
5
+ "mcp": "// projectnotifications.rotateSigningKey is not on the MCP surface.\n// Rotating returns a signing secret, and MCP has no negotiated secure-result channel that keeps it out of ordinary tool history. Choose the status webhook's endpoint with projectnotifications_update; reveal or rotate that endpoint's key on its page in the dashboard, or with endpoints.rotateSigningKey through an authenticated REST/SDK/CLI client."
6
6
  }
@@ -0,0 +1,6 @@
1
+ {
2
+ "curl": "curl -sS -X GET \"$GREATWAIT_API_URL/v1/projects/$GREATWAIT_PROJECTID\" \\\n --variable %GREATWAIT_SESSION_TOKEN \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_SESSION_TOKEN}}\" \\\n -H 'Greatwait-Project: $GREATWAIT_PROJECT' \\\n -H 'Greatwait-Environment: $GREATWAIT_ENVIRONMENT'",
3
+ "environments": ["test", "live"],
4
+ "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst named = (input, init = {}) =>\n fetch(input, {\n ...init,\n headers: {\n ...init.headers,\n \"Greatwait-Project\": process.env.GREATWAIT_PROJECT,\n \"Greatwait-Environment\": process.env.GREATWAIT_ENVIRONMENT,\n },\n });\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_SESSION_TOKEN,\n fetch: named,\n});\n\nconst projectId = process.env.GREATWAIT_PROJECTID;\n\nconst result = await greatwait.request(\"projects_read\", projectId);",
5
+ "mcp": "// projects.read is not on the MCP surface.\n// The counted read is the deletion preview a signed-in member sees before deleting a project. Counting reads the project's whole history, so it is not offered as an agent tool; rename, archive and delete each answer with the project they changed."
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "curl": "curl -sS -X GET \"$GREATWAIT_API_URL/v1/schedule-summary\" \\\n --variable %GREATWAIT_API_KEY \\\n --expand-header \"Authorization: Bearer {{GREATWAIT_API_KEY}}\"",
3
+ "environments": ["test", "live"],
4
+ "javascript": "import { createGreatwaitClient } from \"@greatwait/api-client\";\n\nconst greatwait = createGreatwaitClient({\n baseUrl: process.env.GREATWAIT_API_URL,\n credential: process.env.GREATWAIT_API_KEY,\n fetch,\n});\n\nconst result = await greatwait.request(\"schedules_summary\");",
5
+ "mcp": "// Any MCP client, against $GREATWAIT_API_URL/mcp.\n{\n \"arguments\": {},\n \"name\": \"schedules_summary\"\n}"
6
+ }
package/package.json CHANGED
@@ -154,5 +154,5 @@
154
154
  },
155
155
  "sideEffects": false,
156
156
  "type": "module",
157
- "version": "0.3.1"
157
+ "version": "0.3.3"
158
158
  }