# Custom Pages ## List custom pages `client.customPages.list(CustomPageListParamsparams?, RequestOptionsoptions?): SinglePage` **get** `/{accounts_or_zones}/{account_or_zone_id}/custom_pages` Fetches all the custom pages. ### Parameters - `params: CustomPageListParams` - `account_id?: string` The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `zone_id?: string` The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. ### Returns - `CustomPageListResponse` - `id?: string` - `created_on?: string` - `description?: string` - `modified_on?: string` - `preview_target?: string` - `required_tokens?: Array` - `state?: "default" | "customized"` The custom page state. - `"default"` - `"customized"` - `url?: string` The URL associated with the custom page. ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiEmail: process.env['CLOUDFLARE_EMAIL'], // This is the default and can be omitted apiKey: process.env['CLOUDFLARE_API_KEY'], // This is the default and can be omitted }); // Automatically fetches more pages as needed. for await (const customPageListResponse of client.customPages.list({ account_id: 'account_id' })) { console.log(customPageListResponse.id); } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "id": "basic_challenge", "created_on": "2014-01-01T05:20:00.12345Z", "description": "Basic Challenge", "modified_on": "2014-01-01T05:20:00.12345Z", "preview_target": "block:basic-sec-captcha", "required_tokens": [ "::CAPTCHA_BOX::" ], "state": "default", "url": "http://www.example.com" } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000, "total_pages": 100 } } ``` ## Get a custom page `client.customPages.get("1000_errors" | "500_errors" | "basic_challenge" | 7 moreidentifier, CustomPageGetParamsparams?, RequestOptionsoptions?): CustomPageGetResponse` **get** `/{accounts_or_zones}/{account_or_zone_id}/custom_pages/{identifier}` Fetches the details of a custom page. ### Parameters - `identifier: "1000_errors" | "500_errors" | "basic_challenge" | 7 more` Error Page Types - `"1000_errors"` - `"500_errors"` - `"basic_challenge"` - `"country_challenge"` - `"ip_block"` - `"managed_challenge"` - `"ratelimit_block"` - `"under_attack"` - `"waf_block"` - `"waf_challenge"` - `params: CustomPageGetParams` - `account_id?: string` The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `zone_id?: string` The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. ### Returns - `CustomPageGetResponse` - `id?: string` - `created_on?: string` - `description?: string` - `modified_on?: string` - `preview_target?: string` - `required_tokens?: Array` - `state?: "default" | "customized"` The custom page state. - `"default"` - `"customized"` - `url?: string` The URL associated with the custom page. ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiEmail: process.env['CLOUDFLARE_EMAIL'], // This is the default and can be omitted apiKey: process.env['CLOUDFLARE_API_KEY'], // This is the default and can be omitted }); const customPage = await client.customPages.get('ratelimit_block', { account_id: 'account_id' }); console.log(customPage.id); ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "basic_challenge", "created_on": "2014-01-01T05:20:00.12345Z", "description": "Basic Challenge", "modified_on": "2014-01-01T05:20:00.12345Z", "preview_target": "block:basic-sec-captcha", "required_tokens": [ "::CAPTCHA_BOX::" ], "state": "default", "url": "http://www.example.com" } } ``` ## Update a custom page `client.customPages.update("1000_errors" | "500_errors" | "basic_challenge" | 7 moreidentifier, CustomPageUpdateParamsparams, RequestOptionsoptions?): CustomPageUpdateResponse` **put** `/{accounts_or_zones}/{account_or_zone_id}/custom_pages/{identifier}` Updates the configuration of an existing custom page. ### Parameters - `identifier: "1000_errors" | "500_errors" | "basic_challenge" | 7 more` Error Page Types - `"1000_errors"` - `"500_errors"` - `"basic_challenge"` - `"country_challenge"` - `"ip_block"` - `"managed_challenge"` - `"ratelimit_block"` - `"under_attack"` - `"waf_block"` - `"waf_challenge"` - `params: CustomPageUpdateParams` - `state: "default" | "customized"` Body param: The custom page state. - `"default"` - `"customized"` - `url: string` Body param: The URL associated with the custom page. - `account_id?: string` Path param: The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `zone_id?: string` Path param: The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. ### Returns - `CustomPageUpdateResponse` - `id?: string` - `created_on?: string` - `description?: string` - `modified_on?: string` - `preview_target?: string` - `required_tokens?: Array` - `state?: "default" | "customized"` The custom page state. - `"default"` - `"customized"` - `url?: string` The URL associated with the custom page. ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiEmail: process.env['CLOUDFLARE_EMAIL'], // This is the default and can be omitted apiKey: process.env['CLOUDFLARE_API_KEY'], // This is the default and can be omitted }); const customPage = await client.customPages.update('ratelimit_block', { state: 'default', url: 'http://www.example.com', account_id: 'account_id', }); console.log(customPage.id); ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "basic_challenge", "created_on": "2014-01-01T05:20:00.12345Z", "description": "Basic Challenge", "modified_on": "2014-01-01T05:20:00.12345Z", "preview_target": "block:basic-sec-captcha", "required_tokens": [ "::CAPTCHA_BOX::" ], "state": "default", "url": "http://www.example.com" } } ``` ## Domain Types ### Custom Page List Response - `CustomPageListResponse` - `id?: string` - `created_on?: string` - `description?: string` - `modified_on?: string` - `preview_target?: string` - `required_tokens?: Array` - `state?: "default" | "customized"` The custom page state. - `"default"` - `"customized"` - `url?: string` The URL associated with the custom page. ### Custom Page Get Response - `CustomPageGetResponse` - `id?: string` - `created_on?: string` - `description?: string` - `modified_on?: string` - `preview_target?: string` - `required_tokens?: Array` - `state?: "default" | "customized"` The custom page state. - `"default"` - `"customized"` - `url?: string` The URL associated with the custom page. ### Custom Page Update Response - `CustomPageUpdateResponse` - `id?: string` - `created_on?: string` - `description?: string` - `modified_on?: string` - `preview_target?: string` - `required_tokens?: Array` - `state?: "default" | "customized"` The custom page state. - `"default"` - `"customized"` - `url?: string` The URL associated with the custom page. # Assets ## List custom assets `client.customPages.assets.list(AssetListParamsparams?, RequestOptionsoptions?): V4PagePaginationArray` **get** `/{accounts_or_zones}/{account_or_zone_id}/custom_pages/assets` Fetches all the custom assets. ### Parameters - `params: AssetListParams` - `account_id?: string` Path param: The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `zone_id?: string` Path param: The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. - `page?: number` Query param - `per_page?: number` Query param ### Returns - `AssetListResponse` - `description?: string` A short description of the custom asset. - `last_updated?: string` - `name?: string` The unique name of the custom asset. Can only contain letters (A-Z, a-z), numbers (0-9), and underscores (_). - `size_bytes?: number` The size of the asset content in bytes. - `url?: string` The URL where the asset content is fetched from. ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiEmail: process.env['CLOUDFLARE_EMAIL'], // This is the default and can be omitted apiKey: process.env['CLOUDFLARE_API_KEY'], // This is the default and can be omitted }); // Automatically fetches more pages as needed. for await (const assetListResponse of client.customPages.assets.list({ account_id: 'account_id', })) { console.log(assetListResponse.description); } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "description": "Custom 500 error page", "last_updated": "2014-01-01T05:20:00.12345Z", "name": "my_custom_error_page", "size_bytes": 1024, "url": "https://example.com/error.html" } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000, "total_pages": 100 } } ``` ## Get a custom asset `client.customPages.assets.get(stringassetName, AssetGetParamsparams?, RequestOptionsoptions?): AssetGetResponse` **get** `/{accounts_or_zones}/{account_or_zone_id}/custom_pages/assets/{asset_name}` Fetches the details of a custom asset. ### Parameters - `assetName: string` The unique name of the custom asset. Can only contain letters (A-Z, a-z), numbers (0-9), and underscores (_). - `params: AssetGetParams` - `account_id?: string` The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `zone_id?: string` The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. ### Returns - `AssetGetResponse` - `description?: string` A short description of the custom asset. - `last_updated?: string` - `name?: string` The unique name of the custom asset. Can only contain letters (A-Z, a-z), numbers (0-9), and underscores (_). - `size_bytes?: number` The size of the asset content in bytes. - `url?: string` The URL where the asset content is fetched from. ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiEmail: process.env['CLOUDFLARE_EMAIL'], // This is the default and can be omitted apiKey: process.env['CLOUDFLARE_API_KEY'], // This is the default and can be omitted }); const asset = await client.customPages.assets.get('my_custom_error_page', { account_id: 'account_id', }); console.log(asset.description); ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "description": "Custom 500 error page", "last_updated": "2014-01-01T05:20:00.12345Z", "name": "my_custom_error_page", "size_bytes": 1024, "url": "https://example.com/error.html" } } ``` ## Create a custom asset `client.customPages.assets.create(AssetCreateParamsparams, RequestOptionsoptions?): AssetCreateResponse` **post** `/{accounts_or_zones}/{account_or_zone_id}/custom_pages/assets` Creates a new custom asset. ### Parameters - `params: AssetCreateParams` - `description: string` Body param: A short description of the custom asset. - `name: string` Body param: The unique name of the custom asset. Can only contain letters (A-Z, a-z), numbers (0-9), and underscores (_). - `url: string` Body param: The URL where the asset content is fetched from. - `account_id?: string` Path param: The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `zone_id?: string` Path param: The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. ### Returns - `AssetCreateResponse` - `description?: string` A short description of the custom asset. - `last_updated?: string` - `name?: string` The unique name of the custom asset. Can only contain letters (A-Z, a-z), numbers (0-9), and underscores (_). - `size_bytes?: number` The size of the asset content in bytes. - `url?: string` The URL where the asset content is fetched from. ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiEmail: process.env['CLOUDFLARE_EMAIL'], // This is the default and can be omitted apiKey: process.env['CLOUDFLARE_API_KEY'], // This is the default and can be omitted }); const asset = await client.customPages.assets.create({ description: 'Custom 500 error page', name: 'my_custom_error_page', url: 'https://example.com/error.html', account_id: 'account_id', }); console.log(asset.description); ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "description": "Custom 500 error page", "last_updated": "2014-01-01T05:20:00.12345Z", "name": "my_custom_error_page", "size_bytes": 1024, "url": "https://example.com/error.html" } } ``` ## Update a custom asset `client.customPages.assets.update(stringassetName, AssetUpdateParamsparams, RequestOptionsoptions?): AssetUpdateResponse` **put** `/{accounts_or_zones}/{account_or_zone_id}/custom_pages/assets/{asset_name}` Updates the configuration of an existing custom asset. ### Parameters - `assetName: string` The unique name of the custom asset. Can only contain letters (A-Z, a-z), numbers (0-9), and underscores (_). - `params: AssetUpdateParams` - `description: string` Body param: A short description of the custom asset. - `url: string` Body param: The URL where the asset content is fetched from. - `account_id?: string` Path param: The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `zone_id?: string` Path param: The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. ### Returns - `AssetUpdateResponse` - `description?: string` A short description of the custom asset. - `last_updated?: string` - `name?: string` The unique name of the custom asset. Can only contain letters (A-Z, a-z), numbers (0-9), and underscores (_). - `size_bytes?: number` The size of the asset content in bytes. - `url?: string` The URL where the asset content is fetched from. ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiEmail: process.env['CLOUDFLARE_EMAIL'], // This is the default and can be omitted apiKey: process.env['CLOUDFLARE_API_KEY'], // This is the default and can be omitted }); const asset = await client.customPages.assets.update('my_custom_error_page', { description: 'Custom 500 error page', url: 'https://example.com/error.html', account_id: 'account_id', }); console.log(asset.description); ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "description": "Custom 500 error page", "last_updated": "2014-01-01T05:20:00.12345Z", "name": "my_custom_error_page", "size_bytes": 1024, "url": "https://example.com/error.html" } } ``` ## Delete a custom asset `client.customPages.assets.delete(stringassetName, AssetDeleteParamsparams?, RequestOptionsoptions?): void` **delete** `/{accounts_or_zones}/{account_or_zone_id}/custom_pages/assets/{asset_name}` Deletes an existing custom asset. ### Parameters - `assetName: string` The unique name of the custom asset. Can only contain letters (A-Z, a-z), numbers (0-9), and underscores (_). - `params: AssetDeleteParams` - `account_id?: string` The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `zone_id?: string` The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiEmail: process.env['CLOUDFLARE_EMAIL'], // This is the default and can be omitted apiKey: process.env['CLOUDFLARE_API_KEY'], // This is the default and can be omitted }); await client.customPages.assets.delete('my_custom_error_page', { account_id: 'account_id' }); ``` ## Domain Types ### Asset List Response - `AssetListResponse` - `description?: string` A short description of the custom asset. - `last_updated?: string` - `name?: string` The unique name of the custom asset. Can only contain letters (A-Z, a-z), numbers (0-9), and underscores (_). - `size_bytes?: number` The size of the asset content in bytes. - `url?: string` The URL where the asset content is fetched from. ### Asset Get Response - `AssetGetResponse` - `description?: string` A short description of the custom asset. - `last_updated?: string` - `name?: string` The unique name of the custom asset. Can only contain letters (A-Z, a-z), numbers (0-9), and underscores (_). - `size_bytes?: number` The size of the asset content in bytes. - `url?: string` The URL where the asset content is fetched from. ### Asset Create Response - `AssetCreateResponse` - `description?: string` A short description of the custom asset. - `last_updated?: string` - `name?: string` The unique name of the custom asset. Can only contain letters (A-Z, a-z), numbers (0-9), and underscores (_). - `size_bytes?: number` The size of the asset content in bytes. - `url?: string` The URL where the asset content is fetched from. ### Asset Update Response - `AssetUpdateResponse` - `description?: string` A short description of the custom asset. - `last_updated?: string` - `name?: string` The unique name of the custom asset. Can only contain letters (A-Z, a-z), numbers (0-9), and underscores (_). - `size_bytes?: number` The size of the asset content in bytes. - `url?: string` The URL where the asset content is fetched from.