> ## Documentation Index > Fetch the complete documentation index at: https://bunny.net/docs/llms.txt > Use this file to discover all available pages before exploring further. # Create a Shield Zone in under-attack mode for your PullZone ## OpenAPI ````yaml https://api.bunny.net/shield/docs/v1/swagger.json post /shield/shield-zone/under-attack openapi: 3.0.4 info: title: Bunny Shield API description: >- Bunny.net API for Bunny Shield (WAF, DDoS, Rate Limiting, Bot Detection, Access Lists & API Guardian). version: v1 servers: - url: https://api.bunny.net security: [] paths: /shield/shield-zone/under-attack: post: tags: - Shield Zone summary: Create a Shield Zone in under-attack mode for your PullZone operationId: Create Shield Zone Under Attack requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateUnderAttackShieldZoneRequest' text/json: schema: $ref: '#/components/schemas/CreateUnderAttackShieldZoneRequest' application/*+json: schema: $ref: '#/components/schemas/CreateUnderAttackShieldZoneRequest' required: true responses: '200': description: OK content: text/plain: schema: $ref: '#/components/schemas/CreateShieldZoneResponse' application/json: schema: $ref: '#/components/schemas/CreateShieldZoneResponse' text/json: schema: $ref: '#/components/schemas/CreateShieldZoneResponse' '401': description: Unauthorized content: text/plain: schema: $ref: '#/components/schemas/UnauthorizedResult' application/json: schema: $ref: '#/components/schemas/UnauthorizedResult' text/json: schema: $ref: '#/components/schemas/UnauthorizedResult' '403': description: Forbidden content: text/plain: schema: $ref: '#/components/schemas/CreateShieldZoneResponse' application/json: schema: $ref: '#/components/schemas/CreateShieldZoneResponse' text/json: schema: $ref: '#/components/schemas/CreateShieldZoneResponse' '409': description: Conflict content: text/plain: schema: $ref: '#/components/schemas/CreateShieldZoneResponse' application/json: schema: $ref: '#/components/schemas/CreateShieldZoneResponse' text/json: schema: $ref: '#/components/schemas/CreateShieldZoneResponse' '500': description: Internal Server Error components: schemas: CreateUnderAttackShieldZoneRequest: required: - planType - pullZoneId type: object properties: pullZoneId: type: integer format: int64 planType: $ref: '#/components/schemas/ShieldPlanType' additionalProperties: false CreateShieldZoneResponse: type: object properties: data: $ref: '#/components/schemas/CreateShieldZoneRequest' error: $ref: '#/components/schemas/GenericRequestResponse' additionalProperties: false description: Response object for creating a new Shield Zone. UnauthorizedResult: type: object properties: statusCode: type: integer format: int32 additionalProperties: false ShieldPlanType: enum: - 0 - 1 - 2 - 3 type: integer description: |- 0 = Basic 1 = Advanced 2 = Business 3 = Enterprise format: int32 x-enum-varnames: - Basic - Advanced - Business - Enterprise CreateShieldZoneRequest: required: - pullZoneId type: object properties: shieldZone: $ref: '#/components/schemas/ShieldZoneRequest' pullZoneId: type: integer format: int64 accessLists: type: object additionalProperties: $ref: '#/components/schemas/AccessListAction' nullable: true botDetectionExecutionMode: $ref: '#/components/schemas/BotDetectionExecutionMode' csamScanningMode: $ref: '#/components/schemas/UploadScanningScannerMode' antivirusScanningMode: $ref: '#/components/schemas/UploadScanningScannerMode' additionalProperties: false description: Represents a request to create a new Shield Zone. GenericRequestResponse: type: object properties: statusCode: $ref: '#/components/schemas/HttpStatusCode' success: type: boolean description: Indicates whether the operation was successful. message: type: string description: Human-readable message describing the result of the operation. nullable: true errorKey: type: string description: Unique error key for programmatic error handling, if applicable. nullable: true additionalProperties: false description: >- Generic response object containing status information for API operations. ShieldZoneRequest: type: object properties: shieldZoneId: type: integer format: int64 premiumPlan: type: boolean nullable: true deprecated: true planType: $ref: '#/components/schemas/ShieldPlanType' learningMode: type: boolean nullable: true learningModeUntil: type: string format: date-time nullable: true wafEnabled: type: boolean nullable: true wafExecutionMode: $ref: '#/components/schemas/WAFExecutionMode' wafDisabledRules: uniqueItems: true type: array items: type: string nullable: true wafLogOnlyRules: uniqueItems: true type: array items: type: string nullable: true wafCustomRuleOrder: type: array items: type: integer format: int64 nullable: true wafRequestHeaderLoggingEnabled: type: boolean nullable: true requestBodyLoggingEnabled: type: boolean nullable: true wafRequestIgnoredHeaders: uniqueItems: true type: array items: type: string nullable: true wafRealtimeThreatIntelligenceEnabled: type: boolean nullable: true wafProfileId: type: integer format: int32 nullable: true wafEngineConfig: type: array items: $ref: '#/components/schemas/PullZoneWafConfigVariableModel' nullable: true wafRequestBodyLimitAction: $ref: '#/components/schemas/WAFPayloadLimitAction' wafResponseBodyLimitAction: $ref: '#/components/schemas/WAFPayloadLimitAction' dDoSShieldSensitivity: $ref: '#/components/schemas/DDoSShieldSensitivity' dDoSChallengeWindow: type: integer format: int32 nullable: true whitelabelResponsePages: type: boolean nullable: true additionalProperties: false AccessListAction: enum: - 0 - 1 - 2 - 3 - 4 - 5 type: integer description: |- 0 = None 1 = Allow 2 = Block 3 = Challenge 4 = Log 5 = Bypass format: int32 x-enum-varnames: - None - Allow - Block - Challenge - Log - Bypass BotDetectionExecutionMode: enum: - 0 - 1 type: integer description: |- 0 = LogOnly 1 = Challenge format: int32 x-enum-varnames: - LogOnly - Challenge UploadScanningScannerMode: enum: - 0 - 1 - 2 type: integer description: |- 0 = Disabled 1 = Log 2 = Block format: int32 x-enum-varnames: - Disabled - Log - Block HttpStatusCode: enum: - 100 - 101 - 102 - 103 - 200 - 201 - 202 - 203 - 204 - 205 - 206 - 207 - 208 - 226 - 300 - 301 - 302 - 303 - 304 - 305 - 306 - 307 - 308 - 400 - 401 - 402 - 403 - 404 - 405 - 406 - 407 - 408 - 409 - 410 - 411 - 412 - 413 - 414 - 415 - 416 - 417 - 421 - 422 - 423 - 424 - 426 - 428 - 429 - 431 - 451 - 500 - 501 - 502 - 503 - 504 - 505 - 506 - 507 - 508 - 510 - 511 type: integer description: |- 100 = Continue 101 = SwitchingProtocols 102 = Processing 103 = EarlyHints 200 = OK 201 = Created 202 = Accepted 203 = NonAuthoritativeInformation 204 = NoContent 205 = ResetContent 206 = PartialContent 207 = MultiStatus 208 = AlreadyReported 226 = IMUsed 300 = MultipleChoices 300 = Ambiguous 301 = MovedPermanently 301 = Moved 302 = Found 302 = Redirect 303 = SeeOther 303 = RedirectMethod 304 = NotModified 305 = UseProxy 306 = Unused 307 = TemporaryRedirect 307 = RedirectKeepVerb 308 = PermanentRedirect 400 = BadRequest 401 = Unauthorized 402 = PaymentRequired 403 = Forbidden 404 = NotFound 405 = MethodNotAllowed 406 = NotAcceptable 407 = ProxyAuthenticationRequired 408 = RequestTimeout 409 = Conflict 410 = Gone 411 = LengthRequired 412 = PreconditionFailed 413 = RequestEntityTooLarge 414 = RequestUriTooLong 415 = UnsupportedMediaType 416 = RequestedRangeNotSatisfiable 417 = ExpectationFailed 421 = MisdirectedRequest 422 = UnprocessableEntity 422 = UnprocessableContent 423 = Locked 424 = FailedDependency 426 = UpgradeRequired 428 = PreconditionRequired 429 = TooManyRequests 431 = RequestHeaderFieldsTooLarge 451 = UnavailableForLegalReasons 500 = InternalServerError 501 = NotImplemented 502 = BadGateway 503 = ServiceUnavailable 504 = GatewayTimeout 505 = HttpVersionNotSupported 506 = VariantAlsoNegotiates 507 = InsufficientStorage 508 = LoopDetected 510 = NotExtended 511 = NetworkAuthenticationRequired format: int32 x-enum-varnames: - Continue - SwitchingProtocols - Processing - EarlyHints - OK - Created - Accepted - NonAuthoritativeInformation - NoContent - ResetContent - PartialContent - MultiStatus - AlreadyReported - IMUsed - MultipleChoices - Ambiguous - MovedPermanently - Moved - Found - Redirect - SeeOther - RedirectMethod - NotModified - UseProxy - Unused - TemporaryRedirect - RedirectKeepVerb - PermanentRedirect - BadRequest - Unauthorized - PaymentRequired - Forbidden - NotFound - MethodNotAllowed - NotAcceptable - ProxyAuthenticationRequired - RequestTimeout - Conflict - Gone - LengthRequired - PreconditionFailed - RequestEntityTooLarge - RequestUriTooLong - UnsupportedMediaType - RequestedRangeNotSatisfiable - ExpectationFailed - MisdirectedRequest - UnprocessableEntity - UnprocessableContent - Locked - FailedDependency - UpgradeRequired - PreconditionRequired - TooManyRequests - RequestHeaderFieldsTooLarge - UnavailableForLegalReasons - InternalServerError - NotImplemented - BadGateway - ServiceUnavailable - GatewayTimeout - HttpVersionNotSupported - VariantAlsoNegotiates - InsufficientStorage - LoopDetected - NotExtended - NetworkAuthenticationRequired WAFExecutionMode: enum: - 0 - 1 type: integer description: |- 0 = Log 1 = Block format: int32 x-enum-varnames: - Log - Block PullZoneWafConfigVariableModel: required: - name - valueEncoded type: object properties: name: type: string nullable: true valueEncoded: type: string nullable: true additionalProperties: false WAFPayloadLimitAction: enum: - 0 - 1 - 2 type: integer description: |- 0 = Block 1 = Log 2 = Ignore format: int32 x-enum-varnames: - Block - Log - Ignore DDoSShieldSensitivity: enum: - 0 - 1 - 2 - 3 - 4 - 5 type: integer description: |- 0 = Off 1 = Low 2 = Medium 3 = High 4 = Challenge 5 = ChallengeInteractive format: int32 x-enum-varnames: - 'Off' - Low - Medium - High - Challenge - ChallengeInteractive ```` This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.