Uploadcare Webhook API

The Webhook API from Uploadcare — 3 operation(s) for webhook.

Operations 4

GET /webhooks/ List of webhooks #
POST /webhooks/ Create webhook #
PUT /webhooks/{id}/ Update webhook #
DELETE /webhooks/unsubscribe/ Delete webhook #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/uploadcare-webhook-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

uploadcare-webhook-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: REST API Reference Webhook API
  version: '0.7'
  description: 'REST API provides low-level access to Uploadcare features. You can access files and their metadata, application data, file groups, add-ons, projects, webhooks, document conversion and video encoding.


    The REST API root is `https://api.uploadcare.com/`. Send data via query strings and POST request bodies, and receive JSON responses. All URLs MUST end with a forward slash `/`.


    Check out our [API clients](https://uploadcare.com/docs/integrations/) that cover most of the popular programming languages and frameworks.


    # Authentication

    <!-- ReDoc-Inject: <security-definitions> -->

    '
  contact:
    name: API support
    email: help@uploadcare.com
  x-logo:
    url: https://ucarecdn.com/06bc72fb-3a5a-4ee7-a19c-b1d02fb9e711/logorestapi.svg
    backgroundColor: '#fafafa'
    altText: Uploadcare REST API Reference
  x-meta:
    title: REST API 0.7 Reference — Uploadcare
    description: Complete reference documentation for the Uploadcare REST API 0.7. Covers endpoints, requests, their params, and response examples.
servers:
- url: https://api.uploadcare.com
  description: Production server
security:
- apiKeyAuth: []
tags:
- name: Webhook
paths:
  /webhooks/:
    get:
      summary: List of webhooks
      description: List of project webhooks.
      tags:
      - Webhook
      operationId: webhooksList
      parameters:
      - $ref: '#/components/parameters/acceptHeader'
      responses:
        '200':
          description: List of project webhooks.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/webhook_of_list_response'
        '400':
          description: Simple HTTP Auth or webhook permission errors.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/simpleAuthHTTPForbidden'
                - $ref: '#/components/schemas/cantUseWebhooksError'
              examples:
                Authentication Error:
                  $ref: '#/components/examples/simpleAuthHTTPForbidden'
                Permission Error:
                  $ref: '#/components/examples/cantUseWebhooksError'
        '401':
          $ref: '#/components/responses/authorizationProblemsResponse'
        '406':
          $ref: '#/components/responses/invalidAcceptHeader'
        '429':
          $ref: '#/components/responses/requestWasThrottledError'
      x-codeSamples:
      - lang: JavaScript
        label: JS
        source: "import {\n  listOfWebhooks,\n  UploadcareSimpleAuthSchema,\n} from '@uploadcare/rest-client';\n\nconst uploadcareSimpleAuthSchema = new UploadcareSimpleAuthSchema({\n  publicKey: 'YOUR_PUBLIC_KEY',\n  secretKey: 'YOUR_SECRET_KEY',\n});\n\nconst result = await listOfWebhooks({}, { authSchema: uploadcareSimpleAuthSchema })\n"
      - lang: PHP
        label: PHP
        source: "<?php\n$configuration = Uploadcare\\Configuration::create((string) $_ENV['UPLOADCARE_PUBLIC_KEY'], (string) $_ENV['UPLOADCARE_SECRET_KEY']);\n\n$api = (new Uploadcare\\Api($configuration))->webhook();\nforeach ($api->listWebhooks() as $webhook) {\n    \\sprintf(\"Webhook with url %s is %s\\n\", $webhook->getTargetUrl(), $webhook->isActive() ? 'active' : 'not active');\n}\n"
      - lang: Python
        label: Python
        source: "from pyuploadcare import Uploadcare, Webhook\nuploadcare = Uploadcare(public_key='YOUR_PUBLIC_KEY', secret_key='YOUR_SECRET_KEY')\n\nwebhooks: list[Webhook] = list(uploadcare.list_webhooks(limit=10))\nfor w in webhooks:\n    print(w.id)\n"
      - lang: Ruby
        label: Ruby
        source: 'require ''uploadcare''

          Uploadcare.config.public_key = ''YOUR_PUBLIC_KEY''

          Uploadcare.config.secret_key = ''YOUR_SECRET_KEY''


          webhooks = Uploadcare::Webhook.list

          webhooks.each { |webhook| puts webhook.inspect }

          '
      - lang: Swift
        label: Swift
        source: "import Uploadcare\n\nlet uploadcare = Uploadcare(withPublicKey: \"YOUR_PUBLIC_KEY\", secretKey: \"YOUR_SECRET_KEY\")\n\nlet webhooks = try await uploadcare.getListOfWebhooks()\nfor webhook in webhooks {\n  print(webhook)\n}\n"
      - lang: Kotlin
        label: Kotlin
        source: 'import com.uploadcare.android.library.api.UploadcareClient


          val uploadcare = UploadcareClient(publicKey = "YOUR_PUBLIC_KEY", secretKey = "YOUR_SECRET_KEY")


          val webhooks = uploadcare.getWebhooks()

          Log.d("TAG", webhooks.toString())

          '
    post:
      summary: Create webhook
      description: Create and subscribe to a webhook. You can use webhooks to receive notifications about your uploads. For instance, once a file gets uploaded to your project, we can notify you by sending a message to a target URL.
      operationId: webhookCreate
      parameters:
      - $ref: '#/components/parameters/acceptHeader'
      tags:
      - Webhook
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
              - target_url
              - event
              type: object
              properties:
                target_url:
                  $ref: '#/components/schemas/webhook_target'
                event:
                  $ref: '#/components/schemas/webhook_event'
                is_active:
                  $ref: '#/components/schemas/webhook_is_active'
                signing_secret:
                  $ref: '#/components/schemas/webhook_signing_secret'
                version:
                  $ref: '#/components/schemas/webhook_version_of_request'
      callbacks:
        file-uploaded:
          '{$request.body#/target_url}':
            post:
              summary: file.uploaded event payload
              description: file.uploaded event payload
              parameters:
              - $ref: '#/components/parameters/webhookSignature'
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/webhookFilePayload'
              responses:
                2XX:
                  description: Webhook has been received successfully
        file-infected:
          '{$request.body#/target_url}':
            post:
              summary: file.infected event payload
              description: file.infected event payload
              parameters:
              - $ref: '#/components/parameters/webhookSignature'
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/webhookFilePayload'
              responses:
                2XX:
                  description: Webhook has been received successfully
        file-stored:
          '{$request.body#/target_url}':
            post:
              summary: file.stored event payload
              description: file.stored event payload
              parameters:
              - $ref: '#/components/parameters/webhookSignature'
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/webhookFilePayload'
              responses:
                2XX:
                  description: Webhook has been received successfully
        file-deleted:
          '{$request.body#/target_url}':
            post:
              summary: file.deleted event payload
              description: file.deleted event payload
              parameters:
              - $ref: '#/components/parameters/webhookSignature'
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/webhookFilePayload'
              responses:
                2XX:
                  description: Webhook has been received successfully
        file-info-updated:
          '{$request.body#/target_url}':
            post:
              summary: file.info_updated event payload
              description: file.info_updated event payload
              parameters:
              - $ref: '#/components/parameters/webhookSignature'
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/webhookFileInfoUpdatedPayload'
              responses:
                2XX:
                  description: Webhook has been received successfully
      responses:
        '201':
          description: Webhook successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/webhook_of_list_response'
        '400':
          description: Simple HTTP Auth or webhook permission or endpoint errors.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/simpleAuthHTTPForbidden'
                - $ref: '#/components/schemas/cantUseWebhooksError'
                - $ref: '#/components/schemas/webhookTargetUrlError'
              examples:
                Authentication Error:
                  $ref: '#/components/examples/simpleAuthHTTPForbidden'
                Permission Error:
                  $ref: '#/components/examples/cantUseWebhooksError'
                Target URL Error:
                  $ref: '#/components/examples/webhookTargetUrlError'
        '401':
          $ref: '#/components/responses/authorizationProblemsResponse'
        '406':
          $ref: '#/components/responses/invalidAcceptHeader'
        '429':
          $ref: '#/components/responses/requestWasThrottledError'
      x-codeSamples:
      - lang: JavaScript
        label: JS
        source: "import {\n  createWebhook,\n  UploadcareSimpleAuthSchema,\n} from '@uploadcare/rest-client';\n\nconst uploadcareSimpleAuthSchema = new UploadcareSimpleAuthSchema({\n  publicKey: 'YOUR_PUBLIC_KEY',\n  secretKey: 'YOUR_SECRET_KEY',\n});\n\nconst result = await createWebhook(\n  {\n    targetUrl: 'https://yourwebhook.com',\n    event: 'file.uploaded',\n    isActive: true,\n  },\n  { authSchema: uploadcareSimpleAuthSchema }\n)\n"
      - lang: PHP
        label: PHP
        source: '<?php

          $configuration = Uploadcare\Configuration::create((string) $_ENV[''UPLOADCARE_PUBLIC_KEY''], (string) $_ENV[''UPLOADCARE_SECRET_KEY'']);


          $api = (new Uploadcare\Api($configuration))->webhook();

          $result = $api->createWebhook(''https://yourwebhook.com'', true, ''sign-secret'', ''file.uploaded'');

          echo \sprintf(''Webhook %s created'', $result->getId());

          '
      - lang: Python
        label: Python
        source: "from pyuploadcare import Uploadcare, Webhook\nuploadcare = Uploadcare(public_key='YOUR_PUBLIC_KEY', secret_key='YOUR_SECRET_KEY')\n\nwebhook = uploadcare.webhooks_api.create(\n    {\n        \"event\": \"file.uploaded\",\n        \"target_url\": \"https://yourwebhook.com\",\n        \"is_active\": True,\n    }\n)\nprint(webhook)\n"
      - lang: Ruby
        label: Ruby
        source: "require 'uploadcare'\nUploadcare.config.public_key = 'YOUR_PUBLIC_KEY'\nUploadcare.config.secret_key = 'YOUR_SECRET_KEY'\n\noptions = {\n  target_url: 'https://yourwebhook.com',\n  event: 'file.uploaded',\n  is_active: true\n}\nUploadcare::Webhook.create(**options)\n"
      - lang: Swift
        label: Swift
        source: 'import Uploadcare


          let uploadcare = Uploadcare(withPublicKey: "YOUR_PUBLIC_KEY", secretKey: "YOUR_SECRET_KEY")


          let url = URL(string: "https://yourwebhook.com")!

          let webhook = try await uploadcare.createWebhook(targetUrl: url,  event: .fileUploaded, isActive: true, signingSecret: "sign-secret")

          print(webhook)

          '
      - lang: Kotlin
        label: Kotlin
        source: "import com.uploadcare.android.library.api.UploadcareClient\n\nval uploadcare = UploadcareClient(publicKey = \"YOUR_PUBLIC_KEY\", secretKey = \"YOUR_SECRET_KEY\")\n\nval url = URI(\"https://yourwebhook.com\")\nval webhook = uploadcare.createWebhook(\n    targetUrl = url,\n    event = EventType.UPLOADED,\n    isActive = true,\n    signingSecret = \"sign-secret\"\n)\nLog.d(\"TAG\", webhook.toString())\n"
  /webhooks/{id}/:
    put:
      summary: Update webhook
      description: Update webhook attributes.
      operationId: updateWebhook
      tags:
      - Webhook
      parameters:
      - $ref: '#/components/parameters/acceptHeader'
      - in: path
        name: id
        description: Webhook ID.
        schema:
          type: integer
          example: 143
        required: true
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                target_url:
                  $ref: '#/components/schemas/webhook_target'
                event:
                  $ref: '#/components/schemas/webhook_event'
                is_active:
                  $ref: '#/components/schemas/webhook_is_active'
                signing_secret:
                  $ref: '#/components/schemas/webhook_signing_secret'
      responses:
        '200':
          description: Webhook attributes successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/webhook'
        '401':
          $ref: '#/components/responses/authorizationProblemsResponse'
        '404':
          description: Webhook with ID {id} not found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Not found.
                    example: Not found.
        '406':
          $ref: '#/components/responses/invalidAcceptHeader'
        '429':
          $ref: '#/components/responses/requestWasThrottledError'
      x-codeSamples:
      - lang: JavaScript
        label: JS
        source: "import {\n  updateWebhook,\n  UploadcareSimpleAuthSchema,\n} from '@uploadcare/rest-client';\n\nconst uploadcareSimpleAuthSchema = new UploadcareSimpleAuthSchema({\n  publicKey: 'YOUR_PUBLIC_KEY',\n  secretKey: 'YOUR_SECRET_KEY',\n});\n\nconst result = await updateWebhook(\n  {\n    id: 1473151,\n    targetUrl: 'https://yourwebhook.com',\n    event: 'file.uploaded',\n    isActive: true,\n    signingSecret: 'webhook-secret',\n  },\n  { authSchema: uploadcareSimpleAuthSchema }\n)\n"
      - lang: PHP
        label: PHP
        source: "<?php\n$configuration = Uploadcare\\Configuration::create((string) $_ENV['UPLOADCARE_PUBLIC_KEY'], (string) $_ENV['UPLOADCARE_SECRET_KEY']);\n\n$api = (new Uploadcare\\Api($configuration))->webhook();\n$webhook = $api->updateWebhook(1473151, [\n    'target_url' => 'https://yourwebhook.com',\n    'event' => 'file.uploaded',\n    'is_active' => true,\n    'signing_secret' => 'webhook-secret',\n]);\n\\sprintf(\"Webhook with url %s is %s\\n\", $webhook->getTargetUrl(), $webhook->isActive() ? 'active' : 'not active');\n"
      - lang: Python
        label: Python
        source: 'from pyuploadcare import Uploadcare, Webhook

          uploadcare = Uploadcare(public_key=''YOUR_PUBLIC_KEY'', secret_key=''YOUR_SECRET_KEY'')


          webhook_id = 1473151

          webhook = uploadcare.webhooks_api.update(webhook_id, {"is_active": False})

          '
      - lang: Ruby
        label: Ruby
        source: "require 'uploadcare'\nUploadcare.config.public_key = 'YOUR_PUBLIC_KEY'\nUploadcare.config.secret_key = 'YOUR_SECRET_KEY'\n\nwebhook_id = 1_473_151\noptions = {\n  target_url: 'https://yourwebhook.com',\n  event: 'file.uploaded',\n  is_active: true,\n  signing_secret: 'webhook-secret'\n}\nUploadcare::Webhook.update(webhook_id, options)\n"
      - lang: Swift
        label: Swift
        source: 'import Uploadcare


          let uploadcare = Uploadcare(withPublicKey: "YOUR_PUBLIC_KEY", secretKey: "YOUR_SECRET_KEY")


          let url = URL(string: "https://yourwebhook.com")!

          let webhook = try await uploadcare.updateWebhook(id: 1473151, targetUrl: url, event: .fileInfoUpdated, isActive: true, signingSecret: "webhook-secret")

          print(webhook)

          '
      - lang: Kotlin
        label: Kotlin
        source: "import com.uploadcare.android.library.api.UploadcareClient\n\nval uploadcare = UploadcareClient(publicKey = \"YOUR_PUBLIC_KEY\", secretKey = \"YOUR_SECRET_KEY\")\n\nval url = URI(\"https://yourwebhook.com\")\nval webhook = uploadcare.updateWebhook(\n    webhookId = 1473151,\n    targetUrl = url,\n    event = EventType.UPLOADED,\n    isActive = true,\n    signingSecret = \"\",\n)\nLog.d(\"TAG\", webhook.toString())\n"
  /webhooks/unsubscribe/:
    delete:
      summary: Delete webhook
      description: Unsubscribe and delete a webhook.
      tags:
      - Webhook
      operationId: webhookUnsubscribe
      parameters:
      - $ref: '#/components/parameters/acceptHeader'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              required:
              - target_url
              type: object
              properties:
                target_url:
                  $ref: '#/components/schemas/webhook_target'
      responses:
        '204':
          description: Webhook successfully deleted.
        '400':
          description: Simple HTTP Auth or webhook permission or endpoint errors.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/simpleAuthHTTPForbidden'
                - $ref: '#/components/schemas/cantUseWebhooksError'
                - $ref: '#/components/schemas/webhookTargetUrlError'
              examples:
                Authentication Error:
                  $ref: '#/components/examples/simpleAuthHTTPForbidden'
                Permission Error:
                  $ref: '#/components/examples/cantUseWebhooksError'
                Target URL Error:
                  $ref: '#/components/examples/webhookTargetUrlError'
        '401':
          $ref: '#/components/responses/authorizationProblemsResponse'
        '406':
          $ref: '#/components/responses/invalidAcceptHeader'
        '429':
          $ref: '#/components/responses/requestWasThrottledError'
      x-codeSamples:
      - lang: JavaScript
        label: JS
        source: "import {\n  deleteWebhook,\n  UploadcareSimpleAuthSchema,\n} from '@uploadcare/rest-client';\n\nconst uploadcareSimpleAuthSchema = new UploadcareSimpleAuthSchema({\n  publicKey: 'YOUR_PUBLIC_KEY',\n  secretKey: 'YOUR_SECRET_KEY',\n});\n\nconst result = await deleteWebhook(\n  {\n    targetUrl: 'https://yourwebhook.com',\n  },\n  { authSchema: uploadcareSimpleAuthSchema }\n)\n"
      - lang: PHP
        label: PHP
        source: '<?php

          $configuration = Uploadcare\Configuration::create((string) $_ENV[''UPLOADCARE_PUBLIC_KEY''], (string) $_ENV[''UPLOADCARE_SECRET_KEY'']);


          $api = (new Uploadcare\Api($configuration))->webhook();

          $result = $api->deleteWebhook(''https://yourwebhook.com'');

          echo $result ? ''Webhook has been deleted'' : ''Webhook is not deleted, something went wrong'';

          '
      - lang: Python
        label: Python
        source: 'from pyuploadcare import Uploadcare, Webhook

          uploadcare = Uploadcare(public_key=''YOUR_PUBLIC_KEY'', secret_key=''YOUR_SECRET_KEY'')


          webhook_id = 1473151

          uploadcare.delete_webhook(webhook_id)

          '
      - lang: Ruby
        label: Ruby
        source: 'require ''uploadcare''

          Uploadcare.config.public_key = ''YOUR_PUBLIC_KEY''

          Uploadcare.config.secret_key = ''YOUR_SECRET_KEY''


          puts Uploadcare::Webhook.delete(''https://yourwebhook.com'')

          '
      - lang: Swift
        label: Swift
        source: 'import Uploadcare


          let uploadcare = Uploadcare(withPublicKey: "YOUR_PUBLIC_KEY", secretKey: "YOUR_SECRET_KEY")


          let url = URL(string: "https://yourwebhook.com")!

          try await uploadcare.deleteWebhook(forTargetUrl: url)

          '
      - lang: Kotlin
        label: Kotlin
        source: 'import com.uploadcare.android.library.api.UploadcareClient


          val uploadcare = UploadcareClient(publicKey = "YOUR_PUBLIC_KEY", secretKey = "YOUR_SECRET_KEY")


          val url = URI("https://yourwebhook.com")

          uploadcare.deleteWebhook(url)

          '
components:
  examples:
    cantUseWebhooksError:
      value:
        detail: You can't use webhooks
    simpleAuthHTTPForbidden:
      value:
        detail: Simple authentication over HTTP is forbidden. Please, use HTTPS or signed requests instead.
    webhookTargetUrlError:
      value:
        detail: '`target_url` is missing.'
  schemas:
    webhookInitiator:
      description: Webhook event initiator.
      type: object
      required:
      - type
      - detail
      properties:
        type:
          type: string
          description: Initiator type name.
          enum:
          - api
          - system
          - addon
        detail:
          type: object
          required:
          - request_id
          - addon_name
          properties:
            request_id:
              type:
              - string
              - 'null'
              format: uuid
              description: Request ID.
              example: 972654bd-a2ad-485a-bd27-c86126c1ed8c
            addon_name:
              type:
              - string
              - 'null'
              description: Add-On name.
              enum:
              - aws_rekognition_detect_labels
              - aws_rekognition_detect_moderation_labels
              - uc_clamav_virus_scan
              - remove_bg
              - zamzar_convert_document
              - zencoder_convert_video
              example: aws_rekognition_detect_labels
            source_file_uuid:
              type: string
              format: uuid
              description: Source file UUID if the current is derivative.
              example: 972654bd-a2ad-485a-bd27-c86126c1ed8c
    cantUseWebhooksError:
      type: object
      properties:
        detail:
          type: string
          default: You can't use webhooks
      example:
        detail: You can't use webhooks
    webhookFileInfoUpdatedPayload:
      type: object
      required:
      - initiator
      - hook
      - data
      - file
      - previous_values
      properties:
        initiator:
          $ref: '#/components/schemas/webhookInitiator'
        hook:
          $ref: '#/components/schemas/webhookPublicInfo'
        data:
          $ref: '#/components/schemas/file'
        file:
          description: File CDN URL.
          type: string
          format: uri
        previous_values:
          type: object
          description: Object containing the values of the updated file data attributes and their values prior to the event.
          properties:
            appdata:
              $ref: '#/components/schemas/applicationDataObject'
            metadata:
              $ref: '#/components/schemas/metadata'
    webhookTargetUrlError:
      type: object
      properties:
        detail:
          type: string
          description: '`target_url` is missing.'
          default: '`target_url` is missing.'
      example:
        detail: '`target_url` is missing.'
    applicationDataObject:
      type:
      - object
      - 'null'
      description: Dictionary of application names and data associated with these applications.
      properties:
        aws_rekognition_detect_labels:
          $ref: '#/components/schemas/awsRekognitionDetectLabels_v2016_06_27'
        aws_rekognition_detect_moderation_labels:
          $ref: '#/components/schemas/awsRekognitionDetectModerationLabels_v2016_06_27'
        remove_bg:
          $ref: '#/components/schemas/removeBg_v1_0'
        uc_clamav_virus_scan:
          $ref: '#/components/schemas/ucClamavVirusScan'
    webhook_created:
      type: string
      format: date-time
      description: date-time when a webhook was created.
      example: '2018-11-26T12:49:10.477888Z'
    metadata:
      type:
      - object
      - 'null'
      description: Arbitrary metadata associated with a file.
    awsRekognitionDetectModerationLabels_v2016_06_27:
      allOf:
      - $ref: '#/components/schemas/applicationData'
      - type: object
        properties:
          version:
            type: string
            enum:
            - '2016-06-27'
          data:
            type: object
            description: Dictionary with a result of an aws rekognition detect moderation labels execution result.
            properties:
              ModerationModelVersion:
                type: string
              ModerationLabels:
                type: array
                items:
                  type: object
                  properties:
                    Confidence:
                      type: number
                    Name:
                      type: string
                    ParentName:
                      type: string
                  required:
                  - Name
                  - ParentName
                  - Confidence
            required:
            - ModerationLabels
            - ModerationModelVersion
            example:
              value:
                aws_rekognition_detect_moderation_labels:
                  data:
                    ModerationModelVersion: '6.0'
                    ModerationLabels:
                    - Confidence: 93.41645812988281
                      Name: Weapons
                      ParentName: Violence
                  version: '2016-06-27'
                  datetime_created: '2023-02-21T11:25:31.259763Z'
                  datetime_updated: '2023-02-21T11:27:33.359763Z'
    webhook_signing_secret:
      type: string
      format: password
      maxLength: 32
      example: 7kMVZivndx0ErgvhRKAr
      description: 'Optional [HMAC/SHA-256](https://en.wikipedia.org/wiki/HMAC) secret that, if set, will be used to

        calculate signatures for the webhook payloads sent to the `target_url`.


        Calculated signature will be sent to the `target_url` as a value of the `X-Uc-Signature` HTTP

        header. The header will have the following format: `X-Uc-Signature: v1=<HMAC-SHA256-HEX-DIGEST>`.

        See [Secure Webhooks](https://uploadcare.com/docs/webhooks/#signed-webhooks) for details.

        '
    webhook:
      description: Webhook.
      type: object
      properties:
        id:
          $ref: '#/components/schemas/webhook_id'
        project:
          $ref: '#/components/schemas/webhook_project'
        created:
          $ref: '#/components/schemas/webhook_created'
        updated:
          $ref: '#/components/schemas/webhook_updated'
        event:
          $ref: '#/components/schemas/webhook_event'
        target_url:
          $ref: '#/components/schemas/webhook_target'
        is_active:
          $ref: '#/components/schemas/webhook_is_active'
        version:
          $ref: '#/components/schemas/webhook_version'
        signing_secret:
          $ref: '#/components/schemas/webhook_signing_secret'
      example:
        id: 1
        project: 13
        created: '2016-04-27T11:49:54.948615Z'
        updated: '2016-04-27T12:04:57.819933Z'
        event: file.infected
        target_url: http://example.com/hooks/receiver
        is_active: true
        signing_secret: 7kMVZivndx0ErgvhRKAr
        version: '0.7'
    webhook_project:
      type: integer
      description: Project ID the webhook belongs to.
      example: 39123
    webhook_id:
      type: integer
      description: Webhook's ID.
      example: 1234
    ucClamavVirusScan:
      allOf:
      - $ref: '#/components/schemas/applicationData'
      - type: object
        properties:
          version:
            type: string
            enum:
            - 0.104.2
            - 0.104.3
            - 0.105.0
            - 0.105.1
          data:
            type: object
            description: Dictionary with a result of ClamAV execution result.
            properties:
              infected:
                type: boolean
              infected_with:
                type: string
            required:
            - infected
        example:
          value:
            uc_clamav_virus_scan:
              data:
                infected: true
                infected_with: Win.Test.EICAR_HDB-1
              version: 0.104.2
              datetime_created: '2021-09-21T11:24:33.159663Z'
              datetime_updated: '2021-09-21T11:24:33.159663Z'
    applicationData:
      type: object
      properties:
        version:
          type: string
          description: An application version.
        datetime_created:
          type: string
          format: date-time
          description: Date and time when an application data was created.
        datetime_updated:
          type: string
          format: date-time
          description: Date and time when an application data was updated.
        data:
          type: object
          description: Dictionary with a result of an application execution result.
      required:
      - version
      - datetime_created
      - datetime_updated
      - data
    webhook_updated:
      type: string
      format: date-time
      description: date-time when a webhook was updated.
      example: '2018-11-26T12:49:10.477888Z'
    removeBg_v1_0:
      allOf:
      - $ref: '#/components/schemas/applicationData'
      - type: object
        properties:
          version:
            type: string
            enum:
            - '1.0'
          data:
            type: object
            description: Dictionary with a result of an remove.bg information about an image.
            properties:
              foreground_type:
                type: string
                description: foreground classification type (present if type_level was set)
        example:
          value:
            remove_bg:
              data:
                foreground_type: person
              version: '1.0'
              datetime_created: '2021-07-25T12:24:33.159663Z'
              datetime_updated: '2021-07-25T12:24:33.159663Z'
    webhook_version:
      type: string
      description: Webhook payload's version.
      enum:
      - '0.7'
      example: '0.7'
    imageInfo:
      type: object
      description: Image metadata.
      required:
      - color_mode
      - orientation
      - format
      - height
      - width
      - geo_location
      - datetime_original
      - dpi
      - sequence
      properties:
        color_mode:
          type: string
          description: Image color mode.
          enum:
          - RGB
          - RGBA
          - RGBa
          - RGBX
          - L
          - LA
          - La
          - P
          - PA
          - CMYK
          - YCbCr
          - HSV
          - LAB
          example: RGBA
        orientation:
          type:
          - integer
          - 'null'
          description: Image orientation from EXIF.
          minimum: 0
          maximum: 8
          example: 6
        format:
          type: string
          description: Image format.
          example: JPEG
        sequence:
          type: boolean
          description: Set to true if a file contains a sequence of images (GIF for example).
          example: false
        height:
          type: integer
          description: Image height in pixels.
          example: 2352
        width:
          type: integer
          description: Image width in pixels.
          example: 2935
        geo_location:
          description: Geo-location of image from EXIF.
          type:
          - object
          - 'null'
          required:
          - latitude
          - longitude
          properties:
            latitude:
              type: number
              description: Location latitude.
              example: -1.1884555555555556
            longitude:
              type: number
              description: Location longitude.
              example: 52.66996666666667
        datetime_original:
          type:
          - s

# --- truncated at 32 KB (55 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/uploadcare/refs/heads/main/openapi/uploadcare-webhook-api-openapi.yml