Michael Schwartz
07/08/2025, 6:07 PM{
  "id": "0686d5dc-4d24-74e0-8000-a25c7f861709",
  "account": "1f68ce6c-568d-4d7a-ae99-9641099300bd",
  "event": "prefect-cloud.webhook.failed",
  "occurred": "2025-07-08T18:04:52.821Z",
  "payload": {
    "method": "POST",
    "headers": {
      "host": "api.prefect.cloud",
      "user-agent": "python-requests/2.32.3",
      "accept-encoding": "gzip, deflate",
      "accept": "*/*",
      "content-type": "application/json",
      "content-length": "1408",
      "x-request-id": "1a66776c-5201-9755-85ef-bc683eeb2df6"
    },
    "body": "{\"data\": [{\"uom\": \"gram\", \"brand\": \"PINNACLE VALLEY FARMS\", \"state\": \"Vermont\", \"source\": \"dutchie\", \"strain\": \"N/A\", \"thc_mg\": \"100\", \"menu_id\": \"16a2482a571ffea0cdb34e7d4545c8db\", \"segment\": \"Soft Candy\", \"category\": \"Edibles\", \"brand_src\": \"Pinnacle Valley Farms\", \"image_url\": \"<https://askhoodie.com/cdn-cgi/image/quality=50/https://data-item-images.s3.us-east-2.amazonaws.com/success/2de24aa74f2be5fbcd1f1db9bfd5ace0>\", \"item_name\": \"Blue Raspberry 100mg Hash Rosin Gummies\", \"__record_id\": \"932cbe36c70ee680d093c969dcdc755c__unifyd_master_3986919\", \"subsegment\": \"Gummies\", \"description\": \"Delightful Hash Rosin Gummies from our friends at Pinnacle Valley Farms. Blue Raspberry is their \\\"Calming\\\" blend.\\n\\n5mg THC per gummy, 20 gummies per pack (100mg)\\n\\nVEGAN!\\n\\nIngredients: Sugar, Tapioca syrup, Water (Distilled), Pectin, Natural flavor, Citric acid, Sodium citrate, MCT, Hash rosin, Natural & artificial colors\", \"dict_flavor\": \"Blue Raspberry\", \"variant_url\": \"<https://dutchie.com/dispensary/cann-maxx/product/pinnacle-valley-farms-blue-raspberry>\", \"category_src\": \"EDIBLES\", \"parent_brand\": \"PINNACLE VALLEY FARMS\", \"sub_category\": \"gummies\", \"cannabis_type\": \"INDICA\", \"dict_pack_size\": \"20 pack\", \"pos_product_id\": \"153139\", \"product_id_src\": \"af1b4a49f6075dfec8d4669652c307fb\", \"product_presentation\": \"100.00 mg\", \"dict_concentrate_type\": \"Rosin\", \"category_src_normalized\": \"Edibles\"}]}",
    "rendered": {
      "event": "pim.unifyd.catsy",
      "resource": {
        "prefect.resource.id": "pim.unifyd.catsy.handle",
        "payload": [
          {
            "__record_id": "932cbe36c70ee680d093c969dcdc755c__unifyd_master_3986919",
            "brand": "PINNACLE VALLEY FARMS",
            "brand_src": "Pinnacle Valley Farms",
            "cannabis_type": "INDICA",
            "category": "Edibles",
            "category_src": "EDIBLES",
            "category_src_normalized": "Edibles",
            "description": "Delightful Hash Rosin Gummies from our friends at Pinnacle Valley Farms. Blue Raspberry is their \"Calming\" blend.\n\n5mg THC per gummy, 20 gummies per pack (100mg)\n\nVEGAN!\n\nIngredients: Sugar, Tapioca syrup, Water (Distilled), Pectin, Natural flavor, Citric acid, Sodium citrate, MCT, Hash rosin, Natural & artificial colors",
            "dict_concentrate_type": "Rosin",
            "dict_flavor": "Blue Raspberry",
            "dict_pack_size": "20 pack",
            "image_url": "<https://askhoodie.com/cdn-cgi/image/quality=50/https://data-item-images.s3.us-east-2.amazonaws.com/success/2de24aa74f2be5fbcd1f1db9bfd5ace0>",
            "item_name": "Blue Raspberry 100mg Hash Rosin Gummies",
            "menu_id": "16a2482a571ffea0cdb34e7d4545c8db",
            "parent_brand": "PINNACLE VALLEY FARMS",
            "pos_product_id": "153139",
            "product_id_src": "af1b4a49f6075dfec8d4669652c307fb",
            "product_presentation": "100.00 mg",
            "segment": "Soft Candy",
            "source": "dutchie",
            "state": "Vermont",
            "strain": "N/A",
            "sub_category": "gummies",
            "subsegment": "Gummies",
            "thc_mg": "100",
            "uom": "gram",
            "variant_url": "<https://dutchie.com/dispensary/cann-maxx/product/pinnacle-valley-farms-blue-raspberry>"
          }
        ]
      }
    },
    "compiled": null,
    "reason": "1 validation error for Event\nresource.payload\n  Input should be a valid string [type=string_type, input_value=[{'__record_id': '932cbe3...-farms-blue-raspberry'}], input_type=list]\n    For further information visit <https://errors.pydantic.dev/2.10/v/string_type>"
  },
  "received": "2025-07-08T18:04:52.821Z",
  "related": [],
  "resource": {
    "prefect.resource.id": "prefect-cloud.webhook.283c8f61-321f-4336-99a8-b679b2206dbf",
    "prefect.resource.name": "Upsert Catsy Products"
  },
  "workspace": "8f854e6c-4fe7-49b7-860c-8f2e7973c905"{
  "event": "pim.unifyd.catsy",
  "resource": {
    "prefect.resource.id": "pim.unifyd.catsy.handle",
    "payload": {{ body.data | tojson }}
  }
}Marvin
07/08/2025, 6:07 PMMarvin
07/08/2025, 6:07 PMresource.payloadjson
{
  "event": "pim.unifyd.catsy",
  "resource": {
    "prefect.resource.id": "pim.unifyd.catsy.handle",
    "payload": {{ body.data | tojson | tojson }}
  }
}tojsonpython
from pydantic import BaseModel
class WebhookPayload(BaseModel):
    event: str
    resource: dict[str, str]  # or create a nested model for resourcepython
import json
@flow
def handle_webhook(webhook_data: WebhookPayload):
    payload = json.loads(webhook_data.resource["payload"])
    # Now payload is your original list of dictionaries
    ...Nate
07/08/2025, 6:08 PMtojsonNate
07/08/2025, 6:08 PMNate
07/08/2025, 6:10 PMMichael Schwartz
07/08/2025, 6:11 PM@flow()
def my_flow(payload: str):Nate
07/08/2025, 6:12 PMNate
07/08/2025, 6:12 PMNate
07/08/2025, 6:13 PM