@@ -5,6 +5,15 @@ import type {
5
5
Timestamp ,
6
6
} from '../../util/types.ts' ;
7
7
import type { Endpoint } from '../endpoints.ts' ;
8
+ import type {
9
+ Build ,
10
+ Container ,
11
+ ContainerMetrics ,
12
+ Deployment ,
13
+ DeploymentRollout ,
14
+ Gateway ,
15
+ HealthCheck ,
16
+ } from './ignite.ts' ;
8
17
import type { User } from './users.ts' ;
9
18
10
19
/**
@@ -249,38 +258,73 @@ export interface Webhook {
249
258
/**
250
259
* An event is sent from a webhook to an endpoint
251
260
*/
252
- export interface Event < T extends PossibleWebhookIDs = PossibleWebhookIDs > {
253
- /**
254
- * The ID of the webhook that sent this event
255
- */
256
- webhook_id : Id < 'webhook' > ;
257
- /**
258
- * The ID of the project that this event is for
259
- */
260
- project_id : Id < 'project' > ;
261
- /**
262
- * The time this event occurred at
263
- */
264
- occurred_at : string ;
265
- /**
266
- * The ID of the event
267
- */
268
- id : Id < 'event' > ;
269
- /**
270
- * The event that occurred
271
- * @example ignite.deployment.container.updated
272
- */
273
- event : T ;
274
- /**
275
- * The data for this event
276
- */
277
- data : unknown ;
261
+
262
+ export interface HealthCheckEventUpdate {
263
+ state : 'failed' | 'succeeded' | 'pending' ;
264
+ container_id : string ;
265
+ deployment_id : string ;
278
266
}
279
267
280
- /**
281
- * The endpoints for projects
282
- * @public
283
- */
268
+ export type EventDataMap = {
269
+ 'ignite.deployment.container.updated' : Container ;
270
+ 'ignite.deployment.container.created' : Container ;
271
+ 'ignite.deployment.container.deleted' : Container ;
272
+ 'ignite.deployment.created' : Deployment ;
273
+ 'ignite.deployment.updated' : Deployment ;
274
+ 'ignite.deployment.deleted' : Deployment ;
275
+ 'ignite.deployment.build.created' : Build ;
276
+ 'ignite.deployment.build.updated' : Build ;
277
+ 'ignite.deployment.rollout.created' : DeploymentRollout ;
278
+ 'ignite.deployment.rollout.updated' : DeploymentRollout ;
279
+ 'ignite.deployment.container.metrics_update' : ContainerMetrics ;
280
+ 'ignite.deployment.healthcheck.created' : HealthCheck ;
281
+ 'ignite.deployment.healthcheck.updated' : HealthCheck ;
282
+ 'ignite.deployment.healthcheck.deleted' : HealthCheck ;
283
+ 'ignite.deployment.healthcheck.events.failed' : HealthCheckEventUpdate ;
284
+ 'ignite.deployment.healthcheck.events.succeeded' : HealthCheckEventUpdate ;
285
+ 'ignite.deployment.gateway.created' : Gateway ;
286
+ 'ignite.deployment.gateway.updated' : Gateway ;
287
+ 'ignite.deployment.gateway.deleted' : Gateway ;
288
+ 'project.updated' : Project ;
289
+ 'project.member.created' : Member ;
290
+ 'project.member.updated' : Member ;
291
+ 'project.member.deleted' : Member ;
292
+ 'project.tokens.created' : ProjectToken ;
293
+ 'project.tokens.deleted' : ProjectToken ;
294
+ 'project.secrets.created' : Secret ;
295
+ 'project.secrets.updated' : Secret ;
296
+ 'project.secrets.deleted' : Secret ;
297
+ [ key : string ] : unknown ;
298
+ } ;
299
+
300
+ type Events < E > = E [ keyof E ] ;
301
+
302
+ export type Event = Events < {
303
+ [ Key in PossibleWebhookIDs ] : {
304
+ webhook_id : Id < 'webhook' > ;
305
+ /**
306
+ * The ID of the project that this event is for
307
+ */
308
+ project_id : Id < 'project' > ;
309
+ /**
310
+ * The time this event occurred at
311
+ */
312
+ occurred_at : string ;
313
+ /**
314
+ * The ID of the event
315
+ */
316
+ id : Id < 'event' > ;
317
+ /**
318
+ * The event that occurred
319
+ */
320
+ event : Key ;
321
+ /**
322
+ * The data the belongs to the event
323
+ */
324
+ data : EventDataMap [ Key ] ;
325
+ } ;
326
+ } > ;
327
+
284
328
export type ProjectsEndpoints =
285
329
| Endpoint <
286
330
'DELETE' ,
0 commit comments