{
  "@context": {
    "@vocab": "https://duck-hub.com/schema#",
    "schema": "https://schema.org/",
    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "dcterms": "http://purl.org/dc/terms/",
    "duck": "https://duck-hub.com/schema#",
    "CategoryScheduleDay": "duck:CategoryScheduleDay",
    "day": {
      "@id": "duck:day",
      "@type": "xsd:string"
    },
    "isOpen": {
      "@id": "duck:isOpen",
      "@type": "xsd:boolean"
    },
    "openTime": {
      "@id": "duck:openTime",
      "@type": "xsd:string"
    },
    "closeTime": {
      "@id": "duck:closeTime",
      "@type": "xsd:string"
    },
    "SyncCategoryDto": "duck:SyncCategoryDto",
    "externalId": {
      "@id": "duck:externalId",
      "@type": "xsd:string"
    },
    "name": {
      "@id": "duck:name",
      "@type": "xsd:string"
    },
    "sortOrder": {
      "@id": "duck:sortOrder",
      "@type": "xsd:decimal"
    },
    "schedule": {
      "@id": "duck:schedule",
      "@container": "@list"
    },
    "cardStyle": {
      "@id": "duck:cardStyle",
      "@type": "xsd:string"
    },
    "isActive": {
      "@id": "duck:isActive",
      "@type": "xsd:boolean"
    },
    "translations": {
      "@id": "duck:translations"
    },
    "SyncIngredientDto": "duck:SyncIngredientDto",
    "SyncModifierOptionDto": "duck:SyncModifierOptionDto",
    "ingredientExternalId": {
      "@id": "duck:ingredientExternalId",
      "@type": "xsd:string"
    },
    "action": {
      "@id": "duck:action",
      "@type": "xsd:string"
    },
    "priceAdjustment": {
      "@id": "duck:priceAdjustment",
      "@type": "xsd:decimal"
    },
    "SyncModifierGroupDto": "duck:SyncModifierGroupDto",
    "type": {
      "@id": "duck:type",
      "@type": "xsd:string"
    },
    "isRequired": {
      "@id": "duck:isRequired",
      "@type": "xsd:boolean"
    },
    "options": {
      "@id": "duck:options",
      "@container": "@list"
    },
    "SyncProductDto": "duck:SyncProductDto",
    "description": {
      "@id": "duck:description",
      "@type": "xsd:string"
    },
    "priceMinor": {
      "@id": "duck:priceMinor",
      "@type": "xsd:decimal"
    },
    "salePriceMinor": {
      "@id": "duck:salePriceMinor",
      "@type": "xsd:decimal"
    },
    "isSaleActive": {
      "@id": "duck:isSaleActive",
      "@type": "xsd:boolean"
    },
    "amount": {
      "@id": "duck:amount",
      "@type": "xsd:decimal"
    },
    "unit": {
      "@id": "duck:unit",
      "@type": "xsd:string"
    },
    "badgeLabel": {
      "@id": "duck:badgeLabel",
      "@type": "xsd:string"
    },
    "badgeColor": {
      "@id": "duck:badgeColor",
      "@type": "xsd:string"
    },
    "categoryExternalId": {
      "@id": "duck:categoryExternalId",
      "@type": "xsd:string"
    },
    "ingredientExternalIds": {
      "@id": "duck:ingredientExternalIds",
      "@container": "@list"
    },
    "modifierGroups": {
      "@id": "duck:modifierGroups",
      "@container": "@list"
    },
    "modifierGroupExternalId": {
      "@id": "duck:modifierGroupExternalId",
      "@container": "@list"
    },
    "menuVisible": {
      "@id": "duck:menuVisible",
      "@type": "xsd:boolean"
    },
    "SyncDto": "duck:SyncDto",
    "categories": {
      "@id": "duck:categories",
      "@container": "@list"
    },
    "ingredients": {
      "@id": "duck:ingredients",
      "@container": "@list"
    },
    "products": {
      "@id": "duck:products",
      "@container": "@list"
    },
    "SyncResultDto": "duck:SyncResultDto",
    "created": {
      "@id": "duck:created",
      "@type": "xsd:decimal"
    },
    "updated": {
      "@id": "duck:updated",
      "@type": "xsd:decimal"
    },
    "skipped": {
      "@id": "duck:skipped",
      "@type": "xsd:decimal"
    },
    "errors": {
      "@id": "duck:errors",
      "@container": "@list"
    },
    "warnings": {
      "@id": "duck:warnings",
      "@container": "@list"
    },
    "SyncResponseDto": "duck:SyncResponseDto",
    "success": {
      "@id": "duck:success",
      "@type": "xsd:boolean"
    },
    "syncedAt": {
      "@id": "duck:syncedAt",
      "@type": "xsd:string"
    },
    "dryRun": {
      "@id": "duck:dryRun",
      "@type": "xsd:boolean"
    },
    "V1RollbackPublishDto": "duck:V1RollbackPublishDto",
    "publicationId": {
      "@id": "duck:publicationId",
      "@type": "xsd:string"
    },
    "CleanupDto": "duck:CleanupDto",
    "productExternalIds": {
      "@id": "duck:productExternalIds",
      "@container": "@list"
    },
    "categoryExternalIds": {
      "@id": "duck:categoryExternalIds",
      "@container": "@list"
    },
    "force": {
      "@id": "duck:force",
      "@type": "xsd:boolean"
    },
    "CleanupResponseDto": "duck:CleanupResponseDto",
    "deactivatedProducts": {
      "@id": "duck:deactivatedProducts",
      "@type": "xsd:decimal"
    },
    "deletedCategories": {
      "@id": "duck:deletedCategories",
      "@type": "xsd:decimal"
    },
    "deletedIngredients": {
      "@id": "duck:deletedIngredients",
      "@type": "xsd:decimal"
    },
    "preview": {
      "@id": "duck:preview"
    },
    "V1BulkTranslationItemDto": "duck:V1BulkTranslationItemDto",
    "model": {
      "@id": "duck:model",
      "@type": "xsd:string"
    },
    "ref": {
      "@id": "duck:ref",
      "@type": "xsd:string"
    },
    "productRef": {
      "@id": "duck:productRef",
      "@type": "xsd:string"
    },
    "V1BulkTranslationsDto": "duck:V1BulkTranslationsDto",
    "items": {
      "@id": "duck:items",
      "@container": "@list"
    },
    "V1PatchProductDto": "duck:V1PatchProductDto",
    "categoryRef": {
      "@id": "duck:categoryRef",
      "@type": "xsd:string"
    },
    "IngestSquareImageDto": "duck:IngestSquareImageDto",
    "crop": {
      "@id": "duck:crop",
      "@type": "xsd:string"
    },
    "sourceUrl": {
      "@id": "duck:sourceUrl",
      "@type": "xsd:string"
    },
    "base64": {
      "@id": "duck:base64",
      "@type": "xsd:string"
    },
    "IngestImageDto": "duck:IngestImageDto",
    "V1ProductTranslationEntryDto": "duck:V1ProductTranslationEntryDto",
    "locale": {
      "@id": "duck:locale",
      "@type": "xsd:string"
    },
    "V1UpsertProductTranslationsDto": "duck:V1UpsertProductTranslationsDto",
    "V1CategoryTranslationEntryDto": "duck:V1CategoryTranslationEntryDto",
    "V1UpsertCategoryTranslationsDto": "duck:V1UpsertCategoryTranslationsDto",
    "V1UpsertIngredientTranslationsDto": "duck:V1UpsertIngredientTranslationsDto",
    "V1BannerTranslationEntryDto": "duck:V1BannerTranslationEntryDto",
    "title": {
      "@id": "duck:title",
      "@type": "xsd:string"
    },
    "V1UpsertBannerTranslationsDto": "duck:V1UpsertBannerTranslationsDto",
    "V1UpsertModifierGroupTranslationsDto": "duck:V1UpsertModifierGroupTranslationsDto",
    "PromotionScheduleDay": "duck:PromotionScheduleDay",
    "V1CreatePromotionDto": "duck:V1CreatePromotionDto",
    "V1UpdatePromotionDto": "duck:V1UpdatePromotionDto",
    "V1PromotionItemDto": "duck:V1PromotionItemDto",
    "V1UpdatePromotionItemDto": "duck:V1UpdatePromotionItemDto",
    "V1CreateBannerDto": "duck:V1CreateBannerDto",
    "linkedProductRef": {
      "@id": "duck:linkedProductRef",
      "@type": "xsd:string"
    },
    "clickable": {
      "@id": "duck:clickable",
      "@type": "xsd:boolean"
    },
    "V1UpdateBannerDto": "duck:V1UpdateBannerDto",
    "V1CreateStoryDto": "duck:V1CreateStoryDto",
    "expiresAt": {
      "@id": "duck:expiresAt",
      "@type": "xsd:string"
    },
    "V1UpdateStoryDto": "duck:V1UpdateStoryDto",
    "V1CreateTableDto": "duck:V1CreateTableDto",
    "V1UpdateTableDto": "duck:V1UpdateTableDto",
    "positionX": {
      "@id": "duck:positionX",
      "@type": "xsd:decimal"
    },
    "positionY": {
      "@id": "duck:positionY",
      "@type": "xsd:decimal"
    },
    "capacity": {
      "@id": "duck:capacity",
      "@type": "xsd:decimal"
    },
    "V1ModifierGroupOptionInputDto": "duck:V1ModifierGroupOptionInputDto",
    "ingredientRef": {
      "@id": "duck:ingredientRef",
      "@type": "xsd:string"
    },
    "V1CreateModifierGroupDto": "duck:V1CreateModifierGroupDto",
    "V1UpdateModifierGroupDto": "duck:V1UpdateModifierGroupDto",
    "IntegrationUpdateOrderStatusDto": "duck:IntegrationUpdateOrderStatusDto",
    "status": {
      "@id": "duck:status",
      "@type": "xsd:string"
    },
    "ErrorEnvelope": "duck:ErrorEnvelope",
    "statusCode": {
      "@id": "duck:statusCode",
      "@type": "xsd:decimal"
    },
    "message": {
      "@id": "duck:message",
      "@type": "xsd:string"
    },
    "code": {
      "@id": "duck:code",
      "@type": "xsd:string"
    },
    "details": {
      "@id": "duck:details"
    },
    "requestId": {
      "@id": "duck:requestId",
      "@type": "xsd:string"
    },
    "timestamp": {
      "@id": "duck:timestamp",
      "@type": "xsd:string"
    },
    "path": {
      "@id": "duck:path",
      "@type": "xsd:string"
    }
  },
  "@type": "schema:Dataset",
  "schema:name": "Duckhub API JSON-LD context",
  "schema:description": "A JSON-LD @context for the objects Duckhub's own API contract declares: one class per component schema, one property per declared field, typed from the contract. Derived by script (derive-json-ld.py, 2026-11-06) from openapi/duck-hub-com-openapi.json.",
  "dcterms:created": "2026-11-06",
  "dcterms:source": [
    "openapi/duck-hub-com-openapi.json"
  ]
}