add ListFull methods

This commit is contained in:
mbecker20
2024-05-28 03:25:50 -07:00
parent fdc23c2650
commit 3d1e3009b3
19 changed files with 320 additions and 14 deletions

View File

@@ -14,7 +14,10 @@ use mungos::mongodb::bson::{doc, oid::ObjectId};
use resolver_api::Resolve;
use crate::{
config::core_config, helpers::query::get_resource_ids_for_non_admin, resource, state::{db_client, State}
config::core_config,
helpers::query::get_resource_ids_for_non_admin,
resource,
state::{db_client, State},
};
impl Resolve<GetAlerter, User> for State {
@@ -42,6 +45,16 @@ impl Resolve<ListAlerters, User> for State {
}
}
impl Resolve<ListFullAlerters, User> for State {
async fn resolve(
&self,
ListFullAlerters { query }: ListFullAlerters,
user: User,
) -> anyhow::Result<ListFullAlertersResponse> {
resource::list_full_for_user::<Alerter>(query, &user).await
}
}
impl Resolve<GetAlertersSummary, User> for State {
async fn resolve(
&self,

View File

@@ -53,6 +53,16 @@ impl Resolve<ListBuilds, User> for State {
}
}
impl Resolve<ListFullBuilds, User> for State {
async fn resolve(
&self,
ListFullBuilds { query }: ListFullBuilds,
user: User,
) -> anyhow::Result<ListFullBuildsResponse> {
resource::list_full_for_user::<Build>(query, &user).await
}
}
impl Resolve<GetBuildActionState, User> for State {
async fn resolve(
&self,

View File

@@ -45,6 +45,16 @@ impl Resolve<ListBuilders, User> for State {
}
}
impl Resolve<ListFullBuilders, User> for State {
async fn resolve(
&self,
ListFullBuilders { query }: ListFullBuilders,
user: User,
) -> anyhow::Result<ListFullBuildersResponse> {
resource::list_full_for_user::<Builder>(query, &user).await
}
}
impl Resolve<GetBuildersSummary, User> for State {
async fn resolve(
&self,

View File

@@ -48,6 +48,16 @@ impl Resolve<ListDeployments, User> for State {
}
}
impl Resolve<ListFullDeployments, User> for State {
async fn resolve(
&self,
ListFullDeployments { query }: ListFullDeployments,
user: User,
) -> anyhow::Result<ListFullDeploymentsResponse> {
resource::list_full_for_user::<Deployment>(query, &user).await
}
}
impl Resolve<GetDeploymentContainer, User> for State {
async fn resolve(
&self,

View File

@@ -60,16 +60,19 @@ enum ReadRequest {
GetProcedure(GetProcedure),
GetProcedureActionState(GetProcedureActionState),
ListProcedures(ListProcedures),
ListFullProcedures(ListFullProcedures),
// ==== SERVER TEMPLATE ====
GetServerTemplate(GetServerTemplate),
ListServerTemplates(ListServerTemplates),
ListFullServerTemplates(ListFullServerTemplates),
GetServerTemplatesSummary(GetServerTemplatesSummary),
// ==== SERVER ====
GetServersSummary(GetServersSummary),
GetServer(GetServer),
ListServers(ListServers),
ListFullServers(ListFullServers),
GetServerState(GetServerState),
GetPeripheryVersion(GetPeripheryVersion),
GetDockerContainers(GetDockerContainers),
@@ -84,6 +87,7 @@ enum ReadRequest {
GetDeploymentsSummary(GetDeploymentsSummary),
GetDeployment(GetDeployment),
ListDeployments(ListDeployments),
ListFullDeployments(ListFullDeployments),
GetDeploymentContainer(GetDeploymentContainer),
GetDeploymentActionState(GetDeploymentActionState),
GetDeploymentStats(GetDeploymentStats),
@@ -95,6 +99,7 @@ enum ReadRequest {
GetBuildsSummary(GetBuildsSummary),
GetBuild(GetBuild),
ListBuilds(ListBuilds),
ListFullBuilds(ListFullBuilds),
GetBuildActionState(GetBuildActionState),
GetBuildMonthlyStats(GetBuildMonthlyStats),
GetBuildVersions(GetBuildVersions),
@@ -106,18 +111,21 @@ enum ReadRequest {
GetReposSummary(GetReposSummary),
GetRepo(GetRepo),
ListRepos(ListRepos),
ListFullRepos(ListFullRepos),
GetRepoActionState(GetRepoActionState),
// ==== BUILDER ====
GetBuildersSummary(GetBuildersSummary),
GetBuilder(GetBuilder),
ListBuilders(ListBuilders),
ListFullBuilders(ListFullBuilders),
GetBuilderAvailableAccounts(GetBuilderAvailableAccounts),
// ==== ALERTER ====
GetAlertersSummary(GetAlertersSummary),
GetAlerter(GetAlerter),
ListAlerters(ListAlerters),
ListFullAlerters(ListFullAlerters),
// ==== TOML ====
ExportAllResourcesToToml(ExportAllResourcesToToml),

View File

@@ -1,11 +1,6 @@
use anyhow::Context;
use monitor_client::{
api::read::{
GetProcedure, GetProcedureActionState,
GetProcedureActionStateResponse, GetProcedureResponse,
GetProceduresSummary, GetProceduresSummaryResponse,
ListProcedures, ListProceduresResponse,
},
api::read::*,
entities::{
permission::PermissionLevel,
procedure::{Procedure, ProcedureState},
@@ -44,6 +39,16 @@ impl Resolve<ListProcedures, User> for State {
}
}
impl Resolve<ListFullProcedures, User> for State {
async fn resolve(
&self,
ListFullProcedures { query }: ListFullProcedures,
user: User,
) -> anyhow::Result<ListFullProceduresResponse> {
resource::list_full_for_user::<Procedure>(query, &user).await
}
}
impl Resolve<GetProceduresSummary, User> for State {
async fn resolve(
&self,

View File

@@ -39,6 +39,16 @@ impl Resolve<ListRepos, User> for State {
}
}
impl Resolve<ListFullRepos, User> for State {
async fn resolve(
&self,
ListFullRepos { query }: ListFullRepos,
user: User,
) -> anyhow::Result<ListFullReposResponse> {
resource::list_full_for_user::<Repo>(query, &user).await
}
}
impl Resolve<GetRepoActionState, User> for State {
async fn resolve(
&self,

View File

@@ -108,6 +108,16 @@ impl Resolve<ListServers, User> for State {
}
}
impl Resolve<ListFullServers, User> for State {
async fn resolve(
&self,
ListFullServers { query }: ListFullServers,
user: User,
) -> anyhow::Result<ListFullServersResponse> {
resource::list_full_for_user::<Server>(query, &user).await
}
}
impl Resolve<GetServerState, User> for State {
async fn resolve(
&self,

View File

@@ -2,11 +2,7 @@ use std::str::FromStr;
use anyhow::Context;
use monitor_client::{
api::read::{
GetServerTemplate, GetServerTemplateResponse,
GetServerTemplatesSummary, GetServerTemplatesSummaryResponse,
ListServerTemplates, ListServerTemplatesResponse,
},
api::read::*,
entities::{
permission::PermissionLevel, server_template::ServerTemplate,
update::ResourceTargetVariant, user::User,
@@ -16,7 +12,9 @@ use mungos::mongodb::bson::{doc, oid::ObjectId};
use resolver_api::Resolve;
use crate::{
helpers::query::get_resource_ids_for_non_admin, resource, state::{db_client, State}
helpers::query::get_resource_ids_for_non_admin,
resource,
state::{db_client, State},
};
impl Resolve<GetServerTemplate, User> for State {
@@ -44,6 +42,16 @@ impl Resolve<ListServerTemplates, User> for State {
}
}
impl Resolve<ListFullServerTemplates, User> for State {
async fn resolve(
&self,
ListFullServerTemplates { query }: ListFullServerTemplates,
user: User,
) -> anyhow::Result<ListFullServerTemplatesResponse> {
resource::list_full_for_user::<ServerTemplate>(query, &user).await
}
}
impl Resolve<GetServerTemplatesSummary, User> for State {
async fn resolve(
&self,

View File

@@ -45,6 +45,22 @@ pub struct ListAlerters {
#[typeshare]
pub type ListAlertersResponse = Vec<AlerterListItem>;
/// List full alerters matching optional query. Response: [ListFullAlertersResponse].
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[response(ListFullAlertersResponse)]
pub struct ListFullAlerters {
/// Structured query to filter alerters.
#[serde(default)]
pub query: AlerterQuery,
}
#[typeshare]
pub type ListFullAlertersResponse = Vec<Alerter>;
//
/// Gets a summary of data relating to all alerters.

View File

@@ -50,6 +50,24 @@ pub type ListBuildsResponse = Vec<BuildListItem>;
//
/// List builds matching optional query. Response: [ListFullBuildsResponse].
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[response(ListFullBuildsResponse)]
pub struct ListFullBuilds {
/// optional structured query to filter builds.
#[serde(default)]
pub query: BuildQuery,
}
#[typeshare]
pub type ListFullBuildsResponse = Vec<Build>;
//
/// Get current action state for the build. Response: [BuildActionState].
#[typeshare]
#[derive(

View File

@@ -46,6 +46,23 @@ pub type ListBuildersResponse = Vec<BuilderListItem>;
//
/// List builders matching structured query. Response: [ListFullBuildersResponse].
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[response(ListFullBuildersResponse)]
pub struct ListFullBuilders {
#[serde(default)]
pub query: BuilderQuery,
}
#[typeshare]
pub type ListFullBuildersResponse = Vec<Builder>;
//
/// Gets a summary of data relating to all builders.
/// Response: [GetBuildersSummaryResponse].
#[typeshare]

View File

@@ -54,6 +54,25 @@ pub type ListDeploymentsResponse = Vec<DeploymentListItem>;
//
/// List deployments matching optional query.
/// Response: [ListFullDeploymentsResponse].
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[response(ListFullDeploymentsResponse)]
pub struct ListFullDeployments {
/// optional structured query to filter deployments.
#[serde(default)]
pub query: DeploymentQuery,
}
#[typeshare]
pub type ListFullDeploymentsResponse = Vec<Deployment>;
//
/// Get the container, including image / status, of the target deployment.
/// Response: [GetDeploymentContainerResponse].
///

View File

@@ -47,6 +47,24 @@ pub type ListProceduresResponse = Vec<ProcedureListItem>;
//
/// List procedures matching optional query. Response: [ListFullProceduresResponse].
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[response(ListFullProceduresResponse)]
pub struct ListFullProcedures {
/// optional structured query to filter procedures.
#[serde(default)]
pub query: ProcedureQuery,
}
#[typeshare]
pub type ListFullProceduresResponse = Vec<Procedure>;
//
/// Get current action state for the procedure. Response: [ProcedureActionState].
#[typeshare]
#[derive(

View File

@@ -35,7 +35,7 @@ pub type GetRepoResponse = Repo;
Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[response(Vec<RepoListItem>)]
#[response(ListReposResponse)]
pub struct ListRepos {
/// optional structured query to filter repos.
#[serde(default)]
@@ -47,6 +47,24 @@ pub type ListReposResponse = Vec<RepoListItem>;
//
/// List repos matching optional query. Response: [ListFullReposResponse].
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[response(ListFullReposResponse)]
pub struct ListFullRepos {
/// optional structured query to filter repos.
#[serde(default)]
pub query: RepoQuery,
}
#[typeshare]
pub type ListFullReposResponse = Vec<Repo>;
//
/// Get current action state for the repo. Response: [RepoActionState].
#[typeshare]
#[derive(

View File

@@ -58,6 +58,24 @@ pub type ListServersResponse = Vec<ServerListItem>;
//
/// List servers matching optional query. Response: [ListFullServersResponse].
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[response(ListFullServersResponse)]
pub struct ListFullServers {
/// optional structured query to filter servers.
#[serde(default)]
pub query: ServerQuery,
}
#[typeshare]
pub type ListFullServersResponse = Vec<Server>;
//
/// Get the state of the target server. Response: [GetServerStateResponse].
#[typeshare]
#[derive(

View File

@@ -46,6 +46,23 @@ pub type ListServerTemplatesResponse = Vec<ServerTemplateListItem>;
//
/// List server templates matching structured query. Response: [ListFullServerTemplatesResponse].
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[response(ListFullServerTemplatesResponse)]
pub struct ListFullServerTemplates {
#[serde(default)]
pub query: ServerTemplateQuery,
}
#[typeshare]
pub type ListFullServerTemplatesResponse = Vec<ServerTemplate>;
//
/// Gets a summary of data relating to all server templates.
/// Response: [GetServerTemplatesSummaryResponse].
#[typeshare]

View File

@@ -40,16 +40,19 @@ export type ReadResponses = {
GetProcedure: Types.GetProcedureResponse;
GetProcedureActionState: Types.GetProcedureActionStateResponse;
ListProcedures: Types.ListProceduresResponse;
ListFullProcedures: Types.ListFullProceduresResponse;
// ==== SERVER TEMPLATE ====
GetServerTemplate: Types.GetServerTemplateResponse;
ListServerTemplates: Types.ListServerTemplatesResponse;
ListFullServerTemplates: Types.ListFullServerTemplatesResponse;
GetServerTemplatesSummary: Types.GetServerTemplatesSummaryResponse;
// ==== SERVER ====
GetServersSummary: Types.GetServersSummaryResponse;
GetServer: Types.GetServerResponse;
ListServers: Types.ListServersResponse;
ListFullServers: Types.ListFullServersResponse;
GetServerState: Types.GetServerStateResponse;
GetPeripheryVersion: Types.GetPeripheryVersionResponse;
GetSystemInformation: Types.GetSystemInformationResponse;
@@ -65,6 +68,7 @@ export type ReadResponses = {
GetDeploymentsSummary: Types.GetDeploymentsSummaryResponse;
GetDeployment: Types.GetDeploymentResponse;
ListDeployments: Types.ListDeploymentsResponse;
ListFullDeployments: Types.ListFullDeploymentsResponse;
GetDeploymentContainer: Types.GetDeploymentContainerResponse;
GetDeploymentActionState: Types.GetDeploymentActionStateResponse;
GetDeploymentStats: Types.GetDeploymentStatsResponse;
@@ -76,6 +80,7 @@ export type ReadResponses = {
GetBuildsSummary: Types.GetBuildsSummaryResponse;
GetBuild: Types.GetBuildResponse;
ListBuilds: Types.ListBuildsResponse;
ListFullBuilds: Types.ListFullBuildsResponse;
GetBuildActionState: Types.GetBuildActionStateResponse;
GetBuildMonthlyStats: Types.GetBuildMonthlyStatsResponse;
GetBuildVersions: Types.GetBuildVersionsResponse;
@@ -86,18 +91,21 @@ export type ReadResponses = {
GetReposSummary: Types.GetReposSummaryResponse;
GetRepo: Types.GetRepoResponse;
ListRepos: Types.ListReposResponse;
ListFullRepos: Types.ListFullReposResponse;
GetRepoActionState: Types.GetRepoActionStateResponse;
// ==== BUILDER ====
GetBuildersSummary: Types.GetBuildersSummaryResponse;
GetBuilder: Types.GetBuilderResponse;
ListBuilders: Types.ListBuildersResponse;
ListFullBuilders: Types.ListFullBuildersResponse;
GetBuilderAvailableAccounts: Types.GetBuilderAvailableAccountsResponse;
// ==== ALERTER ====
GetAlertersSummary: Types.GetAlertersSummaryResponse;
GetAlerter: Types.GetAlerterResponse;
ListAlerters: Types.ListAlertersResponse;
ListFullAlerters: Types.ListFullAlertersResponse;
// ==== TOML ====
ExportAllResourcesToToml: Types.ExportAllResourcesToTomlResponse;

View File

@@ -283,6 +283,8 @@ export type AlerterListItem = ResourceListItem<AlerterListItemInfo>;
export type ListAlertersResponse = AlerterListItem[];
export type ListFullAlertersResponse = Alerter[];
export interface Version {
major: number;
minor: number;
@@ -385,6 +387,8 @@ export type BuildListItem = ResourceListItem<BuildListItemInfo>;
export type ListBuildsResponse = BuildListItem[];
export type ListFullBuildsResponse = Build[];
export interface BuildActionState {
building: boolean;
}
@@ -421,6 +425,8 @@ export type BuilderListItem = ResourceListItem<BuilderListItemInfo>;
export type ListBuildersResponse = BuilderListItem[];
export type ListFullBuildersResponse = Builder[];
export type DeploymentImage =
/** Deploy any external image. */
| { type: "Image", params: {
@@ -570,6 +576,8 @@ export type DeploymentListItem = ResourceListItem<DeploymentListItemInfo>;
export type ListDeploymentsResponse = DeploymentListItem[];
export type ListFullDeploymentsResponse = Deployment[];
/** Represents the output of some command being run */
export interface Log {
/** A label for the log */
@@ -719,6 +727,8 @@ export type ProcedureListItem = ResourceListItem<ProcedureListItemInfo>;
export type ListProceduresResponse = ProcedureListItem[];
export type ListFullProceduresResponse = Procedure[];
export interface ProcedureActionState {
running: boolean;
}
@@ -796,6 +806,8 @@ export type RepoListItem = ResourceListItem<RepoListItemInfo>;
export type ListReposResponse = RepoListItem[];
export type ListFullReposResponse = Repo[];
export interface RepoActionState {
/** Whether repo currently cloning */
cloning: boolean;
@@ -885,6 +897,8 @@ export type ServerListItem = ResourceListItem<ServerListItemInfo>;
export type ListServersResponse = ServerListItem[];
export type ListFullServersResponse = Server[];
/** Current pending actions on the server. */
export interface ServerActionState {
/** Server currently pruning networks */
@@ -1117,6 +1131,8 @@ export type ServerTemplateListItem = ResourceListItem<ServerTemplateListItemInfo
export type ListServerTemplatesResponse = ServerTemplateListItem[];
export type ListFullServerTemplatesResponse = ServerTemplate[];
export interface Tag {
/**
* The Mongo ID of the tag.
@@ -1754,6 +1770,12 @@ export interface ListAlerters {
query?: AlerterQuery;
}
/** List full alerters matching optional query. Response: [ListFullAlertersResponse]. */
export interface ListFullAlerters {
/** Structured query to filter alerters. */
query?: AlerterQuery;
}
/**
* Gets a summary of data relating to all alerters.
* Response: [GetAlertersSummaryResponse].
@@ -1778,6 +1800,12 @@ export interface ListBuilds {
query?: BuildQuery;
}
/** List builds matching optional query. Response: [ListFullBuildsResponse]. */
export interface ListFullBuilds {
/** optional structured query to filter builds. */
query?: BuildQuery;
}
/** Get current action state for the build. Response: [BuildActionState]. */
export interface GetBuildActionState {
/** Id or name */
@@ -1877,6 +1905,11 @@ export interface ListBuilders {
query?: BuilderQuery;
}
/** List builders matching structured query. Response: [ListFullBuildersResponse]. */
export interface ListFullBuilders {
query?: BuilderQuery;
}
/**
* Gets a summary of data relating to all builders.
* Response: [GetBuildersSummaryResponse].
@@ -1922,6 +1955,15 @@ export interface ListDeployments {
query?: DeploymentQuery;
}
/**
* List deployments matching optional query.
* Response: [ListFullDeploymentsResponse].
*/
export interface ListFullDeployments {
/** optional structured query to filter deployments. */
query?: DeploymentQuery;
}
/**
* Get the container, including image / status, of the target deployment.
* Response: [GetDeploymentContainerResponse].
@@ -2099,6 +2141,12 @@ export interface ListProcedures {
query?: ProcedureQuery;
}
/** List procedures matching optional query. Response: [ListFullProceduresResponse]. */
export interface ListFullProcedures {
/** optional structured query to filter procedures. */
query?: ProcedureQuery;
}
/** Get current action state for the procedure. Response: [ProcedureActionState]. */
export interface GetProcedureActionState {
/** Id or name */
@@ -2138,6 +2186,12 @@ export interface ListRepos {
query?: RepoQuery;
}
/** List repos matching optional query. Response: [ListFullReposResponse]. */
export interface ListFullRepos {
/** optional structured query to filter repos. */
query?: RepoQuery;
}
/** Get current action state for the repo. Response: [RepoActionState]. */
export interface GetRepoActionState {
/** Id or name */
@@ -2201,6 +2255,12 @@ export interface ListServers {
query?: ServerQuery;
}
/** List servers matching optional query. Response: [ListFullServersResponse]. */
export interface ListFullServers {
/** optional structured query to filter servers. */
query?: ServerQuery;
}
/** Get the state of the target server. Response: [GetServerStateResponse]. */
export interface GetServerState {
/** Id or name */
@@ -2393,6 +2453,11 @@ export interface ListServerTemplates {
query?: ServerTemplateQuery;
}
/** List server templates matching structured query. Response: [ListFullServerTemplatesResponse]. */
export interface ListFullServerTemplates {
query?: ServerTemplateQuery;
}
/**
* Gets a summary of data relating to all server templates.
* Response: [GetServerTemplatesSummaryResponse].
@@ -3512,12 +3577,15 @@ export type ReadRequest =
| { type: "GetProcedure", params: GetProcedure }
| { type: "GetProcedureActionState", params: GetProcedureActionState }
| { type: "ListProcedures", params: ListProcedures }
| { type: "ListFullProcedures", params: ListFullProcedures }
| { type: "GetServerTemplate", params: GetServerTemplate }
| { type: "ListServerTemplates", params: ListServerTemplates }
| { type: "ListFullServerTemplates", params: ListFullServerTemplates }
| { type: "GetServerTemplatesSummary", params: GetServerTemplatesSummary }
| { type: "GetServersSummary", params: GetServersSummary }
| { type: "GetServer", params: GetServer }
| { type: "ListServers", params: ListServers }
| { type: "ListFullServers", params: ListFullServers }
| { type: "GetServerState", params: GetServerState }
| { type: "GetPeripheryVersion", params: GetPeripheryVersion }
| { type: "GetDockerContainers", params: GetDockerContainers }
@@ -3530,6 +3598,7 @@ export type ReadRequest =
| { type: "GetDeploymentsSummary", params: GetDeploymentsSummary }
| { type: "GetDeployment", params: GetDeployment }
| { type: "ListDeployments", params: ListDeployments }
| { type: "ListFullDeployments", params: ListFullDeployments }
| { type: "GetDeploymentContainer", params: GetDeploymentContainer }
| { type: "GetDeploymentActionState", params: GetDeploymentActionState }
| { type: "GetDeploymentStats", params: GetDeploymentStats }
@@ -3539,6 +3608,7 @@ export type ReadRequest =
| { type: "GetBuildsSummary", params: GetBuildsSummary }
| { type: "GetBuild", params: GetBuild }
| { type: "ListBuilds", params: ListBuilds }
| { type: "ListFullBuilds", params: ListFullBuilds }
| { type: "GetBuildActionState", params: GetBuildActionState }
| { type: "GetBuildMonthlyStats", params: GetBuildMonthlyStats }
| { type: "GetBuildVersions", params: GetBuildVersions }
@@ -3547,14 +3617,17 @@ export type ReadRequest =
| { type: "GetReposSummary", params: GetReposSummary }
| { type: "GetRepo", params: GetRepo }
| { type: "ListRepos", params: ListRepos }
| { type: "ListFullRepos", params: ListFullRepos }
| { type: "GetRepoActionState", params: GetRepoActionState }
| { type: "GetBuildersSummary", params: GetBuildersSummary }
| { type: "GetBuilder", params: GetBuilder }
| { type: "ListBuilders", params: ListBuilders }
| { type: "ListFullBuilders", params: ListFullBuilders }
| { type: "GetBuilderAvailableAccounts", params: GetBuilderAvailableAccounts }
| { type: "GetAlertersSummary", params: GetAlertersSummary }
| { type: "GetAlerter", params: GetAlerter }
| { type: "ListAlerters", params: ListAlerters }
| { type: "ListFullAlerters", params: ListFullAlerters }
| { type: "ExportAllResourcesToToml", params: ExportAllResourcesToToml }
| { type: "ExportResourcesToToml", params: ExportResourcesToToml }
| { type: "GetTag", params: GetTag }