UNPKG

cloudflare

Version:

The official TypeScript library for the Cloudflare API

347 lines (314 loc) 10.2 kB
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import * as Core from "../../../../core"; import { APIResource } from "../../../../resource"; import { isRequestOptions } from "../../../../core"; import { CloudflareError } from "../../../../error"; import * as CertificatesAPI from "./certificates"; import * as SettingsAPI from "./settings"; import { SinglePage } from "../../../../pagination"; export class Certificates extends APIResource { settings: SettingsAPI.Settings = new SettingsAPI.Settings(this._client); /** * Adds a new mTLS root certificate to Access. */ create( params: CertificateCreateParams, options?: Core.RequestOptions, ): Core.APIPromise<ZeroTrustCertificates> { const { account_id, zone_id, ...body } = params; if (!account_id && !zone_id) { throw new CloudflareError('You must provide either account_id or zone_id.'); } if (account_id && zone_id) { throw new CloudflareError('You cannot provide both account_id and zone_id.'); } const { accountOrZone, accountOrZoneId } = account_id ? { accountOrZone: 'accounts', accountOrZoneId: account_id, } : { accountOrZone: 'zones', accountOrZoneId: zone_id, }; return ( this._client.post(`/${accountOrZone}/${accountOrZoneId}/access/certificates`, { body, ...options, }) as Core.APIPromise<{ result: ZeroTrustCertificates }> )._thenUnwrap((obj) => obj.result); } /** * Updates a configured mTLS certificate. */ update( uuid: string, params: CertificateUpdateParams, options?: Core.RequestOptions, ): Core.APIPromise<ZeroTrustCertificates> { const { account_id, zone_id, ...body } = params; if (!account_id && !zone_id) { throw new CloudflareError('You must provide either account_id or zone_id.'); } if (account_id && zone_id) { throw new CloudflareError('You cannot provide both account_id and zone_id.'); } const { accountOrZone, accountOrZoneId } = account_id ? { accountOrZone: 'accounts', accountOrZoneId: account_id, } : { accountOrZone: 'zones', accountOrZoneId: zone_id, }; return ( this._client.put(`/${accountOrZone}/${accountOrZoneId}/access/certificates/${uuid}`, { body, ...options, }) as Core.APIPromise<{ result: ZeroTrustCertificates }> )._thenUnwrap((obj) => obj.result); } /** * Lists all mTLS root certificates. */ list( params?: CertificateListParams, options?: Core.RequestOptions, ): Core.PagePromise<ZeroTrustCertificatesSinglePage, ZeroTrustCertificates>; list( options?: Core.RequestOptions, ): Core.PagePromise<ZeroTrustCertificatesSinglePage, ZeroTrustCertificates>; list( params: CertificateListParams | Core.RequestOptions = {}, options?: Core.RequestOptions, ): Core.PagePromise<ZeroTrustCertificatesSinglePage, ZeroTrustCertificates> { if (isRequestOptions(params)) { return this.list({}, params); } const { account_id, zone_id } = params; if (!account_id && !zone_id) { throw new CloudflareError('You must provide either account_id or zone_id.'); } if (account_id && zone_id) { throw new CloudflareError('You cannot provide both account_id and zone_id.'); } const { accountOrZone, accountOrZoneId } = account_id ? { accountOrZone: 'accounts', accountOrZoneId: account_id, } : { accountOrZone: 'zones', accountOrZoneId: zone_id, }; return this._client.getAPIList( `/${accountOrZone}/${accountOrZoneId}/access/certificates`, ZeroTrustCertificatesSinglePage, options, ); } /** * Deletes an mTLS certificate. */ delete( uuid: string, params?: CertificateDeleteParams, options?: Core.RequestOptions, ): Core.APIPromise<CertificateDeleteResponse>; delete(uuid: string, options?: Core.RequestOptions): Core.APIPromise<CertificateDeleteResponse>; delete( uuid: string, params: CertificateDeleteParams | Core.RequestOptions = {}, options?: Core.RequestOptions, ): Core.APIPromise<CertificateDeleteResponse> { if (isRequestOptions(params)) { return this.delete(uuid, {}, params); } const { account_id, zone_id } = params; if (!account_id && !zone_id) { throw new CloudflareError('You must provide either account_id or zone_id.'); } if (account_id && zone_id) { throw new CloudflareError('You cannot provide both account_id and zone_id.'); } const { accountOrZone, accountOrZoneId } = account_id ? { accountOrZone: 'accounts', accountOrZoneId: account_id, } : { accountOrZone: 'zones', accountOrZoneId: zone_id, }; return ( this._client.delete( `/${accountOrZone}/${accountOrZoneId}/access/certificates/${uuid}`, options, ) as Core.APIPromise<{ result: CertificateDeleteResponse }> )._thenUnwrap((obj) => obj.result); } /** * Fetches a single mTLS certificate. */ get( uuid: string, params?: CertificateGetParams, options?: Core.RequestOptions, ): Core.APIPromise<ZeroTrustCertificates>; get(uuid: string, options?: Core.RequestOptions): Core.APIPromise<ZeroTrustCertificates>; get( uuid: string, params: CertificateGetParams | Core.RequestOptions = {}, options?: Core.RequestOptions, ): Core.APIPromise<ZeroTrustCertificates> { if (isRequestOptions(params)) { return this.get(uuid, {}, params); } const { account_id, zone_id } = params; if (!account_id && !zone_id) { throw new CloudflareError('You must provide either account_id or zone_id.'); } if (account_id && zone_id) { throw new CloudflareError('You cannot provide both account_id and zone_id.'); } const { accountOrZone, accountOrZoneId } = account_id ? { accountOrZone: 'accounts', accountOrZoneId: account_id, } : { accountOrZone: 'zones', accountOrZoneId: zone_id, }; return ( this._client.get( `/${accountOrZone}/${accountOrZoneId}/access/certificates/${uuid}`, options, ) as Core.APIPromise<{ result: ZeroTrustCertificates }> )._thenUnwrap((obj) => obj.result); } } export class ZeroTrustCertificatesSinglePage extends SinglePage<ZeroTrustCertificates> {} export interface ZeroTrustCertificates { /** * The ID of the application that will use this certificate. */ id?: string; /** * The hostnames of the applications that will use this certificate. */ associated_hostnames?: Array<string>; created_at?: string; expires_on?: string; /** * The MD5 fingerprint of the certificate. */ fingerprint?: string; /** * The name of the certificate. */ name?: string; updated_at?: string; } export interface CertificateDeleteResponse { /** * UUID */ id?: string; } export interface CertificateCreateParams { /** * Body param: The certificate content. */ certificate: string; /** * Body param: The name of the certificate. */ name: string; /** * Path param: The Account ID to use for this endpoint. Mutually exclusive with the * Zone ID. */ account_id?: string; /** * Path param: The Zone ID to use for this endpoint. Mutually exclusive with the * Account ID. */ zone_id?: string; /** * Body param: The hostnames of the applications that will use this certificate. */ associated_hostnames?: Array<string>; } export interface CertificateUpdateParams { /** * Body param: The hostnames of the applications that will use this certificate. */ associated_hostnames: Array<string>; /** * Path param: The Account ID to use for this endpoint. Mutually exclusive with the * Zone ID. */ account_id?: string; /** * Path param: The Zone ID to use for this endpoint. Mutually exclusive with the * Account ID. */ zone_id?: string; /** * Body param: The name of the certificate. */ name?: string; } export interface CertificateListParams { /** * The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. */ account_id?: string; /** * The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. */ zone_id?: string; } export interface CertificateDeleteParams { /** * The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. */ account_id?: string; /** * The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. */ zone_id?: string; } export interface CertificateGetParams { /** * The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. */ account_id?: string; /** * The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. */ zone_id?: string; } export namespace Certificates { export import ZeroTrustCertificates = CertificatesAPI.ZeroTrustCertificates; export import CertificateDeleteResponse = CertificatesAPI.CertificateDeleteResponse; export import ZeroTrustCertificatesSinglePage = CertificatesAPI.ZeroTrustCertificatesSinglePage; export import CertificateCreateParams = CertificatesAPI.CertificateCreateParams; export import CertificateUpdateParams = CertificatesAPI.CertificateUpdateParams; export import CertificateListParams = CertificatesAPI.CertificateListParams; export import CertificateDeleteParams = CertificatesAPI.CertificateDeleteParams; export import CertificateGetParams = CertificatesAPI.CertificateGetParams; export import Settings = SettingsAPI.Settings; export import ZeroTrustSettings = SettingsAPI.ZeroTrustSettings; export import SettingUpdateResponse = SettingsAPI.SettingUpdateResponse; export import SettingGetResponse = SettingsAPI.SettingGetResponse; export import SettingUpdateParams = SettingsAPI.SettingUpdateParams; export import SettingGetParams = SettingsAPI.SettingGetParams; }