// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import * as Core from 'cloudflare/core'; import { APIResource } from 'cloudflare/resource'; import * as LocationsAPI from 'cloudflare/resources/zero-trust/gateway/locations'; import { SinglePage } from 'cloudflare/pagination'; export class Locations extends APIResource { /** * Creates a new Zero Trust Gateway location. */ create( params: LocationCreateParams, options?: Core.RequestOptions, ): Core.APIPromise { const { account_id, ...body } = params; return ( this._client.post(`/accounts/${account_id}/gateway/locations`, { body, ...options, }) as Core.APIPromise<{ result: ZeroTrustGatewayLocations }> )._thenUnwrap((obj) => obj.result); } /** * Updates a configured Zero Trust Gateway location. */ update( locationId: string, params: LocationUpdateParams, options?: Core.RequestOptions, ): Core.APIPromise { const { account_id, ...body } = params; return ( this._client.put(`/accounts/${account_id}/gateway/locations/${locationId}`, { body, ...options, }) as Core.APIPromise<{ result: ZeroTrustGatewayLocations }> )._thenUnwrap((obj) => obj.result); } /** * Fetches Zero Trust Gateway locations for an account. */ list( params: LocationListParams, options?: Core.RequestOptions, ): Core.PagePromise { const { account_id } = params; return this._client.getAPIList( `/accounts/${account_id}/gateway/locations`, ZeroTrustGatewayLocationsSinglePage, options, ); } /** * Deletes a configured Zero Trust Gateway location. */ delete( locationId: string, params: LocationDeleteParams, options?: Core.RequestOptions, ): Core.APIPromise { const { account_id } = params; return ( this._client.delete( `/accounts/${account_id}/gateway/locations/${locationId}`, options, ) as Core.APIPromise<{ result: LocationDeleteResponse }> )._thenUnwrap((obj) => obj.result); } /** * Fetches a single Zero Trust Gateway location. */ get( locationId: string, params: LocationGetParams, options?: Core.RequestOptions, ): Core.APIPromise { const { account_id } = params; return ( this._client.get( `/accounts/${account_id}/gateway/locations/${locationId}`, options, ) as Core.APIPromise<{ result: ZeroTrustGatewayLocations }> )._thenUnwrap((obj) => obj.result); } } export class ZeroTrustGatewayLocationsSinglePage extends SinglePage {} export interface ZeroTrustGatewayLocations { id?: string; /** * True if the location is the default location. */ client_default?: boolean; created_at?: string; /** * The DNS over HTTPS domain to send DNS requests to. This field is auto-generated * by Gateway. */ doh_subdomain?: string; /** * True if the location needs to resolve EDNS queries. */ ecs_support?: boolean; /** * IPV6 destination ip assigned to this location. DNS requests sent to this IP will * counted as the request under this location. This field is auto-generated by * Gateway. */ ip?: string; /** * The name of the location. */ name?: string; /** * A list of network ranges that requests from this location would originate from. */ networks?: Array; updated_at?: string; } export namespace ZeroTrustGatewayLocations { export interface Network { /** * The IPv4 address or IPv4 CIDR. IPv4 CIDRs are limited to a maximum of /24. */ network: string; } } export type LocationDeleteResponse = unknown | string; export interface LocationCreateParams { /** * Path param: */ account_id: string; /** * Body param: The name of the location. */ name: string; /** * Body param: True if the location is the default location. */ client_default?: boolean; /** * Body param: True if the location needs to resolve EDNS queries. */ ecs_support?: boolean; /** * Body param: A list of network ranges that requests from this location would * originate from. */ networks?: Array; } export namespace LocationCreateParams { export interface Network { /** * The IPv4 address or IPv4 CIDR. IPv4 CIDRs are limited to a maximum of /24. */ network: string; } } export interface LocationUpdateParams { /** * Path param: */ account_id: string; /** * Body param: The name of the location. */ name: string; /** * Body param: True if the location is the default location. */ client_default?: boolean; /** * Body param: True if the location needs to resolve EDNS queries. */ ecs_support?: boolean; /** * Body param: A list of network ranges that requests from this location would * originate from. */ networks?: Array; } export namespace LocationUpdateParams { export interface Network { /** * The IPv4 address or IPv4 CIDR. IPv4 CIDRs are limited to a maximum of /24. */ network: string; } } export interface LocationListParams { account_id: string; } export interface LocationDeleteParams { account_id: string; } export interface LocationGetParams { account_id: string; } export namespace Locations { export import ZeroTrustGatewayLocations = LocationsAPI.ZeroTrustGatewayLocations; export import LocationDeleteResponse = LocationsAPI.LocationDeleteResponse; export import ZeroTrustGatewayLocationsSinglePage = LocationsAPI.ZeroTrustGatewayLocationsSinglePage; export import LocationCreateParams = LocationsAPI.LocationCreateParams; export import LocationUpdateParams = LocationsAPI.LocationUpdateParams; export import LocationListParams = LocationsAPI.LocationListParams; export import LocationDeleteParams = LocationsAPI.LocationDeleteParams; export import LocationGetParams = LocationsAPI.LocationGetParams; }