cloudflare
Version:
The official TypeScript library for the Cloudflare API
514 lines (436 loc) • 12.2 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 IntegrationsAPI from "./integrations";
import { SinglePage } from "../../../../pagination";
export class Integrations extends APIResource {
/**
* Create a new device posture integration.
*/
create(
params: IntegrationCreateParams,
options?: Core.RequestOptions,
): Core.APIPromise<Integration | null> {
const { account_id, ...body } = params;
return (
this._client.post(`/accounts/${account_id}/devices/posture/integration`, {
body,
...options,
}) as Core.APIPromise<{ result: Integration | null }>
)._thenUnwrap((obj) => obj.result);
}
/**
* Fetches the list of device posture integrations for an account.
*/
list(
params: IntegrationListParams,
options?: Core.RequestOptions,
): Core.PagePromise<IntegrationsSinglePage, Integration> {
const { account_id } = params;
return this._client.getAPIList(
`/accounts/${account_id}/devices/posture/integration`,
IntegrationsSinglePage,
options,
);
}
/**
* Delete a configured device posture integration.
*/
delete(
integrationId: string,
params: IntegrationDeleteParams,
options?: Core.RequestOptions,
): Core.APIPromise<IntegrationDeleteResponse> {
const { account_id, body } = params;
return (
this._client.delete(`/accounts/${account_id}/devices/posture/integration/${integrationId}`, {
body: body,
...options,
}) as Core.APIPromise<{ result: IntegrationDeleteResponse }>
)._thenUnwrap((obj) => obj.result);
}
/**
* Updates a configured device posture integration.
*/
edit(
integrationId: string,
params: IntegrationEditParams,
options?: Core.RequestOptions,
): Core.APIPromise<Integration | null> {
const { account_id, ...body } = params;
return (
this._client.patch(`/accounts/${account_id}/devices/posture/integration/${integrationId}`, {
body,
...options,
}) as Core.APIPromise<{ result: Integration | null }>
)._thenUnwrap((obj) => obj.result);
}
/**
* Fetches details for a single device posture integration.
*/
get(
integrationId: string,
params: IntegrationGetParams,
options?: Core.RequestOptions,
): Core.APIPromise<Integration | null> {
const { account_id } = params;
return (
this._client.get(
`/accounts/${account_id}/devices/posture/integration/${integrationId}`,
options,
) as Core.APIPromise<{ result: Integration | null }>
)._thenUnwrap((obj) => obj.result);
}
}
export class IntegrationsSinglePage extends SinglePage<Integration> {}
export interface Integration {
/**
* API UUID.
*/
id?: string;
/**
* The configuration object containing third-party integration information.
*/
config?: Integration.Config;
/**
* The interval between each posture check with the third-party API. Use `m` for
* minutes (e.g. `5m`) and `h` for hours (e.g. `12h`).
*/
interval?: string;
/**
* The name of the device posture integration.
*/
name?: string;
/**
* The type of device posture integration.
*/
type?: 'workspace_one' | 'crowdstrike_s2s' | 'uptycs' | 'intune' | 'kolide' | 'tanium' | 'sentinelone_s2s';
}
export namespace Integration {
/**
* The configuration object containing third-party integration information.
*/
export interface Config {
/**
* The Workspace One API URL provided in the Workspace One Admin Dashboard.
*/
api_url: string;
/**
* The Workspace One Authorization URL depending on your region.
*/
auth_url: string;
/**
* The Workspace One client ID provided in the Workspace One Admin Dashboard.
*/
client_id: string;
}
}
export type IntegrationDeleteResponse = unknown | string | null;
export interface IntegrationCreateParams {
/**
* Path param:
*/
account_id: string;
/**
* Body param: The configuration object containing third-party integration
* information.
*/
config:
| IntegrationCreateParams.TeamsDevicesWorkspaceOneConfigRequest
| IntegrationCreateParams.TeamsDevicesCrowdstrikeConfigRequest
| IntegrationCreateParams.TeamsDevicesUptycsConfigRequest
| IntegrationCreateParams.TeamsDevicesIntuneConfigRequest
| IntegrationCreateParams.TeamsDevicesKolideConfigRequest
| IntegrationCreateParams.TeamsDevicesTaniumConfigRequest
| IntegrationCreateParams.TeamsDevicesSentineloneS2sConfigRequest;
/**
* Body param: The interval between each posture check with the third-party API.
* Use `m` for minutes (e.g. `5m`) and `h` for hours (e.g. `12h`).
*/
interval: string;
/**
* Body param: The name of the device posture integration.
*/
name: string;
/**
* Body param: The type of device posture integration.
*/
type: 'workspace_one' | 'crowdstrike_s2s' | 'uptycs' | 'intune' | 'kolide' | 'tanium' | 'sentinelone_s2s';
}
export namespace IntegrationCreateParams {
export interface TeamsDevicesWorkspaceOneConfigRequest {
/**
* The Workspace One API URL provided in the Workspace One Admin Dashboard.
*/
api_url: string;
/**
* The Workspace One Authorization URL depending on your region.
*/
auth_url: string;
/**
* The Workspace One client ID provided in the Workspace One Admin Dashboard.
*/
client_id: string;
/**
* The Workspace One client secret provided in the Workspace One Admin Dashboard.
*/
client_secret: string;
}
export interface TeamsDevicesCrowdstrikeConfigRequest {
/**
* The Crowdstrike API URL.
*/
api_url: string;
/**
* The Crowdstrike client ID.
*/
client_id: string;
/**
* The Crowdstrike client secret.
*/
client_secret: string;
/**
* The Crowdstrike customer ID.
*/
customer_id: string;
}
export interface TeamsDevicesUptycsConfigRequest {
/**
* The Uptycs API URL.
*/
api_url: string;
/**
* The Uptycs client secret.
*/
client_key: string;
/**
* The Uptycs client secret.
*/
client_secret: string;
/**
* The Uptycs customer ID.
*/
customer_id: string;
}
export interface TeamsDevicesIntuneConfigRequest {
/**
* The Intune client ID.
*/
client_id: string;
/**
* The Intune client secret.
*/
client_secret: string;
/**
* The Intune customer ID.
*/
customer_id: string;
}
export interface TeamsDevicesKolideConfigRequest {
/**
* The Kolide client ID.
*/
client_id: string;
/**
* The Kolide client secret.
*/
client_secret: string;
}
export interface TeamsDevicesTaniumConfigRequest {
/**
* The Tanium API URL.
*/
api_url: string;
/**
* The Tanium client secret.
*/
client_secret: string;
/**
* If present, this id will be passed in the `CF-Access-Client-ID` header when
* hitting the `api_url`
*/
access_client_id?: string;
/**
* If present, this secret will be passed in the `CF-Access-Client-Secret` header
* when hitting the `api_url`
*/
access_client_secret?: string;
}
export interface TeamsDevicesSentineloneS2sConfigRequest {
/**
* The SentinelOne S2S API URL.
*/
api_url: string;
/**
* The SentinelOne S2S client secret.
*/
client_secret: string;
}
}
export interface IntegrationListParams {
account_id: string;
}
export interface IntegrationDeleteParams {
/**
* Path param:
*/
account_id: string;
/**
* Body param:
*/
body: unknown;
}
export interface IntegrationEditParams {
/**
* Path param:
*/
account_id: string;
/**
* Body param: The configuration object containing third-party integration
* information.
*/
config?:
| IntegrationEditParams.TeamsDevicesWorkspaceOneConfigRequest
| IntegrationEditParams.TeamsDevicesCrowdstrikeConfigRequest
| IntegrationEditParams.TeamsDevicesUptycsConfigRequest
| IntegrationEditParams.TeamsDevicesIntuneConfigRequest
| IntegrationEditParams.TeamsDevicesKolideConfigRequest
| IntegrationEditParams.TeamsDevicesTaniumConfigRequest
| IntegrationEditParams.TeamsDevicesSentineloneS2sConfigRequest;
/**
* Body param: The interval between each posture check with the third-party API.
* Use `m` for minutes (e.g. `5m`) and `h` for hours (e.g. `12h`).
*/
interval?: string;
/**
* Body param: The name of the device posture integration.
*/
name?: string;
/**
* Body param: The type of device posture integration.
*/
type?: 'workspace_one' | 'crowdstrike_s2s' | 'uptycs' | 'intune' | 'kolide' | 'tanium' | 'sentinelone_s2s';
}
export namespace IntegrationEditParams {
export interface TeamsDevicesWorkspaceOneConfigRequest {
/**
* The Workspace One API URL provided in the Workspace One Admin Dashboard.
*/
api_url: string;
/**
* The Workspace One Authorization URL depending on your region.
*/
auth_url: string;
/**
* The Workspace One client ID provided in the Workspace One Admin Dashboard.
*/
client_id: string;
/**
* The Workspace One client secret provided in the Workspace One Admin Dashboard.
*/
client_secret: string;
}
export interface TeamsDevicesCrowdstrikeConfigRequest {
/**
* The Crowdstrike API URL.
*/
api_url: string;
/**
* The Crowdstrike client ID.
*/
client_id: string;
/**
* The Crowdstrike client secret.
*/
client_secret: string;
/**
* The Crowdstrike customer ID.
*/
customer_id: string;
}
export interface TeamsDevicesUptycsConfigRequest {
/**
* The Uptycs API URL.
*/
api_url: string;
/**
* The Uptycs client secret.
*/
client_key: string;
/**
* The Uptycs client secret.
*/
client_secret: string;
/**
* The Uptycs customer ID.
*/
customer_id: string;
}
export interface TeamsDevicesIntuneConfigRequest {
/**
* The Intune client ID.
*/
client_id: string;
/**
* The Intune client secret.
*/
client_secret: string;
/**
* The Intune customer ID.
*/
customer_id: string;
}
export interface TeamsDevicesKolideConfigRequest {
/**
* The Kolide client ID.
*/
client_id: string;
/**
* The Kolide client secret.
*/
client_secret: string;
}
export interface TeamsDevicesTaniumConfigRequest {
/**
* The Tanium API URL.
*/
api_url: string;
/**
* The Tanium client secret.
*/
client_secret: string;
/**
* If present, this id will be passed in the `CF-Access-Client-ID` header when
* hitting the `api_url`
*/
access_client_id?: string;
/**
* If present, this secret will be passed in the `CF-Access-Client-Secret` header
* when hitting the `api_url`
*/
access_client_secret?: string;
}
export interface TeamsDevicesSentineloneS2sConfigRequest {
/**
* The SentinelOne S2S API URL.
*/
api_url: string;
/**
* The SentinelOne S2S client secret.
*/
client_secret: string;
}
}
export interface IntegrationGetParams {
account_id: string;
}
export namespace Integrations {
export import Integration = IntegrationsAPI.Integration;
export import IntegrationDeleteResponse = IntegrationsAPI.IntegrationDeleteResponse;
export import IntegrationsSinglePage = IntegrationsAPI.IntegrationsSinglePage;
export import IntegrationCreateParams = IntegrationsAPI.IntegrationCreateParams;
export import IntegrationListParams = IntegrationsAPI.IntegrationListParams;
export import IntegrationDeleteParams = IntegrationsAPI.IntegrationDeleteParams;
export import IntegrationEditParams = IntegrationsAPI.IntegrationEditParams;
export import IntegrationGetParams = IntegrationsAPI.IntegrationGetParams;
}