use reqwest::Method;
use serde::Serialize;
use super::{create, delete, get, list, resource, schedule, seg, update};
use crate::models::*;
use crate::{Pager, Record, Request};
resource!(
ApiTokens,
"api-token"
);
impl ApiTokens<'_> {
list!(ApiTokenResponse);
get!(ApiTokenResponse);
}
resource!(
Environments,
"environment"
);
impl Environments<'_> {
list!(EnvironmentResponse);
get!(EnvironmentResponse);
update!(any => EnvironmentResponse);
}
resource!(
Categories,
"category"
);
impl Categories<'_> {
list!(CategorySchema);
}
resource!(
Teams,
"team"
);
impl Teams<'_> {
list!(Record);
get!(Record);
update!(any => Record);
}
resource!(
Users,
"user"
);
impl Users<'_> {
list!(Record);
get!(Record);
}
resource!(
Tenants,
"tenant"
);
impl Tenants<'_> {
list!(TenantResponse);
get!(TenantResponse);
create!(TenantCreateRequest => TenantResponse);
update!(TenantUpdateRequest => TenantResponse);
delete!(TenantResponse);
pub fn bulk_create(&self, body: &TenantBulkRequest) -> Request<TenantBulkCreateResponse> {
self.client.request(Method::POST, "tenant/bulk").body(body)
}
}
resource!(
LinkTokens,
"link-token"
);
impl LinkTokens<'_> {
create!(LinkTokenRequest => LinkToken);
}
resource!(
SessionTokens,
"session-token"
);
impl SessionTokens<'_> {
create!(SessionTokenRequest => SessionTokenResponse);
pub fn revoke(&self, body: &SessionTokenDeleteRequest) -> Request<SessionTokenDeleteResponse> {
self.client.request(Method::DELETE, Self::PATH).body(body)
}
pub fn renew(&self) -> Request<SessionTokenRenewResponse> {
self.client.request(Method::POST, "session-token/renew")
}
pub fn me(&self) -> Request<SessionTokenMeResponse> {
self.client.request(Method::GET, "session-token/me")
}
}
resource!(
SandboxIntegratedAccounts,
"sandbox-integrated-account"
);
impl SandboxIntegratedAccounts<'_> {
list!(Record);
get!(Record);
create!(any => Record);
delete!(Record);
}
resource!(
EnvironmentIntegrations,
"environment-integration"
);
impl EnvironmentIntegrations<'_> {
list!(EnvironmentIntegrationResponse);
get!(EnvironmentIntegrationResponse);
create!(EnvironmentIntegrationCreateRequest => EnvironmentIntegrationResponse);
update!(EnvironmentIntegrationUpdateRequest => EnvironmentIntegrationResponse);
delete!(EnvironmentIntegrationDeleteResponse);
}
resource!(
EnvironmentUnifiedModels,
"environment-unified-model"
);
impl EnvironmentUnifiedModels<'_> {
list!(EnvironmentUnifiedModelResponse);
get!(EnvironmentUnifiedModelResponse);
create!(EnvironmentUnifiedModelCreateRequest => EnvironmentUnifiedModelResponse);
update!(EnvironmentUnifiedModelUpdateRequest => EnvironmentUnifiedModelResponse);
delete!(EnvironmentUnifiedModelDeleteResponse);
}
resource!(
UnifiedModelResourceMethods,
"unified-model-resource-method"
);
impl UnifiedModelResourceMethods<'_> {
list!(UnifiedModelResourceMethodRowResponse);
get!(UnifiedModelResourceMethodRowResponse);
create!(UnifiedModelResourceMethodCreateRequest => UnifiedModelResourceMethodRowResponse);
update!(UnifiedModelResourceMethodUpdateRequest => UnifiedModelResourceMethodRowResponse);
delete!(UnifiedModelResourceMethodDeleteResponse);
}
resource!(
EnvironmentUnifiedModelResourceMethods,
"environment-unified-model-resource-method"
);
impl EnvironmentUnifiedModelResourceMethods<'_> {
list!(EnvironmentUnifiedModelResourceMethodRowResponse);
get!(EnvironmentUnifiedModelResourceMethodRowResponse);
create!(EnvironmentUnifiedModelResourceMethodCreateRequest => EnvironmentUnifiedModelResourceMethodRowResponse);
update!(EnvironmentUnifiedModelResourceMethodUpdateRequest => EnvironmentUnifiedModelResourceMethodRowResponse);
delete!(EnvironmentUnifiedModelResourceMethodDeleteResponse);
}
resource!(
SyncJobs,
"sync-job"
);
impl SyncJobs<'_> {
list!(SyncJobSchema);
get!(SyncJobSchema);
create!(SyncJobCreateRequest => SyncJobSchema);
update!(SyncJobUpdateRequest => SyncJobSchema);
delete!(DeleteResponse);
}
resource!(
SyncJobRuns,
"sync-job-run"
);
impl SyncJobRuns<'_> {
list!(SyncJobRunResponse);
get!(SyncJobRunResponse);
create!(SyncJobRunCreateRequest => SyncJobRunResponse);
update!(any => SyncJobRunResponse);
delete!(SyncJobRunResponse);
}
resource!(
SyncJobCronTriggers,
"sync-job-cron-trigger"
);
impl SyncJobCronTriggers<'_> {
list!(SyncJobCronTriggerSchema);
get!(SyncJobCronTriggerSchema);
create!(SyncJobCronTriggerCreateRequest => SyncJobCronTriggerSchema);
update!(SyncJobCronTriggerUpdateRequest => SyncJobCronTriggerSchema);
delete!(DeleteResponse);
schedule!();
}
resource!(
SyncJobTemplates,
"sync-job-template"
);
impl SyncJobTemplates<'_> {
list!(SyncJobTemplateSchema);
get!(SyncJobTemplateSchema);
create!(SyncJobTemplateCreate => SyncJobTemplateSchema);
update!(SyncJobTemplatePatch => SyncJobTemplateSchema);
delete!(SyncJobTemplateDeleteResponse);
}
resource!(
SyncJobRunStates,
"sync-job-run-state"
);
impl SyncJobRunStates<'_> {
list!(SyncJobRunState);
get!(SyncJobRunState);
create!(SyncJobRunStateCreateRequest => SyncJobRunState);
update!(SyncJobRunStateUpdateRequest => SyncJobRunState);
delete!(SyncJobRunState);
}
macro_rules! record_crud {
($(#[$meta:meta])* $name:ident, $path:literal) => {
resource!($(#[$meta])* $name, $path);
impl $name<'_> {
list!(Record);
get!(Record);
create!(any => Record);
update!(any => Record);
delete!(Record);
}
};
}
record_crud!(
Daemons,
"daemon"
);
record_crud!(
DaemonJobs,
"daemon-job"
);
record_crud!(
DaemonJobRuns,
"daemon-job-run"
);
record_crud!(
Alarms,
"alarm"
);
resource!(
DaemonJobCronTriggers,
"daemon-job-cron-trigger"
);
impl DaemonJobCronTriggers<'_> {
list!(Record);
get!(Record);
create!(any => Record);
update!(any => Record);
delete!(Record);
schedule!();
}
resource!(
WorkflowRuns,
"workflow-run"
);
impl WorkflowRuns<'_> {
list!(WorkflowRunResponse);
get!(WorkflowRunResponse);
create!(any => Record);
update!(any => Record);
delete!(Record);
}
resource!(
Workflows,
"workflow"
);
impl Workflows<'_> {
list!(WorkflowSchema);
get!(WorkflowSchema);
create!(WorkflowCreateSchema => WorkflowSchema);
update!(any => WorkflowSchema);
delete!(WorkflowDeleteResponse);
}
resource!(
Webhooks,
"webhook"
);
impl Webhooks<'_> {
list!(WebhookSchema);
get!(WebhookSchema);
create!(WebhookCreateRequest => WebhookCreateResponse);
update!(WebhookUpdateRequest => WebhookSchema);
delete!(DeleteResponse);
pub fn test(&self, body: &WebhookTestRequest) -> Request<WebhookTestResponse> {
self.client.request(Method::POST, "webhook/test").body(body)
}
}
resource!(
Datastores,
"datastore"
);
impl Datastores<'_> {
list!(DatastoreSchema);
get!(DatastoreSchema);
create!(DatastoreCreateRequest => DatastoreSchema);
update!(DatastoreUpdateRequest => DatastoreSchema);
delete!(DatastoreDeleteResponse);
pub fn test(&self, id: &str, method: &str, body: impl Serialize) -> Request<Record> {
self.client
.request(
Method::POST,
format!("{}/{}/test/{}", Self::PATH, seg(id), seg(method)),
)
.body(body)
}
}
resource!(
DocumentationResource,
"documentation"
);
impl DocumentationResource<'_> {
list!(crate::models::Documentation);
get!(crate::models::Documentation);
create!(DocumentationCreateRequest => crate::models::Documentation);
update!(DocumentationPatchRequest => crate::models::Documentation);
delete!(());
}
resource!(
Logs,
"log"
);
impl Logs<'_> {
pub fn list(&self, log_type: &str) -> Pager<Log> {
let mut pager = self.client.pager(Self::PATH);
pager.query_ref().insert("log_type", log_type);
pager
}
}
resource!(
StaticGates,
"static-gate"
);
impl StaticGates<'_> {
list!(StaticGateResponse);
get!(StaticGateResponse);
create!(StaticGateCreateRequest => StaticGateCreateResponse);
update!(StaticGateUpdateRequest => StaticGateResponse);
delete!(DeleteResponse);
}
resource!(
ObservabilityDestinations,
"observability-destination"
);
impl ObservabilityDestinations<'_> {
list!(ObservabilityDestinationResponse);
get!(ObservabilityDestinationResponse);
create!(ObservabilityDestinationCreateRequest => ObservabilityDestinationResponse);
update!(ObservabilityDestinationUpdateRequest => ObservabilityDestinationResponse);
delete!(DeleteResponse);
pub fn test(
&self,
id: &str,
body: &ObservabilityDestinationTestRequest,
) -> Request<ObservabilityDestinationTestResponse> {
self.client
.request(Method::POST, format!("{}/{}/test", Self::PATH, seg(id)))
.body(body)
}
}
resource!(
Analytics,
"analytics"
);
impl Analytics<'_> {
pub fn status(&self) -> Request<AnalyticsStatusResponse> {
self.client.request(Method::GET, "analytics/status")
}
pub fn metrics(&self) -> Request<AnalyticsMetricsResponse> {
self.client.request(Method::GET, "analytics/metrics")
}
pub fn dashboard(&self) -> Request<AnalyticsDashboardResponse> {
self.client.request(Method::GET, "analytics/dashboard")
}
pub fn timeseries(&self) -> Request<AnalyticsTimeseriesResponse> {
self.client.request(Method::GET, "analytics/timeseries")
}
pub fn breakdown(&self) -> Request<AnalyticsBreakdownResponse> {
self.client.request(Method::GET, "analytics/breakdown")
}
}
resource!(
BatchRequests,
"batch-request"
);
impl BatchRequests<'_> {
create!(BatchRequestSchema => BatchRequestResponse);
}
resource!(
EnvironmentIntegrationWebhooks,
"environment-integration-webhook"
);
impl EnvironmentIntegrationWebhooks<'_> {
pub fn process(
&self,
environment_integration_id: &str,
body: impl Serialize,
) -> Request<Record> {
self.client
.request(
Method::POST,
format!("{}/{}", Self::PATH, seg(environment_integration_id)),
)
.body(body)
}
}
resource!(
IntegratedAccountWebhooks,
"integrated-account-webhook"
);
impl IntegratedAccountWebhooks<'_> {
pub fn process(&self, integrated_account_id: &str, body: impl Serialize) -> Request<Record> {
self.client
.request(
Method::POST,
format!("{}/{}", Self::PATH, seg(integrated_account_id)),
)
.body(body)
}
}