## Add operations to a zone `client.apiGateway.operations.bulkCreate(OperationBulkCreateParamsparams, RequestOptionsoptions?): SinglePage` **post** `/zones/{zone_id}/api_gateway/operations` Add one or more operations to a zone. Endpoints can contain path variables. Host, method, endpoint will be normalized to a canoncial form when creating an operation and must be unique on the zone. Inserting an operation that matches an existing one will return the record of the already existing operation and update its last_updated date. ### Parameters - `params: OperationBulkCreateParams` - `zone_id: string` Path param: Identifier. - `body: Array` Body param - `endpoint: string` The endpoint which can contain path parameter templates in curly braces, each will be replaced from left to right with {varN}, starting with {var1}, during insertion. This will further be Cloudflare-normalized upon insertion. See: https://developers.cloudflare.com/rules/normalization/how-it-works/. - `host: string` RFC3986-compliant host. - `method: "GET" | "POST" | "HEAD" | 6 more` The HTTP method used to access the endpoint. - `"GET"` - `"POST"` - `"HEAD"` - `"OPTIONS"` - `"PUT"` - `"DELETE"` - `"CONNECT"` - `"PATCH"` - `"TRACE"` ### Returns - `OperationBulkCreateResponse` - `endpoint: string` The endpoint which can contain path parameter templates in curly braces, each will be replaced from left to right with {varN}, starting with {var1}, during insertion. This will further be Cloudflare-normalized upon insertion. See: https://developers.cloudflare.com/rules/normalization/how-it-works/. - `host: string` RFC3986-compliant host. - `last_updated: string` - `method: "GET" | "POST" | "HEAD" | 6 more` The HTTP method used to access the endpoint. - `"GET"` - `"POST"` - `"HEAD"` - `"OPTIONS"` - `"PUT"` - `"DELETE"` - `"CONNECT"` - `"PATCH"` - `"TRACE"` - `operation_id: string` UUID. - `features?: APIShieldOperationFeatureThresholds | APIShieldOperationFeatureParameterSchemas | APIShieldOperationFeatureAPIRouting | 2 more` - `APIShieldOperationFeatureThresholds` - `thresholds?: Thresholds` - `auth_id_tokens?: number` The total number of auth-ids seen across this calculation. - `data_points?: number` The number of data points used for the threshold suggestion calculation. - `last_updated?: string` - `p50?: number` The p50 quantile of requests (in period_seconds). - `p90?: number` The p90 quantile of requests (in period_seconds). - `p99?: number` The p99 quantile of requests (in period_seconds). - `period_seconds?: number` The period over which this threshold is suggested. - `requests?: number` The estimated number of requests covered by these calculations. - `suggested_threshold?: number` The suggested threshold in requests done by the same auth_id or period_seconds. - `APIShieldOperationFeatureParameterSchemas` - `parameter_schemas: ParameterSchemas` - `last_updated?: string` - `parameter_schemas?: ParameterSchemas` An operation schema object containing a response. - `parameters?: Array` An array containing the learned parameter schemas. - `responses?: unknown` An empty response object. This field is required to yield a valid operation schema. - `APIShieldOperationFeatureAPIRouting` - `api_routing?: APIRouting` API Routing settings on endpoint. - `last_updated?: string` - `route?: string` Target route. - `APIShieldOperationFeatureConfidenceIntervals` - `confidence_intervals?: ConfidenceIntervals` - `last_updated?: string` - `suggested_threshold?: SuggestedThreshold` - `confidence_intervals?: ConfidenceIntervals` - `p90?: P90` Upper and lower bound for percentile estimate - `lower?: number` Lower bound for percentile estimate - `upper?: number` Upper bound for percentile estimate - `p95?: P95` Upper and lower bound for percentile estimate - `lower?: number` Lower bound for percentile estimate - `upper?: number` Upper bound for percentile estimate - `p99?: P99` Upper and lower bound for percentile estimate - `lower?: number` Lower bound for percentile estimate - `upper?: number` Upper bound for percentile estimate - `mean?: number` Suggested threshold. - `APIShieldOperationFeatureSchemaInfo` - `schema_info?: SchemaInfo` - `active_schema?: ActiveSchema` Schema active on endpoint. - `id?: string` UUID. - `created_at?: string` - `is_learned?: boolean` True if schema is Cloudflare-provided. - `name?: string` Schema file name. - `learned_available?: boolean` True if a Cloudflare-provided learned schema is available for this endpoint. - `mitigation_action?: "none" | "log" | "block" | null` Action taken on requests failing validation. - `"none"` - `"log"` - `"block"` ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); // Automatically fetches more pages as needed. for await (const operationBulkCreateResponse of client.apiGateway.operations.bulkCreate({ zone_id: '023e105f4ecef8ad9ca31a8372d0c353', body: [ { endpoint: '/api/v1/users/{var1}', host: 'www.example.com', method: 'GET', }, ], })) { console.log(operationBulkCreateResponse.operation_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" } } ], "result": [ { "endpoint": "/api/v1/users/{var1}", "host": "www.example.com", "last_updated": "2014-01-01T05:20:00.12345Z", "method": "GET", "operation_id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "features": { "thresholds": { "auth_id_tokens": 0, "data_points": 0, "last_updated": "2014-01-01T05:20:00.12345Z", "p50": 0, "p90": 0, "p99": 0, "period_seconds": 0, "requests": 0, "suggested_threshold": 0 } } } ], "success": true } ```