diff --git a/api.md b/api.md index 692bfb6d3d5..7fbeb7b3180 100644 --- a/api.md +++ b/api.md @@ -2680,7 +2680,7 @@ Types: ```python from cloudflare.types.api_gateway import ( - APIShield, + APIShieldOperation, OperationCreateResponse, OperationListResponse, OperationDeleteResponse, diff --git a/src/cloudflare/resources/api_gateway/operations/operations.py b/src/cloudflare/resources/api_gateway/operations/operations.py index 4e2c044805e..5ac50872179 100644 --- a/src/cloudflare/resources/api_gateway/operations/operations.py +++ b/src/cloudflare/resources/api_gateway/operations/operations.py @@ -31,11 +31,12 @@ SchemaValidationResourceWithStreamingResponse, AsyncSchemaValidationResourceWithStreamingResponse, ) -from ....types.api_gateway import operation_get_params, operation_list_params, operation_create_params +from ....types.api_gateway import operation_get_params, operation_list_params from ....types.api_gateway.operation_get_response import OperationGetResponse from ....types.api_gateway.operation_list_response import OperationListResponse from ....types.api_gateway.operation_create_response import OperationCreateResponse from ....types.api_gateway.operation_delete_response import OperationDeleteResponse +from ....types.api_gateway.api_shield_operation_param import APIShieldOperationParam from ....types.api_gateway.operation_bulk_delete_response import OperationBulkDeleteResponse __all__ = ["OperationsResource", "AsyncOperationsResource"] @@ -69,7 +70,7 @@ def create( self, *, zone_id: str, - body: Iterable[operation_create_params.Body], + body: Iterable[APIShieldOperationParam], # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -100,7 +101,7 @@ def create( raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}") return self._post( f"/zones/{zone_id}/api_gateway/operations", - body=maybe_transform(body, Iterable[operation_create_params.Body]), + body=maybe_transform(body, Iterable[APIShieldOperationParam]), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -344,7 +345,7 @@ async def create( self, *, zone_id: str, - body: Iterable[operation_create_params.Body], + body: Iterable[APIShieldOperationParam], # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -375,7 +376,7 @@ async def create( raise ValueError(f"Expected a non-empty value for `zone_id` but received {zone_id!r}") return await self._post( f"/zones/{zone_id}/api_gateway/operations", - body=await async_maybe_transform(body, Iterable[operation_create_params.Body]), + body=await async_maybe_transform(body, Iterable[APIShieldOperationParam]), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/cloudflare/types/api_gateway/__init__.py b/src/cloudflare/types/api_gateway/__init__.py index 272e71c2b78..275eb83fab4 100644 --- a/src/cloudflare/types/api_gateway/__init__.py +++ b/src/cloudflare/types/api_gateway/__init__.py @@ -4,12 +4,12 @@ from .message import Message as Message from .settings import Settings as Settings -from .api_shield import APIShield as APIShield from .configuration import Configuration as Configuration from .public_schema import PublicSchema as PublicSchema from .schema_upload import SchemaUpload as SchemaUpload from .schema_list_params import SchemaListParams as SchemaListParams from .discovery_operation import DiscoveryOperation as DiscoveryOperation +from .api_shield_operation import APIShieldOperation as APIShieldOperation from .operation_get_params import OperationGetParams as OperationGetParams from .schema_list_response import SchemaListResponse as SchemaListResponse from .operation_list_params import OperationListParams as OperationListParams @@ -24,6 +24,7 @@ from .operation_create_response import OperationCreateResponse as OperationCreateResponse from .operation_delete_response import OperationDeleteResponse as OperationDeleteResponse from .user_schema_create_params import UserSchemaCreateParams as UserSchemaCreateParams +from .api_shield_operation_param import APIShieldOperationParam as APIShieldOperationParam from .configuration_update_params import ConfigurationUpdateParams as ConfigurationUpdateParams from .user_schema_delete_response import UserSchemaDeleteResponse as UserSchemaDeleteResponse from .configuration_update_response import ConfigurationUpdateResponse as ConfigurationUpdateResponse diff --git a/src/cloudflare/types/api_gateway/api_shield.py b/src/cloudflare/types/api_gateway/api_shield.py deleted file mode 100644 index f884d96b96c..00000000000 --- a/src/cloudflare/types/api_gateway/api_shield.py +++ /dev/null @@ -1,227 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import List, Union, Optional -from datetime import datetime -from typing_extensions import Literal, TypeAlias - -from ..._models import BaseModel - -__all__ = [ - "APIShield", - "Features", - "FeaturesAPIShieldOperationFeatureThresholds", - "FeaturesAPIShieldOperationFeatureThresholdsThresholds", - "FeaturesAPIShieldOperationFeatureParameterSchemas", - "FeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemas", - "FeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemasParameterSchemas", - "FeaturesAPIShieldOperationFeatureAPIRouting", - "FeaturesAPIShieldOperationFeatureAPIRoutingAPIRouting", - "FeaturesAPIShieldOperationFeatureConfidenceIntervals", - "FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervals", - "FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThreshold", - "FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervals", - "FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP90", - "FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP95", - "FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP99", - "FeaturesAPIShieldOperationFeatureSchemaInfo", - "FeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfo", - "FeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfoActiveSchema", -] - - -class FeaturesAPIShieldOperationFeatureThresholdsThresholds(BaseModel): - auth_id_tokens: Optional[int] = None - """The total number of auth-ids seen across this calculation.""" - - data_points: Optional[int] = None - """The number of data points used for the threshold suggestion calculation.""" - - last_updated: Optional[datetime] = None - - p50: Optional[int] = None - """The p50 quantile of requests (in period_seconds).""" - - p90: Optional[int] = None - """The p90 quantile of requests (in period_seconds).""" - - p99: Optional[int] = None - """The p99 quantile of requests (in period_seconds).""" - - period_seconds: Optional[int] = None - """The period over which this threshold is suggested.""" - - requests: Optional[int] = None - """The estimated number of requests covered by these calculations.""" - - suggested_threshold: Optional[int] = None - """The suggested threshold in requests done by the same auth_id or period_seconds.""" - - -class FeaturesAPIShieldOperationFeatureThresholds(BaseModel): - thresholds: Optional[FeaturesAPIShieldOperationFeatureThresholdsThresholds] = None - - -class FeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemasParameterSchemas(BaseModel): - parameters: Optional[List[object]] = None - """An array containing the learned parameter schemas.""" - - responses: Optional[object] = None - """An empty response object. - - This field is required to yield a valid operation schema. - """ - - -class FeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemas(BaseModel): - last_updated: Optional[datetime] = None - - parameter_schemas: Optional[FeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemasParameterSchemas] = ( - None - ) - """An operation schema object containing a response.""" - - -class FeaturesAPIShieldOperationFeatureParameterSchemas(BaseModel): - parameter_schemas: FeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemas - - -class FeaturesAPIShieldOperationFeatureAPIRoutingAPIRouting(BaseModel): - last_updated: Optional[datetime] = None - - route: Optional[str] = None - """Target route.""" - - -class FeaturesAPIShieldOperationFeatureAPIRouting(BaseModel): - api_routing: Optional[FeaturesAPIShieldOperationFeatureAPIRoutingAPIRouting] = None - """API Routing settings on endpoint.""" - - -class FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP90( - BaseModel -): - lower: Optional[float] = None - """Lower bound for percentile estimate""" - - upper: Optional[float] = None - """Upper bound for percentile estimate""" - - -class FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP95( - BaseModel -): - lower: Optional[float] = None - """Lower bound for percentile estimate""" - - upper: Optional[float] = None - """Upper bound for percentile estimate""" - - -class FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP99( - BaseModel -): - lower: Optional[float] = None - """Lower bound for percentile estimate""" - - upper: Optional[float] = None - """Upper bound for percentile estimate""" - - -class FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervals( - BaseModel -): - p90: Optional[ - FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP90 - ] = None - """Upper and lower bound for percentile estimate""" - - p95: Optional[ - FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP95 - ] = None - """Upper and lower bound for percentile estimate""" - - p99: Optional[ - FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP99 - ] = None - """Upper and lower bound for percentile estimate""" - - -class FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThreshold(BaseModel): - confidence_intervals: Optional[ - FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervals - ] = None - - mean: Optional[float] = None - """Suggested threshold.""" - - -class FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervals(BaseModel): - last_updated: Optional[datetime] = None - - suggested_threshold: Optional[ - FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThreshold - ] = None - - -class FeaturesAPIShieldOperationFeatureConfidenceIntervals(BaseModel): - confidence_intervals: Optional[FeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervals] = None - - -class FeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfoActiveSchema(BaseModel): - id: Optional[str] = None - """UUID""" - - created_at: Optional[datetime] = None - - is_learned: Optional[bool] = None - """True if schema is Cloudflare-provided.""" - - name: Optional[str] = None - """Schema file name.""" - - -class FeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfo(BaseModel): - active_schema: Optional[FeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfoActiveSchema] = None - """Schema active on endpoint.""" - - learned_available: Optional[bool] = None - """True if a Cloudflare-provided learned schema is available for this endpoint.""" - - mitigation_action: Optional[Literal["none", "log", "block"]] = None - """Action taken on requests failing validation.""" - - -class FeaturesAPIShieldOperationFeatureSchemaInfo(BaseModel): - schema_info: Optional[FeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfo] = None - - -Features: TypeAlias = Union[ - FeaturesAPIShieldOperationFeatureThresholds, - FeaturesAPIShieldOperationFeatureParameterSchemas, - FeaturesAPIShieldOperationFeatureAPIRouting, - FeaturesAPIShieldOperationFeatureConfidenceIntervals, - FeaturesAPIShieldOperationFeatureSchemaInfo, -] - - -class APIShield(BaseModel): - 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", "OPTIONS", "PUT", "DELETE", "CONNECT", "PATCH", "TRACE"] - """The HTTP method used to access the endpoint.""" - - operation_id: str - """UUID""" - - features: Optional[Features] = None diff --git a/src/cloudflare/types/api_gateway/api_shield_operation.py b/src/cloudflare/types/api_gateway/api_shield_operation.py new file mode 100644 index 00000000000..a7c1e2c4011 --- /dev/null +++ b/src/cloudflare/types/api_gateway/api_shield_operation.py @@ -0,0 +1,23 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing_extensions import Literal + +from ..._models import BaseModel + +__all__ = ["APIShieldOperation"] + + +class APIShieldOperation(BaseModel): + 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", "OPTIONS", "PUT", "DELETE", "CONNECT", "PATCH", "TRACE"] + """The HTTP method used to access the endpoint.""" diff --git a/src/cloudflare/types/api_gateway/api_shield_operation_param.py b/src/cloudflare/types/api_gateway/api_shield_operation_param.py new file mode 100644 index 00000000000..5124aa6963f --- /dev/null +++ b/src/cloudflare/types/api_gateway/api_shield_operation_param.py @@ -0,0 +1,23 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from __future__ import annotations + +from typing_extensions import Literal, Required, TypedDict + +__all__ = ["APIShieldOperationParam"] + + +class APIShieldOperationParam(TypedDict, total=False): + endpoint: Required[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: Required[str] + """RFC3986-compliant host.""" + + method: Required[Literal["GET", "POST", "HEAD", "OPTIONS", "PUT", "DELETE", "CONNECT", "PATCH", "TRACE"]] + """The HTTP method used to access the endpoint.""" diff --git a/src/cloudflare/types/api_gateway/operation_create_params.py b/src/cloudflare/types/api_gateway/operation_create_params.py index dbfa97bf6e8..6a76b839b6f 100644 --- a/src/cloudflare/types/api_gateway/operation_create_params.py +++ b/src/cloudflare/types/api_gateway/operation_create_params.py @@ -3,29 +3,15 @@ from __future__ import annotations from typing import Iterable -from typing_extensions import Literal, Required, TypedDict +from typing_extensions import Required, TypedDict -__all__ = ["OperationCreateParams", "Body"] +from .api_shield_operation_param import APIShieldOperationParam + +__all__ = ["OperationCreateParams"] class OperationCreateParams(TypedDict, total=False): zone_id: Required[str] """Identifier""" - body: Required[Iterable[Body]] - - -class Body(TypedDict, total=False): - endpoint: Required[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: Required[str] - """RFC3986-compliant host.""" - - method: Required[Literal["GET", "POST", "HEAD", "OPTIONS", "PUT", "DELETE", "CONNECT", "PATCH", "TRACE"]] - """The HTTP method used to access the endpoint.""" + body: Required[Iterable[APIShieldOperationParam]] diff --git a/src/cloudflare/types/api_gateway/operation_create_response.py b/src/cloudflare/types/api_gateway/operation_create_response.py index 23d0751ec12..f259f867239 100644 --- a/src/cloudflare/types/api_gateway/operation_create_response.py +++ b/src/cloudflare/types/api_gateway/operation_create_response.py @@ -1,10 +1,239 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import List -from typing_extensions import TypeAlias +from typing import List, Union, Optional +from datetime import datetime +from typing_extensions import Literal, TypeAlias -from .api_shield import APIShield +from ..._models import BaseModel -__all__ = ["OperationCreateResponse"] +__all__ = [ + "OperationCreateResponse", + "OperationCreateResponseItem", + "OperationCreateResponseItemFeatures", + "OperationCreateResponseItemFeaturesAPIShieldOperationFeatureThresholds", + "OperationCreateResponseItemFeaturesAPIShieldOperationFeatureThresholdsThresholds", + "OperationCreateResponseItemFeaturesAPIShieldOperationFeatureParameterSchemas", + "OperationCreateResponseItemFeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemas", + "OperationCreateResponseItemFeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemasParameterSchemas", + "OperationCreateResponseItemFeaturesAPIShieldOperationFeatureAPIRouting", + "OperationCreateResponseItemFeaturesAPIShieldOperationFeatureAPIRoutingAPIRouting", + "OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervals", + "OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervals", + "OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThreshold", + "OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervals", + "OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP90", + "OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP95", + "OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP99", + "OperationCreateResponseItemFeaturesAPIShieldOperationFeatureSchemaInfo", + "OperationCreateResponseItemFeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfo", + "OperationCreateResponseItemFeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfoActiveSchema", +] -OperationCreateResponse: TypeAlias = List[APIShield] + +class OperationCreateResponseItemFeaturesAPIShieldOperationFeatureThresholdsThresholds(BaseModel): + auth_id_tokens: Optional[int] = None + """The total number of auth-ids seen across this calculation.""" + + data_points: Optional[int] = None + """The number of data points used for the threshold suggestion calculation.""" + + last_updated: Optional[datetime] = None + + p50: Optional[int] = None + """The p50 quantile of requests (in period_seconds).""" + + p90: Optional[int] = None + """The p90 quantile of requests (in period_seconds).""" + + p99: Optional[int] = None + """The p99 quantile of requests (in period_seconds).""" + + period_seconds: Optional[int] = None + """The period over which this threshold is suggested.""" + + requests: Optional[int] = None + """The estimated number of requests covered by these calculations.""" + + suggested_threshold: Optional[int] = None + """The suggested threshold in requests done by the same auth_id or period_seconds.""" + + +class OperationCreateResponseItemFeaturesAPIShieldOperationFeatureThresholds(BaseModel): + thresholds: Optional[OperationCreateResponseItemFeaturesAPIShieldOperationFeatureThresholdsThresholds] = None + + +class OperationCreateResponseItemFeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemasParameterSchemas( + BaseModel +): + parameters: Optional[List[object]] = None + """An array containing the learned parameter schemas.""" + + responses: Optional[object] = None + """An empty response object. + + This field is required to yield a valid operation schema. + """ + + +class OperationCreateResponseItemFeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemas(BaseModel): + last_updated: Optional[datetime] = None + + parameter_schemas: Optional[ + OperationCreateResponseItemFeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemasParameterSchemas + ] = None + """An operation schema object containing a response.""" + + +class OperationCreateResponseItemFeaturesAPIShieldOperationFeatureParameterSchemas(BaseModel): + parameter_schemas: OperationCreateResponseItemFeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemas + + +class OperationCreateResponseItemFeaturesAPIShieldOperationFeatureAPIRoutingAPIRouting(BaseModel): + last_updated: Optional[datetime] = None + + route: Optional[str] = None + """Target route.""" + + +class OperationCreateResponseItemFeaturesAPIShieldOperationFeatureAPIRouting(BaseModel): + api_routing: Optional[OperationCreateResponseItemFeaturesAPIShieldOperationFeatureAPIRoutingAPIRouting] = None + """API Routing settings on endpoint.""" + + +class OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP90( + BaseModel +): + lower: Optional[float] = None + """Lower bound for percentile estimate""" + + upper: Optional[float] = None + """Upper bound for percentile estimate""" + + +class OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP95( + BaseModel +): + lower: Optional[float] = None + """Lower bound for percentile estimate""" + + upper: Optional[float] = None + """Upper bound for percentile estimate""" + + +class OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP99( + BaseModel +): + lower: Optional[float] = None + """Lower bound for percentile estimate""" + + upper: Optional[float] = None + """Upper bound for percentile estimate""" + + +class OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervals( + BaseModel +): + p90: Optional[ + OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP90 + ] = None + """Upper and lower bound for percentile estimate""" + + p95: Optional[ + OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP95 + ] = None + """Upper and lower bound for percentile estimate""" + + p99: Optional[ + OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP99 + ] = None + """Upper and lower bound for percentile estimate""" + + +class OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThreshold( + BaseModel +): + confidence_intervals: Optional[ + OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervals + ] = None + + mean: Optional[float] = None + """Suggested threshold.""" + + +class OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervals(BaseModel): + last_updated: Optional[datetime] = None + + suggested_threshold: Optional[ + OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThreshold + ] = None + + +class OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervals(BaseModel): + confidence_intervals: Optional[ + OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervals + ] = None + + +class OperationCreateResponseItemFeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfoActiveSchema(BaseModel): + id: Optional[str] = None + """UUID""" + + created_at: Optional[datetime] = None + + is_learned: Optional[bool] = None + """True if schema is Cloudflare-provided.""" + + name: Optional[str] = None + """Schema file name.""" + + +class OperationCreateResponseItemFeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfo(BaseModel): + active_schema: Optional[ + OperationCreateResponseItemFeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfoActiveSchema + ] = None + """Schema active on endpoint.""" + + learned_available: Optional[bool] = None + """True if a Cloudflare-provided learned schema is available for this endpoint.""" + + mitigation_action: Optional[Literal["none", "log", "block"]] = None + """Action taken on requests failing validation.""" + + +class OperationCreateResponseItemFeaturesAPIShieldOperationFeatureSchemaInfo(BaseModel): + schema_info: Optional[OperationCreateResponseItemFeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfo] = None + + +OperationCreateResponseItemFeatures: TypeAlias = Union[ + OperationCreateResponseItemFeaturesAPIShieldOperationFeatureThresholds, + OperationCreateResponseItemFeaturesAPIShieldOperationFeatureParameterSchemas, + OperationCreateResponseItemFeaturesAPIShieldOperationFeatureAPIRouting, + OperationCreateResponseItemFeaturesAPIShieldOperationFeatureConfidenceIntervals, + OperationCreateResponseItemFeaturesAPIShieldOperationFeatureSchemaInfo, +] + + +class OperationCreateResponseItem(BaseModel): + 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", "OPTIONS", "PUT", "DELETE", "CONNECT", "PATCH", "TRACE"] + """The HTTP method used to access the endpoint.""" + + operation_id: str + """UUID""" + + features: Optional[OperationCreateResponseItemFeatures] = None + + +OperationCreateResponse: TypeAlias = List[OperationCreateResponseItem] diff --git a/src/cloudflare/types/api_gateway/user_schemas/operation_list_response.py b/src/cloudflare/types/api_gateway/user_schemas/operation_list_response.py index 3149155c055..fa984a5b255 100644 --- a/src/cloudflare/types/api_gateway/user_schemas/operation_list_response.py +++ b/src/cloudflare/types/api_gateway/user_schemas/operation_list_response.py @@ -1,15 +1,216 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import Union +from typing import List, Union, Optional +from datetime import datetime from typing_extensions import Literal, TypeAlias +from .. import api_shield_operation from ...._models import BaseModel -from ..api_shield import APIShield -__all__ = ["OperationListResponse", "APIShieldBasicOperation"] +__all__ = [ + "OperationListResponse", + "APIShieldOperation", + "APIShieldOperationFeatures", + "APIShieldOperationFeaturesAPIShieldOperationFeatureThresholds", + "APIShieldOperationFeaturesAPIShieldOperationFeatureThresholdsThresholds", + "APIShieldOperationFeaturesAPIShieldOperationFeatureParameterSchemas", + "APIShieldOperationFeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemas", + "APIShieldOperationFeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemasParameterSchemas", + "APIShieldOperationFeaturesAPIShieldOperationFeatureAPIRouting", + "APIShieldOperationFeaturesAPIShieldOperationFeatureAPIRoutingAPIRouting", + "APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervals", + "APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervals", + "APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThreshold", + "APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervals", + "APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP90", + "APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP95", + "APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP99", + "APIShieldOperationFeaturesAPIShieldOperationFeatureSchemaInfo", + "APIShieldOperationFeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfo", + "APIShieldOperationFeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfoActiveSchema", +] -class APIShieldBasicOperation(BaseModel): +class APIShieldOperationFeaturesAPIShieldOperationFeatureThresholdsThresholds(BaseModel): + auth_id_tokens: Optional[int] = None + """The total number of auth-ids seen across this calculation.""" + + data_points: Optional[int] = None + """The number of data points used for the threshold suggestion calculation.""" + + last_updated: Optional[datetime] = None + + p50: Optional[int] = None + """The p50 quantile of requests (in period_seconds).""" + + p90: Optional[int] = None + """The p90 quantile of requests (in period_seconds).""" + + p99: Optional[int] = None + """The p99 quantile of requests (in period_seconds).""" + + period_seconds: Optional[int] = None + """The period over which this threshold is suggested.""" + + requests: Optional[int] = None + """The estimated number of requests covered by these calculations.""" + + suggested_threshold: Optional[int] = None + """The suggested threshold in requests done by the same auth_id or period_seconds.""" + + +class APIShieldOperationFeaturesAPIShieldOperationFeatureThresholds(BaseModel): + thresholds: Optional[APIShieldOperationFeaturesAPIShieldOperationFeatureThresholdsThresholds] = None + + +class APIShieldOperationFeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemasParameterSchemas(BaseModel): + parameters: Optional[List[object]] = None + """An array containing the learned parameter schemas.""" + + responses: Optional[object] = None + """An empty response object. + + This field is required to yield a valid operation schema. + """ + + +class APIShieldOperationFeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemas(BaseModel): + last_updated: Optional[datetime] = None + + parameter_schemas: Optional[ + APIShieldOperationFeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemasParameterSchemas + ] = None + """An operation schema object containing a response.""" + + +class APIShieldOperationFeaturesAPIShieldOperationFeatureParameterSchemas(BaseModel): + parameter_schemas: APIShieldOperationFeaturesAPIShieldOperationFeatureParameterSchemasParameterSchemas + + +class APIShieldOperationFeaturesAPIShieldOperationFeatureAPIRoutingAPIRouting(BaseModel): + last_updated: Optional[datetime] = None + + route: Optional[str] = None + """Target route.""" + + +class APIShieldOperationFeaturesAPIShieldOperationFeatureAPIRouting(BaseModel): + api_routing: Optional[APIShieldOperationFeaturesAPIShieldOperationFeatureAPIRoutingAPIRouting] = None + """API Routing settings on endpoint.""" + + +class APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP90( + BaseModel +): + lower: Optional[float] = None + """Lower bound for percentile estimate""" + + upper: Optional[float] = None + """Upper bound for percentile estimate""" + + +class APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP95( + BaseModel +): + lower: Optional[float] = None + """Lower bound for percentile estimate""" + + upper: Optional[float] = None + """Upper bound for percentile estimate""" + + +class APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP99( + BaseModel +): + lower: Optional[float] = None + """Lower bound for percentile estimate""" + + upper: Optional[float] = None + """Upper bound for percentile estimate""" + + +class APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervals( + BaseModel +): + p90: Optional[ + APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP90 + ] = None + """Upper and lower bound for percentile estimate""" + + p95: Optional[ + APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP95 + ] = None + """Upper and lower bound for percentile estimate""" + + p99: Optional[ + APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervalsP99 + ] = None + """Upper and lower bound for percentile estimate""" + + +class APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThreshold( + BaseModel +): + confidence_intervals: Optional[ + APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThresholdConfidenceIntervals + ] = None + + mean: Optional[float] = None + """Suggested threshold.""" + + +class APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervals(BaseModel): + last_updated: Optional[datetime] = None + + suggested_threshold: Optional[ + APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervalsSuggestedThreshold + ] = None + + +class APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervals(BaseModel): + confidence_intervals: Optional[ + APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervalsConfidenceIntervals + ] = None + + +class APIShieldOperationFeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfoActiveSchema(BaseModel): + id: Optional[str] = None + """UUID""" + + created_at: Optional[datetime] = None + + is_learned: Optional[bool] = None + """True if schema is Cloudflare-provided.""" + + name: Optional[str] = None + """Schema file name.""" + + +class APIShieldOperationFeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfo(BaseModel): + active_schema: Optional[APIShieldOperationFeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfoActiveSchema] = None + """Schema active on endpoint.""" + + learned_available: Optional[bool] = None + """True if a Cloudflare-provided learned schema is available for this endpoint.""" + + mitigation_action: Optional[Literal["none", "log", "block"]] = None + """Action taken on requests failing validation.""" + + +class APIShieldOperationFeaturesAPIShieldOperationFeatureSchemaInfo(BaseModel): + schema_info: Optional[APIShieldOperationFeaturesAPIShieldOperationFeatureSchemaInfoSchemaInfo] = None + + +APIShieldOperationFeatures: TypeAlias = Union[ + APIShieldOperationFeaturesAPIShieldOperationFeatureThresholds, + APIShieldOperationFeaturesAPIShieldOperationFeatureParameterSchemas, + APIShieldOperationFeaturesAPIShieldOperationFeatureAPIRouting, + APIShieldOperationFeaturesAPIShieldOperationFeatureConfidenceIntervals, + APIShieldOperationFeaturesAPIShieldOperationFeatureSchemaInfo, +] + + +class APIShieldOperation(BaseModel): endpoint: str """ The endpoint which can contain path parameter templates in curly braces, each @@ -21,8 +222,15 @@ class APIShieldBasicOperation(BaseModel): host: str """RFC3986-compliant host.""" + last_updated: datetime + method: Literal["GET", "POST", "HEAD", "OPTIONS", "PUT", "DELETE", "CONNECT", "PATCH", "TRACE"] """The HTTP method used to access the endpoint.""" + operation_id: str + """UUID""" + + features: Optional[APIShieldOperationFeatures] = None + -OperationListResponse: TypeAlias = Union[APIShield, APIShieldBasicOperation] +OperationListResponse: TypeAlias = Union[APIShieldOperation, api_shield_operation.APIShieldOperation]