> ## Documentation Index
> Fetch the complete documentation index at: https://docs.seamind.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Scan Webhook

> Receive a GuardDuty Malware Protection scan result for a user upload.

Returns 200 OK on success (including idempotent no-ops). On signature
mismatch returns 401. On malformed payload returns 400.

Slice 2: signature verify + hand off to UploadService.record_scan_result,
which transitions the row and (on NO_THREATS_FOUND) enqueues process_upload.



## OpenAPI

````yaml /openapi.json post /api/v1/internal/scan-webhook
openapi: 3.1.0
info:
  title: Seamind Backend
  version: 0.1.0
servers: []
security: []
paths:
  /api/v1/internal/scan-webhook:
    post:
      tags:
        - internal-uploads
      summary: Scan Webhook
      description: >-
        Receive a GuardDuty Malware Protection scan result for a user upload.


        Returns 200 OK on success (including idempotent no-ops). On signature

        mismatch returns 401. On malformed payload returns 400.


        Slice 2: signature verify + hand off to
        UploadService.record_scan_result,

        which transitions the row and (on NO_THREATS_FOUND) enqueues
        process_upload.
      operationId: scan_webhook_api_v1_internal_scan_webhook_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScanWebhookAckDTO'
components:
  schemas:
    ScanWebhookAckDTO:
      properties:
        status:
          type: string
          title: Status
        uploadId:
          type: string
          title: Uploadid
        scanStatus:
          type: string
          title: Scanstatus
      type: object
      required:
        - status
        - uploadId
        - scanStatus
      title: ScanWebhookAckDTO
      description: Ack for the malware-scan (GuardDuty) callback.

````