قالب پروندهٔ پروژه (`.darz.json`)
This content is not available in your language yet.
تولیدشده از
packages/core/src/schema/v4.tsباnode scripts/darz-format.mjs— دست نزن؛ اسکیما را عوض کن و دوباره بساز.
نسخهٔ فعلی: 4. loadProject هر نسخه را با اسکیمای همان نسخه میسنجد،
مهاجرت میدهد، و با اسکیمای آخر دوباره چک میکند. پروندهٔ خراب با خطای فارسی و
مسیر فیلد رد میشود (io/invalid). نسخهٔ ۱ همیشه خوانده میشود و هرگز نوشته
نمیشود. واحد همهٔ اندازهها میلیمتر است.
فیلدها
Section titled “فیلدها”| مسیر | نوع | لازم | توضیح |
|---|---|---|---|
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 | بله |
JSON Schema
Section titled “JSON Schema”{ "$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}