رفتن به محتوا

قالب پروندهٔ پروژه (`.darz.json`)

تولیدشده از packages/core/src/schema/v4.ts با node scripts/darz-format.mjs — دست نزن؛ اسکیما را عوض کن و دوباره بساز.

نسخهٔ فعلی: 4. loadProject هر نسخه را با اسکیمای همان نسخه می‌سنجد، مهاجرت می‌دهد، و با اسکیمای آخر دوباره چک می‌کند. پروندهٔ خراب با خطای فارسی و مسیر فیلد رد می‌شود (io/invalid). نسخهٔ ۱ همیشه خوانده می‌شود و هرگز نوشته نمی‌شود. واحد همهٔ اندازه‌ها میلی‌متر است.

مسیر نوع لازم توضیح
version 4 بله
meta شیء بله
meta.id string بله شناسهٔ یکتا
meta.name string بله نام پروژه — روی جلد گزارش می‌رود
meta.createdAt string بله
meta.updatedAt string بله
meta.notes string نه
meta.tags [string] نه
meta.migratedFrom integer نه
settings شیء بله
settings.sheetSizeIds [string] بله ابعاد ورقی که برشکار دارد — دست‌کم یکی
settings.kerf number بله ضخامت تیغه
settings.trimAllowance number بله لبه‌گیری ورق خام
settings.cuttingMethod panelSaw · cncNesting بله
settings.hasMiterCapability boolean بله برشکار فارسی‌بر می‌زند؟
settings.currency IRR · IRT بله
settings.displayUnit mm · cm بله واحد نمایش؛ مدل همیشه میلی‌متر است
settings.nestingQuality draft · normal · best بله
settings.cncToolDia number بله قطر فرز نستینگ CNC
settings.maxCutStages integer نه سقفِ مرحله‌های برشِ اره؛ نبودنش یعنی پیش‌فرضِ کاتالوگ
settings.mutedRules [شیء] نه قاعده‌های بی‌صداشده با دلیل؛ بی unitId یعنی مسئلهٔ پروژه‌ای همان قاعده
settings.mutedRules[].ruleId string بله
settings.mutedRules[].unitId string نه شناسهٔ یکتا
settings.mutedRules[].reason string بله
catalogOverrides شیء نه
catalogOverrides.sheetSizes [شیء] نه
catalogOverrides.sheetSizes[].id string بله شناسهٔ یکتا
catalogOverrides.sheetSizes[].label string بله
catalogOverrides.sheetSizes[].length number بله
catalogOverrides.sheetSizes[].width number بله
catalogOverrides.materials [شیء] نه
catalogOverrides.materials[].id string بله شناسهٔ یکتا
catalogOverrides.materials[].name string بله
catalogOverrides.materials[].kind melamineMdf · rawMdf · hiGloss · membrane · chipboard · plywood · backer بله
catalogOverrides.materials[].thickness number بله
catalogOverrides.materials[].hasGrain boolean بله
catalogOverrides.materials[].grainAlongSheetLength boolean بله
catalogOverrides.materials[].color string بله
catalogOverrides.materials[].finish matte · satin · gloss بله
catalogOverrides.materials[].sheetSizeIds [string] بله
catalogOverrides.materials[].pricePerSheet number یا null بله
catalogOverrides.edgeBands [شیء] نه
catalogOverrides.edgeBands[].id string بله شناسهٔ یکتا
catalogOverrides.edgeBands[].name string بله
catalogOverrides.edgeBands[].thickness number بله
catalogOverrides.edgeBands[].color string بله
catalogOverrides.edgeBands[].pricePerMeter number یا null بله
catalogOverrides.countertops [شیء] نه
catalogOverrides.countertops[].id string بله شناسهٔ یکتا
catalogOverrides.countertops[].name string بله
catalogOverrides.countertops[].kind postformed · quartz · granite · corian · wood بله
catalogOverrides.countertops[].thickness number بله
catalogOverrides.countertops[].color string بله
catalogOverrides.countertops[].priceUnit perMeter · perSqm بله
catalogOverrides.countertops[].pricePer number یا null بله
catalogOverrides.countertops[].stockLengths [number] بله
catalogOverrides.glass [شیء] نه
catalogOverrides.glass[].id string بله شناسهٔ یکتا
catalogOverrides.glass[].name string بله
catalogOverrides.glass[].thickness number بله
catalogOverrides.glass[].price number یا null بله
catalogOverrides.hardware شیء نه
catalogOverrides.hardware.hinges [شیء] نه
catalogOverrides.hardware.hinges[].id string بله شناسهٔ یکتا
catalogOverrides.hardware.hinges[].name string بله
catalogOverrides.hardware.hinges[].price number یا null بله
catalogOverrides.hardware.hinges[].overlay full · half · inset بله
catalogOverrides.hardware.hinges[].openAngle number بله
catalogOverrides.hardware.hinges[].cupDia number بله
catalogOverrides.hardware.hinges[].cupDepth number بله
catalogOverrides.hardware.hinges[].cupSetback number بله
catalogOverrides.hardware.hinges[].softClose boolean بله
catalogOverrides.hardware.hingeCountByDoorHeight [شیء] نه
catalogOverrides.hardware.hingeCountByDoorHeight[].upTo number بله
catalogOverrides.hardware.hingeCountByDoorHeight[].count integer بله
catalogOverrides.hardware.slides [شیء] نه
catalogOverrides.hardware.slides[].id string بله شناسهٔ یکتا
catalogOverrides.hardware.slides[].name string بله
catalogOverrides.hardware.slides[].price number یا null بله
catalogOverrides.hardware.slides[].type ballBearing · undermount · tandemBox بله
catalogOverrides.hardware.slides[].length number بله
catalogOverrides.hardware.slides[].sideClearance number بله
catalogOverrides.hardware.slides[].boxWidthReduction number نه
catalogOverrides.hardware.slides[].bottomLengthReduction number نه
catalogOverrides.hardware.slides[].backHeight number نه
catalogOverrides.hardware.slides[].extension number بله
catalogOverrides.hardware.slides[].softClose boolean بله
catalogOverrides.hardware.legs [شیء] نه
catalogOverrides.hardware.legs[].id string بله شناسهٔ یکتا
catalogOverrides.hardware.legs[].name string بله
catalogOverrides.hardware.legs[].price number یا null بله
catalogOverrides.hardware.legs[].height number بله
catalogOverrides.hardware.legs[].adjustRange number بله
catalogOverrides.hardware.legCountByWidth [شیء] نه
catalogOverrides.hardware.legCountByWidth[].upTo number بله
catalogOverrides.hardware.legCountByWidth[].count integer بله
catalogOverrides.hardware.handles [شیء] نه
catalogOverrides.hardware.handles[].id string بله شناسهٔ یکتا
catalogOverrides.hardware.handles[].name string بله
catalogOverrides.hardware.handles[].price number یا null بله
catalogOverrides.hardware.handles[].holeSpacing number یا null بله
catalogOverrides.hardware.handles[].projection number بله
catalogOverrides.hardware.profiles [شیء] نه
catalogOverrides.hardware.profiles[].id string بله شناسهٔ یکتا
catalogOverrides.hardware.profiles[].name string بله
catalogOverrides.hardware.profiles[].price number یا null بله
catalogOverrides.hardware.profiles[].shape L · C بله
catalogOverrides.hardware.profiles[].heightLoss number بله
catalogOverrides.hardware.profiles[].notchHeight number بله
catalogOverrides.hardware.profiles[].notchDepth number بله
catalogOverrides.hardware.glassFrames [شیء] نه
catalogOverrides.hardware.glassFrames[].id string بله شناسهٔ یکتا
catalogOverrides.hardware.glassFrames[].name string بله
catalogOverrides.hardware.glassFrames[].price number یا null بله
catalogOverrides.hardware.glassFrames[].faceWidth number بله
catalogOverrides.hardware.glassFrames[].rebate number بله
catalogOverrides.hardware.glassFrames[].glassThicknesses [number] بله
catalogOverrides.hardware.slidingTracks [شیء] نه
catalogOverrides.hardware.slidingTracks[].id string بله شناسهٔ یکتا
catalogOverrides.hardware.slidingTracks[].name string بله
catalogOverrides.hardware.slidingTracks[].price number یا null بله
catalogOverrides.hardware.slidingTracks[].topLoss number بله
catalogOverrides.hardware.slidingTracks[].bottomLoss number بله
catalogOverrides.hardware.slidingTracks[].overlap number بله
catalogOverrides.hardware.lifts [شیء] نه
catalogOverrides.hardware.lifts[].id string بله شناسهٔ یکتا
catalogOverrides.hardware.lifts[].name string بله
catalogOverrides.hardware.lifts[].price number یا null بله
catalogOverrides.hardware.lifts[].kind gasStrut · stay · parallel · upAndOver · biFold بله
catalogOverrides.hardware.lifts[].minWeight number یا null بله
catalogOverrides.hardware.lifts[].maxWeight number یا null بله
catalogOverrides.hardware.lifts[].openAngle number بله
catalogOverrides.hardware.fasteners [شیء] نه
catalogOverrides.hardware.fasteners[].id string بله شناسهٔ یکتا
catalogOverrides.hardware.fasteners[].name string بله
catalogOverrides.hardware.fasteners[].price number یا null بله
catalogOverrides.hardware.fittings [شیء] نه
catalogOverrides.hardware.fittings[].id string بله شناسهٔ یکتا
catalogOverrides.hardware.fittings[].name string بله
catalogOverrides.hardware.fittings[].price number یا null بله
catalogOverrides.hardware.fittings[].kind pulloutBasket · cornerAccessory · toeKickStrip · hangingRail · ledStrip · pushLatch بله
catalogOverrides.hardware.fittings[].width number یا null بله
catalogOverrides.hardware.fittings[].height number یا null بله
catalogOverrides.hardware.system32 شیء نه
catalogOverrides.hardware.system32.pitch number نه
catalogOverrides.hardware.system32.holeDia number نه
catalogOverrides.hardware.system32.holeDepth number نه
catalogOverrides.hardware.system32.frontSetback number نه
catalogOverrides.hardware.system32.rearSetback number نه
catalogOverrides.defaults شیء نه
catalogOverrides.defaults.density شیء نه
catalogOverrides.defaults.density.melamineMdf number نه
catalogOverrides.defaults.density.rawMdf number نه
catalogOverrides.defaults.density.hiGloss number نه
catalogOverrides.defaults.density.membrane number نه
catalogOverrides.defaults.density.chipboard number نه
catalogOverrides.defaults.density.plywood number نه
catalogOverrides.defaults.density.backer number نه
catalogOverrides.defaults.cutting شیء نه
catalogOverrides.defaults.cutting.kerf number نه
catalogOverrides.defaults.cutting.trimAllowance number نه
catalogOverrides.defaults.cutting.method panelSaw · cncNesting نه
catalogOverrides.defaults.cutting.cncToolDia number نه
catalogOverrides.defaults.cutting.maxCutStages integer نه
catalogOverrides.defaults.cutting.minUsefulOffcut شیء نه
catalogOverrides.defaults.cutting.minUsefulOffcut.length number نه
catalogOverrides.defaults.cutting.minUsefulOffcut.width number نه
catalogOverrides.defaults.dimensions شیء نه
catalogOverrides.defaults.dimensions.base شیء نه
catalogOverrides.defaults.dimensions.base.height number نه
catalogOverrides.defaults.dimensions.base.depth number نه
catalogOverrides.defaults.dimensions.base.legHeight number نه
catalogOverrides.defaults.dimensions.base.counterThickness number نه
catalogOverrides.defaults.dimensions.base.counterDepth number نه
catalogOverrides.defaults.dimensions.base.counterOverhangEnds number نه
catalogOverrides.defaults.dimensions.base.toeKickSetback number نه
catalogOverrides.defaults.dimensions.wall شیء نه
catalogOverrides.defaults.dimensions.wall.height number نه
catalogOverrides.defaults.dimensions.wall.depth number نه
catalogOverrides.defaults.dimensions.wall.heightAboveCounter number نه
catalogOverrides.defaults.dimensions.tall شیء نه
catalogOverrides.defaults.dimensions.tall.height number نه
catalogOverrides.defaults.dimensions.tall.depth number نه
catalogOverrides.defaults.dimensions.reveal number نه
catalogOverrides.defaults.dimensions.edgeReveal number نه
catalogOverrides.defaults.dimensions.shelfSetback number نه
catalogOverrides.defaults.dimensions.shelfSideClearance number نه
catalogOverrides.defaults.dimensions.railWidth number نه
catalogOverrides.defaults.dimensions.drawerBoxHeightReduction number نه
catalogOverrides.defaults.dimensions.drawerBoxMinHeight number نه
catalogOverrides.defaults.dimensions.corniceHeight number نه
catalogOverrides.defaults.dimensions.valanceHeight number نه
catalogOverrides.defaults.dimensions.endPanelOverhang number نه
catalogOverrides.defaults.dimensions.backInset number نه
catalogOverrides.defaults.dimensions.backGrooveDepth number نه
catalogOverrides.defaults.dimensions.frame شیء نه
catalogOverrides.defaults.dimensions.frame.width number نه
catalogOverrides.defaults.dimensions.frame.groove number نه
catalogOverrides.defaults.dimensions.frame.panelPlay number نه
catalogOverrides.defaults.dimensions.frame.minPanel number نه
catalogOverrides.defaults.dimensions.pulloutHeight number نه
catalogOverrides.defaults.dimensions.drawerBoxDrop number نه
catalogOverrides.defaults.dimensions.swapMinWidth number نه
catalogOverrides.defaults.dimensions.cutout شیء نه
catalogOverrides.defaults.dimensions.cutout.minSideClearance number نه
catalogOverrides.defaults.dimensions.cutout.minEdgeMargin number نه
catalogOverrides.defaults.dimensions.cutout.minHoleMargin number نه
catalogOverrides.defaults.dimensions.cutout.frontSetback number نه
catalogOverrides.defaults.dimensions.cutout.cornerRadius number نه
catalogOverrides.defaults.dimensions.cutout.tapSetback number نه
catalogOverrides.defaults.machining شیء نه
catalogOverrides.defaults.machining.plateSetback number نه
catalogOverrides.defaults.machining.slideFront number نه
catalogOverrides.defaults.machining.slideRear number نه
catalogOverrides.defaults.machining.slideLift number نه
catalogOverrides.defaults.machining.handleEdge number نه
catalogOverrides.defaults.machining.handleEnd number نه
catalogOverrides.defaults.machining.handleHoleDia number نه
catalogOverrides.defaults.machining.handleMinEnd number نه
catalogOverrides.defaults.machining.hingeEnd number نه
catalogOverrides.defaults.machining.jPull شیء نه
catalogOverrides.defaults.machining.jPull.width number نه
catalogOverrides.defaults.machining.jPull.depth number نه
catalogOverrides.defaults.machining.jPull.minThickness number نه
catalogOverrides.defaults.machining.fingerGroove شیء نه
catalogOverrides.defaults.machining.fingerGroove.width number نه
catalogOverrides.defaults.machining.fingerGroove.depth number نه
catalogOverrides.defaults.machining.fingerGroove.inset number نه
catalogOverrides.defaults.machining.fingerGroove.minThickness number نه
catalogOverrides.defaults.hardwareCounts شیء نه
catalogOverrides.defaults.hardwareCounts.shelfPinsPerShelf integer نه
catalogOverrides.defaults.hardwareCounts.screwsPerHinge integer نه
catalogOverrides.defaults.hardwareCounts.screwsPerSlidePair integer نه
catalogOverrides.defaults.hardwareCounts.nailPitch number نه
catalogOverrides.defaults.hardwareCounts.fastenerWastePercent number نه
catalogOverrides.defaults.hardwareCounts.edgeBandWastePercent number نه
catalogOverrides.defaults.ids شیء نه
catalogOverrides.defaults.ids.hinge string نه شناسهٔ یکتا
catalogOverrides.defaults.ids.slide string نه شناسهٔ یکتا
catalogOverrides.defaults.ids.lift string نه شناسهٔ یکتا
catalogOverrides.defaults.ids.leg string نه شناسهٔ یکتا
catalogOverrides.defaults.ids.handle string نه شناسهٔ یکتا
catalogOverrides.defaults.ids.railHandle string نه شناسهٔ یکتا
catalogOverrides.defaults.ids.pushLatch string نه شناسهٔ یکتا
catalogOverrides.defaults.ids.channelEdge string نه شناسهٔ یکتا
catalogOverrides.defaults.ids.channelMid string نه شناسهٔ یکتا
catalogOverrides.defaults.ids.tandemBoxSlide string نه شناسهٔ یکتا
catalogOverrides.defaults.ids.glassFrame string نه شناسهٔ یکتا
catalogOverrides.defaults.ids.glass string نه شناسهٔ یکتا
catalogOverrides.defaults.ids.slidingTrack string نه شناسهٔ یکتا
catalogOverrides.defaults.ids.countertop string نه شناسهٔ یکتا
catalogOverrides.defaults.ids.shelfPin string نه شناسهٔ یکتا
catalogOverrides.defaults.ids.hingeScrew string نه شناسهٔ یکتا
catalogOverrides.defaults.ids.slideScrew string نه شناسهٔ یکتا
catalogOverrides.defaults.ids.backNail string نه شناسهٔ یکتا
catalogOverrides.defaults.rules شیء نه
catalogOverrides.defaults.rules.ductOffsetMax number نه
catalogOverrides.defaults.rules.hoodHeight شیء نه
catalogOverrides.defaults.rules.hoodHeight.min number نه
catalogOverrides.defaults.rules.hoodHeight.max number نه
catalogOverrides.defaults.rules.wallCabinetReach شیء نه
catalogOverrides.defaults.rules.wallCabinetReach.min number نه
catalogOverrides.defaults.rules.wallCabinetReach.max number نه
catalogOverrides.defaults.rules.workSurfaceNearHob number نه
catalogOverrides.defaults.rules.sinkHobGapMin number نه
catalogOverrides.defaults.rules.waterReach number نه
catalogOverrides.defaults.rules.fillerMin number نه
catalogOverrides.defaults.rules.narrowUnitInside number نه
catalogOverrides.defaults.rules.lowUtilization number نه
catalogOverrides.defaults.rules.counterHeight شیء نه
catalogOverrides.defaults.rules.counterHeight.min number نه
catalogOverrides.defaults.rules.counterHeight.max number نه
catalogOverrides.defaults.rules.counterHeight.target number نه
catalogOverrides.defaults.rules.blindNeedsBasket number نه
catalogOverrides.defaults.rules.blindAccessMin number نه
catalogOverrides.defaults.rules.blindWidthReduction number نه
catalogOverrides.defaults.rules.doorWidthMax number نه
catalogOverrides.defaults.rules.drawerWidthMax number نه
catalogOverrides.defaults.rules.heavyDoor شیء نه
catalogOverrides.defaults.rules.heavyDoor.height number نه
catalogOverrides.defaults.rules.heavyDoor.width number نه
catalogOverrides.defaults.rules.hobClearanceDefault number نه
catalogOverrides.defaults.rules.lastSheetBelow number نه
catalogOverrides.defaults.rules.cornerHingeAngleMin number نه
catalogOverrides.defaults.rules.frontNeighbourGap number نه
catalogOverrides.defaults.joinery شیء نه
catalogOverrides.defaults.joinery.edgeMargin number نه
catalogOverrides.defaults.joinery.spacing number نه
catalogOverrides.defaults.joinery.minPerJoint integer نه
catalogOverrides.defaults.joinery.confirmat شیء نه
catalogOverrides.defaults.joinery.confirmat.hardwareId string نه شناسهٔ یکتا
catalogOverrides.defaults.joinery.confirmat.throughDia number نه
catalogOverrides.defaults.joinery.confirmat.pilotDia number نه
catalogOverrides.defaults.joinery.confirmat.pilotDepth number نه
catalogOverrides.defaults.joinery.minifix شیء نه
catalogOverrides.defaults.joinery.minifix.hardwareId string نه شناسهٔ یکتا
catalogOverrides.defaults.joinery.minifix.camDia number نه
catalogOverrides.defaults.joinery.minifix.camDepth number نه
catalogOverrides.defaults.joinery.minifix.camSetback number نه
catalogOverrides.defaults.joinery.minifix.boltPilotDia number نه
catalogOverrides.defaults.joinery.minifix.boltPilotDepth number نه
catalogOverrides.defaults.joinery.minifix.boltHoleDia number نه
catalogOverrides.defaults.joinery.dowel شیء نه
catalogOverrides.defaults.joinery.dowel.hardwareId string نه شناسهٔ یکتا
catalogOverrides.defaults.joinery.dowel.dia number نه
catalogOverrides.defaults.joinery.dowel.faceDepth number نه
catalogOverrides.defaults.joinery.dowel.edgeDepth number نه
catalogOverrides.defaults.joinery.pocketScrew شیء نه
catalogOverrides.defaults.joinery.pocketScrew.hardwareId string نه شناسهٔ یکتا
catalogOverrides.defaults.joinery.pocketScrew.inset number نه
catalogOverrides.defaults.standardWidths [number] نه
catalogOverrides.defaults.appliances شیء نه
catalogOverrides.defaults.shelfSpanLimits شیء نه
priceBookRef شیء نه
priceBookRef.id string بله شناسهٔ یکتا
priceBookRef.vendor string نه
priceBookRef.city string نه
priceBookRef.capturedAt string بله
prices شیء نه
prices.currency IRR · IRT بله واحدِ عددهای همین دفتر؛ نمایش به واحدِ پروژه تبدیل می‌کند
prices.sheets شیء بله قیمت هر ورق با کلیدِ جنس@ابعاد؛ کلیدِ تنهای جنس = ابعادِ نخستِ جنس
prices.edgeBands شیء بله قیمت هر متر نوار
prices.hardware شیء بله قیمت هر واحد یراق
prices.countertops شیء نه قیمت هر متر یا متر مربع صفحه
prices.services شیء بله
prices.services.perCut number نه
prices.services.perSheet number نه
prices.services.edgeBandPerMeter number نه
prices.services.miterPerMeter number نه
prices.services.gripRoutingPerMeter number نه
prices.services.countertopInstallPerMeter number نه
prices.updatedAt string نه
prices.capturedAt string نه تاریخِ برداشتِ مرجع؛ با ضریبِ دلار عوض نمی‌شود
rooms [شیء] بله
rooms[].id string بله شناسهٔ یکتا
rooms[].name string بله
rooms[].ceilingHeight number بله
rooms[].finishes شیء بله
rooms[].finishes.wallColor string بله
rooms[].finishes.floor شیء بله
rooms[].finishes.floor.kind wood · tile · stone · concrete بله
rooms[].finishes.floor.color string بله
rooms[].finishes.backsplash شیء نه
rooms[].finishes.backsplash.height number بله
rooms[].finishes.backsplash.tile string بله
rooms[].finishes.soffit شیء نه
rooms[].finishes.soffit.height number بله
rooms[].walls [شیء] بله
rooms[].walls[].id string بله شناسهٔ یکتا
rooms[].walls[].name string بله
rooms[].walls[].length number بله طول دیوار، از گوشه تا گوشه
rooms[].walls[].height number بله
rooms[].walls[].photo شیء نه
rooms[].walls[].photo.width integer بله
rooms[].walls[].photo.height integer بله
rooms[].walls[].photo.corners […] نه چهار گوشهٔ مرجع در پیکسل عکس
rooms[].walls[].photo.reference شیء نه همان مستطیل در مختصات دیوار
rooms[].walls[].photo.reference.x number بله
rooms[].walls[].photo.reference.y number بله
rooms[].walls[].photo.reference.w number بله
rooms[].walls[].photo.reference.h number بله
rooms[].walls[].photo.opacity number بله
rooms[].walls[].photo.assetId string بله شناسهٔ تصویر در assets/ ِ پرونده یا جدولِ assets ِ مرورگر
rooms[].walls[].openings [شیء] بله پنجره و در — بازه‌ای که کابینت نباید ببندد
rooms[].walls[].openings[].id string بله شناسهٔ یکتا
rooms[].walls[].openings[].kind window · door بله
rooms[].walls[].openings[].x number بله
rooms[].walls[].openings[].y number بله
rooms[].walls[].openings[].w number بله
rooms[].walls[].openings[].h number بله
rooms[].walls[].obstacles [شیء] بله
rooms[].walls[].obstacles[].id string بله شناسهٔ یکتا
rooms[].walls[].obstacles[].kind outlet · switch · gasPipe · gasValve · waterPipe · drain · ductVent · window · column · other بله
rooms[].walls[].obstacles[].label string بله
rooms[].walls[].obstacles[].x number بله از لبهٔ چپ دیوار
rooms[].walls[].obstacles[].y number بله از کف
rooms[].walls[].obstacles[].w number بله
rooms[].walls[].obstacles[].h number بله
rooms[].walls[].obstacles[].depth number بله چقدر از دیوار بیرون زده
rooms[].walls[].obstacles[].mustStayAccessible boolean بله
rooms[].walls[].runs [شیء] بله
rooms[].walls[].runs[].id string بله شناسهٔ یکتا
rooms[].walls[].runs[].kind base · wall · tall بله
rooms[].walls[].runs[].startX number بله از لبهٔ چپ دیوار
rooms[].walls[].runs[].baseHeight number بله ارتفاع کف این ردیف از زمین
rooms[].walls[].runs[].units [شیء] بله
rooms[].walls[].runs[].units[].id string بله شناسهٔ یکتا
rooms[].walls[].runs[].units[].number integer بله شمارهٔ چاپی؛ صفر یعنی بی‌شماره
rooms[].walls[].runs[].units[].kind base · wall · tall · baseCorner · wallCorner · filler · applianceGap بله
rooms[].walls[].runs[].units[].label string نه نامی که کاربر داده
rooms[].walls[].runs[].units[].width number بله عرض بیرونی بدنه
rooms[].walls[].runs[].units[].height number بله ارتفاع بیرونی بدنه، بدون پایه و صفحه
rooms[].walls[].runs[].units[].depth number بله عمق بدنه
rooms[].walls[].runs[].units[].construction شیء بله
rooms[].walls[].runs[].units[].construction.boxStyle sidesFull · topBottomFull بله بدنه تمام‌قد، یا کف و سقف تمام‌عرض
rooms[].walls[].runs[].units[].construction.hasBottom boolean بله
rooms[].walls[].runs[].units[].construction.topStyle fullPanel · rails · none بله
rooms[].walls[].runs[].units[].construction.railWidth number بله
rooms[].walls[].runs[].units[].construction.back شیء بله
rooms[].walls[].runs[].units[].construction.back.style grooved · nailed · none بله
rooms[].walls[].runs[].units[].construction.back.insetFromRear number بله
rooms[].walls[].runs[].units[].construction.back.grooveDepth number بله
rooms[].walls[].runs[].units[].construction.joinery confirmat · minifix · dowel · pocketScrew بله
rooms[].walls[].runs[].units[].construction.toeKick شیء یا null بله
rooms[].walls[].runs[].units[].construction.miter شیء بله
rooms[].walls[].runs[].units[].construction.miter.leftSide boolean بله
rooms[].walls[].runs[].units[].construction.miter.rightSide boolean بله
rooms[].walls[].runs[].units[].construction.miter.top boolean بله
rooms[].walls[].runs[].units[].front شیء بله
rooms[].walls[].runs[].units[].front.frame شیء نه قاب درب کلاسیک
rooms[].walls[].runs[].units[].front.frame.width number بله
rooms[].walls[].runs[].units[].front.frame.groove number بله
rooms[].walls[].runs[].units[].front.overlay full · half · inset بله
rooms[].walls[].runs[].units[].front.reveal number بله درز بین دو نمای مجاور
rooms[].walls[].runs[].units[].front.edgeReveal number بله درز در لبهٔ بیرونی یونیت
rooms[].walls[].runs[].units[].front.style hiGloss · membrane · melamine · classic · none بله
rooms[].walls[].runs[].units[].front.opening هر چیزی بله چطور نما باز می‌شود: دستگیره، فشاری، دستگیرهٔ مخفی، یا هیچ
rooms[].walls[].runs[].units[].front.glass شیء نه
rooms[].walls[].runs[].units[].front.glass.frameId string بله شناسهٔ یکتا
rooms[].walls[].runs[].units[].front.glass.glassId string بله شناسهٔ یکتا
rooms[].walls[].runs[].units[].front.sliding شیء نه
rooms[].walls[].runs[].units[].front.sliding.trackId string بله شناسهٔ یکتا
rooms[].walls[].runs[].units[].front.rows [شیء] بله ردیف‌ها از بالا به پایین
rooms[].walls[].runs[].units[].front.rows[].height number یا "fill" بله
rooms[].walls[].runs[].units[].front.rows[].cells [شیء] بله
rooms[].walls[].runs[].units[].front.rows[].cells[].kind door · drawer · falseFront · open · appliancePanel · glassDoor · sliding بله
rooms[].walls[].runs[].units[].front.rows[].cells[].width number یا "fill" بله عرض ثابت، یا «fill» برای تقسیم باقی‌مانده
rooms[].walls[].runs[].units[].front.rows[].cells[].hinge left · right · top · bottom نه
rooms[].walls[].runs[].units[].front.rows[].cells[].drawer شیء نه
rooms[].walls[].runs[].units[].front.rows[].cells[].drawer.boxHeight number نه
rooms[].walls[].runs[].units[].front.rows[].cells[].drawer.slideId string نه شناسهٔ یکتا
rooms[].walls[].runs[].units[].front.rows[].cells[].drawer.shallow boolean نه
rooms[].walls[].runs[].units[].front.rows[].cells[].handle شیء نه
rooms[].walls[].runs[].units[].front.rows[].cells[].handle.position top · center · bottom · edge بله
rooms[].walls[].runs[].units[].front.rows[].cells[].handle.spacing number نه
rooms[].walls[].runs[].units[].front.rows[].cells[].label string نه
rooms[].walls[].runs[].units[].interior شیء بله
rooms[].walls[].runs[].units[].interior.shelves [شیء] بله
rooms[].walls[].runs[].units[].interior.shelves[].y number بله
rooms[].walls[].runs[].units[].interior.shelves[].adjustable boolean بله
rooms[].walls[].runs[].units[].interior.shelves[].setback number بله
rooms[].walls[].runs[].units[].interior.shelves[].materialId string نه شناسهٔ یکتا
rooms[].walls[].runs[].units[].interior.dividers [شیء] بله
rooms[].walls[].runs[].units[].interior.dividers[].x number بله
rooms[].walls[].runs[].units[].interior.dividers[].materialId string نه شناسهٔ یکتا
rooms[].walls[].runs[].units[].interior.pullouts [شیء] نه بیرون‌کش‌های پشت درب: سبد، کشوی داخلی، تاندم‌باکس
rooms[].walls[].runs[].units[].interior.pullouts[].kind basket · innerDrawer · tandemBox بله
rooms[].walls[].runs[].units[].interior.pullouts[].y number بله
rooms[].walls[].runs[].units[].interior.pullouts[].height number نه
rooms[].walls[].runs[].units[].interior.pullouts[].slideId string نه شناسهٔ یکتا
rooms[].walls[].runs[].units[].materials شیء بله
rooms[].walls[].runs[].units[].materials.carcass string بله شناسهٔ یکتا
rooms[].walls[].runs[].units[].materials.front string نه شناسهٔ یکتا
rooms[].walls[].runs[].units[].materials.back string نه شناسهٔ یکتا
rooms[].walls[].runs[].units[].materials.shelf string نه شناسهٔ یکتا
rooms[].walls[].runs[].units[].materials.drawerBox string نه شناسهٔ یکتا
rooms[].walls[].runs[].units[].materials.drawerBottom string نه شناسهٔ یکتا
rooms[].walls[].runs[].units[].materials.doorPanel string نه شناسهٔ یکتا
rooms[].walls[].runs[].units[].edging شیء بله
rooms[].walls[].runs[].units[].edging.carcassFront شیء یا null بله
rooms[].walls[].runs[].units[].edging.shelfFront شیء یا null نه
rooms[].walls[].runs[].units[].edging.frontPanels شیء یا null بله
rooms[].walls[].runs[].units[].edging.exposedSide شیء یا null نه
rooms[].walls[].runs[].units[].hardware شیء بله
rooms[].walls[].runs[].units[].hardware.hingeId string نه شناسهٔ یکتا
rooms[].walls[].runs[].units[].hardware.slideId string نه شناسهٔ یکتا
rooms[].walls[].runs[].units[].hardware.legId string نه شناسهٔ یکتا
rooms[].walls[].runs[].units[].hardware.liftId string نه شناسهٔ یکتا
rooms[].walls[].runs[].units[].cutouts [شیء] نه
rooms[].walls[].runs[].units[].cutouts[].kind sink · hob · socket · ductPass · pipePass · other بله
rooms[].walls[].runs[].units[].cutouts[].label string بله
rooms[].walls[].runs[].units[].cutouts[].onCountertop boolean بله
rooms[].walls[].runs[].units[].cutouts[].width number نه
rooms[].walls[].runs[].units[].cutouts[].depth number نه
rooms[].walls[].runs[].units[].cutouts[].x number نه
rooms[].walls[].runs[].units[].cutouts[].y number نه
rooms[].walls[].runs[].units[].appliance شیء نه دستگاهِ داخل یونیت — خریدنی، بریده نمی‌شود
rooms[].walls[].runs[].units[].appliance.kind oven · fridge · microwave · dishwasher بله
rooms[].walls[].runs[].units[].appliance.specId string نه شناسهٔ یکتا
rooms[].walls[].runs[].units[].corner شیء نه کنج ال یا کور
rooms[].walls[].runs[].units[].corner.style L · blind بله
rooms[].walls[].runs[].units[].corner.side left · right بله
rooms[].walls[].runs[].units[].corner.legB number نه
rooms[].walls[].runs[].units[].corner.blindWidth number نه
rooms[].walls[].runs[].units[].corner.accessory none · carousel · magicCorner · basket بله
rooms[].walls[].runs[].units[].locked boolean نه
rooms[].walls[].runs[].units[].notes string نه
rooms[].walls[].runs[].units[].presetId string نه پیش‌تنظیمِ سازنده (نسخهٔ ۳)
rooms[].walls[].countertop شیء نه
rooms[].walls[].countertop.materialId string بله شناسهٔ یکتا
rooms[].walls[].countertop.thickness number بله
rooms[].walls[].countertop.overhangFront number بله
rooms[].walls[].countertop.overhangEnds number بله
rooms[].walls[].countertop.backsplash number نه
rooms[].walls[].countertop.seams [number] بله جای درزها در مختصات دیوار (از لبهٔ چپ دیوار)
rooms[].walls[].countertop.cornerJoint miter · butt نه درز گوشه در ال‌شکل
rooms[].walls[].accessories [شیء] بله
rooms[].walls[].accessories[].id string بله شناسهٔ یکتا
rooms[].walls[].accessories[].kind cornice · valance · endPanel · fillerToCeiling · ledStrip بله
rooms[].walls[].accessories[].run base · wall · tall نه روی کدام ردیف
rooms[].walls[].accessories[].side left · right نه
rooms[].walls[].accessories[].height number نه
rooms[].walls[].origin شیء بله جای دیوار در پلان اتاق
rooms[].walls[].origin.x number بله
rooms[].walls[].origin.z number بله
rooms[].walls[].rotation number بله چرخش حول محور قائم، درجه؛ صفر یعنی رو به بیننده
rooms[].walls[].kind wall · island نه
views [شیء] نه نماهای ذخیره‌شدهٔ سه‌بعدی
views[].id string بله شناسهٔ یکتا
views[].name string بله
views[].pos […] بله
views[].target […] بله
renders [شیء] نه رندرهای ذخیره‌شده؛ تصویرشان بیرون از سند
renders[].id string بله شناسهٔ یکتا
renders[].name string بله
renders[].at string بله
renders[].kind perspective · elevation · current بله
renders[].width integer بله
renders[].cover boolean نه
renders[].assetId string بله شناسهٔ تصویر در assets/ ِ پرونده یا جدولِ assets ِ مرورگر
workshop شیء نه پیشرفت کارگاه: تحویل و مونتاژ
workshop.counted شیء بله
workshop.pieces شیء بله
workshop.steps شیء بله
workshop.updatedAt string بله
variants [شیء] نه گونه‌ها: تفاوت هر انتخاب با پروژه
variants[].id string بله شناسهٔ یکتا
variants[].name string بله
variants[].patch [شیء] بله
variants[].patch[].op add · replace · remove بله
variants[].patch[].path string بله
variants[].patch[].value هر چیزی نه
variants[].createdAt string بله
stock [شیء] بله انبار دورریز
stock[].id string بله شناسهٔ یکتا
stock[].materialId string بله شناسهٔ یکتا
stock[].length number بله
stock[].width number بله
stock[].source string بله
catalogRef شیء نه
catalogRef.base string بله شناسهٔ یکتا
catalogRef.version integer بله
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"version": {
"type": "number",
"const": 4
},
"meta": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200,
"description": "نام پروژه — روی جلد گزارش می‌رود"
},
"createdAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"updatedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"notes": {
"type": "string",
"maxLength": 10000
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
}
},
"migratedFrom": {
"type": "integer",
"minimum": 1,
"maximum": 3
}
},
"required": [
"id",
"name",
"createdAt",
"updatedAt"
],
"additionalProperties": false
},
"settings": {
"type": "object",
"properties": {
"sheetSizeIds": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"description": "ابعاد ورقی که برشکار دارد — دست‌کم یکی"
},
"kerf": {
"type": "number",
"minimum": 0,
"description": "ضخامت تیغه"
},
"trimAllowance": {
"type": "number",
"minimum": 0,
"description": "لبه‌گیری ورق خام"
},
"cuttingMethod": {
"type": "string",
"enum": [
"panelSaw",
"cncNesting"
]
},
"hasMiterCapability": {
"type": "boolean",
"description": "برشکار فارسی‌بر می‌زند؟"
},
"currency": {
"type": "string",
"enum": [
"IRR",
"IRT"
]
},
"displayUnit": {
"type": "string",
"enum": [
"mm",
"cm"
],
"description": "واحد نمایش؛ مدل همیشه میلی‌متر است"
},
"nestingQuality": {
"type": "string",
"enum": [
"draft",
"normal",
"best"
]
},
"cncToolDia": {
"type": "number",
"exclusiveMinimum": 0,
"description": "قطر فرز نستینگ CNC"
},
"maxCutStages": {
"description": "سقفِ مرحله‌های برشِ اره؛ نبودنش یعنی پیش‌فرضِ کاتالوگ",
"type": "integer",
"minimum": 2,
"maximum": 12
},
"mutedRules": {
"description": "قاعده‌های بی‌صداشده با دلیل؛ بی unitId یعنی مسئلهٔ پروژه‌ای همان قاعده",
"type": "array",
"items": {
"type": "object",
"properties": {
"ruleId": {
"type": "string",
"maxLength": 200
},
"unitId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"reason": {
"type": "string",
"maxLength": 10000
}
},
"required": [
"ruleId",
"reason"
],
"additionalProperties": false
}
}
},
"required": [
"sheetSizeIds",
"kerf",
"trimAllowance",
"cuttingMethod",
"hasMiterCapability",
"currency",
"displayUnit",
"nestingQuality",
"cncToolDia"
],
"additionalProperties": false
},
"catalogOverrides": {
"type": "object",
"properties": {
"sheetSizes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"label": {
"type": "string",
"maxLength": 200
},
"length": {
"type": "number",
"exclusiveMinimum": 0
},
"width": {
"type": "number",
"exclusiveMinimum": 0
}
},
"required": [
"id",
"label",
"length",
"width"
],
"additionalProperties": false
}
},
"materials": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"kind": {
"type": "string",
"enum": [
"melamineMdf",
"rawMdf",
"hiGloss",
"membrane",
"chipboard",
"plywood",
"backer"
]
},
"thickness": {
"type": "number",
"exclusiveMinimum": 0
},
"hasGrain": {
"type": "boolean"
},
"grainAlongSheetLength": {
"type": "boolean"
},
"color": {
"type": "string",
"maxLength": 200
},
"finish": {
"type": "string",
"enum": [
"matte",
"satin",
"gloss"
]
},
"sheetSizeIds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
}
},
"pricePerSheet": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"kind",
"thickness",
"hasGrain",
"grainAlongSheetLength",
"color",
"finish",
"sheetSizeIds",
"pricePerSheet"
],
"additionalProperties": false
}
},
"edgeBands": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"thickness": {
"type": "number",
"exclusiveMinimum": 0
},
"color": {
"type": "string",
"maxLength": 200
},
"pricePerMeter": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"thickness",
"color",
"pricePerMeter"
],
"additionalProperties": false
}
},
"countertops": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"kind": {
"type": "string",
"enum": [
"postformed",
"quartz",
"granite",
"corian",
"wood"
]
},
"thickness": {
"type": "number",
"exclusiveMinimum": 0
},
"color": {
"type": "string",
"maxLength": 200
},
"priceUnit": {
"type": "string",
"enum": [
"perMeter",
"perSqm"
]
},
"pricePer": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"stockLengths": {
"type": "array",
"items": {
"type": "number",
"exclusiveMinimum": 0
}
}
},
"required": [
"id",
"name",
"kind",
"thickness",
"color",
"priceUnit",
"pricePer",
"stockLengths"
],
"additionalProperties": false
}
},
"glass": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"thickness": {
"type": "number",
"exclusiveMinimum": 0
},
"price": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"thickness",
"price"
],
"additionalProperties": false
}
},
"hardware": {
"type": "object",
"properties": {
"hinges": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"price": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"overlay": {
"type": "string",
"enum": [
"full",
"half",
"inset"
]
},
"openAngle": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 180
},
"cupDia": {
"type": "number",
"exclusiveMinimum": 0
},
"cupDepth": {
"type": "number",
"exclusiveMinimum": 0
},
"cupSetback": {
"type": "number",
"minimum": 0
},
"softClose": {
"type": "boolean"
}
},
"required": [
"id",
"name",
"price",
"overlay",
"openAngle",
"cupDia",
"cupDepth",
"cupSetback",
"softClose"
],
"additionalProperties": false
}
},
"hingeCountByDoorHeight": {
"type": "array",
"items": {
"type": "object",
"properties": {
"upTo": {
"type": "number",
"exclusiveMinimum": 0
},
"count": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"upTo",
"count"
],
"additionalProperties": false
}
},
"slides": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"price": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"type": {
"type": "string",
"enum": [
"ballBearing",
"undermount",
"tandemBox"
]
},
"length": {
"type": "number",
"exclusiveMinimum": 0
},
"sideClearance": {
"type": "number",
"minimum": 0
},
"boxWidthReduction": {
"type": "number",
"minimum": 0
},
"bottomLengthReduction": {
"type": "number",
"minimum": 0
},
"backHeight": {
"type": "number",
"exclusiveMinimum": 0
},
"extension": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1.5
},
"softClose": {
"type": "boolean"
}
},
"required": [
"id",
"name",
"price",
"type",
"length",
"sideClearance",
"extension",
"softClose"
],
"additionalProperties": false
}
},
"legs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"price": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"adjustRange": {
"type": "number",
"minimum": 0
}
},
"required": [
"id",
"name",
"price",
"height",
"adjustRange"
],
"additionalProperties": false
}
},
"legCountByWidth": {
"type": "array",
"items": {
"type": "object",
"properties": {
"upTo": {
"type": "number",
"exclusiveMinimum": 0
},
"count": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"upTo",
"count"
],
"additionalProperties": false
}
},
"handles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"price": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"holeSpacing": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "null"
}
]
},
"projection": {
"type": "number",
"minimum": 0
}
},
"required": [
"id",
"name",
"price",
"holeSpacing",
"projection"
],
"additionalProperties": false
}
},
"profiles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"price": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"shape": {
"type": "string",
"enum": [
"L",
"C"
]
},
"heightLoss": {
"type": "number",
"exclusiveMinimum": 0
},
"notchHeight": {
"type": "number",
"exclusiveMinimum": 0
},
"notchDepth": {
"type": "number",
"exclusiveMinimum": 0
}
},
"required": [
"id",
"name",
"price",
"shape",
"heightLoss",
"notchHeight",
"notchDepth"
],
"additionalProperties": false
}
},
"glassFrames": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"price": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"faceWidth": {
"type": "number",
"exclusiveMinimum": 0
},
"rebate": {
"type": "number",
"exclusiveMinimum": 0
},
"glassThicknesses": {
"minItems": 1,
"type": "array",
"items": {
"type": "number",
"exclusiveMinimum": 0
}
}
},
"required": [
"id",
"name",
"price",
"faceWidth",
"rebate",
"glassThicknesses"
],
"additionalProperties": false
}
},
"slidingTracks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"price": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"topLoss": {
"type": "number",
"minimum": 0
},
"bottomLoss": {
"type": "number",
"minimum": 0
},
"overlap": {
"type": "number",
"exclusiveMinimum": 0
}
},
"required": [
"id",
"name",
"price",
"topLoss",
"bottomLoss",
"overlap"
],
"additionalProperties": false
}
},
"lifts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"price": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"enum": [
"gasStrut",
"stay",
"parallel",
"upAndOver",
"biFold"
]
},
"minWeight": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"maxWeight": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"openAngle": {
"type": "number",
"minimum": 0,
"maximum": 180
}
},
"required": [
"id",
"name",
"price",
"kind",
"minWeight",
"maxWeight",
"openAngle"
],
"additionalProperties": false
}
},
"fasteners": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"price": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"price"
],
"additionalProperties": false
}
},
"fittings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"price": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"kind": {
"type": "string",
"enum": [
"pulloutBasket",
"cornerAccessory",
"toeKickStrip",
"hangingRail",
"ledStrip",
"pushLatch"
]
},
"width": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "null"
}
]
},
"height": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"price",
"kind",
"width",
"height"
],
"additionalProperties": false
}
},
"system32": {
"type": "object",
"properties": {
"pitch": {
"type": "number",
"exclusiveMinimum": 0
},
"holeDia": {
"type": "number",
"exclusiveMinimum": 0
},
"holeDepth": {
"type": "number",
"exclusiveMinimum": 0
},
"frontSetback": {
"type": "number",
"minimum": 0
},
"rearSetback": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"defaults": {
"type": "object",
"properties": {
"density": {
"type": "object",
"properties": {
"melamineMdf": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 3000
},
"rawMdf": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 3000
},
"hiGloss": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 3000
},
"membrane": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 3000
},
"chipboard": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 3000
},
"plywood": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 3000
},
"backer": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 3000
}
},
"additionalProperties": false
},
"cutting": {
"type": "object",
"properties": {
"kerf": {
"type": "number",
"minimum": 0
},
"trimAllowance": {
"type": "number",
"minimum": 0
},
"method": {
"type": "string",
"enum": [
"panelSaw",
"cncNesting"
]
},
"cncToolDia": {
"type": "number",
"exclusiveMinimum": 0
},
"maxCutStages": {
"type": "integer",
"minimum": 2,
"maximum": 12
},
"minUsefulOffcut": {
"type": "object",
"properties": {
"length": {
"type": "number",
"minimum": 0
},
"width": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"dimensions": {
"type": "object",
"properties": {
"base": {
"type": "object",
"properties": {
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"depth": {
"type": "number",
"exclusiveMinimum": 0
},
"legHeight": {
"type": "number",
"minimum": 0
},
"counterThickness": {
"type": "number",
"minimum": 0
},
"counterDepth": {
"type": "number",
"exclusiveMinimum": 0
},
"counterOverhangEnds": {
"type": "number",
"minimum": 0
},
"toeKickSetback": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"wall": {
"type": "object",
"properties": {
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"depth": {
"type": "number",
"exclusiveMinimum": 0
},
"heightAboveCounter": {
"type": "number"
}
},
"additionalProperties": false
},
"tall": {
"type": "object",
"properties": {
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"depth": {
"type": "number",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"reveal": {
"type": "number",
"minimum": 0
},
"edgeReveal": {
"type": "number",
"minimum": 0
},
"shelfSetback": {
"type": "number",
"minimum": 0
},
"shelfSideClearance": {
"type": "number",
"minimum": 0
},
"railWidth": {
"type": "number",
"exclusiveMinimum": 0
},
"drawerBoxHeightReduction": {
"type": "number",
"minimum": 0
},
"drawerBoxMinHeight": {
"type": "number",
"exclusiveMinimum": 0
},
"corniceHeight": {
"type": "number",
"exclusiveMinimum": 0
},
"valanceHeight": {
"type": "number",
"exclusiveMinimum": 0
},
"endPanelOverhang": {
"type": "number",
"minimum": 0
},
"backInset": {
"type": "number",
"minimum": 0
},
"backGrooveDepth": {
"type": "number",
"exclusiveMinimum": 0
},
"frame": {
"type": "object",
"properties": {
"width": {
"type": "number",
"exclusiveMinimum": 0
},
"groove": {
"type": "number",
"exclusiveMinimum": 0
},
"panelPlay": {
"type": "number",
"minimum": 0
},
"minPanel": {
"type": "number",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"pulloutHeight": {
"type": "number",
"exclusiveMinimum": 0
},
"drawerBoxDrop": {
"type": "number",
"minimum": 0
},
"swapMinWidth": {
"type": "number",
"exclusiveMinimum": 0
},
"cutout": {
"type": "object",
"properties": {
"minSideClearance": {
"type": "number",
"minimum": 0
},
"minEdgeMargin": {
"type": "number",
"minimum": 0
},
"minHoleMargin": {
"type": "number",
"minimum": 0
},
"frontSetback": {
"type": "number",
"minimum": 0
},
"cornerRadius": {
"type": "number",
"minimum": 0
},
"tapSetback": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"machining": {
"type": "object",
"properties": {
"plateSetback": {
"type": "number",
"minimum": 0
},
"slideFront": {
"type": "number",
"minimum": 0
},
"slideRear": {
"type": "number",
"minimum": 0
},
"slideLift": {
"type": "number",
"minimum": 0
},
"handleEdge": {
"type": "number",
"minimum": 0
},
"handleEnd": {
"type": "number",
"minimum": 0
},
"handleHoleDia": {
"type": "number",
"exclusiveMinimum": 0
},
"handleMinEnd": {
"type": "number",
"minimum": 0
},
"hingeEnd": {
"type": "number",
"minimum": 0
},
"jPull": {
"type": "object",
"properties": {
"width": {
"type": "number",
"exclusiveMinimum": 0
},
"depth": {
"type": "number",
"exclusiveMinimum": 0
},
"minThickness": {
"type": "number",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"fingerGroove": {
"type": "object",
"properties": {
"width": {
"type": "number",
"exclusiveMinimum": 0
},
"depth": {
"type": "number",
"exclusiveMinimum": 0
},
"inset": {
"type": "number",
"minimum": 0
},
"minThickness": {
"type": "number",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"hardwareCounts": {
"type": "object",
"properties": {
"shelfPinsPerShelf": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"screwsPerHinge": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"screwsPerSlidePair": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"nailPitch": {
"type": "number",
"exclusiveMinimum": 0
},
"fastenerWastePercent": {
"type": "number",
"minimum": 0
},
"edgeBandWastePercent": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"ids": {
"type": "object",
"properties": {
"hinge": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"slide": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"lift": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"leg": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"handle": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"railHandle": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"pushLatch": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"channelEdge": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"channelMid": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"tandemBoxSlide": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"glassFrame": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"glass": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"slidingTrack": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"countertop": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"shelfPin": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"hingeScrew": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"slideScrew": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"backNail": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
}
},
"additionalProperties": false
},
"rules": {
"type": "object",
"properties": {
"ductOffsetMax": {
"type": "number",
"minimum": 0
},
"hoodHeight": {
"type": "object",
"properties": {
"min": {
"type": "number",
"exclusiveMinimum": 0
},
"max": {
"type": "number",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"wallCabinetReach": {
"type": "object",
"properties": {
"min": {
"type": "number",
"exclusiveMinimum": 0
},
"max": {
"type": "number",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"workSurfaceNearHob": {
"type": "number",
"minimum": 0
},
"sinkHobGapMin": {
"type": "number",
"minimum": 0
},
"waterReach": {
"type": "number",
"minimum": 0
},
"fillerMin": {
"type": "number",
"minimum": 0
},
"narrowUnitInside": {
"type": "number",
"minimum": 0
},
"lowUtilization": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"counterHeight": {
"type": "object",
"properties": {
"min": {
"type": "number",
"exclusiveMinimum": 0
},
"max": {
"type": "number",
"exclusiveMinimum": 0
},
"target": {
"type": "number",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"blindNeedsBasket": {
"type": "number",
"minimum": 0
},
"blindAccessMin": {
"type": "number",
"minimum": 0
},
"blindWidthReduction": {
"type": "number",
"minimum": 0
},
"doorWidthMax": {
"type": "number",
"exclusiveMinimum": 0
},
"drawerWidthMax": {
"type": "number",
"exclusiveMinimum": 0
},
"heavyDoor": {
"type": "object",
"properties": {
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"width": {
"type": "number",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"hobClearanceDefault": {
"type": "number",
"minimum": 0
},
"lastSheetBelow": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"cornerHingeAngleMin": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 180
},
"frontNeighbourGap": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"joinery": {
"type": "object",
"properties": {
"edgeMargin": {
"type": "number",
"minimum": 0
},
"spacing": {
"type": "number",
"exclusiveMinimum": 0
},
"minPerJoint": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"confirmat": {
"type": "object",
"properties": {
"hardwareId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"throughDia": {
"type": "number",
"exclusiveMinimum": 0
},
"pilotDia": {
"type": "number",
"exclusiveMinimum": 0
},
"pilotDepth": {
"type": "number",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"minifix": {
"type": "object",
"properties": {
"hardwareId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"camDia": {
"type": "number",
"exclusiveMinimum": 0
},
"camDepth": {
"type": "number",
"exclusiveMinimum": 0
},
"camSetback": {
"type": "number",
"exclusiveMinimum": 0
},
"boltPilotDia": {
"type": "number",
"exclusiveMinimum": 0
},
"boltPilotDepth": {
"type": "number",
"exclusiveMinimum": 0
},
"boltHoleDia": {
"type": "number",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"dowel": {
"type": "object",
"properties": {
"hardwareId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"dia": {
"type": "number",
"exclusiveMinimum": 0
},
"faceDepth": {
"type": "number",
"exclusiveMinimum": 0
},
"edgeDepth": {
"type": "number",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"pocketScrew": {
"type": "object",
"properties": {
"hardwareId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"inset": {
"type": "number",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"standardWidths": {
"type": "array",
"items": {
"type": "number",
"exclusiveMinimum": 0
}
},
"appliances": {
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 200
},
"additionalProperties": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"hob",
"sink",
"hood",
"oven",
"dishwasher",
"fridge",
"microwave"
]
},
"label": {
"type": "string",
"maxLength": 200
},
"width": {
"type": "number",
"exclusiveMinimum": 0
},
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"depth": {
"type": "number",
"exclusiveMinimum": 0
},
"clearance": {
"type": "number",
"minimum": 0
},
"cutoutWidth": {
"type": "number",
"exclusiveMinimum": 0
},
"cutoutDepth": {
"type": "number",
"exclusiveMinimum": 0
},
"tapHoleDia": {
"type": "number",
"exclusiveMinimum": 0
},
"tapSetback": {
"type": "number",
"minimum": 0
},
"clearanceBelow": {
"type": "number",
"minimum": 0
},
"ventGap": {
"type": "number",
"minimum": 0
},
"mountHeight": {
"type": "object",
"properties": {
"min": {
"type": "number",
"exclusiveMinimum": 0
},
"max": {
"type": "number",
"exclusiveMinimum": 0
}
},
"required": [
"min",
"max"
],
"additionalProperties": false
}
},
"additionalProperties": false
}
},
"shelfSpanLimits": {
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 200
},
"additionalProperties": {
"type": "number",
"exclusiveMinimum": 0
}
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"priceBookRef": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"vendor": {
"type": "string",
"maxLength": 200
},
"city": {
"type": "string",
"maxLength": 200
},
"capturedAt": {
"type": "string",
"maxLength": 200
}
},
"required": [
"id",
"capturedAt"
],
"additionalProperties": false
},
"prices": {
"type": "object",
"properties": {
"currency": {
"type": "string",
"enum": [
"IRR",
"IRT"
],
"description": "واحدِ عددهای همین دفتر؛ نمایش به واحدِ پروژه تبدیل می‌کند"
},
"sheets": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
},
"description": "قیمت هر ورق با کلیدِ `جنس@ابعاد`؛ کلیدِ تنهای جنس = ابعادِ نخستِ جنس"
},
"edgeBands": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
},
"description": "قیمت هر متر نوار"
},
"hardware": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
},
"description": "قیمت هر واحد یراق"
},
"countertops": {
"description": "قیمت هر متر یا متر مربع صفحه",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
}
},
"services": {
"type": "object",
"properties": {
"perCut": {
"type": "number"
},
"perSheet": {
"type": "number"
},
"edgeBandPerMeter": {
"type": "number"
},
"miterPerMeter": {
"type": "number"
},
"gripRoutingPerMeter": {
"type": "number"
},
"countertopInstallPerMeter": {
"type": "number"
}
},
"additionalProperties": false
},
"updatedAt": {
"type": "string",
"maxLength": 200
},
"capturedAt": {
"description": "تاریخِ برداشتِ مرجع؛ با ضریبِ دلار عوض نمی‌شود",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"currency",
"sheets",
"edgeBands",
"hardware",
"services"
],
"additionalProperties": false
},
"rooms": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"ceilingHeight": {
"type": "number",
"exclusiveMinimum": 0
},
"finishes": {
"type": "object",
"properties": {
"wallColor": {
"type": "string",
"maxLength": 200
},
"floor": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"wood",
"tile",
"stone",
"concrete"
]
},
"color": {
"type": "string",
"maxLength": 200
}
},
"required": [
"kind",
"color"
],
"additionalProperties": false
},
"backsplash": {
"type": "object",
"properties": {
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"tile": {
"type": "string",
"maxLength": 200
}
},
"required": [
"height",
"tile"
],
"additionalProperties": false
},
"soffit": {
"type": "object",
"properties": {
"height": {
"type": "number",
"exclusiveMinimum": 0
}
},
"required": [
"height"
],
"additionalProperties": false
}
},
"required": [
"wallColor",
"floor"
],
"additionalProperties": false
},
"walls": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"length": {
"type": "number",
"exclusiveMinimum": 0,
"description": "طول دیوار، از گوشه تا گوشه"
},
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"photo": {
"type": "object",
"properties": {
"width": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"height": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"corners": {
"description": "چهار گوشهٔ مرجع در پیکسل عکس",
"type": "array",
"prefixItems": [
{
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x",
"y"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x",
"y"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x",
"y"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x",
"y"
],
"additionalProperties": false
}
],
"items": false,
"minItems": 4,
"maxItems": 4
},
"reference": {
"description": "همان مستطیل در مختصات دیوار",
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"w": {
"type": "number",
"exclusiveMinimum": 0
},
"h": {
"type": "number",
"exclusiveMinimum": 0
}
},
"required": [
"x",
"y",
"w",
"h"
],
"additionalProperties": false
},
"opacity": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"assetId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ تصویر در `assets/` ِ پرونده یا جدولِ assets ِ مرورگر"
}
},
"required": [
"width",
"height",
"opacity",
"assetId"
],
"additionalProperties": false
},
"openings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"kind": {
"type": "string",
"enum": [
"window",
"door"
]
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"w": {
"type": "number",
"exclusiveMinimum": 0
},
"h": {
"type": "number",
"exclusiveMinimum": 0
}
},
"required": [
"id",
"kind",
"x",
"y",
"w",
"h"
],
"additionalProperties": false
},
"description": "پنجره و در — بازه‌ای که کابینت نباید ببندد"
},
"obstacles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"kind": {
"type": "string",
"enum": [
"outlet",
"switch",
"gasPipe",
"gasValve",
"waterPipe",
"drain",
"ductVent",
"window",
"column",
"other"
]
},
"label": {
"type": "string",
"maxLength": 200
},
"x": {
"type": "number",
"description": "از لبهٔ چپ دیوار"
},
"y": {
"type": "number",
"description": "از کف"
},
"w": {
"type": "number",
"exclusiveMinimum": 0
},
"h": {
"type": "number",
"exclusiveMinimum": 0
},
"depth": {
"type": "number",
"minimum": 0,
"description": "چقدر از دیوار بیرون زده"
},
"mustStayAccessible": {
"type": "boolean"
}
},
"required": [
"id",
"kind",
"label",
"x",
"y",
"w",
"h",
"depth",
"mustStayAccessible"
],
"additionalProperties": false
}
},
"runs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"kind": {
"type": "string",
"enum": [
"base",
"wall",
"tall"
]
},
"startX": {
"type": "number",
"description": "از لبهٔ چپ دیوار"
},
"baseHeight": {
"type": "number",
"description": "ارتفاع کف این ردیف از زمین"
},
"units": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"number": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "شمارهٔ چاپی؛ صفر یعنی بی‌شماره"
},
"kind": {
"type": "string",
"enum": [
"base",
"wall",
"tall",
"baseCorner",
"wallCorner",
"filler",
"applianceGap"
]
},
"label": {
"description": "نامی که کاربر داده",
"type": "string",
"maxLength": 200
},
"width": {
"type": "number",
"exclusiveMinimum": 0,
"description": "عرض بیرونی بدنه"
},
"height": {
"type": "number",
"exclusiveMinimum": 0,
"description": "ارتفاع بیرونی بدنه، بدون پایه و صفحه"
},
"depth": {
"type": "number",
"exclusiveMinimum": 0,
"description": "عمق بدنه"
},
"construction": {
"type": "object",
"properties": {
"boxStyle": {
"type": "string",
"enum": [
"sidesFull",
"topBottomFull"
],
"description": "بدنه تمام‌قد، یا کف و سقف تمام‌عرض"
},
"hasBottom": {
"type": "boolean"
},
"topStyle": {
"type": "string",
"enum": [
"fullPanel",
"rails",
"none"
]
},
"railWidth": {
"type": "number",
"minimum": 0
},
"back": {
"type": "object",
"properties": {
"style": {
"type": "string",
"enum": [
"grooved",
"nailed",
"none"
]
},
"insetFromRear": {
"type": "number",
"minimum": 0
},
"grooveDepth": {
"type": "number",
"minimum": 0
}
},
"required": [
"style",
"insetFromRear",
"grooveDepth"
],
"additionalProperties": false
},
"joinery": {
"type": "string",
"enum": [
"confirmat",
"minifix",
"dowel",
"pocketScrew"
]
},
"toeKick": {
"anyOf": [
{
"type": "object",
"properties": {
"height": {
"type": "number",
"minimum": 0
},
"setback": {
"type": "number",
"minimum": 0
},
"material": {
"type": "string",
"enum": [
"pvc",
"mdf"
]
}
},
"required": [
"height",
"setback",
"material"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"miter": {
"type": "object",
"properties": {
"leftSide": {
"type": "boolean"
},
"rightSide": {
"type": "boolean"
},
"top": {
"type": "boolean"
}
},
"required": [
"leftSide",
"rightSide",
"top"
],
"additionalProperties": false
}
},
"required": [
"boxStyle",
"hasBottom",
"topStyle",
"railWidth",
"back",
"joinery",
"toeKick",
"miter"
],
"additionalProperties": false
},
"front": {
"type": "object",
"properties": {
"frame": {
"description": "قاب درب کلاسیک",
"type": "object",
"properties": {
"width": {
"type": "number",
"exclusiveMinimum": 0
},
"groove": {
"type": "number",
"exclusiveMinimum": 0
}
},
"required": [
"width",
"groove"
],
"additionalProperties": false
},
"overlay": {
"type": "string",
"enum": [
"full",
"half",
"inset"
]
},
"reveal": {
"type": "number",
"minimum": 0,
"description": "درز بین دو نمای مجاور"
},
"edgeReveal": {
"type": "number",
"minimum": 0,
"description": "درز در لبهٔ بیرونی یونیت"
},
"style": {
"type": "string",
"enum": [
"hiGloss",
"membrane",
"melamine",
"classic",
"none"
]
},
"opening": {
"oneOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "handle"
},
"handleId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
}
},
"required": [
"kind",
"handleId"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "pushToOpen"
},
"fittingId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
}
},
"required": [
"kind",
"fittingId"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "channel"
},
"edgeProfileId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"midProfileId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
}
},
"required": [
"kind",
"edgeProfileId",
"midProfileId"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "jPull"
}
},
"required": [
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "fingerGroove"
}
},
"required": [
"kind"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "none"
}
},
"required": [
"kind"
],
"additionalProperties": false
}
],
"description": "چطور نما باز می‌شود: دستگیره، فشاری، دستگیرهٔ مخفی، یا هیچ"
},
"glass": {
"type": "object",
"properties": {
"frameId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"glassId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
}
},
"required": [
"frameId",
"glassId"
],
"additionalProperties": false
},
"sliding": {
"type": "object",
"properties": {
"trackId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
}
},
"required": [
"trackId"
],
"additionalProperties": false
},
"rows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"height": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "string",
"const": "fill"
}
]
},
"cells": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"door",
"drawer",
"falseFront",
"open",
"appliancePanel",
"glassDoor",
"sliding"
]
},
"width": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "string",
"const": "fill"
}
],
"description": "عرض ثابت، یا «fill» برای تقسیم باقی‌مانده"
},
"hinge": {
"type": "string",
"enum": [
"left",
"right",
"top",
"bottom"
]
},
"drawer": {
"type": "object",
"properties": {
"boxHeight": {
"type": "number",
"exclusiveMinimum": 0
},
"slideId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"shallow": {
"type": "boolean"
}
},
"additionalProperties": false
},
"handle": {
"type": "object",
"properties": {
"position": {
"type": "string",
"enum": [
"top",
"center",
"bottom",
"edge"
]
},
"spacing": {
"type": "number",
"minimum": 0
}
},
"required": [
"position"
],
"additionalProperties": false
},
"label": {
"type": "string",
"maxLength": 200
}
},
"required": [
"kind",
"width"
],
"additionalProperties": false
}
}
},
"required": [
"height",
"cells"
],
"additionalProperties": false
},
"description": "ردیف‌ها از بالا به پایین"
}
},
"required": [
"overlay",
"reveal",
"edgeReveal",
"style",
"opening",
"rows"
],
"additionalProperties": false
},
"interior": {
"type": "object",
"properties": {
"shelves": {
"type": "array",
"items": {
"type": "object",
"properties": {
"y": {
"type": "number",
"minimum": 0
},
"adjustable": {
"type": "boolean"
},
"setback": {
"type": "number",
"minimum": 0
},
"materialId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
}
},
"required": [
"y",
"adjustable",
"setback"
],
"additionalProperties": false
}
},
"dividers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0
},
"materialId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
}
},
"required": [
"x"
],
"additionalProperties": false
}
},
"pullouts": {
"description": "بیرون‌کش‌های پشت درب: سبد، کشوی داخلی، تاندم‌باکس",
"type": "array",
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"basket",
"innerDrawer",
"tandemBox"
]
},
"y": {
"type": "number",
"minimum": 0
},
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"slideId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
}
},
"required": [
"kind",
"y"
],
"additionalProperties": false
}
}
},
"required": [
"shelves",
"dividers"
],
"additionalProperties": false
},
"materials": {
"type": "object",
"properties": {
"carcass": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"front": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"back": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"shelf": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"drawerBox": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"drawerBottom": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"doorPanel": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
}
},
"required": [
"carcass"
],
"additionalProperties": false
},
"edging": {
"type": "object",
"properties": {
"carcassFront": {
"anyOf": [
{
"type": "object",
"properties": {
"bandId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
}
},
"required": [
"bandId"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"shelfFront": {
"anyOf": [
{
"type": "object",
"properties": {
"bandId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
}
},
"required": [
"bandId"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"frontPanels": {
"anyOf": [
{
"type": "object",
"properties": {
"bandId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
}
},
"required": [
"bandId"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"exposedSide": {
"anyOf": [
{
"type": "object",
"properties": {
"bandId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
}
},
"required": [
"bandId"
],
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"carcassFront",
"frontPanels"
],
"additionalProperties": false
},
"hardware": {
"type": "object",
"properties": {
"hingeId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"slideId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"legId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"liftId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
}
},
"additionalProperties": false
},
"cutouts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"sink",
"hob",
"socket",
"ductPass",
"pipePass",
"other"
]
},
"label": {
"type": "string",
"maxLength": 200
},
"onCountertop": {
"type": "boolean"
},
"width": {
"type": "number",
"exclusiveMinimum": 0
},
"depth": {
"type": "number",
"exclusiveMinimum": 0
},
"x": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"kind",
"label",
"onCountertop"
],
"additionalProperties": false
}
},
"appliance": {
"description": "دستگاهِ داخل یونیت — خریدنی، بریده نمی‌شود",
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"oven",
"fridge",
"microwave",
"dishwasher"
]
},
"specId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
}
},
"required": [
"kind"
],
"additionalProperties": false
},
"corner": {
"description": "کنج ال یا کور",
"type": "object",
"properties": {
"style": {
"type": "string",
"enum": [
"L",
"blind"
]
},
"side": {
"type": "string",
"enum": [
"left",
"right"
]
},
"legB": {
"type": "number",
"exclusiveMinimum": 0
},
"blindWidth": {
"type": "number",
"exclusiveMinimum": 0
},
"accessory": {
"type": "string",
"enum": [
"none",
"carousel",
"magicCorner",
"basket"
]
}
},
"required": [
"style",
"side",
"accessory"
],
"additionalProperties": false
},
"locked": {
"type": "boolean"
},
"notes": {
"type": "string",
"maxLength": 10000
},
"presetId": {
"description": "پیش‌تنظیمِ سازنده (نسخهٔ ۳)",
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$"
}
},
"required": [
"id",
"number",
"kind",
"width",
"height",
"depth",
"construction",
"front",
"interior",
"materials",
"edging",
"hardware"
],
"additionalProperties": false
}
}
},
"required": [
"id",
"kind",
"startX",
"baseHeight",
"units"
],
"additionalProperties": false
}
},
"countertop": {
"type": "object",
"properties": {
"materialId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"thickness": {
"type": "number",
"exclusiveMinimum": 0
},
"overhangFront": {
"type": "number",
"minimum": 0
},
"overhangEnds": {
"type": "number",
"minimum": 0
},
"backsplash": {
"type": "number",
"minimum": 0
},
"seams": {
"type": "array",
"items": {
"type": "number"
},
"description": "جای درزها در مختصات دیوار (از لبهٔ چپ دیوار)"
},
"cornerJoint": {
"description": "درز گوشه در ال‌شکل",
"type": "string",
"enum": [
"miter",
"butt"
]
}
},
"required": [
"materialId",
"thickness",
"overhangFront",
"overhangEnds",
"seams"
],
"additionalProperties": false
},
"accessories": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"kind": {
"type": "string",
"enum": [
"cornice",
"valance",
"endPanel",
"fillerToCeiling",
"ledStrip"
]
},
"run": {
"description": "روی کدام ردیف",
"type": "string",
"enum": [
"base",
"wall",
"tall"
]
},
"side": {
"type": "string",
"enum": [
"left",
"right"
]
},
"height": {
"type": "number",
"exclusiveMinimum": 0
}
},
"required": [
"id",
"kind"
],
"additionalProperties": false
}
},
"origin": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"z": {
"type": "number"
}
},
"required": [
"x",
"z"
],
"additionalProperties": false,
"description": "جای دیوار در پلان اتاق"
},
"rotation": {
"type": "number",
"description": "چرخش حول محور قائم، درجه؛ صفر یعنی رو به بیننده"
},
"kind": {
"type": "string",
"enum": [
"wall",
"island"
]
}
},
"required": [
"id",
"name",
"length",
"height",
"openings",
"obstacles",
"runs",
"accessories",
"origin",
"rotation"
],
"additionalProperties": false
}
}
},
"required": [
"id",
"name",
"ceilingHeight",
"finishes",
"walls"
],
"additionalProperties": false
}
},
"views": {
"description": "نماهای ذخیره‌شدهٔ سه‌بعدی",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"pos": {
"type": "array",
"prefixItems": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"items": false,
"minItems": 3,
"maxItems": 3
},
"target": {
"type": "array",
"prefixItems": [
{
"type": "number"
},
{
"type": "number"
},
{
"type": "number"
}
],
"items": false,
"minItems": 3,
"maxItems": 3
}
},
"required": [
"id",
"name",
"pos",
"target"
],
"additionalProperties": false
}
},
"renders": {
"description": "رندرهای ذخیره‌شده؛ تصویرشان بیرون از سند",
"maxItems": 6,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"at": {
"type": "string",
"maxLength": 200
},
"kind": {
"type": "string",
"enum": [
"perspective",
"elevation",
"current"
]
},
"width": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"cover": {
"type": "boolean"
},
"assetId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ تصویر در `assets/` ِ پرونده یا جدولِ assets ِ مرورگر"
}
},
"required": [
"id",
"name",
"at",
"kind",
"width",
"assetId"
],
"additionalProperties": false
}
},
"workshop": {
"description": "پیشرفت کارگاه: تحویل و مونتاژ",
"type": "object",
"properties": {
"counted": {
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 200
},
"additionalProperties": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"pieces": {
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 200
},
"additionalProperties": {
"type": "boolean",
"const": true
}
},
"steps": {
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 200
},
"additionalProperties": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"updatedAt": {
"type": "string",
"maxLength": 200
}
},
"required": [
"counted",
"pieces",
"steps",
"updatedAt"
],
"additionalProperties": false
},
"variants": {
"description": "گونه‌ها: تفاوت هر انتخاب با پروژه",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"name": {
"type": "string",
"maxLength": 200
},
"patch": {
"type": "array",
"items": {
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"add",
"replace",
"remove"
]
},
"path": {
"type": "string",
"maxLength": 200
},
"value": {}
},
"required": [
"op",
"path"
],
"additionalProperties": false
}
},
"createdAt": {
"type": "string",
"maxLength": 200
}
},
"required": [
"id",
"name",
"patch",
"createdAt"
],
"additionalProperties": false
}
},
"stock": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"materialId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"length": {
"type": "number",
"exclusiveMinimum": 0
},
"width": {
"type": "number",
"exclusiveMinimum": 0
},
"source": {
"type": "string",
"maxLength": 200
}
},
"required": [
"id",
"materialId",
"length",
"width",
"source"
],
"additionalProperties": false
},
"description": "انبار دورریز"
},
"catalogRef": {
"type": "object",
"properties": {
"base": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^(?=.*[A-Za-z0-9])[A-Za-z0-9._-]+$",
"description": "شناسهٔ یکتا"
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"base",
"version"
],
"additionalProperties": false
}
},
"required": [
"version",
"meta",
"settings",
"rooms",
"stock"
],
"additionalProperties": false
}