cloudflare
Version:
The official TypeScript library for the Cloudflare API
224 lines (196 loc) • 6.36 kB
text/typescript
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
import * as Core from "../../../core";
import { APIResource } from "../../../resource";
import * as RulesAPI from "./rules";
import * as AdvertisementsAPI from "./advertisements";
import { SinglePage } from "../../../pagination";
export class Rules extends APIResource {
advertisements: AdvertisementsAPI.Advertisements = new AdvertisementsAPI.Advertisements(this._client);
/**
* Create network monitoring rules for account. Currently only supports creating a
* single rule per API request.
*/
create(
params: RuleCreateParams,
options?: Core.RequestOptions,
): Core.APIPromise<MagicNetworkMonitoringRule | null> {
const { account_id, body } = params;
return (
this._client.post(`/accounts/${account_id}/mnm/rules`, { body: body, ...options }) as Core.APIPromise<{
result: MagicNetworkMonitoringRule | null;
}>
)._thenUnwrap((obj) => obj.result);
}
/**
* Update network monitoring rules for account.
*/
update(
params: RuleUpdateParams,
options?: Core.RequestOptions,
): Core.APIPromise<MagicNetworkMonitoringRule | null> {
const { account_id, body } = params;
return (
this._client.put(`/accounts/${account_id}/mnm/rules`, { body: body, ...options }) as Core.APIPromise<{
result: MagicNetworkMonitoringRule | null;
}>
)._thenUnwrap((obj) => obj.result);
}
/**
* Lists network monitoring rules for account.
*/
list(
params: RuleListParams,
options?: Core.RequestOptions,
): Core.PagePromise<MagicNetworkMonitoringRulesSinglePage, MagicNetworkMonitoringRule | null> {
const { account_id } = params;
return this._client.getAPIList(
`/accounts/${account_id}/mnm/rules`,
MagicNetworkMonitoringRulesSinglePage,
options,
);
}
/**
* Delete a network monitoring rule for account.
*/
delete(
ruleId: string,
params: RuleDeleteParams,
options?: Core.RequestOptions,
): Core.APIPromise<MagicNetworkMonitoringRule | null> {
const { account_id, body } = params;
return (
this._client.delete(`/accounts/${account_id}/mnm/rules/${ruleId}`, {
body: body,
...options,
}) as Core.APIPromise<{ result: MagicNetworkMonitoringRule | null }>
)._thenUnwrap((obj) => obj.result);
}
/**
* Update a network monitoring rule for account.
*/
edit(
ruleId: string,
params: RuleEditParams,
options?: Core.RequestOptions,
): Core.APIPromise<MagicNetworkMonitoringRule | null> {
const { account_id, body } = params;
return (
this._client.patch(`/accounts/${account_id}/mnm/rules/${ruleId}`, {
body: body,
...options,
}) as Core.APIPromise<{ result: MagicNetworkMonitoringRule | null }>
)._thenUnwrap((obj) => obj.result);
}
/**
* List a single network monitoring rule for account.
*/
get(
ruleId: string,
params: RuleGetParams,
options?: Core.RequestOptions,
): Core.APIPromise<MagicNetworkMonitoringRule | null> {
const { account_id } = params;
return (
this._client.get(`/accounts/${account_id}/mnm/rules/${ruleId}`, options) as Core.APIPromise<{
result: MagicNetworkMonitoringRule | null;
}>
)._thenUnwrap((obj) => obj.result);
}
}
export class MagicNetworkMonitoringRulesSinglePage extends SinglePage<MagicNetworkMonitoringRule | null> {}
export interface MagicNetworkMonitoringRule {
/**
* Toggle on if you would like Cloudflare to automatically advertise the IP
* Prefixes within the rule via Magic Transit when the rule is triggered. Only
* available for users of Magic Transit.
*/
automatic_advertisement: boolean | null;
/**
* The amount of time that the rule threshold must be exceeded to send an alert
* notification. The final value must be equivalent to one of the following 8
* values ["1m","5m","10m","15m","20m","30m","45m","60m"]. The format is
* AhBmCsDmsEusFns where A, B, C, D, E and F durations are optional; however at
* least one unit must be provided.
*/
duration: string;
/**
* The name of the rule. Must be unique. Supports characters A-Z, a-z, 0-9,
* underscore (\_), dash (-), period (.), and tilde (~). You can’t have a space in
* the rule name. Max 256 characters.
*/
name: string;
prefixes: Array<string>;
/**
* The id of the rule. Must be unique.
*/
id?: string;
/**
* The number of bits per second for the rule. When this value is exceeded for the
* set duration, an alert notification is sent. Minimum of 1 and no maximum.
*/
bandwidth_threshold?: number;
/**
* The number of packets per second for the rule. When this value is exceeded for
* the set duration, an alert notification is sent. Minimum of 1 and no maximum.
*/
packet_threshold?: number;
}
export interface RuleCreateParams {
/**
* Path param:
*/
account_id: string;
/**
* Body param:
*/
body: unknown;
}
export interface RuleUpdateParams {
/**
* Path param:
*/
account_id: string;
/**
* Body param:
*/
body: unknown;
}
export interface RuleListParams {
account_id: string;
}
export interface RuleDeleteParams {
/**
* Path param:
*/
account_id: string;
/**
* Body param:
*/
body: unknown;
}
export interface RuleEditParams {
/**
* Path param:
*/
account_id: string;
/**
* Body param:
*/
body: unknown;
}
export interface RuleGetParams {
account_id: string;
}
export namespace Rules {
export import MagicNetworkMonitoringRule = RulesAPI.MagicNetworkMonitoringRule;
export import MagicNetworkMonitoringRulesSinglePage = RulesAPI.MagicNetworkMonitoringRulesSinglePage;
export import RuleCreateParams = RulesAPI.RuleCreateParams;
export import RuleUpdateParams = RulesAPI.RuleUpdateParams;
export import RuleListParams = RulesAPI.RuleListParams;
export import RuleDeleteParams = RulesAPI.RuleDeleteParams;
export import RuleEditParams = RulesAPI.RuleEditParams;
export import RuleGetParams = RulesAPI.RuleGetParams;
export import Advertisements = AdvertisementsAPI.Advertisements;
export import Advertisement = AdvertisementsAPI.Advertisement;
export import AdvertisementEditParams = AdvertisementsAPI.AdvertisementEditParams;
}