## Add one operation to a zone `api_gateway.operations.create(OperationCreateParams**kwargs) -> OperationCreateResponse` **post** `/zones/{zone_id}/api_gateway/operations/item` Add one operation 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 - `zone_id: str` Identifier. - `endpoint: str` 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: str` RFC3986-compliant host. - `method: Literal["GET", "POST", "HEAD", 6 more]` The HTTP method used to access the endpoint. - `"GET"` - `"POST"` - `"HEAD"` - `"OPTIONS"` - `"PUT"` - `"DELETE"` - `"CONNECT"` - `"PATCH"` - `"TRACE"` ### Returns - `class OperationCreateResponse: …` - `endpoint: str` 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: str` RFC3986-compliant host. - `last_updated: datetime` - `method: Literal["GET", "POST", "HEAD", 6 more]` The HTTP method used to access the endpoint. - `"GET"` - `"POST"` - `"HEAD"` - `"OPTIONS"` - `"PUT"` - `"DELETE"` - `"CONNECT"` - `"PATCH"` - `"TRACE"` - `operation_id: str` UUID. - `features: Optional[Features]` - `class FeaturesAPIShieldOperationFeatureThresholds: …` - `thresholds: Optional[FeaturesAPIShieldOperationFeatureThresholdsThresholds]` - `auth_id_tokens: Optional[int]` The total number of auth-ids seen across this calculation. - `data_points: Optional[int]` The number of data points used for the threshold suggestion calculation. - `last_updated: Optional[datetime]` - `p50: Optional[int]` The p50 quantile of requests (in period_seconds). - `p90: Optional[int]` The p90 quantile of requests (in period_seconds). - `p99: Optional[int]` The p99 quantile of requests (in period_seconds). - `period_seconds: Optional[int]` The period over which this threshold is suggested. - `requests: Optional[int]` The estimated number of requests covered by these calculations. - `suggested_threshold: Optional[int]` The suggested threshold in requests done by the same auth_id or period_seconds. - `class FeaturesAPIShieldOperationFeatureParameterSchemas: …` - `parameter_schemas: FeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemas` - `last_updated: Optional[datetime]` - `parameter_schemas: Optional[FeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemasParameterSchemas]` An operation schema object containing a response. - `parameters: Optional[List[object]]` An array containing the learned parameter schemas. - `responses: Optional[object]` An empty response object. This field is required to yield a valid operation schema. - `class FeaturesAPIShieldOperationFeatureAPIRouting: …` - `api_routing: Optional[FeaturesAPIShieldOperationFeatureAPIRoutingAPIRouting]` API Routing settings on endpoint. - `last_updated: Optional[datetime]` - `route: Optional[str]` Target route. - `class FeaturesAPIShieldOperationFeatureConfidenceIntervals: …` - `confidence_intervals: Optional[FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervals]` - `last_updated: Optional[datetime]` - `suggested_threshold: Optional[FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThreshold]` - `confidence_intervals: Optional[FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervals]` - `p90: Optional[FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP90]` Upper and lower bound for percentile estimate - `lower: Optional[float]` Lower bound for percentile estimate - `upper: Optional[float]` Upper bound for percentile estimate - `p95: Optional[FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP95]` Upper and lower bound for percentile estimate - `lower: Optional[float]` Lower bound for percentile estimate - `upper: Optional[float]` Upper bound for percentile estimate - `p99: Optional[FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP99]` Upper and lower bound for percentile estimate - `lower: Optional[float]` Lower bound for percentile estimate - `upper: Optional[float]` Upper bound for percentile estimate - `mean: Optional[float]` Suggested threshold. - `class FeaturesAPIShieldOperationFeatureSchemaInfo: …` - `schema_info: Optional[FeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfo]` - `active_schema: Optional[FeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfoActiveSchema]` Schema active on endpoint. - `id: Optional[str]` UUID. - `created_at: Optional[datetime]` - `is_learned: Optional[bool]` True if schema is Cloudflare-provided. - `name: Optional[str]` Schema file name. - `learned_available: Optional[bool]` True if a Cloudflare-provided learned schema is available for this endpoint. - `mitigation_action: Optional[Literal["none", "log", "block"]]` Action taken on requests failing validation. - `"none"` - `"log"` - `"block"` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) operation = client.api_gateway.operations.create( zone_id="023e105f4ecef8ad9ca31a8372d0c353", endpoint="/api/v1/users/{var1}", host="www.example.com", method="GET", ) print(operation.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 } ```