import { RpcMethod, Duration } from './commonTypes'; import { Status as pushwoosh_rpc_v2_geozones_Status } from './geozones'; export type GeozonesClustersService_Create = RpcMethod; export type GeozonesClustersService_Update = RpcMethod; export type GeozonesClustersService_List = RpcMethod; export type GeozonesClustersService_Delete = RpcMethod; export interface GeozonesClustersService { /** Creates a geozone cluster in an application: a named group of geozones sharing one entry cooldown. Use before assigning geozones to a cluster; returns the new cluster code. */ Create: GeozonesClustersService_Create; /** Updates a geozone cluster identified by its cluster code, overwriting the name, cooldown and/or active status supplied. Only the fields you set are changed; unset fields are left untouched. */ Update: GeozonesClustersService_Update; /** Lists geozone clusters for an application (or all accessible applications), newest first, with paging and optional name/code search. Use to browse clusters or find a cluster code before update or delete. */ List: GeozonesClustersService_List; /** Deletes a geozone cluster by its cluster code. Fails if any geozone still belongs to the cluster; reassign or delete those geozones first. */ Delete: GeozonesClustersService_Delete; } export type GeozonesCluster = { code: string; application: string; name: string; cooldown: Duration; geozonesCount: number; status: pushwoosh_rpc_v2_geozones_Status; }; export type CreateGeozonesClusterRequest = { /** Application code (format XXXXX-XXXXX) the cluster belongs to. */ application?: string; /** Human-readable cluster name. */ name?: string; /** Minimum time between entry triggers for geozones in this cluster. */ cooldown?: Duration; }; export type CreateGeozonesClusterResponse = { cluster: GeozonesCluster; }; export type UpdateGeozonesClusterRequest = { /** Cluster code of the cluster to update. */ code?: string; /** New cluster name; omit to leave unchanged. */ name?: string; /** New entry cooldown; omit to leave unchanged. */ cooldown?: Duration; /** New active/inactive status; STATUS_UNSPECIFIED leaves it unchanged. */ status?: pushwoosh_rpc_v2_geozones_Status; }; export type UpdateGeozonesClusterResponse = { cluster: GeozonesCluster; }; export type ListGeozonesClustersRequest_OrderBy = 'NAME' | 'CREATED'; export type ListGeozonesClustersRequest_OrderDirection = 'ASC' | 'DESC'; export type ListGeozonesClustersRequest = { /** Application code (format XXXXX-XXXXX) to list clusters for; empty lists across all accessible applications. */ application?: string; orderBy?: ListGeozonesClustersRequest_OrderBy; orderDirection?: ListGeozonesClustersRequest_OrderDirection; page?: number; perPage?: number; /** Case-insensitive substring matched against cluster name or code. */ searchByName?: string; }; export type ListGeozonesClustersResponse = { clusters: GeozonesCluster[]; page: number; perPage: number; total: number; }; export type DeleteGeozonesClusterRequest = { /** Cluster code of the cluster to delete. */ code?: string; }; export type DeleteGeozonesClusterResponse = {};