@@ -5,6 +5,15 @@ import type {
55 Timestamp ,
66} from '../../util/types.ts' ;
77import 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' ;
817import type { User } from './users.ts' ;
918
1019/**
@@ -249,38 +258,73 @@ export interface Webhook {
249258/**
250259 * An event is sent from a webhook to an endpoint
251260 */
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 ;
278266}
279267
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+
284328export type ProjectsEndpoints =
285329 | Endpoint <
286330 'DELETE' ,
0 commit comments