diff --git a/app/app/api/auth/register/route.ts b/app/app/api/auth/register/route.ts index 5cbc79c..e9efabe 100644 --- a/app/app/api/auth/register/route.ts +++ b/app/app/api/auth/register/route.ts @@ -1,12 +1,13 @@ // app/api/auth/register/route.ts import { NextResponse } from "next/server"; import { rateLimit, requestIp } from "@/lib/rate-limit"; -import { - createDirectusUser, - directusUserExists, - loginDirectus, -} from "@/lib/directus"; +const DIRECTUS = (process.env.DIRECTUS_URL || process.env.NEXT_PUBLIC_API_BASE_URL || "").replace(/\/$/, ""); +const SERVICE_TOKEN = +process.env.DIRECTUS_SERVICE_TOKEN || +process.env.DIRECTUS_ADMIN_TOKEN || +process.env.DIRECTUS_TOKEN_ADMIN_REGISTER || ""; +const DEFAULT_ROLE = process.env.DIRECTUS_DEFAULT_ROLE || undefined; const SECURE = process.env.NODE_ENV === "production"; function bad(message: string, status = 400) { @@ -14,18 +15,16 @@ function bad(message: string, status = 400) { } const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; -function isConflict(error: any): boolean { - const code = error?.detail?.errors?.[0]?.extensions?.code; - const message = error?.detail?.errors?.[0]?.message || error?.message || ""; - return error?.status === 409 || code === "RECORD_NOT_UNIQUE" || /unique|already exists/i.test(message); -} - -function logDirectusFailure(stage: string, error: any) { - console.error(`[auth/register] Directus ${stage} failed`, { - status: error?.status, - code: error?.detail?.errors?.[0]?.extensions?.code, - message: error?.detail?.errors?.[0]?.message || error?.message, +async function directusLogin(email: string, password: string) { + const r = await fetch(`${DIRECTUS}/auth/login`, { + method: "POST", + headers: { "Content-Type": "application/json", Accept: "application/json" }, + body: JSON.stringify({ email, password }), + cache: "no-store", }); + const j = await r.json().catch(() => ({})); + if (!r.ok) throw new Error(j?.errors?.[0]?.message || j?.message || `Login failed (${r.status})`); + return j?.data || j; } export async function POST(req: Request) { @@ -33,6 +32,9 @@ export async function POST(req: Request) { if (!rateLimit(`register:${requestIp(req)}`, 5, 60 * 60_000)) { return bad("Too many registration attempts. Please try again later.", 429); } + if (!DIRECTUS) return bad("Missing DIRECTUS_URL/NEXT_PUBLIC_API_BASE_URL", 500); + if (!SERVICE_TOKEN) return bad("Missing DIRECTUS_SERVICE_TOKEN / admin token", 500); + const body = await req.json().catch(() => ({} as any)); const email = String(body?.email ?? "").trim().toLowerCase(); const username = String(body?.username ?? "").trim(); @@ -44,35 +46,53 @@ export async function POST(req: Request) { if (password.length < 8) return bad("Password must be at least 8 characters"); if (password !== confirm) return bad("Passwords do not match"); - try { - if (await directusUserExists(email, username)) { - return bad("Email or username already in use", 409); + // Optional pre-check to return a friendly 409 instead of a generic Directus error + const existsRes = await fetch( + `${DIRECTUS}/users?filter[_or][0][email][_eq]=${encodeURIComponent(email)}` + + `&filter[_or][1][username][_eq]=${encodeURIComponent(username)}` + + `&fields=id,email,username&limit=1`, + { + headers: { + Authorization: `Bearer ${SERVICE_TOKEN}`, + Accept: "application/json", + }, + cache: "no-store", } - } catch (error: any) { - logDirectusFailure("duplicate lookup", error); - return bad("Sign-up is temporarily unavailable.", 503); + ); + const existsJson = await existsRes.json().catch(() => ({})); + if (Array.isArray(existsJson?.data) && existsJson.data.length > 0) { + return bad("Email or username already in use", 409); } - let user: { id: string }; - try { - // Resolves the production Users role through the Registration Bot - // policy, then creates an active local-auth account in that role. - user = await createDirectusUser({ email, username, password }); - } catch (error: any) { - if (isConflict(error)) return bad("Email or username already in use", 409); - logDirectusFailure("user creation", error); - return bad("Sign-up is temporarily unavailable.", 503); + // Create user with sane defaults + const createPayload: any = { + email, + username, + password, + }; + if (DEFAULT_ROLE) createPayload.role = DEFAULT_ROLE; + + const createRes = await fetch(`${DIRECTUS}/users`, { + method: "POST", + headers: { + Authorization: `Bearer ${SERVICE_TOKEN}`, + "Content-Type": "application/json", + Accept: "application/json", + }, + body: JSON.stringify(createPayload), + cache: "no-store", + }); + + const cj = await createRes.json().catch(() => ({})); + if (!createRes.ok) { + const msg = cj?.errors?.[0]?.message || cj?.message || `User create failed (${createRes.status})`; + return bad(msg, createRes.status || 500); } - let tokens: any; - try { - tokens = await loginDirectus(email, password); - } catch (error: any) { - logDirectusFailure("post-registration login", error); - return bad("Your account was created, but automatic sign-in failed. Please sign in.", 502); - } + // Auto-login (email-based; directus expects "email" even though it's an identifier) + const tokens = await directusLogin(email, password); - const res = NextResponse.json({ ok: true, id: user.id }, { status: 201 }); + const res = NextResponse.json({ ok: true, id: cj?.data?.id || null }, { status: 201 }); if (tokens?.access_token) { res.cookies.set("ma_at", tokens.access_token, { path: "/", diff --git a/app/app/api/bgbye/process/route.ts b/app/app/api/bgbye/process/route.ts index d41da54..7a91181 100644 --- a/app/app/api/bgbye/process/route.ts +++ b/app/app/api/bgbye/process/route.ts @@ -1,6 +1,7 @@ export const runtime = "nodejs"; import { NextResponse } from "next/server"; +import { getUserBearerFromRequest } from "@/lib/directus"; import { rateLimit, requestIp } from "@/lib/rate-limit"; const MAX_BODY_BYTES = 30 * 1024 * 1024; @@ -20,6 +21,9 @@ export async function POST(req: Request) { ); } + if (!getUserBearerFromRequest(req)) { + return NextResponse.json({ error: "Not authenticated" }, { status: 401 }); + } if (!rateLimit(`bgbye:${requestIp(req)}`, 10, 60_000)) { return NextResponse.json({ error: "Too many processing requests" }, { status: 429 }); } diff --git a/app/app/page.tsx b/app/app/page.tsx index cf20182..739763a 100644 --- a/app/app/page.tsx +++ b/app/app/page.tsx @@ -1,15 +1,49 @@ -import { Suspense } from "react"; -import TemporaryUtilityHub from "@/components/TemporaryUtilityHub"; +// app/page.tsx +import { cookies } from "next/headers"; +import { redirect } from "next/navigation"; +import SignIn from "@/app/auth/sign-in/sign-in"; +import SignUp from "@/app/auth/sign-up/sign-up"; +import { isJwtValid } from "@/lib/jwt"; -export const metadata = { - title: "Laser Everything Community Utilities", - description: "Free laser calculators, public files, and image background removal tools.", -}; +type SearchParams = { [key: string]: string | string[] | undefined }; + +export default async function HomePage({ + searchParams, +}: { + searchParams?: SearchParams; +}) { + // If already signed in with a VALID token, go straight to the app + const ck = await cookies(); + const at = ck.get("ma_at")?.value; + if (isJwtValid(at)) redirect("/portal"); + + const reauth = searchParams?.reauth === "1"; -export default function HomePage() { return ( - Loading utilities…}> - - +
+ {reauth && ( +

+ Your session expired. Please sign in again. +

+ )} + +
+

MakeArmy

+

+ Free to use. Manage laser rigs, settings, and projects—all in one + place. +

+
+ +
+ + +
+ +
+

This is the beta build v0.1.1 - this site is an active BETA. Some features may not be available or work as intended. If you're experiencing issues please report them here: https://forge.makearmy.io/makearmy/makearmy-app/issues

+

PRIVACY: We only use cookies strictly necessary to operate the site (e.g., your sign-in session). We do not store user data or telemetry other than what you provide and never share or sell data to third parties. Ever.

+
+
); } diff --git a/app/app/portal/utilities/Client.tsx b/app/app/portal/utilities/Client.tsx index 5c58e3a..0e8e1e1 100644 --- a/app/app/portal/utilities/Client.tsx +++ b/app/app/portal/utilities/Client.tsx @@ -9,13 +9,11 @@ const UtilitySwitcher = dynamic(() => import("@/components/portal/UtilitySwitche export default function UtilitiesClient() { return ( -
-
-
~/utilities
-

Workshop utilities

-

Calculators and production tools in one workspace.

-
+
+
+

Utilities

+
); } diff --git a/app/app/styles/globals.css b/app/app/styles/globals.css index 9ec318d..4841171 100644 --- a/app/app/styles/globals.css +++ b/app/app/styles/globals.css @@ -64,23 +64,3 @@ } } -@layer components { - /* Dense, terminal-inspired calculator workspace without nested floating cards. */ - .laser-tool-workspace [class~="rounded-lg"][class~="border"] { - @apply rounded-lg border-border/60 bg-background/20 shadow-none; - } - - .laser-tool-workspace [class~="rounded-lg"][class~="border"] > div:first-child { - @apply px-4 py-3; - } - - .laser-tool-workspace [class~="rounded-lg"][class~="border"] > div:not(:first-child) { - @apply px-4 pb-4; - } - - .laser-tool-workspace input, - .laser-tool-workspace select, - .laser-tool-workspace button[role="combobox"] { - @apply border-border/70 bg-background/70 shadow-none transition-colors focus:border-accent/70 focus:ring-1 focus:ring-accent/30; - } -} diff --git a/app/components/TemporaryUtilityHub.tsx b/app/components/TemporaryUtilityHub.tsx deleted file mode 100644 index 25b393e..0000000 --- a/app/components/TemporaryUtilityHub.tsx +++ /dev/null @@ -1,134 +0,0 @@ -"use client"; - -import dynamic from "next/dynamic"; -import { useMemo } from "react"; -import { useRouter, useSearchParams } from "next/navigation"; -import { cn } from "@/lib/utils"; - -const LaserToolkit = dynamic( - () => import("@/components/portal/LaserToolkitSwitcher"), - { ssr: false } -); -const FileBrowser = dynamic( - () => import("@/components/utilities/files/FileBrowserPanel"), - { ssr: false } -); -const BackgroundRemover = dynamic( - () => import("@/components/utilities/BackgroundRemoverPanel"), - { ssr: false } -); - -const TOOLS = [ - { - key: "laser-toolkit", - label: "Laser Toolkit", - description: "Calculators for beam size, overlap, hatch spacing, job time, and more.", - icon: "/images/utils/toolkit.png", - component: LaserToolkit, - }, - { - key: "files", - label: "File Server", - description: "Browse, preview, and download files from the public library.", - icon: "/images/utils/fs.png", - component: FileBrowser, - }, - { - key: "background-remover", - label: "Background Remover", - description: "Remove image backgrounds using our self-hosted processing service.", - icon: "/images/utils/bgrm.png", - component: BackgroundRemover, - }, -] as const; - -export default function TemporaryUtilityHub() { - const router = useRouter(); - const searchParams = useSearchParams(); - const activeKey = searchParams.get("tool") || TOOLS[0].key; - const active = useMemo( - () => TOOLS.find((tool) => tool.key === activeKey) || TOOLS[0], - [activeKey] - ); - const ActiveTool = active.component; - - function selectTool(key: string) { - const query = new URLSearchParams(searchParams.toString()); - query.set("tool", key); - if (key !== "laser-toolkit") query.delete("lt"); - router.replace(`/?${query.toString()}`, { scroll: false }); - } - - return ( -
-
-

- Laser Everything -

-

Community Utilities

-

- Our database and member features are temporarily offline while we change backend - systems. These free utilities remain available without an account. -

-

- Directus was the system behind our member features, but it has moved to a corporate - licensing model that we cannot afford for a free community project. We are moving the - site to another free and open source CMS. Until that work is finished, user accounts, - community libraries, and databases will be unavailable. We are working to bring - everything back as soon as we can. Thank you for your patience. -

-
- - - -
-
- {/* eslint-disable-next-line @next/next/no-img-element */} - -
-

{active.label}

-

{active.description}

-
-
- -
- -
- No account is required. Database-backed profiles, projects, settings, and submissions - are intentionally unavailable on this temporary site. -
-
- ); -} diff --git a/app/components/portal/LaserToolkitSwitcher.tsx b/app/components/portal/LaserToolkitSwitcher.tsx index 3448b7f..34e7673 100644 --- a/app/components/portal/LaserToolkitSwitcher.tsx +++ b/app/components/portal/LaserToolkitSwitcher.tsx @@ -4,10 +4,9 @@ import { useMemo } from "react"; import { useSearchParams, useRouter } from "next/navigation"; import { cn } from "@/lib/utils"; -import { Calculator, ChevronDown } from "lucide-react"; import { TOOLKIT_TABS } from "@/components/utilities/laser-toolkit/registry"; -export default function LaserToolkitSwitcher({ basePath = "/portal/utilities" }: { basePath?: string }) { +export default function LaserToolkitSwitcher() { const sp = useSearchParams(); const router = useRouter(); @@ -25,7 +24,7 @@ export default function LaserToolkitSwitcher({ basePath = "/portal/utilities" }: function setTab(k: string) { const q = new URLSearchParams(sp.toString()); q.set("lt", k); - router.replace(`${basePath}?${q.toString()}`, { scroll: false }); + router.replace(`/portal/utilities?${q.toString()}`, { scroll: false }); } if (!active) { @@ -35,38 +34,23 @@ export default function LaserToolkitSwitcher({ basePath = "/portal/utilities" }: const ActiveCmp = active.component; return ( -
-
-
- - - -
-
+
+
{TOOLKIT_TABS.map(t => ( ))} -
+
-
+
diff --git a/app/components/portal/UtilitySwitcher.tsx b/app/components/portal/UtilitySwitcher.tsx index 86260aa..36faf0e 100644 --- a/app/components/portal/UtilitySwitcher.tsx +++ b/app/components/portal/UtilitySwitcher.tsx @@ -4,7 +4,6 @@ import { useEffect, useMemo, useRef, useState } from "react"; import dynamic from "next/dynamic"; import { useRouter, useSearchParams } from "next/navigation"; import { cn } from "@/lib/utils"; -import { ChevronRight, ExternalLink, TerminalSquare } from "lucide-react"; type Item = { key: string; // used in ?t= @@ -217,13 +216,9 @@ export default function UtilitySwitcher() { }, []); return ( -
- +
-
- -
+ {/* ⛔️ removed the old border/padding frame here */} +
); } diff --git a/app/components/toolkit/ToolShell.tsx b/app/components/toolkit/ToolShell.tsx index 28d134d..3611a9d 100644 --- a/app/components/toolkit/ToolShell.tsx +++ b/app/components/toolkit/ToolShell.tsx @@ -1,3 +1,4 @@ +import Link from "next/link"; import { cn } from "@/lib/utils"; type ToolShellProps = { @@ -18,23 +19,31 @@ export default function ToolShell({ subtitle, className, children, + backHref = "/laser-toolkit", + backLabel = "Back to Toolkit", }: ToolShellProps) { const desc = description ?? subtitle; return ( -
-
+
+
-
laser.calc
-

{title}

+

{title}

{desc ? (

{desc}

) : null}
+ + {backLabel} +
{children}
); } + diff --git a/app/components/utilities/files/FileBrowserPanel.tsx b/app/components/utilities/files/FileBrowserPanel.tsx index fae849a..28033d9 100644 --- a/app/components/utilities/files/FileBrowserPanel.tsx +++ b/app/components/utilities/files/FileBrowserPanel.tsx @@ -208,8 +208,8 @@ export default function FileBrowserPanel() {
{path || "/"}
-
-
+
+
Name
Type
diff --git a/app/components/utilities/laser-toolkit/beam-spot-size/page.tsx b/app/components/utilities/laser-toolkit/beam-spot-size/page.tsx index a91bb90..6874057 100644 --- a/app/components/utilities/laser-toolkit/beam-spot-size/page.tsx +++ b/app/components/utilities/laser-toolkit/beam-spot-size/page.tsx @@ -10,7 +10,7 @@ function num(v: string) { return Number.isFinite(n) ? n : 0; } -// Focused Gaussian 1/e² diameter: d = 4 M² λ f / (π D). +// Spot diameter (µm) ≈ 1.27 * M² * λ(µm) * f(mm) / D(mm) export default function Page() { const [lambdaNm, setLambdaNm] = useState("1064"); // nm (default fiber) const [focalMm, setFocalMm] = useState("160"); // mm @@ -21,9 +21,9 @@ export default function Page() { const lamUm = num(lambdaNm) / 1000; // convert nm -> µm const f = num(focalMm); const D = num(beamDm); - const M2 = num(m2); - if (lamUm <= 0 || f <= 0 || D <= 0 || M2 < 1) return 0; - return (4 / Math.PI) * M2 * lamUm * (f / D); + const M2 = Math.max(1, num(m2)); + if (lamUm <= 0 || f <= 0 || D <= 0) return 0; + return 1.27 * M2 * lamUm * (f / D); }, [lambdaNm, focalMm, beamDm, m2]); const dMm = dUm / 1000; @@ -71,7 +71,7 @@ export default function Page() {
-
1/e² spot diameter
+
Spot diameter
{dMm.toFixed(4)} mm
{dUm.toFixed(2)} µm
@@ -82,10 +82,7 @@ export default function Page() {
-

- Gaussian-beam estimate: d = 4 M²λf/(πD), where D is the 1/e² beam diameter at the - lens. Real spots may be larger because of lens aberration, clipping, beam expansion, and focus error. -

); } + diff --git a/app/components/utilities/laser-toolkit/hatch-overlap/page.tsx b/app/components/utilities/laser-toolkit/hatch-overlap/page.tsx index 34470c8..dbad915 100644 --- a/app/components/utilities/laser-toolkit/hatch-overlap/page.tsx +++ b/app/components/utilities/laser-toolkit/hatch-overlap/page.tsx @@ -29,12 +29,11 @@ export default function Page() { setGapUm(L > 0 ? (UM_PER_INCH / L).toFixed(2) : ""); } - const coverage = useMemo(() => { + const overlap = useMemo(() => { const d = num(spotUm); const g = num(gapUm); - if (d <= 0 || g <= 0) return { overlap: 0, uncovered: 0 }; - const signed = 100 * (1 - g / d); - return { overlap: Math.max(0, signed), uncovered: Math.max(0, -signed) }; + if (d <= 0 || g <= 0) return 0; + return Math.max(0, Math.min(100, 100 * (1 - g / d))); }, [spotUm, gapUm]); const gapMm = (num(gapUm) / 1000) || 0; @@ -69,10 +68,7 @@ export default function Page() {
Overlap
-
{coverage.overlap.toFixed(1)}%
- {coverage.uncovered > 0 && ( -
{coverage.uncovered.toFixed(1)}% uncovered gap
- )} +
{overlap.toFixed(1)}%
Gap
@@ -87,10 +83,10 @@ export default function Page() {
From LPI
- {num(lpi) > 0 ? (UM_PER_INCH / num(lpi) / 1000).toFixed(4) : "0.0000"} mm + {(UM_PER_INCH / Math.max(1, num(lpi)) / 1000).toFixed(4)} mm
- {num(lpi) > 0 ? (UM_PER_INCH / num(lpi)).toFixed(1) : "0.0"} µm + {(UM_PER_INCH / Math.max(1, num(lpi))).toFixed(1)} µm
@@ -98,3 +94,4 @@ export default function Page() { ); } + diff --git a/app/components/utilities/laser-toolkit/job-time-estimator/page.tsx b/app/components/utilities/laser-toolkit/job-time-estimator/page.tsx index ec28886..24a1fd2 100644 --- a/app/components/utilities/laser-toolkit/job-time-estimator/page.tsx +++ b/app/components/utilities/laser-toolkit/job-time-estimator/page.tsx @@ -44,7 +44,7 @@ export default function Page() { if (w <= 0 || h <= 0 || D <= 0 || v <= 0) return { t: 0, gapMm: 0, gapUm: 0, rows: 0 }; const gapMm = 25.4 / D; const gapUm = gapMm * 1000; - const rows = Math.max(1, Math.ceil(h / gapMm)); + const rows = h / gapMm; const t = rows * (w / v) * p * k; return { t, gapMm, gapUm, rows }; } else { @@ -159,7 +159,7 @@ export default function Page() { {/* Footnote */}

Overhead factor* accounts for real-world slowdowns: - acceleration/deceleration, jump moves, polygon delays, laser on/off timing, overscan, + acceleration/decelleration, jump moves, polygon delays, laser on/off timing, overscan, bidirectional settle time, and controller latency.{" "} Typical values: Vector cuts/marks{" "} 1.05–1.15 (simple paths, long runs closer to 1.05; tiny @@ -171,3 +171,4 @@ export default function Page() { ); } + diff --git a/app/components/utilities/laser-toolkit/power-lens-scaler/page.tsx b/app/components/utilities/laser-toolkit/power-lens-scaler/page.tsx index 3fdb31b..6113608 100644 --- a/app/components/utilities/laser-toolkit/power-lens-scaler/page.tsx +++ b/app/components/utilities/laser-toolkit/power-lens-scaler/page.tsx @@ -18,10 +18,33 @@ function clamp(v: number, lo: number, hi: number) { return Math.max(lo, Math.min(hi, v)); } -/** Circular spot-area ratio; pi/4 cancels. */ -function areaFactorFromDiameter(spotSrc: number, spotDst: number) { - if (spotSrc <= 0 || spotDst <= 0) return 1; - const r = spotDst / spotSrc; +/** Default curve parameters based on rated power (very rough, editable). */ +function defaultCurveForRatedW(W: number) { + // Peak frequency guess (kHz). Tune these to your hardware fleet. + let fPeak = 50; + if (W <= 35) fPeak = 25; + else if (W <= 60) fPeak = 50; + else if (W <= 90) fPeak = 75; + else fPeak = 100; + + // Log-normal width parameter (dimensionless). Smaller = narrower peak. + const sigma = 0.35; + return { fPeak, sigma }; +} + +/** Log-normal shaped efficiency curve normalized to 1 at fPeak. */ +function etaOfF(f_kHz: number, fPeak_kHz: number, sigma: number) { + const f = Math.max(f_kHz, 0.1); + const r = Math.log(f / Math.max(fPeak_kHz, 0.1)); + const eta = Math.exp(-0.5 * (r / Math.max(sigma, 0.05)) ** 2); + // Keep within [0.1, 1] to avoid absurd zeros; adjust if you want tails to hit 0. + return clamp(eta, 0.1, 1); +} + +/** Area factor from field (proxy for spot area scaling) */ +function areaFactorFromField(fieldSrc: number, fieldDst: number) { + if (fieldSrc <= 0 || fieldDst <= 0) return 1; + const r = fieldDst / fieldSrc; return r * r; } @@ -36,7 +59,7 @@ export default function Page() { const [hSrc, setHSrc] = useState('0.1'); // mm (raster line spacing) const [fSrc, setFSrc] = useState('30'); // kHz const [tauSrc, setTauSrc] = useState('100'); // ns pulse width - const [fieldSrc, setFieldSrc] = useState('60'); // µm, 1/e² spot diameter + const [fieldSrc, setFieldSrc] = useState('110'); // mm // DEST machine/lens const [wDst, setWDst] = useState('50'); // rated W @@ -44,7 +67,16 @@ export default function Page() { const [hDst, setHDst] = useState('0.1'); // mm const [fDst, setFDst] = useState('30'); // kHz const [tauDst, setTauDst] = useState('100'); // ns - const [fieldDst, setFieldDst] = useState('40'); // µm + const [fieldDst, setFieldDst] = useState('70'); // mm + + // Curve tuning / advanced + const [advanced, setAdvanced] = useState(false); + const srcDefaults = defaultCurveForRatedW(num(wSrc, 50)); + const dstDefaults = defaultCurveForRatedW(num(wDst, 50)); + const [fPeakSrc, setFPeakSrc] = useState(String(srcDefaults.fPeak)); + const [sigmaSrc, setSigmaSrc] = useState(String(srcDefaults.sigma)); + const [fPeakDst, setFPeakDst] = useState(String(dstDefaults.fPeak)); + const [sigmaDst, setSigmaDst] = useState(String(dstDefaults.sigma)); // Prefer adjusting speed/freq instead of exceeding 100% power const [preferSpeedAdjust, setPreferSpeedAdjust] = useState(true); @@ -59,11 +91,21 @@ export default function Page() { const h2 = Math.max(num(hDst, 0), 0.000001); const f1k = Math.max(num(fSrc, 0), 0.1); const f2k = Math.max(num(fDst, 0), 0.1); + const tau1_ns = Math.max(num(tauSrc, 0), 0.1); const tau2_ns = Math.max(num(tauDst, 0), 0.1); - const aFac = areaFactorFromDiameter(num(fieldSrc, 0), num(fieldDst, 0)); + const aFac = areaFactorFromField(num(fieldSrc, 0), num(fieldDst, 0)); + + const fpk1 = Math.max(num(fPeakSrc, defaultCurveForRatedW(W1).fPeak), 0.1); + const sig1 = Math.max(num(sigmaSrc, defaultCurveForRatedW(W1).sigma), 0.05); + const fpk2 = Math.max(num(fPeakDst, defaultCurveForRatedW(W2).fPeak), 0.1); + const sig2 = Math.max(num(sigmaDst, defaultCurveForRatedW(W2).sigma), 0.05); + + // Efficiency factors (0..1) + const eta1 = etaOfF(f1k, fpk1, sig1); + const eta2 = etaOfF(f2k, fpk2, sig2); // Effective average power (W) after frequency efficiency - const P1eff = W1 * p1; + const P1eff = W1 * p1 * eta1; let p2Frac = p1; // destination power fraction (0..1) let suggestedSpeed: number | undefined; @@ -72,7 +114,7 @@ export default function Page() { // Helper: compute required P2eff for each match, then map to power% const powerPercentFromEff = (P2effReq: number) => { // P2eff = W2 * p2 * eta2 => p2 = P2eff / (W2*eta2) - return P2effReq / W2; + return P2effReq / (W2 * eta2); }; if (mode === 'vector') { @@ -80,7 +122,7 @@ export default function Page() { const P2effReq = P1eff * (v2 / v1); p2Frac = powerPercentFromEff(P2effReq); if (preferSpeedAdjust && p2Frac > 1) { - suggestedSpeed = v1 * W2 / (W1 * p1); // from p2<=1 + suggestedSpeed = v1 * (W2 * eta2) / (W1 * eta1 * p1); // from p2<=1 p2Frac = 1; } } else if (mode === 'raster') { @@ -88,7 +130,7 @@ export default function Page() { const P2effReq = P1eff * ((v2 * h2) / (v1 * h1)); p2Frac = powerPercentFromEff(P2effReq); if (preferSpeedAdjust && p2Frac > 1) { - suggestedSpeed = v1 * W2 * (h1 / h2) / (W1 * p1); + suggestedSpeed = v1 * (W2 * eta2) * (h1 / h2) / (W1 * eta1 * p1); p2Frac = 1; } } else if (mode === 'irradiance') { @@ -107,7 +149,7 @@ export default function Page() { if (preferSpeedAdjust && p2Frac > 1) { // Suggest lowering f2 to keep p2<=1: P2eff_max = W2*eta2*1 // f2_req = P2eff_max / Ep1 - const f2_req = W2 / Ep1; // Hz + const f2_req = (W2 * eta2) / Ep1; // Hz suggestedFreq_kHz = Math.max(f2_req / 1e3, 0.1); p2Frac = 1; } @@ -115,7 +157,7 @@ export default function Page() { // Compute pulse metrics (for display) using **destination** settings const p2Clamped = clamp(p2Frac, 0, 2); - const P2eff = W2 * p2Clamped; + const P2eff = W2 * p2Clamped * eta2; const f2Hz = f2k * 1e3; const tau2_s = tau2_ns * 1e-9; const Ep2 = P2eff / f2Hz; // J @@ -125,6 +167,8 @@ export default function Page() { p2Percent: clamp(p2Clamped * 100, 0, 200), suggestedSpeed, suggestedFreq_kHz, + eta1, + eta2, P1eff, P2eff, Ep2, @@ -133,13 +177,13 @@ export default function Page() { }; }, [ mode, wSrc, wDst, pSrc, vSrc, vDst, hSrc, hDst, fSrc, fDst, tauSrc, tauDst, - fieldSrc, fieldDst, preferSpeedAdjust, + fieldSrc, fieldDst, preferSpeedAdjust, fPeakSrc, sigmaSrc, fPeakDst, sigmaDst, ]); return ( @@ -153,7 +197,7 @@ export default function Page() { Vector: Energy per length (J/mm) Raster: Energy per area (J/mm²) - Spot irradiance: W/mm² + Irradiance: W/mm² (spot/field) Pulse energy: J (fiber) @@ -203,11 +247,32 @@ export default function Page() { setHSrc(e.target.value)} inputMode="decimal" />

- + setFieldSrc(e.target.value)} inputMode="decimal" />
+ + +
+
+ + setFPeakSrc(e.target.value)} inputMode="decimal" /> +
+
+ + setSigmaSrc(e.target.value)} inputMode="decimal" /> +
+
+ η(f) is log-normal; 1.0 at fₚ, rolls off by σ. +
+
+
{/* Destination */} @@ -237,11 +302,26 @@ export default function Page() { setHDst(e.target.value)} inputMode="decimal" />
- + setFieldDst(e.target.value)} inputMode="decimal" />
+ +
+
+ + setFPeakDst(e.target.value)} inputMode="decimal" /> +
+
+ + setSigmaDst(e.target.value)} inputMode="decimal" /> +
+
+ Adjust if you know your machine’s real power–frequency curve. +
+
+
{/* Result */} @@ -268,7 +348,11 @@ export default function Page() {

)} -
+
+
+
η(f) source / dest
+
{result.eta1.toFixed(3)} / {result.eta2.toFixed(3)}
+
Dest pulse energy
@@ -282,12 +366,13 @@ export default function Page() {

- Assumptions: displayed power percentage scales average output linearly, spots are circular, - and peak power uses a rectangular pulse approximation. Confirm the result with a low-power test; - real sources can have model-specific power limits versus frequency and pulse width. + Assumptions: Effective power includes a frequency efficiency factor η(f). Peak power uses a rectangular pulse + approximation (shape factor ≈ 1). For real MOPA sources, pulse shape and + true power–frequency maps vary by model; adjust fp and σ if you have vendor curves.

); } + diff --git a/app/components/utilities/laser-toolkit/pulse-overlap/page.tsx b/app/components/utilities/laser-toolkit/pulse-overlap/page.tsx index fb443eb..e8ce13c 100644 --- a/app/components/utilities/laser-toolkit/pulse-overlap/page.tsx +++ b/app/components/utilities/laser-toolkit/pulse-overlap/page.tsx @@ -21,19 +21,16 @@ export default function Page() { const dUm = num(spotUm); // µm if (v <= 0 || f <= 0 || dUm <= 0) { - return { spacingUm: 0, spacingMm: 0, overlapPct: 0, gapPct: 0, pulsesPerMm: 0, pulsesPerSpot: 0 }; + return { spacingUm: 0, spacingMm: 0, overlapPct: 0, pulsesPerMm: 0 }; } // distance per pulse const spacingUm = v / f; // µm (derives from v(mm/s) / (f(kHz)*1000) * 1000) const spacingMm = spacingUm / 1000; - const signedOverlapPct = 100 * (1 - spacingUm / dUm); - const overlapPct = Math.max(0, signedOverlapPct); - const gapPct = Math.max(0, -signedOverlapPct); + const overlapPct = Math.max(0, Math.min(100, 100 * (1 - spacingUm / dUm))); const pulsesPerMm = (f * 1000) / v; - const pulsesPerSpot = dUm / spacingUm; - return { spacingUm, spacingMm, overlapPct, gapPct, pulsesPerMm, pulsesPerSpot }; + return { spacingUm, spacingMm, overlapPct, pulsesPerMm }; }, [speed, freq, spotUm]); return ( @@ -71,24 +68,20 @@ export default function Page() {
Overlap
{result.overlapPct.toFixed(1)}%
- {result.gapPct > 0 && ( -
{result.gapPct.toFixed(1)}% gap between pulses
- )}
Pulses per mm
{result.pulsesPerMm.toFixed(1)}
-
Pulses per spot diameter
-
{result.pulsesPerSpot.toFixed(2)}
+
Rule of thumb
+
+ 60–80% overlap is common for marking; deeper engraving often higher. +
-

- Geometric overlap along the scan direction only. It does not predict material response; - pulse energy, spot profile, hatch spacing, and thermal accumulation also matter. -

); } + diff --git a/app/lib/directus.ts b/app/lib/directus.ts index d17bdc1..f9d705f 100644 --- a/app/lib/directus.ts +++ b/app/lib/directus.ts @@ -4,31 +4,14 @@ // ⚠️ NOTE: Do NOT import `headers()` / `cookies()` from "next/headers" here. // Next 15's types can make those async and break build-time type checks in shared libs. -const BASE = ( - process.env.DIRECTUS_URL || - process.env.NEXT_PUBLIC_API_BASE_URL || - "" -).replace(/\/$/, ""); -// DIRECTUS_TOKEN_ADMIN_REGISTER is the canonical credential for the production -// Registration Bot policy. Keep older aliases as independently tested fallbacks: -// a configured but stale token must not hide a later valid credential. -const REGISTRATION_CREDENTIALS = [ - ["DIRECTUS_TOKEN_ADMIN_REGISTER", process.env.DIRECTUS_TOKEN_ADMIN_REGISTER], - ["DIRECTUS_SERVICE_TOKEN", process.env.DIRECTUS_SERVICE_TOKEN], - ["DIRECTUS_ADMIN_TOKEN", process.env.DIRECTUS_ADMIN_TOKEN], -].filter( - (entry, index, entries): entry is [string, string] => - Boolean(entry[1]) && entries.findIndex((other) => other[1] === entry[1]) === index -); +const BASE = (process.env.DIRECTUS_URL || "").replace(/\/$/, ""); +const TOKEN_ADMIN_REGISTER = process.env.DIRECTUS_TOKEN_ADMIN_REGISTER || ""; // server-only const ROLE_MEMBER_NAME = process.env.DIRECTUS_ROLE_MEMBER_NAME || "Users"; const PROJECTS_COLLECTION = process.env.DIRECTUS_PROJECTS_COLLECTION || "projects"; -if (!BASE) console.warn("[directus] Missing DIRECTUS_URL / NEXT_PUBLIC_API_BASE_URL"); -if (!REGISTRATION_CREDENTIALS.length) - console.warn( - "[directus] Missing DIRECTUS_TOKEN_ADMIN_REGISTER (or legacy service-token alias) " + - "used for registration and username login" - ); +if (!BASE) console.warn("[directus] Missing DIRECTUS_URL"); +if (!TOKEN_ADMIN_REGISTER) + console.warn("[directus] Missing DIRECTUS_TOKEN_ADMIN_REGISTER (used for registration and username login)"); export function bytesFromMB(mb: number) { return Math.round(mb * 1024 * 1024); @@ -136,34 +119,17 @@ export async function dxDELETE(path: string, bearer: string): Promise(path: string, init?: RequestInit): Promise { - if (!BASE) throw new Error("Missing Directus base URL"); - if (!REGISTRATION_CREDENTIALS.length) throw new Error("Missing Directus registration credential"); - - let lastAuthorizationError: any = null; - for (const [credentialName, credential] of REGISTRATION_CREDENTIALS) { - const res = await fetch(`${BASE}${path}`, { - ...init, - headers: { - Accept: "application/json", - Authorization: `Bearer ${credential}`, - ...(init?.headers || {}), - }, - cache: "no-store", - }); - - try { - return (await throwIfNotOk(res)) as T; - } catch (error: any) { - if (error?.status !== 401 && error?.status !== 403) throw error; - lastAuthorizationError = error; - console.warn(`[directus] Registration credential rejected: ${credentialName}`, { - status: error.status, - code: error?.detail?.errors?.[0]?.extensions?.code, - }); - } - } - - throw lastAuthorizationError ?? new Error("No authorized Directus registration credential"); + if (!TOKEN_ADMIN_REGISTER) throw new Error("Missing DIRECTUS_TOKEN_ADMIN_REGISTER"); + const res = await fetch(`${BASE}${path}`, { + ...init, + headers: { + Accept: "application/json", + Authorization: `Bearer ${TOKEN_ADMIN_REGISTER}`, + ...(init?.headers || {}), + }, + cache: "no-store", + }); + return (await throwIfNotOk(res)) as T; } // ───────────────────────────────────────────────────────────── @@ -265,25 +231,13 @@ export async function createDirectusUser(input: { } export async function emailForUsername(username: string): Promise { - const clean = username.trim(); - if (!clean) return null; - const q = `/users?filter[username][_eq]=${encodeURIComponent(clean)}&fields=email&limit=1`; + const q = `/users?filter[username][_eq]=${encodeURIComponent(username)}&fields=email&limit=1`; const { data } = await directusAdminFetch<{ data: Array<{ email?: string }> }>(q); const em = data?.[0]?.email; return em ? String(em) : null; } -export async function directusUserExists(email: string, username: string): Promise { - const q = - `/users?filter[_or][0][email][_eq]=${encodeURIComponent(email)}` + - `&filter[_or][1][username][_eq]=${encodeURIComponent(username)}` + - `&fields=id&limit=1`; - const { data } = await directusAdminFetch<{ data: Array<{ id: string }> }>(q); - return Array.isArray(data) && data.length > 0; -} - export async function loginDirectus(email: string, password: string) { - if (!BASE) throw new Error("Missing Directus base URL"); const res = await fetch(`${BASE}/auth/login`, { method: "POST", headers: { Accept: "application/json", "Content-Type": "application/json" }, diff --git a/app/middleware.ts b/app/middleware.ts index a178aa6..2b5bf99 100644 --- a/app/middleware.ts +++ b/app/middleware.ts @@ -1,62 +1,217 @@ -import { NextRequest, NextResponse } from "next/server"; - -const PUBLIC_UTILITY_APIS = new Set([ - "/api/bgbye/process", - "/api/files/list", - "/api/files/raw", - "/api/files/download", -]); - -const LEGACY_TOOL_PATHS: Record = { - "/laser-toolkit": "laser-toolkit", - "/files": "files", - "/background-remover": "background-remover", -}; +// middleware.ts +import { NextResponse, NextRequest } from "next/server"; /** - * Temporary utility-only site. - * - * Directus-backed pages and APIs remain in source history but cannot be reached - * through this deployment. This middleware deliberately performs no session or - * Directus request. + * Public pages that should remain reachable without being signed in. + * Everything else is considered protected (including most /api/*). */ -export function middleware(req: NextRequest) { - const { pathname } = req.nextUrl; + const PUBLIC_PAGES = new Set([ + "/", // splash page is public + "/auth/sign-in", + "/auth/sign-up", + ]); - if (pathname === "/") return NextResponse.next(); + /** + * API paths that are explicitly allowed without auth. + * Keep this list tiny; add broad /api/webhooks to allow ALL webhook endpoints. + */ + const PUBLIC_API_PREFIXES: string[] = [ + "/api/auth/", // login/refresh/callback endpoints + ]; - const legacyTool = LEGACY_TOOL_PATHS[pathname.replace(/\/$/, "")]; - if (legacyTool) { - const url = req.nextUrl.clone(); - url.pathname = "/"; - url.search = ""; - url.searchParams.set("tool", legacyTool); - return NextResponse.redirect(url); - } + /** Directus base (used to remotely validate the token after restarts). */ + const DIRECTUS = ( + process.env.NEXT_PUBLIC_API_BASE_URL || + process.env.DIRECTUS_URL || + "" + ).replace(/\/$/, ""); - if (pathname === "/portal/utilities") { - const url = req.nextUrl.clone(); - const requested = url.searchParams.get("t"); - url.pathname = "/"; - url.search = ""; - if (requested && ["laser-toolkit", "files", "background-remover"].includes(requested)) { - url.searchParams.set("tool", requested); - } - return NextResponse.redirect(url); - } + type MapResult = { pathname: string; query?: Record }; - if (PUBLIC_UTILITY_APIS.has(pathname)) return NextResponse.next(); + /** Helper: does the path start with any prefix in a list? */ + function startsWithAny(pathname: string, prefixes: string[]) { + return prefixes.some((p) => pathname.startsWith(p)); + } - if (pathname.startsWith("/api/")) { - return NextResponse.json({ error: "Not available on the temporary utility site" }, { status: 404 }); - } + /** Helper: are we about to redirect to the same URL? */ + function isSameUrl(req: NextRequest, mapped: MapResult) { + const dest = new URL(req.url); + dest.pathname = mapped.pathname; + if (mapped.query) { + for (const [k, v] of Object.entries(mapped.query)) dest.searchParams.set(k, v); + } + return dest.href === req.url; + } - const home = req.nextUrl.clone(); - home.pathname = "/"; - home.search = ""; - return NextResponse.redirect(home); -} + /** Decode JWT exp (seconds since epoch). We don't verify signature here. */ + function jwtExp(token: string): number | null { + try { + const [, payload] = token.split("."); + if (!payload) return null; + const json = JSON.parse(atob(payload.replace(/-/g, "+").replace(/_/g, "/"))); + return typeof json.exp === "number" ? json.exp : null; + } catch { + return null; + } + } -export const config = { - matcher: ["/((?!_next/static|_next/image|favicon.ico|robots.txt|sitemap.xml|images|static).*)"], -}; + /** + * Build redirect to /auth/sign-in?next=. + * Only set reauth=1 (and clear cookies) when opts.reauth === true. + */ + function kickToSignIn(req: NextRequest, opts?: { reauth?: boolean }) { + const wantReauth = !!opts?.reauth; + + const orig = new URL(req.url); + const next = orig.pathname + (orig.search || ""); + + const url = new URL(req.url); + url.pathname = "/auth/sign-in"; + url.search = ""; + if (wantReauth) url.searchParams.set("reauth", "1"); + url.searchParams.set("next", next); + + const res = NextResponse.redirect(url); + + if (wantReauth) { + res.cookies.set("ma_at", "", { maxAge: 0, path: "/" }); + res.cookies.set("ma_v", "", { maxAge: 0, path: "/" }); + } + + return res; + } + + export async function middleware(req: NextRequest) { + const url = req.nextUrl.clone(); + const { pathname } = url; + + // ── -1) Allow only the explicitly configured external webhook. + if (pathname === "/api/webhooks/kofi") { + return NextResponse.next(); + } + + // ── 0) Root must never redirect + if (pathname === "/") return NextResponse.next(); + + // ── 1) Legacy → Portal mapping (before auth gating) + const mapped = legacyMap(pathname); + if (mapped && !isSameUrl(req, mapped)) { + url.pathname = mapped.pathname; + if (mapped.query) { + for (const [k, v] of Object.entries(mapped.query)) url.searchParams.set(k, v); + } + return NextResponse.redirect(url); + } + + // ── 2) Auth gating + const token = req.cookies.get("ma_at")?.value ?? ""; + const isAuthRoute = pathname.startsWith("/auth/"); + const isProtected = !isPublicPath(pathname); + + const forceAuth = + isAuthRoute && + (url.searchParams.get("reauth") === "1" || + url.searchParams.get("force") === "1"); + + if (!token && isProtected) { + return kickToSignIn(req, { reauth: false }); + } + + if (token) { + const exp = jwtExp(token); + const expired = !exp || exp * 1000 <= Date.now(); + + if (isAuthRoute && !expired && !forceAuth) { + url.pathname = "/portal"; + url.search = ""; + return NextResponse.redirect(url); + } + + if (isProtected) { + if (expired) { + return kickToSignIn(req, { reauth: true }); + } + + if (DIRECTUS) { + const nowMinute = Math.floor(Date.now() / 60000).toString(); + const lastValidated = req.cookies.get("ma_v")?.value; + + if (lastValidated !== nowMinute) { + try { + const r = await fetch(`${DIRECTUS}/users/me?fields=id`, { + headers: { + Authorization: `Bearer ${token}`, + Accept: "application/json", + }, + cache: "no-store", + }); + + if (!r.ok) { + return kickToSignIn(req, { reauth: true }); + } + + const res = NextResponse.next(); + res.cookies.set("ma_v", nowMinute, { + path: "/", + httpOnly: false, + sameSite: "lax", + maxAge: 90, + }); + return res; + } catch { + return kickToSignIn(req, { reauth: true }); + } + } + } + } + } + + return NextResponse.next(); + } + + function legacyMap(pathname: string): MapResult | null { + if (pathname === "/" || pathname.startsWith("/portal")) return null; + + const listRules: Array<[RegExp, MapResult]> = [ + [/^\/background-remover\/?$/i, { pathname: "/portal/utilities", query: { t: "background-remover" } }], + [/^\/svgnest\/?$/i, { pathname: "/portal/utilities", query: { t: "svgnest" } }], + [/^\/laser-toolkit\/?$/i, { pathname: "/portal/utilities", query: { t: "laser-toolkit" } }], + [/^\/files\/?$/i, { pathname: "/portal/utilities", query: { t: "files" } }], + [/^\/buying-guide\/?$/i, { pathname: "/portal/buying-guide" }], + [/^\/lasers\/?$/i, { pathname: "/portal/laser-sources" }], + [/^\/projects\/?$/i, { pathname: "/portal/projects" }], + [/^\/my\/rigs\/?$/i, { pathname: "/portal/rigs", query: { t: "my" } }], + ]; + + for (const [re, dest] of listRules) { + if (re.test(pathname)) return dest; + } + + return null; + } + + function isPublicPath(pathname: string): boolean { + if (PUBLIC_PAGES.has(pathname)) return true; + + if ( + pathname.startsWith("/_next/") || + pathname.startsWith("/static/") || + pathname.startsWith("/images/") || + pathname === "/favicon.ico" || + pathname === "/robots.txt" || + pathname === "/sitemap.xml" + ) { + return true; + } + + if (pathname.startsWith("/api/")) { + return startsWithAny(pathname, PUBLIC_API_PREFIXES); + } + + return false; + } + + // Match all except the usual static assets + export const config = { + matcher: ["/((?!_next/static|_next/image|favicon.ico|robots.txt|sitemap.xml|images|static).*)"], + }; diff --git a/directus/README.md b/directus/README.md deleted file mode 100644 index 0a90703..0000000 --- a/directus/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# Directus production reference - -This directory documents how the Next.js application integrates with the production Directus instance. It is evidence for development and review; it is not an automated migration source and must not be applied to production without a separate, reviewed change process. - -## Evidence and authority - -- `schema.yaml` is the fresh schema snapshot collected from production Directus 12.1.1 on 2026-07-10. It is the authoritative schema evidence in this directory for that collection time. -- `reference/` contains immutable, sanitized source evidence collected from the same deployment: deployment inventory, Compose and Nginx summaries, environment-variable names, roles, policies, access assignments, permissions, settings metadata, flows, operations, user-field metadata, and system-table layouts. -- `../app/schema.yaml` is an older Directus 11.12.0 snapshot. It remains useful as historical application evidence, but it is not the current production schema. It must remain in place alongside the current snapshot. -- The Markdown files directly under `directus/` are human-readable interpretations of the application source and raw evidence. When prose conflicts with raw evidence, re-check the evidence and update the prose. -- `env.example` is a names-and-placeholders contract. It contains no production values. - -The exports intentionally exclude users, user-specific access assignments, credentials, sessions, uploaded data, and flow option values. Consequently, a static credential's actual user/role binding and the detailed behavior inside flows cannot be proven from this material. - -## Documents - -- `deployment.md`: production topology and explicitly configured versus unobserved settings. -- `auth-contract.md`: application-to-Directus authentication and account operations. -- `permissions.md`: role, policy, field, filter, validation, and preset matrix. -- `flows.md`: flow and operation graphs, with unresolved behavior called out. -- `schema-differences.md`: structural comparison with `../app/schema.yaml`. -- `integration-testing.md`: proposed disposable integration-test environment. - -## Refresh procedure - -1. Collect from the running production instance without changing it. -2. Sanitize the result before it enters the repository. Exclude secret values, credentials, user rows, email addresses, sessions, cookies, uploaded files, and sensitive flow options. -3. Store a new schema snapshot under `snapshots/`, using a date or version, for example `snapshots/schema-directus-12.1.1-2026-07-10.yaml`. Do not overwrite `schema.yaml` or `../app/schema.yaml` as part of a historical refresh. -4. Store supporting sanitized exports in a correspondingly dated reference location, or clearly record which snapshot they describe. -5. Record the Directus version, database vendor, collection time, and checksums. -6. Compare the new snapshot to the preceding production snapshot and update the human-readable documents only from observed differences. -7. Run a sensitive-data scan and `git diff --check`, then review the complete diff before committing. - -The current collection process is described only by its outputs; the exact export commands are not present. That part of the refresh procedure is therefore **unresolved** and should be documented when a repeatable sanitized collection script is added. diff --git a/directus/auth-contract.md b/directus/auth-contract.md deleted file mode 100644 index 19c05f7..0000000 --- a/directus/auth-contract.md +++ /dev/null @@ -1,37 +0,0 @@ -# Authentication and account contract - -Status labels mean: - -- **Verified**: directly supported by application source plus the sanitized production exports. -- **Inferred**: the source intends the behavior, but a runtime binding, omitted value, or live test is missing. -- **Unresolved**: the required implementation or evidence is absent. - -The app uses a Directus access token as a user bearer, normally stored in the HTTP-only `ma_at` cookie. It stores a refresh token in HTTP-only `ma_rt` and a five-minute recent-authentication marker in HTTP-only `ma_ra`. In production these cookies are `Secure`, `SameSite=Lax`, and path `/` where set by the current auth routes. - -## Operation matrix - -| Operation | Application route/module | Directus endpoint | Credential and required permission | Success and important failures | Status | -| --- | --- | --- | --- | --- | --- | -| Signup | `POST /api/auth/register`; `app/app/api/auth/register/route.ts` | `GET /users` duplicate lookup; `GET /roles` Users-role lookup; `POST /users`; then `POST /auth/login` | The canonical static server credential is `DIRECTUS_TOKEN_ADMIN_REGISTER`, with legacy service/admin names as fallbacks. It must represent the Registration Bot role/policy or an equivalent identity. Registration policy grants the required role read and user read/create permissions. | Validates all fields, email shape, password length >=8, and confirmation. Resolves the `Users` role, creates an active account with email/username/password, and performs email-based auto-login. Successful login sets `ma_at` and possibly `ma_rt`. Permission/configuration failures are logged server-side and returned as generic temporary-unavailable responses. | Application flow, build, mocked request contract, and policy are **verified**; production static credential-to-role binding still requires deployment verification because users/values were omitted. | -| Duplicate-user check | Same route | `GET /users?filter[...]&fields=id&limit=1` | Registration policy requires `directus_users.read` for `id`, which is exported. | A returned row or create-time uniqueness conflict produces the same generic email-or-username 409. A failed lookup stops signup with a generic 503 instead of continuing with uncertain permissions. | **Verified** source and mocked request behavior; production credential capability requires a live test. | -| Email login | `POST /api/auth/login`; `app/app/api/auth/login/route.ts` | `POST /auth/login` | No bearer is supplied; local email/password credentials are sent to Directus. No collection permission is used for the auth endpoint itself. | On success sets one-hour `ma_at`, optional 30-day `ma_rt`, and optionally five-minute `ma_ra` for a reauth request. Authentication failures are deliberately collapsed to a generic 401. App IP limiter allows 20 attempts/minute per process. | **Verified** implementation; live Directus local-auth behavior is **inferred** pending integration tests. | -| Username login | Same login route; `emailForUsername()` in `app/lib/directus.ts` | Static-token `GET /users` lookup, then `POST /auth/login` with resolved email | The same registration credential used by signup must read `directus_users.username,email`; Registration policy exports those fields. | Missing username gives generic 401. Lookup errors give 503. Resolved email follows email-login behavior. The shared helper accepts `DIRECTUS_URL` with `NEXT_PUBLIC_API_BASE_URL` fallback. | Source, build, required policy, and mocked request contract are **verified**; credential binding and end-to-end production success require a deployment test. | -| Current user | `GET /api/account`, `GET /api/me`, proxy `/api/dx/users/me`, middleware; relevant modules under `app/app/api/` and `app/middleware.ts` | `GET /users/me` with varying field lists | Current user's access token. Users Self Access policy permits own-row read of `id,username,first_name,last_name,email,password,avatar,location,title,description,tags,language,tfa_secret,email_notifications`; Users policy additionally permits public-like `id,username,first_name,avatar,location`. | Returns requested profile fields if field permissions allow. Middleware checks `id` at most once per minute and redirects to reauth on failure. `/api/me` requests `display_name`, which is not present in the exported custom user-field metadata or allowed-field lists, so that field's behavior is unresolved. | Own-row permissions and route calls are **verified**. | -| Token refresh | Token storage occurs in register/login and `app/lib/auth-cookies.ts` | Expected Directus endpoint would be `/auth/refresh`, but no call exists | `ma_rt` is stored, but no application route consumes it. | There is no implemented refresh behavior. Expired/invalid `ma_at` causes middleware to clear `ma_at`/`ma_v` and redirect to sign-in. | **Verified missing implementation**. | -| Logout | `POST` or `GET /api/auth/logout`; `app/app/api/auth/logout/route.ts` | None | No Directus call and no credential required by the handler. | Expires only `ma_at`. It does not revoke the Directus session and does not clear `ma_rt`, `ma_ra`, or `ma_v`. | **Verified**. | -| Password change | `POST`/`PATCH /api/account/password`; `app/app/api/account/password/route.ts` | `GET /users/me`; optionally static-token `GET /users`; `POST /auth/login`; `PATCH /users/me` | Current user token needs own-row read and `directus_users.update` for `password`; Users Self Access grants both. Username verification additionally needs Registration read permission. | Requires current/new values and an eight-character new password. Verifies the current password through local login, then patches only `password`. External-provider rejection depends on reading `provider`, but `provider` is not in the Users Self Access read fields, so this guard may not receive the field. Successful change does not rotate or clear existing app tokens. | Main path and permissions **verified**; provider guard and session effects **unresolved**. | -| Profile changes | `PATCH /api/account` and `PATCH /api/account/profile`; UI primarily uses the latter | `PATCH /users/me` | Current user token. Users Self Access update permits `first_name,last_name,email,avatar,location,password`; it does not permit `username`. | First/last name and location update directly. Email requires `ma_ra=1`; the marker is cleared after a successful sensitive update. UI always includes email in its payload, so its normal save path requests reauthentication even when email is unchanged. Username is classified sensitive but is never added to the patch payload and is not update-permitted. | **Verified**. | -| Avatar change | `POST /api/account/avatar`; `app/app/api/account/avatar/route.ts` | `POST /files`, then `PATCH /users/me` | Current user token. Users policy permits `directus_files.create` on all fields; Users Self Access permits own `avatar` update. | Requires a configured avatar folder, <=10 MB JPEG/PNG/WebP/GIF, and recognized signature. Uploads file then links its ID. If linking fails, the uploaded file is not cleaned up. | **Verified** except folder value and folder-specific enforcement, which are **unresolved**. | -| Reauthentication | `POST /api/auth/reconfirm`; `app/app/api/auth/reconfirm/route.ts`, or login with `reauth=true` | Optional static-token `GET /users`, then `POST /auth/login` | Local credentials; username form also requires Registration `directus_users.read`. | Successful reconfirm replaces `ma_at` and sets `ma_ra` for five minutes. It does not set/replace `ma_rt`. Login's reauth path sets `ma_ra` alongside normal token cookies. Failures are generic 401. | **Verified** implementation; end-to-end username path remains unresolved. | - -## Permission identity model - -The export verifies these role-to-policy assignments: - -- Registration Bot role -> Registration policy. -- Users role -> Users Self Access policy and Users policy, in that sort order. -- Administrator role -> Administrator policy. -- Supporter Bot role -> Supporter policy. -- Public policy has a role-less access assignment. - -Because user rows and user-specific access assignments were intentionally omitted, the evidence cannot prove which identity owns any configured static credential. A deployment test must verify each credential's effective policy rather than relying on its environment-variable name. diff --git a/directus/deployment.md b/directus/deployment.md deleted file mode 100644 index 085606f..0000000 --- a/directus/deployment.md +++ /dev/null @@ -1,54 +0,0 @@ -# Production deployment - -Unless marked **inferred** or **unresolved**, facts below are verified by `reference/deployment-inventory.md`, `reference/docker-compose.sanitized.yml`, `reference/environment-variable-names.txt`, `reference/nginx-summary.txt`, or `reference/exports/settings.json`. - -## Runtime and topology - -| Item | Production observation | -| --- | --- | -| Directus version | 12.1.1 | -| Container image | `directus/directus:latest` | -| Compose service and container | `directus` | -| Restart policy | `unless-stopped` | -| Database client | MySQL; host, database, and credential values were intentionally omitted | -| Public URL | `https://forms.lasereverything.net` | -| Container port | Directus listens on 8055; Compose binds it to host loopback `127.0.0.1:8056` | -| Networks | Private `directus_net` bridge with IPv4/IPv6 subnets, plus external `backend_net` | -| Upload mount | Host `./uploads` to `/directus/uploads`, read/write | -| Extension mount | Host `./extensions` to `/directus/extensions`, read/write | - -Production currently uses the mutable `directus/directus:latest` image tag. This document records that fact and does not change it. The running version was separately observed as 12.1.1, so a future container recreation could select a different image unless deployment controls outside the supplied evidence pin it. - -The extensions directory is mounted, but its contents were not exported. Whether custom extensions are installed or active is **unresolved**. - -## Reverse proxy - -Nginx terminates TLS for `forms.lasereverything.net` and proxies to host loopback port 8056. It forwards the original host, client IP, forwarding chain, scheme, and WebSocket upgrade headers. Proxy read and send timeouts are 300 seconds. The request body limit is 100 MB. TLS 1.2 and 1.3 are enabled and HSTS is emitted for one year with subdomains. - -The sanitized Nginx summary shows reflected-origin CORS response headers with credentials enabled and permits the common API methods and request headers. Directus-specific CORS environment variables are not explicitly set. The exact Nginx origin allow-list or surrounding condition that governs the reflected origin was not included, so whether arbitrary origins are accepted is **unresolved**. - -## Mail - -Directus is explicitly configured for SMTP transport. The observed categories are sender, SMTP host, port, secure mode, username, and password. Port 465 and secure mode `true` are verified; sender, host, and credential values were omitted. Delivery behavior was not tested. - -The Next.js application separately references its own SMTP variable names for supporter-claim mail. Those names are documented in `env.example`; whether they point to the same SMTP service is **unresolved**. - -## Authentication and security configuration - -| Area | Explicit production evidence | Default or unresolved behavior | -| --- | --- | --- | -| Bootstrap administrator | `ADMIN_EMAIL` and `ADMIN_PASSWORD` names are present | Values and whether bootstrap variables still affect an initialized database are intentionally unknown | -| Signing/encryption material | `KEY` and `SECRET` names are present | Values omitted | -| Public registration | No registration environment variables are explicit; settings export has `public_registration=0` | Public `/users/register` is disabled; the app instead uses a privileged `/users` create flow | -| Registration verification | Settings export has `public_registration_verify_email=0` and no public registration role/filter | Inactive while public registration is disabled | -| Auth providers | `AUTH_PROVIDERS` is not explicitly set | Available/default providers were not exported; application code assumes local email/password auth | -| Login-attempt setting | Column layout reports a database default of 25 | The live `auth_login_attempts` value was not exported; the app also applies an in-memory 20-per-minute IP limit | -| Password policy | Column exists and defaults to null in the exported table layout | The live setting was not exported; the app enforces only an eight-character minimum on registration/change | -| CORS | No Directus CORS environment variables are explicit | Nginx adds CORS headers; effective origin policy is unresolved as noted above | -| Cookies | No Directus cookie environment variables are explicit | The app stores Directus tokens in its own `ma_at` and `ma_rt` cookies; effective Directus defaults are not proven here | -| TFA | All exported policies have `enforce_tfa=0` | Per-user TFA state was intentionally not exported | -| Policy IP restrictions | All exported policies have `ip_access=null` | No policy-level IP restriction is evidenced | -| Admin/app access | Administrator policy has both; all other exported policies have neither | Verified from policy export | -| MCP/AI/new 12.x settings | System-table columns exist | Live values were not included in the sanitized settings export and must not be inferred from column defaults | - -Environment absence proves only that a setting was not explicitly supplied to the collected container. It does not prove behavior controlled by the database, an extension, another configuration source, or a Directus default that may vary by version. diff --git a/directus/env.example b/directus/env.example deleted file mode 100644 index 14449cf..0000000 --- a/directus/env.example +++ /dev/null @@ -1,71 +0,0 @@ -# Names-and-placeholders contract only. Never place production values in this file. -# Classification: public-build = embedded/exposed by Next.js; server = Next.js server only; -# deployment = Directus container/bootstrap only. - -# Shared Directus location -NEXT_PUBLIC_API_BASE_URL= # Next.js; public-build -NEXT_PUBLIC_ASSET_URL= # Next.js; public-build -DIRECTUS_URL= # Next.js; server - -# Next.js privileged Directus identities -DIRECTUS_TOKEN_ADMIN_REGISTER= # Next.js; server -DIRECTUS_SERVICE_TOKEN= # Next.js; server -DIRECTUS_ADMIN_TOKEN= # Next.js; server -DIRECTUS_TOKEN_ADMIN_SUPPORTER= # Next.js and backfill script; server -DIRECTUS_TOKEN_SUBMIT= # Next.js; server - -# Next.js Directus role, collection, folder, and upload configuration -DIRECTUS_ROLE_MEMBER_NAME= # Next.js helper; server -DIRECTUS_PROJECTS_COLLECTION= # Next.js helper; server -DIRECTUS_AVATAR_FOLDER_ID= # Next.js; server -DX_FOLDER_FIBER_PHOTOS= # Next.js; server -DX_FOLDER_FIBER_SCREENS= # Next.js; server -DX_FOLDER_GALVO_PHOTOS= # Next.js; server -DX_FOLDER_GALVO_SCREENS= # Next.js; server -DX_FOLDER_GANTRY_PHOTOS= # Next.js; server -DX_FOLDER_GANTRY_SCREENS= # Next.js; server -DX_FOLDER_UV_PHOTOS= # Next.js; server -DX_FOLDER_UV_SCREENS= # Next.js; server -FILE_MAX_MB= # Next.js project uploads; server -SETTINGS_IMAGE_MAX_MB= # Next.js settings uploads; server - -# Directus container identity and cryptographic configuration -KEY= # Directus; deployment -SECRET= # Directus; deployment -PUBLIC_URL= # Directus; deployment -ADMIN_EMAIL= # Directus bootstrap; deployment -ADMIN_PASSWORD= # Directus bootstrap; deployment - -# Directus database -DB_CLIENT=mysql # Directus; deployment -DB_HOST= # Directus; deployment -DB_PORT= # Directus; deployment -DB_DATABASE= # Directus; deployment -DB_USER= # Directus; deployment -DB_PASSWORD= # Directus; deployment -DB_FILENAME= # Directus environment name observed; deployment - -# Directus mail -EMAIL_TRANSPORT=smtp # Directus; deployment -EMAIL_FROM= # Directus and Next.js supporter mail; deployment/server -EMAIL_SMTP_HOST= # Directus; deployment -EMAIL_SMTP_PORT=465 # Directus; deployment -EMAIL_SMTP_SECURE=true # Directus; deployment -EMAIL_SMTP_USER= # Directus; deployment -EMAIL_SMTP_PASSWORD= # Directus; deployment - -# Next.js supporter mail uses a separate naming convention -SMTP_HOST= # Next.js; server -SMTP_PORT= # Next.js; server -SMTP_SECURE= # Next.js; server -SMTP_USER= # Next.js; server -SMTP_PASS= # Next.js; server - -# Runtime classification -NODE_ENV= # Directus and Next.js; deployment/server - -# The production Directus environment also contains runtime-provided NODE_VERSION, -# NPM_CONFIG_UPDATE_NOTIFIER, PATH, and YARN_VERSION. They are not application -# integration configuration and therefore have no configurable placeholders here. -# AUTH_PROVIDERS, Directus CORS/cookie variables, and public-registration variables -# were explicitly reported as not set and are intentionally not implied here. diff --git a/directus/flows.md b/directus/flows.md deleted file mode 100644 index 251e18f..0000000 --- a/directus/flows.md +++ /dev/null @@ -1,47 +0,0 @@ -# Directus flows - -Two active event-triggered flows were exported. Both run with accountability `all`. The export deliberately replaces every operation's options with only `options_keys`; code, filters, collections, queries, keys, error messages, status codes, and event scopes are not available. The graphs below are therefore structural, not behavioral proofs. - -## `unique_key_claims` - -Description: “A flow for setting a unique key for each claim to prevent duplicates.” - -```text -Run Script (exec_5dli5) - resolve -> Read Data (item_read_e4myo) - resolve -> Condition (condition_s458i) - resolve -> Throw Error (throw_error_22tpm) - reject -> end - reject -> end - reject -> end -``` - -- Trigger: event. -- Flow option keys: `type`, `scope`, `collections`, `return`. -- Script option key: `code`. -- Read option keys: `permissions`, `emitEvents`, `collection`, `query`. -- Condition option key: `filter`. -- Error option keys: `status`, `message`, `code`. - -**Unresolved:** the triggering collection/event, how the unique key is calculated, what data is queried, the condition's polarity, error response, and whether the graph handles races atomically. The description suggests duplicate prevention, but omitted options prevent verification. - -## `claim_auto_assign` - -Description: “Assigns a claimant to owner and rejects other pending claims.” - -```text -Condition (condition_dl7cj) - resolve -> Read Data (item_read_oyges) -> end - reject -> end -``` - -- Trigger: event. -- Flow option keys: `type`, `scope`, `collections`. -- Condition option key: `filter`. -- Read option keys: `permissions`, `emitEvents`, `collection`, `key`. - -**Unresolved:** the triggering collection/event, condition, item key, read collection, and any mutation that performs the assignment or rejection. The exported graph contains only a condition followed by an item-read operation; no update operation is visible. The description's assignment behavior therefore cannot be reconciled with the sanitized graph without the omitted options or additional extension/hook behavior. - -## Refreshing flow documentation - -A future sanitized export should retain non-sensitive structural option values such as event type, collection name, and graph routing when safe, while continuing to remove credentials, destination addresses, headers, code containing secrets, and personal data. Each retained value must be reviewed rather than copied wholesale. diff --git a/directus/integration-testing.md b/directus/integration-testing.md deleted file mode 100644 index 72c2feb..0000000 --- a/directus/integration-testing.md +++ /dev/null @@ -1,61 +0,0 @@ -# Proposed disposable Directus integration testing - -No tests described here have been implemented or run. This is a future design that must never target production. - -## Environment - -Use a dedicated Compose project with: - -- A version-pinned Directus image matching production (currently 12.1.1), not the production `latest` deployment reference. -- A disposable MySQL database matching the production database family. -- Ephemeral uploads and a test-only extensions mount populated only when production extensions have been reviewed and are needed. -- Random per-run signing secrets and test-only static credentials. -- A loopback-only port and an unmistakable test public URL. -- Mail captured by a local sink; no external delivery. -- No production database, network, credentials, host mounts, or URLs. - -Provision schema and access configuration from reviewed test fixtures derived from `schema.yaml` and the sanitized role/policy exports. Do not apply the production snapshot automatically until a reviewed fixture process accounts for system collections and version compatibility. - -## Test identities - -Create only synthetic records: - -- Registration Bot with Registration policy and a test-only static credential. -- Supporter Bot with Supporter policy if cross-feature checks need it. -- A normal Users-role account with both Users policies. -- An administrator used only for fixture setup/teardown, never by application requests. - -Have the test harness assert each identity's effective permissions before auth scenarios. This catches a valid credential attached to the wrong role/policy. - -## Required scenarios - -| Area | Cases and assertions | -| --- | --- | -| Registration | Valid account creates an active, login-capable Users-role account; app cookies have expected flags; omitted/default role behavior is explicit; whitespace in passwords is preserved. | -| Duplicate accounts | Duplicate email and duplicate username return the same non-enumerating conflict; mixed case behavior is recorded; failed pre-check cannot turn into a permission disclosure. | -| Email login | Correct credentials succeed; incorrect password and unknown account have indistinguishable responses; rate-limit behavior is isolated per test process. | -| Username login | Registration credential resolves username using only permitted fields; correct credentials succeed; unknown username is generic; missing/mis-scoped credential fails clearly without exposing Directus internals. | -| Current user | `/users/me` and application wrappers return only expected fields; another user's private fields cannot be queried; middleware validation accepts a valid token and rejects expired/revoked tokens. | -| Refresh | Once implemented, valid refresh rotates/returns expected tokens and cookies; expired/revoked/reused tokens fail; the endpoint never accepts an access token in place of refresh. Until then, assert/document that no application refresh endpoint exists. | -| Logout | Once strengthened, clears all auth state and invokes Directus revocation as designed. Until then, characterize the current local-only `ma_at` clearing and retained refresh cookie as a known failing contract. | -| Profile changes | Own first/last name and location succeed; email requires recent reauth; username update is denied; other-user updates are denied; the recent-auth marker expires and is single-use. | -| Password changes | Correct current password succeeds; incorrect current password fails; minimum length is enforced; username identifier path works; external-provider behavior is tested if enabled; existing token/session behavior is explicitly asserted. | -| Avatar changes | Allowed image succeeds into the test folder and links to self; bad type/signature/size fails; other-user linking and unauthorized folder behavior fail; partial upload cleanup behavior is characterized. | -| Least privilege | Registration identity can read only required role/user fields and create only permitted user fields; cannot update/delete users, read unrelated collections, administer settings, or access the Data Studio. Test whether exported sensitive read fields can be narrowed. | - -## Permission-focused negative tests - -- Remove Registration `directus_users.read`: username resolution and duplicate checks should fail predictably while the effect on create is separately asserted. -- Remove Registration `directus_users.create`: signup must fail without leaking permission internals. -- Attach the static credential to the wrong role to prove deployment validation catches it. -- Attempt to override role, status, policy, ID, and authentication data through the public app payload; the server must ignore or reject every override. -- Verify Users updates are limited to `id=$CURRENT_USER` and permitted fields. -- Exercise the exported `user_rigs` `%CURRENT_USER` update filter and record actual Directus 12.1.1 behavior. - -## Harness and lifecycle - -Run tests from outside the Next.js process against its HTTP interface, with a smaller Directus-level suite for permission diagnostics. Wait for both MySQL and Directus health, seed fixtures idempotently, run serial auth tests where rate limiting or cookie state matters, then destroy containers and volumes. - -Log method, path template, status, Directus error code, and synthetic fixture ID only. Redact credentials and cookie values at the logging boundary. Never snapshot response bodies containing private profile fields. - -CI should fail if the configured Directus version differs from the fixture version, a required permission assertion changes, a sensitive environment name lacks a test placeholder, or teardown leaves the disposable project running. diff --git a/directus/permissions.md b/directus/permissions.md deleted file mode 100644 index 84321b1..0000000 --- a/directus/permissions.md +++ /dev/null @@ -1,90 +0,0 @@ -# Roles, policies, and permissions - -This is a readable rendering of `reference/exports/roles.json`, `policies.json`, `access.json`, and `permissions.json`. `C/R/U/D` mean create/read/update/delete. An absent action means no permission row was exported; it does not establish permissions inherited from an omitted user-specific policy. - -## Role and policy assignments - -| Role/access subject | Assigned policy | Admin access | Data Studio app access | Enforced TFA | IP restriction | -| --- | --- | --- | --- | --- | --- | -| Administrator | Administrator | Yes | Yes | No | None | -| Registration Bot | Registration | No | No | No | None | -| Supporter Bot | Supporter | No | No | No | None | -| Users | Users Self Access (sort 1), Users (sort 2) | No | No | No | None | -| Public/role-less | Public | No | No | No | None | - -No user-specific access assignments appear in the sanitized export because user data was intentionally omitted. The Administrator policy's collection permissions are implicit in `admin_access`; no individual rows were exported for it. - -## High-level matrix - -| Collection group | Public | Users | Users Self Access | Registration | Supporter | -| --- | --- | --- | --- | --- | --- | -| Public catalog/content collections listed below | R | R | - | - | - | -| `directus_fields` | R: `id,collection,field` | R: metadata fields listed below | - | - | - | -| `directus_files` | R all fields | C/R all fields | - | - | - | -| `directus_users` | - | R public profile fields | own-row R/U | R/C broad registration fields | - | -| Projects and settings collections | R | C/R/U/D | - | - | - | -| `projects_files` | R | C/R | - | - | - | -| `user_claims` | - | C/R/U/D with presets and own/pending filters | - | - | - | -| `user_rigs` | - | C/R/U/D with owner controls | - | - | - | -| `user_rig_type` | - | C/R | - | - | - | -| `user_memberships` | - | - | - | - | C/R/U all fields | -| `directus_roles` | - | - | - | R selected role fields | - | - -## Public policy - -Unrestricted read, all fields, is exported for: - -`bg_cat`, `bg_entries`, `bg_sub_cat`, `directus_files`, `hazard_danger`, `hazard_severity`, `hazard_source`, `hazard_tags`, `laser_focus_lens`, `laser_focus_lens_config`, `laser_focus_lens_diameter`, `laser_scan_lens`, `laser_scan_lens_apt`, `laser_scan_lens_config`, `laser_scan_lens_exp`, `laser_software`, `laser_source`, `material`, `material_cat`, `material_coating`, `material_coating_hazard_tags`, `material_color`, `material_hazard_tags`, `material_opacity`, `material_status`, `projects`, `projects_files`, `settings_co2gal`, `settings_co2gan`, `settings_fiber`, and `settings_uv`. - -Public can also read `directus_fields`, restricted to `field,collection,id`. There are no exported public create, update, or delete permissions. - -## Users policy - -Users have unrestricted, all-field read for every public content collection above. Additional or expanded permissions are: - -| Collection | Actions | Row filter | Fields/presets | -| --- | --- | --- | --- | -| `directus_fields` | R | None | `id,collection,field,special,interface,options,readonly,hidden,required,sort,width,group,note` | -| `directus_files` | C/R | None | All fields; no folder/owner filter or preset exported | -| `directus_users` | R | None | `username,first_name,avatar,location,id` | -| `projects` | C/R/U/D | U/D require `owner=$CURRENT_USER`; C/R unrestricted | All fields; C presets `owner` and `uploader` to `$CURRENT_USER` | -| `projects_files` | C/R | None | All fields; no ownership filter exported | -| `settings_co2gal` | C/R/U/D | U/D require `owner=$CURRENT_USER`; C/R unrestricted | All fields; C presets owner/uploader to current user | -| `settings_co2gan` | C/R/U/D | Same as above | Same as above | -| `settings_fiber` | C/R/U/D | Same as above | Same as above | -| `settings_uv` | C/R/U/D | U/D require `owner=$CURRENT_USER`; C/R unrestricted | C/R/U all fields and owner/uploader presets on C; D has `fields=null` in the export | -| `user_claims` | C/R/U/D | R: claimant is current user. U/D: claimant is current user and status is `pending`. C unrestricted. | C fields omit `claimant` and `status` but preset them to current user/`pending`; R selected fields; U only `note`; D `fields=null` | -| `user_rigs` | C/R/U/D | R/D require owner current user. U filter contains `owner _eq "%CURRENT_USER"` exactly as exported. C unrestricted. | All fields; C presets owner to `$CURRENT_USER` | -| `user_rig_type` | C/R | None | All fields | - -The `%CURRENT_USER` update filter on `user_rigs` differs from the `$CURRENT_USER` token used everywhere else. This is a **verified exported value** and is likely ineffective, but its Directus runtime interpretation has not been tested. - -No validation rules are present on any exported Users permission row. - -## Users Self Access policy - -Both rows require `id=$CURRENT_USER`: - -- Read fields: `username,last_name,first_name,email,password,avatar,location,title,description,tags,language,tfa_secret,email_notifications,id`. -- Update fields: `first_name,last_name,email,password,avatar,location`. - -There are no presets or validation rules. Username is readable but not updateable. The exported read list includes sensitive field names such as `password` and `tfa_secret`; Directus may suppress stored secret values independently, but that behavior is **not proven by this export** and should be tested. - -## Registration policy - -- `directus_users.create`: unrestricted rows; fields `email,username,password,role,status,auth_data,first_name,last_name,avatar,id`. -- `directus_users.read`: unrestricted rows; a broad field list including `username,email,id,password,auth_data,token,policies,role,status,tfa_secret` and UI/theme fields. -- `directus_roles.read`: unrestricted rows; fields `id,name,icon,description,parent,children`. - -No validation rules or presets are exported. Least privilege therefore depends on the static credential being held only by the server and the application strictly controlling submitted fields. The application registration route currently uses email, username, password, and optionally role; username-to-email login resolution uses read access. - -## Supporter policy - -`user_memberships` has unrestricted create, read, and update permissions on all fields. No delete row, row filters, validation rules, or presets are exported. The policy is assigned to Supporter Bot. - -## Validation and preset summary - -- Every exported `validation` value is null. -- Presets exist only for Users creates on projects/settings (`owner`/`uploader`), user claims (`claimant`/`pending`), and user rigs (`owner`). -- Row filters exist only for Users updates/deletes and selected reads described above, plus own-row filters in Users Self Access. -- Null permissions mean no row filter in these exports; null fields on delete rows are preserved as observed rather than interpreted as all/no fields. diff --git a/directus/reference/deployment-inventory.md b/directus/reference/deployment-inventory.md deleted file mode 100644 index 68dfabd..0000000 --- a/directus/reference/deployment-inventory.md +++ /dev/null @@ -1,29 +0,0 @@ -# Directus Deployment Inventory - -Generated from the running production container. - -- Directus version: 12.1.1 -- Container image: directus/directus:latest -- Public URL: https://forms.lasereverything.net -- Host binding: 127.0.0.1:8056 -- Database client: mysql -- Database service and database names: intentionally omitted -- Email transport: smtp -- SMTP port: 465 -- SMTP secure mode: true -- Explicit AUTH_PROVIDERS variable: not set -- Explicit CORS variables: not set -- Explicit cookie variables: not set -- Explicit registration environment variables: not set - -## Persistent mounts - -- `/directus/extensions` is mounted from the host, mode `rw` -- `/directus/uploads` is mounted from the host, mode `rw` - -## Notes - -- Secret values are intentionally excluded. -- Registration behavior also depends on fields stored in the Directus settings table. -- Role, policy, and permission exports are stored separately. -- Flow option values are excluded because they may contain credentials, headers, addresses, or other sensitive configuration. diff --git a/directus/reference/docker-compose.sanitized.yml b/directus/reference/docker-compose.sanitized.yml deleted file mode 100644 index dde2e97..0000000 --- a/directus/reference/docker-compose.sanitized.yml +++ /dev/null @@ -1,28 +0,0 @@ -services: - directus: - image: directus/directus:latest - container_name: directus - ports: - - "127.0.0.1:8056:8055" - env_file: - - .env - volumes: - - ./uploads:/directus/uploads - - ./extensions:/directus/extensions - networks: - - default - - backend_net - restart: unless-stopped - -networks: - default: - name: directus_net - driver: bridge - enable_ipv6: true - ipam: - config: - - subnet: 10.40.0.0/16 - - subnet: fd00:40::/64 - backend_net: - external: true - diff --git a/directus/reference/environment-variable-names.txt b/directus/reference/environment-variable-names.txt deleted file mode 100644 index c0e194d..0000000 --- a/directus/reference/environment-variable-names.txt +++ /dev/null @@ -1,24 +0,0 @@ -ADMIN_EMAIL -ADMIN_PASSWORD -DB_CLIENT -DB_DATABASE -DB_FILENAME -DB_HOST -DB_PASSWORD -DB_PORT -DB_USER -EMAIL_FROM -EMAIL_SMTP_HOST -EMAIL_SMTP_PASSWORD -EMAIL_SMTP_PORT -EMAIL_SMTP_SECURE -EMAIL_SMTP_USER -EMAIL_TRANSPORT -KEY -NODE_ENV -NODE_VERSION -NPM_CONFIG_UPDATE_NOTIFIER -PATH -PUBLIC_URL -SECRET -YARN_VERSION diff --git a/directus/reference/exports/access.json b/directus/reference/exports/access.json deleted file mode 100644 index b9e1940..0000000 --- a/directus/reference/exports/access.json +++ /dev/null @@ -1,44 +0,0 @@ -[ - { - "id": "45b5000f-f495-4940-935a-d4bf2e409844", - "role": "a6d3c757-a96b-4f0c-b96b-a6109d60a7ba", - "policy": "93fc7a9e-16de-45d4-89b1-9fa129e81442", - "sort": null, - "user": null - }, - { - "id": "2ddbc9da-e0f5-4dff-a952-c3d7586ab706", - "role": "296a28bc-60ab-4251-8bef-27f6dfb67948", - "policy": "80b3902c-06e6-480c-9d29-d2a46552f60e", - "sort": 1, - "user": null - }, - { - "id": "767277dd-3b08-4d72-9bde-437af91e1d88", - "role": "a2a695be-88f9-4948-b2a4-e0e22b01b32e", - "policy": "2e4acc56-7f7e-4a10-9775-1c0dd9f47ded", - "sort": 1, - "user": null - }, - { - "id": "abfa5434-1ace-4e1f-9a93-7d84aabb0a95", - "role": "00e518e3-75b3-4c6f-b57d-51a4f1af4781", - "policy": "494e10a0-03ec-40b9-a7a5-c3a1e2b95001", - "sort": 1, - "user": null - }, - { - "id": "c1480ea2-ca4d-46c9-8034-09b76d0a41cf", - "role": null, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "sort": 1, - "user": null - }, - { - "id": "cf8e40bd-3fbe-4df5-a845-01802a3e7e1c", - "role": "296a28bc-60ab-4251-8bef-27f6dfb67948", - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "sort": 2, - "user": null - } -] diff --git a/directus/reference/exports/directus-user-fields.json b/directus/reference/exports/directus-user-fields.json deleted file mode 100644 index e257da7..0000000 --- a/directus/reference/exports/directus-user-fields.json +++ /dev/null @@ -1,19 +0,0 @@ -[ - { - "field": "username", - "special": null, - "interface": "input", - "options": null, - "display": "raw", - "display_options": null, - "readonly": 0, - "hidden": 0, - "required": 1, - "sort": 1, - "width": "full", - "note": null, - "conditions": null, - "validation": null, - "validation_message": null - } -] diff --git a/directus/reference/exports/flows.json b/directus/reference/exports/flows.json deleted file mode 100644 index 02deaef..0000000 --- a/directus/reference/exports/flows.json +++ /dev/null @@ -1,35 +0,0 @@ -[ - { - "id": "fdc2d675-e365-4431-9cd0-27e571c89e04", - "name": "claim_auto_assign", - "icon": "bolt", - "color": null, - "description": "Assigns a claimant to owner and rejects other pending claims.", - "status": "active", - "trigger": "event", - "accountability": "all", - "options_keys": [ - "type", - "scope", - "collections" - ], - "root_operation": "e19723a6-e75c-4bc8-92aa-be06bb0528af" - }, - { - "id": "99cc3ea5-3ab7-431f-a4f6-ce4e7677b092", - "name": "unique_key_claims", - "icon": "bolt", - "color": null, - "description": "A flow for setting a unique key for each claim to prevent duplicates.", - "status": "active", - "trigger": "event", - "accountability": "all", - "options_keys": [ - "type", - "scope", - "collections", - "return" - ], - "root_operation": "2245466f-8178-4e5c-b058-819eb421de47" - } -] diff --git a/directus/reference/exports/operations.json b/directus/reference/exports/operations.json deleted file mode 100644 index f6ebdcd..0000000 --- a/directus/reference/exports/operations.json +++ /dev/null @@ -1,94 +0,0 @@ -[ - { - "id": "03c6582f-800d-4e94-9fea-f77a9ea5e3aa", - "name": "Condition", - "key": "condition_s458i", - "type": "condition", - "position_x": 55, - "position_y": 1, - "resolve": "d4266993-ceae-452a-9b7d-664c11bf1013", - "reject": null, - "flow": "99cc3ea5-3ab7-431f-a4f6-ce4e7677b092", - "options_keys": [ - "filter" - ] - }, - { - "id": "cb7101fc-e2c5-4cfc-b1d6-486ac70d286f", - "name": "Read Data", - "key": "item_read_e4myo", - "type": "item-read", - "position_x": 37, - "position_y": 1, - "resolve": "03c6582f-800d-4e94-9fea-f77a9ea5e3aa", - "reject": null, - "flow": "99cc3ea5-3ab7-431f-a4f6-ce4e7677b092", - "options_keys": [ - "permissions", - "emitEvents", - "collection", - "query" - ] - }, - { - "id": "2245466f-8178-4e5c-b058-819eb421de47", - "name": "Run Script", - "key": "exec_5dli5", - "type": "exec", - "position_x": 19, - "position_y": 1, - "resolve": "cb7101fc-e2c5-4cfc-b1d6-486ac70d286f", - "reject": null, - "flow": "99cc3ea5-3ab7-431f-a4f6-ce4e7677b092", - "options_keys": [ - "code" - ] - }, - { - "id": "d4266993-ceae-452a-9b7d-664c11bf1013", - "name": "Throw Error", - "key": "throw_error_22tpm", - "type": "throw-error", - "position_x": 73, - "position_y": 1, - "resolve": null, - "reject": null, - "flow": "99cc3ea5-3ab7-431f-a4f6-ce4e7677b092", - "options_keys": [ - "status", - "message", - "code" - ] - }, - { - "id": "e19723a6-e75c-4bc8-92aa-be06bb0528af", - "name": "Condition", - "key": "condition_dl7cj", - "type": "condition", - "position_x": 19, - "position_y": 1, - "resolve": "ebd0e644-1be0-4200-89c4-844b06c7d788", - "reject": null, - "flow": "fdc2d675-e365-4431-9cd0-27e571c89e04", - "options_keys": [ - "filter" - ] - }, - { - "id": "ebd0e644-1be0-4200-89c4-844b06c7d788", - "name": "Read Data", - "key": "item_read_oyges", - "type": "item-read", - "position_x": 37, - "position_y": 1, - "resolve": null, - "reject": null, - "flow": "fdc2d675-e365-4431-9cd0-27e571c89e04", - "options_keys": [ - "permissions", - "emitEvents", - "collection", - "key" - ] - } -] diff --git a/directus/reference/exports/permissions.json b/directus/reference/exports/permissions.json deleted file mode 100644 index 770a6f4..0000000 --- a/directus/reference/exports/permissions.json +++ /dev/null @@ -1,1176 +0,0 @@ -[ - { - "id": 204, - "policy": "2e4acc56-7f7e-4a10-9775-1c0dd9f47ded", - "collection": "user_memberships", - "action": "create", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 205, - "policy": "2e4acc56-7f7e-4a10-9775-1c0dd9f47ded", - "collection": "user_memberships", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 206, - "policy": "2e4acc56-7f7e-4a10-9775-1c0dd9f47ded", - "collection": "user_memberships", - "action": "update", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 136, - "policy": "494e10a0-03ec-40b9-a7a5-c3a1e2b95001", - "collection": "directus_roles", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "id,name,icon,description,parent,children" - }, - { - "id": 135, - "policy": "494e10a0-03ec-40b9-a7a5-c3a1e2b95001", - "collection": "directus_users", - "action": "create", - "permissions": null, - "validation": null, - "presets": null, - "fields": "email,username,password,role,status,auth_data,first_name,last_name,avatar,id" - }, - { - "id": 134, - "policy": "494e10a0-03ec-40b9-a7a5-c3a1e2b95001", - "collection": "directus_users", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "username,email,id,first_name,last_name,password,avatar,location,title,description,tags,preferences_divider,language,text_direction,tfa_secret,auth_data,external_identifier,provider,last_access,last_page,token,policies,role,status,admin_divider,theme_dark_overrides,theme_dark,theme_light_overrides,theme_light,appearance,theming_divider,email_notifications" - }, - { - "id": 199, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "bg_cat", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 198, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "bg_entries", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 197, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "bg_sub_cat", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 181, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "directus_fields", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "id,collection,field,special,interface,options,readonly,hidden,required,sort,width,group,note" - }, - { - "id": 172, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "directus_files", - "action": "create", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 173, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "directus_files", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 133, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "directus_users", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "username,first_name,avatar,location,id" - }, - { - "id": 196, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "hazard_danger", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 195, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "hazard_severity", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 194, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "hazard_source", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 193, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "hazard_tags", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 150, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "laser_focus_lens", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 149, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "laser_focus_lens_config", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 148, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "laser_focus_lens_diameter", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 147, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "laser_scan_lens", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 146, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "laser_scan_lens_apt", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 145, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "laser_scan_lens_config", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 144, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "laser_scan_lens_exp", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 143, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "laser_software", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 142, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "laser_source", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 192, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "material", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 191, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "material_cat", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 190, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "material_coating", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 189, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "material_coating_hazard_tags", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 188, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "material_color", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 187, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "material_hazard_tags", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 186, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "material_opacity", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 185, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "material_status", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 160, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "projects", - "action": "create", - "permissions": null, - "validation": null, - "presets": { - "owner": "$CURRENT_USER", - "uploader": "$CURRENT_USER" - }, - "fields": "*" - }, - { - "id": 171, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "projects", - "action": "delete", - "permissions": { - "_and": [ - { - "owner": { - "_eq": "$CURRENT_USER" - } - } - ] - }, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 161, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "projects", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 170, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "projects", - "action": "update", - "permissions": { - "_and": [ - { - "owner": { - "_eq": "$CURRENT_USER" - } - } - ] - }, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 200, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "projects_files", - "action": "create", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 184, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "projects_files", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 155, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "settings_co2gal", - "action": "create", - "permissions": null, - "validation": null, - "presets": { - "owner": "$CURRENT_USER", - "uploader": "$CURRENT_USER" - }, - "fields": "*" - }, - { - "id": 169, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "settings_co2gal", - "action": "delete", - "permissions": { - "_and": [ - { - "owner": { - "_eq": "$CURRENT_USER" - } - } - ] - }, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 156, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "settings_co2gal", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 168, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "settings_co2gal", - "action": "update", - "permissions": { - "_and": [ - { - "owner": { - "_eq": "$CURRENT_USER" - } - } - ] - }, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 154, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "settings_co2gan", - "action": "create", - "permissions": null, - "validation": null, - "presets": { - "owner": "$CURRENT_USER", - "uploader": "$CURRENT_USER" - }, - "fields": "*" - }, - { - "id": 167, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "settings_co2gan", - "action": "delete", - "permissions": { - "_and": [ - { - "owner": { - "_eq": "$CURRENT_USER" - } - } - ] - }, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 157, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "settings_co2gan", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 166, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "settings_co2gan", - "action": "update", - "permissions": { - "_and": [ - { - "owner": { - "_eq": "$CURRENT_USER" - } - } - ] - }, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 153, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "settings_fiber", - "action": "create", - "permissions": null, - "validation": null, - "presets": { - "owner": "$CURRENT_USER", - "uploader": "$CURRENT_USER" - }, - "fields": "*" - }, - { - "id": 165, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "settings_fiber", - "action": "delete", - "permissions": { - "_and": [ - { - "owner": { - "_eq": "$CURRENT_USER" - } - } - ] - }, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 158, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "settings_fiber", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 164, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "settings_fiber", - "action": "update", - "permissions": { - "_and": [ - { - "owner": { - "_eq": "$CURRENT_USER" - } - } - ] - }, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 152, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "settings_uv", - "action": "create", - "permissions": null, - "validation": null, - "presets": { - "owner": "$CURRENT_USER", - "uploader": "$CURRENT_USER" - }, - "fields": "*" - }, - { - "id": 163, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "settings_uv", - "action": "delete", - "permissions": { - "_and": [ - { - "owner": { - "_eq": "$CURRENT_USER" - } - } - ] - }, - "validation": null, - "presets": null, - "fields": null - }, - { - "id": 159, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "settings_uv", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 162, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "settings_uv", - "action": "update", - "permissions": { - "_and": [ - { - "owner": { - "_eq": "$CURRENT_USER" - } - } - ] - }, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 176, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "user_claims", - "action": "create", - "permissions": null, - "validation": null, - "presets": { - "claimant": "$CURRENT_USER", - "status": "pending" - }, - "fields": "id,target_collection,target_id,sort,user_created,date_created,user_updated,date_updated,note" - }, - { - "id": 179, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "user_claims", - "action": "delete", - "permissions": { - "_and": [ - { - "claimant": { - "_eq": "$CURRENT_USER" - } - }, - { - "status": { - "_eq": "pending" - } - } - ] - }, - "validation": null, - "presets": null, - "fields": null - }, - { - "id": 177, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "user_claims", - "action": "read", - "permissions": { - "_and": [ - { - "claimant": { - "_eq": "$CURRENT_USER" - } - } - ] - }, - "validation": null, - "presets": null, - "fields": "id,target_collection,target_id,status,note,reviewed_by,reviewed_at,date_created" - }, - { - "id": 178, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "user_claims", - "action": "update", - "permissions": { - "_and": [ - { - "claimant": { - "_eq": "$CURRENT_USER" - } - }, - { - "status": { - "_eq": "pending" - } - } - ] - }, - "validation": null, - "presets": null, - "fields": "note" - }, - { - "id": 137, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "user_rigs", - "action": "create", - "permissions": null, - "validation": null, - "presets": { - "owner": "$CURRENT_USER" - }, - "fields": "*" - }, - { - "id": 140, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "user_rigs", - "action": "delete", - "permissions": { - "_and": [ - { - "owner": { - "_eq": "$CURRENT_USER" - } - } - ] - }, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 138, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "user_rigs", - "action": "read", - "permissions": { - "_and": [ - { - "owner": { - "_eq": "$CURRENT_USER" - } - } - ] - }, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 139, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "user_rigs", - "action": "update", - "permissions": { - "_and": [ - { - "owner": { - "_eq": "%CURRENT_USER" - } - } - ] - }, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 201, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "user_rig_type", - "action": "create", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 141, - "policy": "536f020c-4f05-497d-8a6c-54e13f62c694", - "collection": "user_rig_type", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 180, - "policy": "80b3902c-06e6-480c-9d29-d2a46552f60e", - "collection": "directus_users", - "action": "read", - "permissions": { - "_and": [ - { - "id": { - "_eq": "$CURRENT_USER" - } - } - ] - }, - "validation": null, - "presets": null, - "fields": "username,last_name,first_name,email,password,avatar,location,title,description,tags,language,tfa_secret,email_notifications,id" - }, - { - "id": 203, - "policy": "80b3902c-06e6-480c-9d29-d2a46552f60e", - "collection": "directus_users", - "action": "update", - "permissions": { - "_and": [ - { - "id": { - "_eq": "$CURRENT_USER" - } - } - ] - }, - "validation": null, - "presets": null, - "fields": "first_name,last_name,email,password,avatar,location" - }, - { - "id": 89, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "bg_cat", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 92, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "bg_entries", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 95, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "bg_sub_cat", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 182, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "directus_fields", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "field,collection,id" - }, - { - "id": 50, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "directus_files", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 47, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "hazard_danger", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 44, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "hazard_severity", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 41, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "hazard_source", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 38, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "hazard_tags", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 65, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "laser_focus_lens", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 68, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "laser_focus_lens_config", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 71, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "laser_focus_lens_diameter", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 35, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "laser_scan_lens", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 74, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "laser_scan_lens_apt", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 77, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "laser_scan_lens_config", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 80, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "laser_scan_lens_exp", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 32, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "laser_software", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 11, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "laser_source", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 8, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "material", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 30, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "material_cat", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 5, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "material_coating", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 26, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "material_coating_hazard_tags", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 23, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "material_color", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 20, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "material_hazard_tags", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 17, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "material_opacity", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 13, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "material_status", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 53, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "projects", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 56, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "projects_files", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 83, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "settings_co2gal", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 86, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "settings_co2gan", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 2, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "settings_fiber", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - }, - { - "id": 59, - "policy": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "collection": "settings_uv", - "action": "read", - "permissions": null, - "validation": null, - "presets": null, - "fields": "*" - } -] diff --git a/directus/reference/exports/policies.json b/directus/reference/exports/policies.json deleted file mode 100644 index cb43960..0000000 --- a/directus/reference/exports/policies.json +++ /dev/null @@ -1,62 +0,0 @@ -[ - { - "id": "abf8a154-5b1c-4a46-ac9c-7300570f4f17", - "name": "$t:public_label", - "icon": "public", - "description": "$t:public_description", - "admin_access": 0, - "app_access": 0, - "enforce_tfa": 0, - "ip_access": null - }, - { - "id": "93fc7a9e-16de-45d4-89b1-9fa129e81442", - "name": "Administrator", - "icon": "verified", - "description": "$t:admin_description", - "admin_access": 1, - "app_access": 1, - "enforce_tfa": 0, - "ip_access": null - }, - { - "id": "494e10a0-03ec-40b9-a7a5-c3a1e2b95001", - "name": "Registration", - "icon": "robot", - "description": "Registration Bot", - "admin_access": 0, - "app_access": 0, - "enforce_tfa": 0, - "ip_access": null - }, - { - "id": "2e4acc56-7f7e-4a10-9775-1c0dd9f47ded", - "name": "Supporter", - "icon": "robot_2", - "description": "Supporter Bot", - "admin_access": 0, - "app_access": 0, - "enforce_tfa": 0, - "ip_access": null - }, - { - "id": "536f020c-4f05-497d-8a6c-54e13f62c694", - "name": "Users", - "icon": "badge", - "description": "Registered Users", - "admin_access": 0, - "app_access": 0, - "enforce_tfa": 0, - "ip_access": null - }, - { - "id": "80b3902c-06e6-480c-9d29-d2a46552f60e", - "name": "Users Self Access", - "icon": "badge", - "description": "Registered Users Self Access", - "admin_access": 0, - "app_access": 0, - "enforce_tfa": 0, - "ip_access": null - } -] diff --git a/directus/reference/exports/roles.json b/directus/reference/exports/roles.json deleted file mode 100644 index 8847f19..0000000 --- a/directus/reference/exports/roles.json +++ /dev/null @@ -1,30 +0,0 @@ -[ - { - "id": "a6d3c757-a96b-4f0c-b96b-a6109d60a7ba", - "name": "Administrator", - "icon": "verified", - "description": "$t:admin_description", - "parent": null - }, - { - "id": "00e518e3-75b3-4c6f-b57d-51a4f1af4781", - "name": "Registration Bot", - "icon": "robot", - "description": "Registers accounts.", - "parent": null - }, - { - "id": "a2a695be-88f9-4948-b2a4-e0e22b01b32e", - "name": "Supporter Bot", - "icon": "supervised_user_circle", - "description": "Registers supporters.", - "parent": null - }, - { - "id": "296a28bc-60ab-4251-8bef-27f6dfb67948", - "name": "Users", - "icon": "accessibility_new", - "description": "Registered users.", - "parent": null - } -] diff --git a/directus/reference/exports/settings.json b/directus/reference/exports/settings.json deleted file mode 100644 index dc9f23c..0000000 --- a/directus/reference/exports/settings.json +++ /dev/null @@ -1,11 +0,0 @@ -[ - { - "project_name": "Directus", - "project_url": null, - "default_language": "en-US", - "public_registration": 0, - "public_registration_verify_email": 0, - "public_registration_role": null, - "public_registration_email_filter": null - } -] diff --git a/directus/reference/nginx-summary.txt b/directus/reference/nginx-summary.txt deleted file mode 100644 index ea57905..0000000 --- a/directus/reference/nginx-summary.txt +++ /dev/null @@ -1,33 +0,0 @@ -3: listen 80; -4: server_name forms.lasereverything.net; -5: client_max_body_size 100M; -8: location /.well-known/acme-challenge/ { -13: location / { -20: listen 443 ssl; -22: server_name forms.lasereverything.net; -23: client_max_body_size 100M; -28: ssl_protocols TLSv1.2 TLSv1.3; -31: add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; -33: location / { -34: proxy_pass http://127.0.0.1:8056; -37: proxy_set_header Host $host; -38: proxy_set_header X-Real-IP $remote_addr; -39: proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; -40: proxy_set_header X-Forwarded-Proto $scheme; -43: proxy_set_header Upgrade $http_upgrade; -44: proxy_set_header Connection "upgrade"; -46: proxy_read_timeout 300; -48: proxy_send_timeout 300; -57: add_header Access-Control-Allow-Origin "$http_origin" always; -58: add_header Access-Control-Allow-Credentials "true" always; -59: add_header Access-Control-Allow-Headers "Authorization, Content-Type, X-Requested-With" always; -60: add_header Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS" always; -61: add_header Vary "Origin" always; -66: add_header Access-Control-Max-Age 1728000 always; -67: add_header Content-Type "text/plain; charset=utf-8" always; -68: add_header Content-Length 0 always; -71: add_header Access-Control-Allow-Origin "$http_origin" always; -72: add_header Access-Control-Allow-Credentials "true" always; -73: add_header Access-Control-Allow-Headers "Authorization, Content-Type, X-Requested-With" always; -74: add_header Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS" always; -75: add_header Vary "Origin" always; diff --git a/directus/reference/schema-comparison.txt b/directus/reference/schema-comparison.txt deleted file mode 100644 index a44985c..0000000 --- a/directus/reference/schema-comparison.txt +++ /dev/null @@ -1,8 +0,0 @@ -Live schema SHA-256: -709c5f5fa6c239406085e8c7e5959d2d096d36ad1d8676727a0ca473536498e6 /root/directus-codex-context-20260710-102253/schema.yaml - -Existing repository schema SHA-256: -8e21cd555b297e729a39f387eadbf4d32621c986516c9d3cc896b01d02efdf8b /srv/codex-work/lasereverything.net.db/app/schema.yaml - -Comparison: -The live and repository schema files differ. diff --git a/directus/reference/system-table-columns/directus_access-columns.tsv b/directus/reference/system-table-columns/directus_access-columns.tsv deleted file mode 100644 index c159bfc..0000000 --- a/directus/reference/system-table-columns/directus_access-columns.tsv +++ /dev/null @@ -1,5 +0,0 @@ -id char(36) NO PRI NULL -role char(36) YES MUL NULL -user char(36) YES MUL NULL -policy char(36) NO MUL NULL -sort int(11) YES NULL diff --git a/directus/reference/system-table-columns/directus_fields-columns.tsv b/directus/reference/system-table-columns/directus_fields-columns.tsv deleted file mode 100644 index fe3341d..0000000 --- a/directus/reference/system-table-columns/directus_fields-columns.tsv +++ /dev/null @@ -1,20 +0,0 @@ -id int(10) unsigned NO PRI NULL auto_increment -collection varchar(64) NO MUL NULL -field varchar(64) NO NULL -special varchar(64) YES NULL -interface varchar(64) YES NULL -options longtext YES NULL -display varchar(64) YES NULL -display_options longtext YES NULL -readonly tinyint(1) NO 0 -hidden tinyint(1) NO 0 -sort int(10) unsigned YES NULL -width varchar(30) YES full -translations longtext YES NULL -note text YES NULL -conditions longtext YES NULL -required tinyint(1) YES 0 -group varchar(64) YES NULL -validation longtext YES NULL -validation_message text YES NULL -searchable tinyint(1) NO 1 diff --git a/directus/reference/system-table-columns/directus_flows-columns.tsv b/directus/reference/system-table-columns/directus_flows-columns.tsv deleted file mode 100644 index 297b778..0000000 --- a/directus/reference/system-table-columns/directus_flows-columns.tsv +++ /dev/null @@ -1,12 +0,0 @@ -id char(36) NO PRI NULL -name varchar(255) NO NULL -icon varchar(64) YES NULL -color varchar(255) YES NULL -description text YES NULL -status varchar(255) NO active -trigger varchar(255) YES NULL -accountability varchar(255) YES all -options longtext YES NULL -operation char(36) YES UNI NULL -date_created timestamp YES current_timestamp() -user_created char(36) YES MUL NULL diff --git a/directus/reference/system-table-columns/directus_operations-columns.tsv b/directus/reference/system-table-columns/directus_operations-columns.tsv deleted file mode 100644 index b60950b..0000000 --- a/directus/reference/system-table-columns/directus_operations-columns.tsv +++ /dev/null @@ -1,12 +0,0 @@ -id char(36) NO PRI NULL -name varchar(255) YES NULL -key varchar(255) NO NULL -type varchar(255) NO NULL -position_x int(11) NO NULL -position_y int(11) NO NULL -options longtext YES NULL -resolve char(36) YES UNI NULL -reject char(36) YES UNI NULL -flow char(36) NO MUL NULL -date_created timestamp YES current_timestamp() -user_created char(36) YES MUL NULL diff --git a/directus/reference/system-table-columns/directus_permissions-columns.tsv b/directus/reference/system-table-columns/directus_permissions-columns.tsv deleted file mode 100644 index 0c32c46..0000000 --- a/directus/reference/system-table-columns/directus_permissions-columns.tsv +++ /dev/null @@ -1,8 +0,0 @@ -id int(10) unsigned NO PRI NULL auto_increment -collection varchar(64) NO MUL NULL -action varchar(10) NO NULL -permissions longtext YES NULL -validation longtext YES NULL -presets longtext YES NULL -fields text YES NULL -policy char(36) NO MUL NULL diff --git a/directus/reference/system-table-columns/directus_policies-columns.tsv b/directus/reference/system-table-columns/directus_policies-columns.tsv deleted file mode 100644 index 4353e7f..0000000 --- a/directus/reference/system-table-columns/directus_policies-columns.tsv +++ /dev/null @@ -1,8 +0,0 @@ -id char(36) NO PRI NULL -name varchar(100) NO NULL -icon varchar(64) NO badge -description text YES NULL -ip_access text YES NULL -enforce_tfa tinyint(1) NO 0 -admin_access tinyint(1) NO 0 -app_access tinyint(1) NO 0 diff --git a/directus/reference/system-table-columns/directus_roles-columns.tsv b/directus/reference/system-table-columns/directus_roles-columns.tsv deleted file mode 100644 index 992e2ea..0000000 --- a/directus/reference/system-table-columns/directus_roles-columns.tsv +++ /dev/null @@ -1,5 +0,0 @@ -id char(36) NO PRI NULL -name varchar(100) NO NULL -icon varchar(64) NO supervised_user_circle -description text YES NULL -parent char(36) YES MUL NULL diff --git a/directus/reference/system-table-columns/directus_settings-columns.tsv b/directus/reference/system-table-columns/directus_settings-columns.tsv deleted file mode 100644 index d2af55b..0000000 --- a/directus/reference/system-table-columns/directus_settings-columns.tsv +++ /dev/null @@ -1,66 +0,0 @@ -id int(10) unsigned NO PRI NULL auto_increment -project_name varchar(100) NO Directus -project_url varchar(255) YES NULL -project_color varchar(255) NO #6644FF -project_logo char(36) YES MUL NULL -public_foreground char(36) YES MUL NULL -public_background char(36) YES MUL NULL -public_note text YES NULL -auth_login_attempts int(10) unsigned YES 25 -auth_password_policy varchar(100) YES NULL -storage_asset_transform varchar(7) YES all -storage_asset_presets longtext YES NULL -custom_css text YES NULL -storage_default_folder char(36) YES MUL NULL -basemaps longtext YES NULL -mapbox_key varchar(255) YES NULL -module_bar longtext YES NULL -project_descriptor varchar(100) YES NULL -default_language varchar(255) NO en-US -custom_aspect_ratios longtext YES NULL -public_favicon char(36) YES MUL NULL -default_appearance varchar(255) NO auto -default_theme_light varchar(255) YES NULL -theme_light_overrides longtext YES NULL -default_theme_dark varchar(255) YES NULL -theme_dark_overrides longtext YES NULL -report_error_url varchar(255) YES NULL -report_bug_url varchar(255) YES NULL -report_feature_url varchar(255) YES NULL -public_registration tinyint(1) NO 0 -public_registration_verify_email tinyint(1) NO 1 -public_registration_role char(36) YES MUL NULL -public_registration_email_filter longtext YES NULL -visual_editor_urls longtext YES NULL -project_id char(36) YES NULL -mcp_enabled tinyint(1) NO 0 -mcp_allow_deletes tinyint(1) NO 0 -mcp_prompts_collection varchar(255) YES NULL -mcp_system_prompt_enabled tinyint(1) NO 1 -mcp_system_prompt text YES NULL -project_owner varchar(255) YES NULL -project_usage varchar(255) YES NULL -org_name varchar(255) YES NULL -product_updates tinyint(1) YES NULL -project_status varchar(255) YES NULL -ai_openai_api_key text YES NULL -ai_anthropic_api_key text YES NULL -ai_system_prompt text YES NULL -ai_google_api_key text YES NULL -ai_openai_compatible_api_key text YES NULL -ai_openai_compatible_base_url text YES NULL -ai_openai_compatible_name text YES NULL -ai_openai_compatible_models longtext YES NULL -ai_openai_compatible_headers longtext YES NULL -ai_openai_allowed_models longtext YES NULL -ai_anthropic_allowed_models longtext YES NULL -ai_google_allowed_models longtext YES NULL -collaborative_editing_enabled tinyint(1) NO 0 -ai_translation_default_model text YES NULL -ai_translation_glossary longtext YES NULL -ai_translation_style_guide text YES NULL -license_key varchar(255) YES NULL -license_token text YES NULL -mcp_oauth_enabled tinyint(1) NO 0 -mcp_oauth_dcr_enabled tinyint(1) NO 0 -mcp_oauth_cimd_enabled tinyint(1) NO 0 diff --git a/directus/schema-differences.md b/directus/schema-differences.md deleted file mode 100644 index a2da87c..0000000 --- a/directus/schema-differences.md +++ /dev/null @@ -1,55 +0,0 @@ -# Production versus older schema snapshot - -Compared files: - -- Current production evidence: `directus/schema.yaml`, Directus 12.1.1, MySQL. -- Older repository snapshot: `app/schema.yaml`, Directus 11.12.0, MySQL. - -The supplied hashes differ. A structural YAML comparison found 36 versus 34 collection entries, 394 versus 379 field entries, and 138 versus 136 relation entries. Neither snapshot was modified. - -## Meaningful additions - -### `directus_users` collection metadata - -The current snapshot includes `directus_users` as a collection with display template `{{ username }} ({{ email }})`. The older snapshot contains the custom `directus_users.username` field and relations to the system collection but omits the collection entry itself. - -The username field remains a unique nullable `varchar(255)` at the database layer while Directus metadata marks it required, visible, editable, and searchable. The older snapshot has the same database and required-field characteristics; current metadata additionally contains the Directus 12 `searchable` property. - -### `user_memberships` - -Production adds the `user_memberships` collection with 15 fields: - -- Integer auto-increment primary key: `id`. -- Provider/account data: `provider`, `external_user_id`, `email`, `username`, `status`, `tier`. -- Timing: `started_at`, `renews_at`, `last_event_at`. -- Claim/support data: `claim_token`, `claim_expires_at`, `raw`. -- User relations: `app_user`, `claim_user_id`. - -`app_user` and `claim_user_id` are nullable indexed M2O foreign keys to `directus_users.id`; both use `SET NULL` on delete and `RESTRICT` on update. The schema does not mark `claim_token` unique. Provider choices are Ko-Fi, Patreon, and LMA/Mighty; status choices are active, canceled, refunded, and one-time. These are metadata choices, not database constraints. - -### Settings raster metadata - -The `settings_co2gal.raster_settings` repeater gained three nested metadata fields: `angle` (integer), `auto` (boolean), and `increment` (integer). These are changes inside the JSON/repeater field definition, not new top-level database columns. - -### Display metadata - -- `settings_co2gal.owner` changed from no display renderer to related-values with template `{{username}}`. -- `bg_entries.scores` changed its display formatting template from `{{ cat }}` to `{{ body }}`. - -## Version-generated metadata differences - -Most raw differences are serialization changes rather than business-schema changes: - -- All 34 pre-existing collection entries gained `meta.autosave_revision_interval: null` and `meta.status: active`. -- All 379 pre-existing field entries gained `meta.searchable: true`. - -These additions are consistent across the snapshots and correspond to newer snapshot metadata emitted by Directus 12. They do not by themselves show database-column changes. - -## Unchanged structural areas - -- No older collection, field, or relation key was removed. -- All 136 relations present in the older snapshot compare equal structurally. -- The two added relations are the new `user_memberships` links described above. -- Database vendor remains MySQL and snapshot format version remains 1. - -This comparison is structural and does not compare data, permissions, policies, flows, settings-table values, indexes not represented by the snapshot, extension behavior, or migration history. diff --git a/directus/schema.yaml b/directus/schema.yaml deleted file mode 100644 index 2d40d34..0000000 --- a/directus/schema.yaml +++ /dev/null @@ -1,22571 +0,0 @@ -version: 1 -directus: 12.1.1 -vendor: mysql -collections: - - collection: bg_cat - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: bg_cat - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: null - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: bg_cat - - collection: bg_entries - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: bg_entries - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: null - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: bg_entries - - collection: bg_sub_cat - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: bg_sub_cat - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: null - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: bg_sub_cat - - collection: directus_users - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: directus_users - color: null - display_template: '{{ username }} ({{ email }})' - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: null - sort_field: null - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: directus_users - - collection: hazard_danger - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: hazard_danger - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 1 - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: hazard_danger - - collection: hazard_severity - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: hazard_severity - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 2 - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: hazard_severity - - collection: hazard_source - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: hazard_source - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 3 - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: hazard_source - - collection: hazard_tags - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: hazard_tags - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 4 - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: hazard_tags - - collection: laser_focus_lens - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: laser_focus_lens - color: null - display_template: '{{name}}' - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 5 - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: laser_focus_lens - - collection: laser_focus_lens_config - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: laser_focus_lens_config - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 6 - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: laser_focus_lens_config - - collection: laser_focus_lens_diameter - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: laser_focus_lens_diameter - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 7 - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: laser_focus_lens_diameter - - collection: laser_scan_lens - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: laser_scan_lens - color: null - display_template: '{{field_size}} {{focal_length}}' - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 8 - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: laser_scan_lens - - collection: laser_scan_lens_apt - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: laser_scan_lens_apt - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 10 - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: laser_scan_lens_apt - - collection: laser_scan_lens_config - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: laser_scan_lens_config - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 9 - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: laser_scan_lens_config - - collection: laser_scan_lens_exp - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: laser_scan_lens_exp - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 11 - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: laser_scan_lens_exp - - collection: laser_software - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: laser_software - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 12 - sort_field: null - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: laser_software - - collection: laser_source - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: laser_source - color: null - display_template: '{{make}} {{model}}' - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 13 - sort_field: null - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: laser_source - - collection: material - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: material - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 14 - sort_field: null - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: material - - collection: material_cat - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: material_cat - color: null - display_template: '{{name}}' - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 15 - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: material_cat - - collection: material_coating - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: material_coating - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 16 - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: material_coating - - collection: material_coating_hazard_tags - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: material_coating_hazard_tags - color: null - display_template: null - group: null - hidden: false - icon: import_export - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 17 - sort_field: null - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: material_coating_hazard_tags - - collection: material_color - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: material_color - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 18 - sort_field: null - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: material_color - - collection: material_hazard_tags - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: material_hazard_tags - color: null - display_template: null - group: null - hidden: false - icon: import_export - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 19 - sort_field: null - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: material_hazard_tags - - collection: material_opacity - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: material_opacity - color: null - display_template: '{{opacity}}' - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 20 - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: material_opacity - - collection: material_status - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: material_status - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 21 - sort_field: null - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: material_status - - collection: projects - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: projects - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 22 - sort_field: null - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: projects - - collection: projects_files - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: projects_files - color: null - display_template: null - group: null - hidden: false - icon: import_export - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 23 - sort_field: null - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: projects_files - - collection: settings_co2gal - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: settings_co2gal - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 24 - sort_field: null - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: settings_co2gal - - collection: settings_co2gan - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: settings_co2gan - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 25 - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: settings_co2gan - - collection: settings_fiber - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: settings_fiber - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 26 - sort_field: null - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: settings_fiber - - collection: settings_uv - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: settings_uv - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: 27 - sort_field: null - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: settings_uv - - collection: user_claims - meta: - accountability: all - archive_app_filter: true - archive_field: status - archive_value: archived - autosave_revision_interval: null - collapse: open - collection: user_claims - color: null - display_template: '{{target_collection}} #{{target_id}} — {{status}} — {{claimant.email}}' - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: null - sort_field: sort - status: active - translations: null - unarchive_value: draft - versioning: false - schema: - name: user_claims - - collection: user_memberships - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: user_memberships - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: null - sort_field: null - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: user_memberships - - collection: user_preferences - meta: - accountability: all - archive_app_filter: true - archive_field: status - archive_value: archived - autosave_revision_interval: null - collapse: open - collection: user_preferences - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: null - sort_field: sort - status: active - translations: null - unarchive_value: draft - versioning: false - schema: - name: user_preferences - - collection: user_rig_type - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: user_rig_type - color: null - display_template: '{{name}}' - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: null - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: user_rig_type - - collection: user_rigs - meta: - accountability: all - archive_app_filter: true - archive_field: null - archive_value: null - autosave_revision_interval: null - collapse: open - collection: user_rigs - color: null - display_template: null - group: null - hidden: false - icon: null - item_duplication_fields: null - note: null - preview_url: null - singleton: false - sort: null - sort_field: sort - status: active - translations: null - unarchive_value: null - versioning: false - schema: - name: user_rigs -fields: - - collection: bg_cat - field: id - type: integer - meta: - collection: bg_cat - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: bg_cat - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: bg_cat - field: sort - type: integer - meta: - collection: bg_cat - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: bg_cat - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_cat - field: user_created - type: string - meta: - collection: bg_cat - conditions: null - display: user - display_options: null - field: user_created - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 4 - special: - - user-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_created - table: bg_cat - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: bg_cat - field: date_created - type: timestamp - meta: - collection: bg_cat - conditions: null - display: datetime - display_options: - relative: true - field: date_created - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 5 - special: - - date-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_created - table: bg_cat - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_cat - field: user_updated - type: string - meta: - collection: bg_cat - conditions: null - display: user - display_options: null - field: user_updated - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 6 - special: - - user-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_updated - table: bg_cat - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: bg_cat - field: date_updated - type: timestamp - meta: - collection: bg_cat - conditions: null - display: datetime - display_options: - relative: true - field: date_updated - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 7 - special: - - date-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_updated - table: bg_cat - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_cat - field: name - type: string - meta: - collection: bg_cat - conditions: null - display: null - display_options: null - field: name - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: name - table: bg_cat - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_entries - field: id - type: integer - meta: - collection: bg_entries - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: bg_entries - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: bg_entries - field: sort - type: integer - meta: - collection: bg_entries - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 17 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: bg_entries - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_entries - field: user_created - type: string - meta: - collection: bg_entries - conditions: null - display: user - display_options: null - field: user_created - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 18 - special: - - user-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_created - table: bg_entries - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: bg_entries - field: date_created - type: timestamp - meta: - collection: bg_entries - conditions: null - display: datetime - display_options: - relative: true - field: date_created - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 19 - special: - - date-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_created - table: bg_entries - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_entries - field: user_updated - type: string - meta: - collection: bg_entries - conditions: null - display: user - display_options: null - field: user_updated - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 20 - special: - - user-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_updated - table: bg_entries - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: bg_entries - field: date_updated - type: timestamp - meta: - collection: bg_entries - conditions: null - display: datetime - display_options: - relative: true - field: date_updated - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 21 - special: - - date-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_updated - table: bg_entries - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_entries - field: product_make - type: string - meta: - collection: bg_entries - conditions: null - display: null - display_options: null - field: product_make - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 6 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: product_make - table: bg_entries - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_entries - field: product_model - type: string - meta: - collection: bg_entries - conditions: null - display: null - display_options: null - field: product_model - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 7 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: product_model - table: bg_entries - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_entries - field: product_price - type: string - meta: - collection: bg_entries - conditions: null - display: null - display_options: null - field: product_price - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 8 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: product_price - table: bg_entries - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_entries - field: video_review_url - type: string - meta: - collection: bg_entries - conditions: null - display: null - display_options: null - field: video_review_url - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 9 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: video_review_url - table: bg_entries - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_entries - field: links - type: json - meta: - collection: bg_entries - conditions: null - display: raw - display_options: null - field: links - group: null - hidden: false - interface: list - note: null - options: - addLabel: Add a Link - fields: - - field: text - meta: - display: formatted-value - display_options: - conditionalFormatting: null - format: true - field: text - interface: input - options: - iconLeft: text_fields - placeholder: display text - type: string - width: full - name: text - type: string - - field: url - meta: - display: formatted-value - display_options: - format: true - field: url - interface: input - options: - iconLeft: link - placeholder: https://www.amazon.com/2308f0mi - type: string - name: url - type: string - - field: target - meta: - display: formatted-value - display_options: - format: true - field: target - interface: input - options: - iconLeft: shopping_cart_checkout - placeholder: Amazon, eBay, Etsy, etc... - type: string - name: target - type: string - template: links - readonly: false - required: false - searchable: true - sort: 10 - special: - - cast-json - translations: null - validation: null - validation_message: null - width: full - schema: - name: links - table: bg_entries - data_type: longtext - default_value: null - max_length: 4294967295 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_entries - field: author - type: string - meta: - collection: bg_entries - conditions: null - display: formatted-value - display_options: - format: true - field: author - group: null - hidden: false - interface: input - note: null - options: - iconLeft: edit_square - placeholder: Your Mother - readonly: false - required: false - searchable: true - sort: 11 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: author - table: bg_entries - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_entries - field: review_overview_text - type: text - meta: - collection: bg_entries - conditions: null - display: formatted-value - display_options: - format: true - field: review_overview_text - group: null - hidden: false - interface: input-rich-text-md - note: null - options: - folder: d397e79a-d422-43a3-b16a-5edf0cd67aad - placeholder: >- - Give an overview, if there's no full review only fill out this - section. - readonly: false - required: false - searchable: true - sort: 12 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: review_overview_text - table: bg_entries - data_type: text - default_value: null - max_length: 65535 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_entries - field: review_intro_text - type: text - meta: - collection: bg_entries - conditions: null - display: formatted-value - display_options: - format: true - field: review_intro_text - group: null - hidden: false - interface: input-rich-text-md - note: null - options: - folder: 767d0434-e309-400c-8c48-04da55b53a22 - placeholder: Introduce your review and give a preview of what's to come. - readonly: false - required: false - searchable: true - sort: 13 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: review_intro_text - table: bg_entries - data_type: text - default_value: null - max_length: 65535 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_entries - field: scores - type: json - meta: - collection: bg_entries - conditions: null - display: formatted-json-value - display_options: - format: '{{ body }}' - field: scores - group: null - hidden: false - interface: list - note: null - options: - addLabel: Create New Score - fields: - - field: value - meta: - display: formatted-value - display_options: - format: true - field: value - interface: slider - options: - maxValue: 10 - minValue: 1 - stepInterval: 1 - type: float - name: value - type: float - - field: body - meta: - display: formatted-value - display_options: - format: true - field: body - interface: input-rich-text-md - options: - folder: 1358acff-a633-4bd6-a620-80e2b95afe77 - type: text - name: body - type: text - - field: cat - meta: - display: formatted-value - display_options: - format: true - field: cat - interface: select-dropdown - options: - choices: - - text: CONTENTS & ASSEMBLY - value: cont_assembly - - text: HARDWARE & SPECS - value: hard_specs - - text: LASER MODULE - value: las_mod - - text: PERFORMANCE - value: perf - - text: SOFTWARE & USABILITY - value: soft_use - - text: COST & VALUE - value: cost_val - type: string - name: cat - type: string - template: scores - readonly: false - required: false - searchable: true - sort: 14 - special: - - cast-json - translations: null - validation: null - validation_message: null - width: full - schema: - name: scores - table: bg_entries - data_type: longtext - default_value: null - max_length: 4294967295 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_entries - field: rec_text - type: text - meta: - collection: bg_entries - conditions: null - display: formatted-value - display_options: - format: true - field: rec_text - group: null - hidden: false - interface: input-rich-text-md - note: null - options: - folder: 56733eb9-2517-471a-8e0e-f771051991b0 - placeholder: Do you recommend this? Why or why not? - readonly: false - required: false - searchable: true - sort: 15 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: rec_text - table: bg_entries - data_type: text - default_value: null - max_length: 65535 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_entries - field: updates - type: text - meta: - collection: bg_entries - conditions: null - display: formatted-value - display_options: - format: true - field: updates - group: null - hidden: false - interface: input-rich-text-md - note: null - options: - folder: d35dc3f2-e29e-4afb-bf4b-bb16ae887bb6 - readonly: false - required: false - searchable: true - sort: 16 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: updates - table: bg_entries - data_type: text - default_value: null - max_length: 65535 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_entries - field: index - type: uuid - meta: - collection: bg_entries - conditions: null - display: null - display_options: null - field: index - group: null - hidden: false - interface: file-image - note: null - options: - folder: a7ccad88-3b8c-42a1-8d8d-ac5cfa92f25e - readonly: false - required: false - searchable: true - sort: 2 - special: - - file - translations: null - validation: null - validation_message: null - width: full - schema: - name: index - table: bg_entries - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_files - foreign_key_column: id - - collection: bg_entries - field: header - type: uuid - meta: - collection: bg_entries - conditions: null - display: image - display_options: null - field: header - group: null - hidden: false - interface: file-image - note: null - options: - crop: false - folder: 954f70c8-fa62-4b5a-b5e6-975b538f95d8 - readonly: false - required: false - searchable: true - sort: 3 - special: - - file - translations: null - validation: null - validation_message: null - width: full - schema: - name: header - table: bg_entries - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_files - foreign_key_column: id - - collection: bg_entries - field: bg_entry_sub_cat - type: integer - meta: - collection: bg_entries - conditions: null - display: related-values - display_options: - template: '{{name}}' - field: bg_entry_sub_cat - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{name}}' - readonly: false - required: false - searchable: true - sort: 5 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: bg_entry_sub_cat - table: bg_entries - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: bg_sub_cat - foreign_key_column: id - - collection: bg_entries - field: bg_entry_cat - type: integer - meta: - collection: bg_entries - conditions: null - display: related-values - display_options: - template: '{{name}}' - field: bg_entry_cat - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{name}}' - readonly: false - required: false - searchable: true - sort: 4 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: bg_entry_cat - table: bg_entries - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: bg_cat - foreign_key_column: id - - collection: bg_sub_cat - field: id - type: integer - meta: - collection: bg_sub_cat - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: bg_sub_cat - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: bg_sub_cat - field: sort - type: integer - meta: - collection: bg_sub_cat - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 4 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: bg_sub_cat - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_sub_cat - field: user_created - type: string - meta: - collection: bg_sub_cat - conditions: null - display: user - display_options: null - field: user_created - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 5 - special: - - user-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_created - table: bg_sub_cat - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: bg_sub_cat - field: date_created - type: timestamp - meta: - collection: bg_sub_cat - conditions: null - display: datetime - display_options: - relative: true - field: date_created - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 6 - special: - - date-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_created - table: bg_sub_cat - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_sub_cat - field: user_updated - type: string - meta: - collection: bg_sub_cat - conditions: null - display: user - display_options: null - field: user_updated - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 7 - special: - - user-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_updated - table: bg_sub_cat - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: bg_sub_cat - field: date_updated - type: timestamp - meta: - collection: bg_sub_cat - conditions: null - display: datetime - display_options: - relative: true - field: date_updated - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 8 - special: - - date-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_updated - table: bg_sub_cat - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_sub_cat - field: name - type: string - meta: - collection: bg_sub_cat - conditions: null - display: null - display_options: null - field: name - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: name - table: bg_sub_cat - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: bg_sub_cat - field: bg_entry_cat - type: integer - meta: - collection: bg_sub_cat - conditions: null - display: null - display_options: null - field: bg_entry_cat - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{name}}' - readonly: false - required: false - searchable: true - sort: 3 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: bg_entry_cat - table: bg_sub_cat - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: bg_cat - foreign_key_column: id - - collection: directus_users - field: username - type: string - meta: - collection: directus_users - conditions: null - display: raw - display_options: null - field: username - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: true - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: username - table: directus_users - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: true - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_danger - field: id - type: integer - meta: - collection: hazard_danger - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 8 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: hazard_danger - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: hazard_danger - field: sort - type: integer - meta: - collection: hazard_danger - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: hazard_danger - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_danger - field: user_created - type: string - meta: - collection: hazard_danger - conditions: null - display: user - display_options: null - field: user_created - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 4 - special: - - user-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_created - table: hazard_danger - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: hazard_danger - field: date_created - type: timestamp - meta: - collection: hazard_danger - conditions: null - display: datetime - display_options: - relative: true - field: date_created - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 5 - special: - - date-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_created - table: hazard_danger - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_danger - field: user_updated - type: string - meta: - collection: hazard_danger - conditions: null - display: user - display_options: null - field: user_updated - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 6 - special: - - user-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_updated - table: hazard_danger - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: hazard_danger - field: date_updated - type: timestamp - meta: - collection: hazard_danger - conditions: null - display: datetime - display_options: - relative: true - field: date_updated - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 7 - special: - - date-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_updated - table: hazard_danger - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_danger - field: danger - type: string - meta: - collection: hazard_danger - conditions: null - display: null - display_options: null - field: danger - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: danger - table: hazard_danger - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_danger - field: description - type: string - meta: - collection: hazard_danger - conditions: null - display: null - display_options: null - field: description - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: description - table: hazard_danger - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_severity - field: id - type: integer - meta: - collection: hazard_severity - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: hazard_severity - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: hazard_severity - field: sort - type: integer - meta: - collection: hazard_severity - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 4 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: hazard_severity - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_severity - field: user_created - type: string - meta: - collection: hazard_severity - conditions: null - display: user - display_options: null - field: user_created - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 5 - special: - - user-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_created - table: hazard_severity - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: hazard_severity - field: date_created - type: timestamp - meta: - collection: hazard_severity - conditions: null - display: datetime - display_options: - relative: true - field: date_created - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 6 - special: - - date-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_created - table: hazard_severity - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_severity - field: user_updated - type: string - meta: - collection: hazard_severity - conditions: null - display: user - display_options: null - field: user_updated - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 7 - special: - - user-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_updated - table: hazard_severity - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: hazard_severity - field: date_updated - type: timestamp - meta: - collection: hazard_severity - conditions: null - display: datetime - display_options: - relative: true - field: date_updated - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 8 - special: - - date-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_updated - table: hazard_severity - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_severity - field: severity - type: string - meta: - collection: hazard_severity - conditions: null - display: null - display_options: null - field: severity - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: severity - table: hazard_severity - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_severity - field: description - type: string - meta: - collection: hazard_severity - conditions: null - display: null - display_options: null - field: description - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: description - table: hazard_severity - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_source - field: id - type: integer - meta: - collection: hazard_source - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: hazard_source - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: hazard_source - field: sort - type: integer - meta: - collection: hazard_source - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 8 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: hazard_source - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_source - field: user_created - type: string - meta: - collection: hazard_source - conditions: null - display: user - display_options: null - field: user_created - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 4 - special: - - user-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_created - table: hazard_source - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: hazard_source - field: date_created - type: timestamp - meta: - collection: hazard_source - conditions: null - display: datetime - display_options: - relative: true - field: date_created - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 5 - special: - - date-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_created - table: hazard_source - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_source - field: user_updated - type: string - meta: - collection: hazard_source - conditions: null - display: user - display_options: null - field: user_updated - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 6 - special: - - user-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_updated - table: hazard_source - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: hazard_source - field: date_updated - type: timestamp - meta: - collection: hazard_source - conditions: null - display: datetime - display_options: - relative: true - field: date_updated - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 7 - special: - - date-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_updated - table: hazard_source - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_source - field: source - type: string - meta: - collection: hazard_source - conditions: null - display: formatted-value - display_options: null - field: source - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: source - table: hazard_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_source - field: description - type: string - meta: - collection: hazard_source - conditions: null - display: null - display_options: null - field: description - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: description - table: hazard_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_tags - field: id - type: integer - meta: - collection: hazard_tags - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 5 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: hazard_tags - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: hazard_tags - field: sort - type: integer - meta: - collection: hazard_tags - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 10 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: hazard_tags - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_tags - field: user_created - type: string - meta: - collection: hazard_tags - conditions: null - display: user - display_options: null - field: user_created - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 6 - special: - - user-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_created - table: hazard_tags - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: hazard_tags - field: date_created - type: timestamp - meta: - collection: hazard_tags - conditions: null - display: datetime - display_options: - relative: true - field: date_created - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 7 - special: - - date-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_created - table: hazard_tags - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_tags - field: user_updated - type: string - meta: - collection: hazard_tags - conditions: null - display: user - display_options: null - field: user_updated - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 8 - special: - - user-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_updated - table: hazard_tags - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: hazard_tags - field: date_updated - type: timestamp - meta: - collection: hazard_tags - conditions: null - display: datetime - display_options: - relative: true - field: date_updated - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 9 - special: - - date-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_updated - table: hazard_tags - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: hazard_tags - field: hazard_source - type: integer - meta: - collection: hazard_tags - conditions: null - display: related-values - display_options: - template: '{{source}}' - field: hazard_source - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{source}}' - readonly: false - required: false - searchable: true - sort: 2 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: hazard_source - table: hazard_tags - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: hazard_source - foreign_key_column: id - - collection: hazard_tags - field: hazard_danger - type: integer - meta: - collection: hazard_tags - conditions: null - display: related-values - display_options: - template: '{{danger}}' - field: hazard_danger - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{danger}}' - readonly: false - required: false - searchable: true - sort: 3 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: hazard_danger - table: hazard_tags - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: hazard_danger - foreign_key_column: id - - collection: hazard_tags - field: hazard_severity - type: integer - meta: - collection: hazard_tags - conditions: null - display: related-values - display_options: - template: '{{severity}}' - field: hazard_severity - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{severity}}' - readonly: false - required: false - searchable: true - sort: 4 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: hazard_severity - table: hazard_tags - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: hazard_severity - foreign_key_column: id - - collection: laser_focus_lens - field: id - type: integer - meta: - collection: laser_focus_lens - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: laser_focus_lens - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: laser_focus_lens - field: sort - type: integer - meta: - collection: laser_focus_lens - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 7 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: laser_focus_lens - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_focus_lens - field: user_created - type: string - meta: - collection: laser_focus_lens - conditions: null - display: user - display_options: null - field: user_created - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 3 - special: - - user-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_created - table: laser_focus_lens - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: laser_focus_lens - field: date_created - type: timestamp - meta: - collection: laser_focus_lens - conditions: null - display: datetime - display_options: - relative: true - field: date_created - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 4 - special: - - date-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_created - table: laser_focus_lens - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_focus_lens - field: user_updated - type: string - meta: - collection: laser_focus_lens - conditions: null - display: user - display_options: null - field: user_updated - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 5 - special: - - user-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_updated - table: laser_focus_lens - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: laser_focus_lens - field: date_updated - type: timestamp - meta: - collection: laser_focus_lens - conditions: null - display: datetime - display_options: - relative: true - field: date_updated - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 6 - special: - - date-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_updated - table: laser_focus_lens - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_focus_lens - field: name - type: string - meta: - collection: laser_focus_lens - conditions: null - display: formatted-value - display_options: - suffix: mm - field: name - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: true - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: name - table: laser_focus_lens - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_focus_lens_config - field: id - type: integer - meta: - collection: laser_focus_lens_config - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: laser_focus_lens_config - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: laser_focus_lens_config - field: sort - type: integer - meta: - collection: laser_focus_lens_config - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 7 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: laser_focus_lens_config - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_focus_lens_config - field: user_created - type: string - meta: - collection: laser_focus_lens_config - conditions: null - display: user - display_options: null - field: user_created - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 3 - special: - - user-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_created - table: laser_focus_lens_config - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: laser_focus_lens_config - field: date_created - type: timestamp - meta: - collection: laser_focus_lens_config - conditions: null - display: datetime - display_options: - relative: true - field: date_created - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 4 - special: - - date-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_created - table: laser_focus_lens_config - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_focus_lens_config - field: user_updated - type: string - meta: - collection: laser_focus_lens_config - conditions: null - display: user - display_options: null - field: user_updated - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 5 - special: - - user-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_updated - table: laser_focus_lens_config - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: laser_focus_lens_config - field: date_updated - type: timestamp - meta: - collection: laser_focus_lens_config - conditions: null - display: datetime - display_options: - relative: true - field: date_updated - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 6 - special: - - date-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_updated - table: laser_focus_lens_config - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_focus_lens_config - field: name - type: string - meta: - collection: laser_focus_lens_config - conditions: null - display: null - display_options: null - field: name - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: true - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: name - table: laser_focus_lens_config - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_focus_lens_diameter - field: id - type: integer - meta: - collection: laser_focus_lens_diameter - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: laser_focus_lens_diameter - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: laser_focus_lens_diameter - field: sort - type: integer - meta: - collection: laser_focus_lens_diameter - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 7 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: laser_focus_lens_diameter - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_focus_lens_diameter - field: user_created - type: string - meta: - collection: laser_focus_lens_diameter - conditions: null - display: user - display_options: null - field: user_created - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 3 - special: - - user-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_created - table: laser_focus_lens_diameter - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: laser_focus_lens_diameter - field: date_created - type: timestamp - meta: - collection: laser_focus_lens_diameter - conditions: null - display: datetime - display_options: - relative: true - field: date_created - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 4 - special: - - date-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_created - table: laser_focus_lens_diameter - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_focus_lens_diameter - field: user_updated - type: string - meta: - collection: laser_focus_lens_diameter - conditions: null - display: user - display_options: null - field: user_updated - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 5 - special: - - user-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_updated - table: laser_focus_lens_diameter - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: laser_focus_lens_diameter - field: date_updated - type: timestamp - meta: - collection: laser_focus_lens_diameter - conditions: null - display: datetime - display_options: - relative: true - field: date_updated - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 6 - special: - - date-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_updated - table: laser_focus_lens_diameter - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_focus_lens_diameter - field: name - type: string - meta: - collection: laser_focus_lens_diameter - conditions: null - display: formatted-value - display_options: - suffix: mm - field: name - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: true - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: name - table: laser_focus_lens_diameter - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens - field: id - type: integer - meta: - collection: laser_scan_lens - conditions: null - display: null - display_options: null - field: id - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: laser_scan_lens - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens - field: user_updated - type: string - meta: - collection: laser_scan_lens - conditions: null - display: null - display_options: null - field: user_updated - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 4 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: user_updated - table: laser_scan_lens - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens - field: user_created - type: string - meta: - collection: laser_scan_lens - conditions: null - display: null - display_options: null - field: user_created - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 5 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: user_created - table: laser_scan_lens - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens - field: sort - type: integer - meta: - collection: laser_scan_lens - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 8 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: laser_scan_lens - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens - field: date_created - type: timestamp - meta: - collection: laser_scan_lens - conditions: null - display: null - display_options: null - field: date_created - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 6 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: date_created - table: laser_scan_lens - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens - field: date_updated - type: timestamp - meta: - collection: laser_scan_lens - conditions: null - display: null - display_options: null - field: date_updated - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 7 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: date_updated - table: laser_scan_lens - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens - field: field_size - type: string - meta: - collection: laser_scan_lens - conditions: null - display: null - display_options: null - field: field_size - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: field_size - table: laser_scan_lens - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens - field: focal_length - type: string - meta: - collection: laser_scan_lens - conditions: null - display: null - display_options: null - field: focal_length - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: focal_length - table: laser_scan_lens - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens_apt - field: id - type: integer - meta: - collection: laser_scan_lens_apt - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: laser_scan_lens_apt - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens_apt - field: sort - type: integer - meta: - collection: laser_scan_lens_apt - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 7 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: laser_scan_lens_apt - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens_apt - field: user_created - type: string - meta: - collection: laser_scan_lens_apt - conditions: null - display: user - display_options: null - field: user_created - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 3 - special: - - user-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_created - table: laser_scan_lens_apt - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: laser_scan_lens_apt - field: date_created - type: timestamp - meta: - collection: laser_scan_lens_apt - conditions: null - display: datetime - display_options: - relative: true - field: date_created - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 4 - special: - - date-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_created - table: laser_scan_lens_apt - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens_apt - field: user_updated - type: string - meta: - collection: laser_scan_lens_apt - conditions: null - display: user - display_options: null - field: user_updated - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 5 - special: - - user-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_updated - table: laser_scan_lens_apt - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: laser_scan_lens_apt - field: date_updated - type: timestamp - meta: - collection: laser_scan_lens_apt - conditions: null - display: datetime - display_options: - relative: true - field: date_updated - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 6 - special: - - date-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_updated - table: laser_scan_lens_apt - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens_apt - field: name - type: string - meta: - collection: laser_scan_lens_apt - conditions: null - display: formatted-value - display_options: - suffix: mm - field: name - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: true - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: name - table: laser_scan_lens_apt - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens_config - field: id - type: integer - meta: - collection: laser_scan_lens_config - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: laser_scan_lens_config - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens_config - field: sort - type: integer - meta: - collection: laser_scan_lens_config - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 7 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: laser_scan_lens_config - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens_config - field: user_created - type: string - meta: - collection: laser_scan_lens_config - conditions: null - display: user - display_options: null - field: user_created - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 3 - special: - - user-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_created - table: laser_scan_lens_config - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: laser_scan_lens_config - field: date_created - type: timestamp - meta: - collection: laser_scan_lens_config - conditions: null - display: datetime - display_options: - relative: true - field: date_created - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 4 - special: - - date-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_created - table: laser_scan_lens_config - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens_config - field: user_updated - type: string - meta: - collection: laser_scan_lens_config - conditions: null - display: user - display_options: null - field: user_updated - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 5 - special: - - user-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_updated - table: laser_scan_lens_config - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: laser_scan_lens_config - field: date_updated - type: timestamp - meta: - collection: laser_scan_lens_config - conditions: null - display: datetime - display_options: - relative: true - field: date_updated - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 6 - special: - - date-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_updated - table: laser_scan_lens_config - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens_config - field: name - type: string - meta: - collection: laser_scan_lens_config - conditions: null - display: null - display_options: null - field: name - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: true - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: name - table: laser_scan_lens_config - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens_exp - field: id - type: integer - meta: - collection: laser_scan_lens_exp - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: laser_scan_lens_exp - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens_exp - field: sort - type: integer - meta: - collection: laser_scan_lens_exp - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 7 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: laser_scan_lens_exp - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens_exp - field: user_created - type: string - meta: - collection: laser_scan_lens_exp - conditions: null - display: user - display_options: null - field: user_created - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 3 - special: - - user-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_created - table: laser_scan_lens_exp - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: laser_scan_lens_exp - field: date_created - type: timestamp - meta: - collection: laser_scan_lens_exp - conditions: null - display: datetime - display_options: - relative: true - field: date_created - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 4 - special: - - date-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_created - table: laser_scan_lens_exp - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens_exp - field: user_updated - type: string - meta: - collection: laser_scan_lens_exp - conditions: null - display: user - display_options: null - field: user_updated - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 5 - special: - - user-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_updated - table: laser_scan_lens_exp - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: laser_scan_lens_exp - field: date_updated - type: timestamp - meta: - collection: laser_scan_lens_exp - conditions: null - display: datetime - display_options: - relative: true - field: date_updated - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 6 - special: - - date-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_updated - table: laser_scan_lens_exp - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_scan_lens_exp - field: name - type: string - meta: - collection: laser_scan_lens_exp - conditions: null - display: formatted-value - display_options: - suffix: x - field: name - group: null - hidden: false - interface: input - note: null - options: - placeholder: '8' - readonly: false - required: true - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: name - table: laser_scan_lens_exp - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_software - field: name - type: string - meta: - collection: laser_software - conditions: null - display: null - display_options: null - field: name - group: null - hidden: false - interface: input - note: null - options: - placeholder: Lightburn - readonly: false - required: true - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: name - table: laser_software - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_software - field: user_updated - type: string - meta: - collection: laser_software - conditions: null - display: null - display_options: null - field: user_updated - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 6 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: user_updated - table: laser_software - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_software - field: user_created - type: string - meta: - collection: laser_software - conditions: null - display: null - display_options: null - field: user_created - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 7 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: user_created - table: laser_software - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_software - field: id - type: integer - meta: - collection: laser_software - conditions: null - display: null - display_options: null - field: id - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 5 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: laser_software - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: laser_software - field: sort - type: integer - meta: - collection: laser_software - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 10 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: laser_software - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_software - field: date_created - type: timestamp - meta: - collection: laser_software - conditions: null - display: null - display_options: null - field: date_created - group: null - hidden: false - interface: datetime - note: null - options: - relative: true - readonly: false - required: false - searchable: true - sort: 8 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: date_created - table: laser_software - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_software - field: date_updated - type: timestamp - meta: - collection: laser_software - conditions: null - display: null - display_options: null - field: date_updated - group: null - hidden: false - interface: datetime - note: null - options: - relative: true - readonly: false - required: false - searchable: true - sort: 9 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: date_updated - table: laser_software - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_software - field: vendor - type: string - meta: - collection: laser_software - conditions: null - display: null - display_options: null - field: vendor - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: true - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: vendor - table: laser_software - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_software - field: type - type: string - meta: - collection: laser_software - conditions: null - display: null - display_options: null - field: type - group: null - hidden: false - interface: input - note: null - options: - placeholder: oem - readonly: false - required: true - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: type - table: laser_software - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_software - field: notes - type: text - meta: - collection: laser_software - conditions: null - display: null - display_options: null - field: notes - group: null - hidden: false - interface: input-multiline - note: null - options: null - readonly: false - required: false - searchable: true - sort: 4 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: notes - table: laser_software - data_type: text - default_value: null - max_length: 65535 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: submission_id - type: integer - meta: - collection: laser_source - conditions: null - display: null - display_options: null - field: submission_id - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 35 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: submission_id - table: laser_source - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: op - type: string - meta: - collection: laser_source - conditions: null - display: labels - display_options: - choices: - - text: MOPA - value: pm - - text: Q-Switch - value: pq - format: false - field: op - group: null - hidden: false - interface: select-dropdown - note: null - options: - choices: - - text: MOPA - value: pm - - text: Q-Switch - value: pq - readonly: false - required: false - searchable: true - sort: 7 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: op - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: mj - type: string - meta: - collection: laser_source - conditions: null - display: formatted-value - display_options: - suffix: ' mJ' - field: mj - group: null - hidden: false - interface: input - note: null - options: - placeholder: '1.5' - readonly: false - required: false - searchable: true - sort: 6 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: mj - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: w - type: string - meta: - collection: laser_source - conditions: null - display: formatted-value - display_options: - suffix: ' W' - field: w - group: null - hidden: false - interface: input - note: null - options: - placeholder: '60' - readonly: false - required: false - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: w - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: ns - type: string - meta: - collection: laser_source - conditions: null - display: formatted-value - display_options: - suffix: ' ns' - field: ns - group: null - hidden: false - interface: input - note: null - options: - placeholder: 2 ◅ 500 - readonly: false - required: false - searchable: true - sort: 10 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: ns - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: kHz - type: string - meta: - collection: laser_source - conditions: null - display: formatted-value - display_options: - suffix: ' kHz' - field: kHz - group: null - hidden: false - interface: input - note: null - options: - placeholder: 1 ◅ 4000 - readonly: false - required: false - searchable: true - sort: 9 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: kHz - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: make - type: string - meta: - collection: laser_source - conditions: null - display: null - display_options: null - field: make - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: make - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: instability - type: string - meta: - collection: laser_source - conditions: null - display: null - display_options: null - field: instability - group: null - hidden: false - interface: input - note: null - options: - placeholder: <5 - readonly: false - required: false - searchable: true - sort: 13 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: instability - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: v - type: string - meta: - collection: laser_source - conditions: null - display: formatted-value - display_options: - suffix: ' V' - field: v - group: null - hidden: false - interface: input - note: null - options: - placeholder: '48' - readonly: false - required: false - searchable: true - sort: 11 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: v - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: nm - type: string - meta: - collection: laser_source - conditions: null - display: formatted-value - display_options: - suffix: ' nm' - field: nm - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 8 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: nm - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: band - type: string - meta: - collection: laser_source - conditions: null - display: null - display_options: null - field: band - group: null - hidden: false - interface: input - note: null - options: - placeholder: <15 @ 3dB - readonly: false - required: false - searchable: true - sort: 16 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: band - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: polarization - type: string - meta: - collection: laser_source - conditions: null - display: null - display_options: null - field: polarization - group: null - hidden: false - interface: input - note: null - options: - placeholder: random - readonly: false - required: false - searchable: true - sort: 15 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: polarization - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: d - type: string - meta: - collection: laser_source - conditions: null - display: formatted-value - display_options: - suffix: ' mm' - field: d - group: null - hidden: false - interface: input - note: null - options: - placeholder: 7±1 - readonly: false - required: false - searchable: true - sort: 12 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: d - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: temp_op - type: string - meta: - collection: laser_source - conditions: null - display: formatted-value - display_options: - suffix: ' °C' - field: temp_op - group: null - hidden: false - interface: input - note: null - options: - placeholder: 0 ◅ 40 - readonly: false - required: false - searchable: true - sort: 19 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: temp_op - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: temp_store - type: string - meta: - collection: laser_source - conditions: null - display: formatted-value - display_options: - suffix: ' °C' - field: temp_store - group: null - hidden: false - interface: input - note: null - options: - placeholder: '-10 ◅ 60' - readonly: false - required: false - searchable: true - sort: 20 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: temp_store - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: cooling - type: string - meta: - collection: laser_source - conditions: null - display: labels - display_options: - choices: - - text: Air, Active - value: aa - - text: Air, Passive - value: ap - - text: Water - value: w - field: cooling - group: null - hidden: false - interface: select-dropdown - note: null - options: - choices: - - text: Air, Active - value: aa - - text: Air, Passive - value: ap - - text: Water - value: w - readonly: false - required: false - searchable: true - sort: 18 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: cooling - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: m2 - type: string - meta: - collection: laser_source - conditions: null - display: formatted-value - display_options: null - field: m2 - group: null - hidden: false - interface: input - note: null - options: - placeholder: <1.5 - readonly: false - required: false - searchable: true - sort: 14 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: m2 - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: submission_date - type: dateTime - meta: - collection: laser_source - conditions: null - display: datetime - display_options: - relative: true - field: submission_date - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 36 - special: - - date-created - translations: null - validation: null - validation_message: null - width: full - schema: - name: submission_date - table: laser_source - data_type: datetime - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: last_modified_date - type: dateTime - meta: - collection: laser_source - conditions: null - display: datetime - display_options: - relative: true - field: last_modified_date - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 37 - special: - - date-created - - date-updated - translations: null - validation: null - validation_message: null - width: full - schema: - name: last_modified_date - table: laser_source - data_type: datetime - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: cable - type: string - meta: - collection: laser_source - conditions: null - display: formatted-value - display_options: - suffix: ' m' - field: cable - group: null - hidden: false - interface: input - note: null - options: - placeholder: '3' - readonly: false - required: false - searchable: true - sort: 29 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: cable - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: weight - type: string - meta: - collection: laser_source - conditions: null - display: formatted-value - display_options: - suffix: ' kg' - field: weight - group: null - hidden: false - interface: input - note: null - options: - placeholder: '4.1' - readonly: false - required: false - searchable: true - sort: 30 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: weight - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: dimensions - type: string - meta: - collection: laser_source - conditions: null - display: formatted-value - display_options: - suffix: ' mm' - field: dimensions - group: null - hidden: false - interface: input - note: null - options: - placeholder: 205 x 253.3 x 75 - readonly: false - required: false - searchable: true - sort: 33 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: dimensions - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: model - type: string - meta: - collection: laser_source - conditions: null - display: null - display_options: null - field: model - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: model - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: notes - type: string - meta: - collection: laser_source - conditions: null - display: null - display_options: null - field: notes - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 34 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: notes - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: mj_c - type: string - meta: - collection: laser_source - conditions: null - display: null - display_options: null - field: mj_c - group: null - hidden: false - interface: input - note: null - options: - placeholder: '@ 500ns 30kHz 30W' - readonly: false - required: false - searchable: true - sort: 23 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: mj_c - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: d_c - type: string - meta: - collection: laser_source - conditions: null - display: raw - display_options: null - field: d_c - group: null - hidden: false - interface: input - note: null - options: - placeholder: '@ 86% Power' - readonly: false - required: false - searchable: true - sort: 25 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: d_c - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: mw - type: string - meta: - collection: laser_source - conditions: null - display: formatted-value - display_options: - suffix: ' mW' - field: mw - group: null - hidden: false - interface: input - note: power of red dot pointer in mW - options: - placeholder: '0.5' - readonly: false - required: false - searchable: true - sort: 28 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: mw - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: l_on - type: string - meta: - collection: laser_source - conditions: null - display: raw - display_options: null - field: l_on - group: null - hidden: false - interface: input - note: null - options: - placeholder: 2 ◅ 20 ◅ 50 - readonly: false - required: false - searchable: true - sort: 21 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: l_on - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: l_off - type: string - meta: - collection: laser_source - conditions: null - display: raw - display_options: null - field: l_off - group: null - hidden: false - interface: input - note: null - options: - placeholder: 2 ◅ 5 - readonly: false - required: false - searchable: true - sort: 22 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: l_off - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: on_c - type: string - meta: - collection: laser_source - conditions: null - display: raw - display_options: null - field: on_c - group: null - hidden: false - interface: input - note: null - options: - placeholder: 0-90% Power - readonly: false - required: false - searchable: true - sort: 26 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: on_c - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: off_c - type: string - meta: - collection: laser_source - conditions: null - display: raw - display_options: null - field: off_c - group: null - hidden: false - interface: input - note: null - options: - placeholder: 100-10% Power - readonly: false - required: false - searchable: true - sort: 27 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: off_c - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: anti - type: string - meta: - collection: laser_source - conditions: null - display: raw - display_options: null - field: anti - group: null - hidden: false - interface: select-dropdown - note: null - options: - choices: - - text: 'yes' - value: 'yes' - - text: 'no' - value: 'no' - - text: unknown - value: unknown - readonly: false - required: false - searchable: true - sort: 17 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: anti - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: laser_source - field: ns_c - type: string - meta: - collection: laser_source - conditions: null - display: raw - display_options: null - field: ns_c - group: null - hidden: false - interface: input - note: null - options: - placeholder: '@ 30kHz' - readonly: false - required: false - searchable: true - sort: 24 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: ns_c - table: laser_source - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material - field: user_updated - type: string - meta: - collection: material - conditions: null - display: null - display_options: null - field: user_updated - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 14 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: user_updated - table: material - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material - field: id - type: integer - meta: - collection: material - conditions: null - display: null - display_options: null - field: id - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 12 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: material - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: material - field: sort - type: integer - meta: - collection: material - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 17 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: material - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material - field: date_created - type: timestamp - meta: - collection: material - conditions: null - display: null - display_options: null - field: date_created - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 15 - special: - - date-created - translations: null - validation: null - validation_message: null - width: full - schema: - name: date_created - table: material - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material - field: date_updated - type: timestamp - meta: - collection: material - conditions: null - display: null - display_options: null - field: date_updated - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 16 - special: - - date-created - - date-updated - translations: null - validation: null - validation_message: null - width: full - schema: - name: date_updated - table: material - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material - field: name - type: string - meta: - collection: material - conditions: null - display: null - display_options: null - field: name - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: name - table: material - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material - field: abbreviation - type: string - meta: - collection: material - conditions: null - display: null - display_options: null - field: abbreviation - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 7 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: abbreviation - table: material - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material - field: technical_name - type: string - meta: - collection: material - conditions: null - display: null - display_options: null - field: technical_name - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 9 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: technical_name - table: material - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material - field: composition - type: string - meta: - collection: material - conditions: null - display: null - display_options: null - field: composition - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 10 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: composition - table: material - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material - field: user_created - type: string - meta: - collection: material - conditions: null - display: null - display_options: null - field: user_created - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 13 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: user_created - table: material - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material - field: material_cat - type: integer - meta: - collection: material - conditions: null - display: related-values - display_options: - template: '{{name}}' - field: material_cat - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{name}}' - readonly: false - required: false - searchable: true - sort: 1 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: material_cat - table: material - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material_cat - foreign_key_column: id - - collection: material - field: material_status - type: integer - meta: - collection: material - conditions: null - display: related-values - display_options: - template: "{{danger}}\_{{name}}" - field: material_status - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{name}}' - readonly: false - required: false - searchable: true - sort: 3 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: material_status - table: material - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material_status - foreign_key_column: id - - collection: material - field: hazard_tags - type: alias - meta: - collection: material - conditions: null - display: related-values - display_options: - template: "{{hazard_tags_id.hazard_source.source}}\_| {{hazard_tags_id.hazard_danger.danger}}\_| {{hazard_tags_id.hazard_severity.severity}}" - field: hazard_tags - group: null - hidden: false - interface: list-m2m - note: null - options: - fields: - - hazard_tags_id.hazard_source.source - - hazard_tags_id.hazard_danger.danger - - hazard_tags_id.hazard_severity.severity - layout: table - tableSpacing: compact - readonly: false - required: false - searchable: true - sort: 4 - special: - - m2m - translations: null - validation: null - validation_message: null - width: full - - collection: material - field: notes - type: text - meta: - collection: material - conditions: null - display: null - display_options: null - field: notes - group: null - hidden: false - interface: input-multiline - note: null - options: null - readonly: false - required: false - searchable: true - sort: 11 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: notes - table: material - data_type: text - default_value: null - max_length: 65535 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material - field: material_status_override - type: string - meta: - collection: material - conditions: null - display: null - display_options: null - field: material_status_override - group: null - hidden: false - interface: select-dropdown - note: null - options: - choices: - - text: CRITICAL RISK > DANGEROUS - value: cr>d - - text: DANGEROUS > CAUTION - value: d>c - - text: CAUTION > SAFE - value: c>s - readonly: false - required: false - searchable: true - sort: 5 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: material_status_override - table: material - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material - field: override_reason - type: string - meta: - collection: material - conditions: null - display: null - display_options: null - field: override_reason - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 6 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: override_reason - table: material - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material - field: common_names - type: string - meta: - collection: material - conditions: null - display: null - display_options: null - field: common_names - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 8 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: common_names - table: material - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_cat - field: id - type: integer - meta: - collection: material_cat - conditions: null - display: null - display_options: null - field: id - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: material_cat - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: material_cat - field: user_created - type: string - meta: - collection: material_cat - conditions: null - display: null - display_options: null - field: user_created - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: user_created - table: material_cat - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_cat - field: user_updated - type: string - meta: - collection: material_cat - conditions: null - display: null - display_options: null - field: user_updated - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 4 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: user_updated - table: material_cat - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_cat - field: date_created - type: timestamp - meta: - collection: material_cat - conditions: null - display: null - display_options: null - field: date_created - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 5 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: date_created - table: material_cat - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_cat - field: date_updated - type: timestamp - meta: - collection: material_cat - conditions: null - display: null - display_options: null - field: date_updated - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 6 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: date_updated - table: material_cat - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_cat - field: name - type: string - meta: - collection: material_cat - conditions: null - display: null - display_options: null - field: name - group: null - hidden: false - interface: input - note: null - options: - placeholder: Textiles - readonly: false - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: name - table: material_cat - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_cat - field: sort - type: integer - meta: - collection: material_cat - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 7 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: material_cat - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_coating - field: id - type: integer - meta: - collection: material_coating - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 10 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: material_coating - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: material_coating - field: sort - type: integer - meta: - collection: material_coating - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 15 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: material_coating - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_coating - field: user_created - type: string - meta: - collection: material_coating - conditions: null - display: user - display_options: null - field: user_created - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 11 - special: - - user-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_created - table: material_coating - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: material_coating - field: date_created - type: timestamp - meta: - collection: material_coating - conditions: null - display: datetime - display_options: - relative: true - field: date_created - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 12 - special: - - date-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_created - table: material_coating - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_coating - field: user_updated - type: string - meta: - collection: material_coating - conditions: null - display: user - display_options: null - field: user_updated - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 13 - special: - - user-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_updated - table: material_coating - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: material_coating - field: date_updated - type: timestamp - meta: - collection: material_coating - conditions: null - display: datetime - display_options: - relative: true - field: date_updated - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 14 - special: - - date-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_updated - table: material_coating - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_coating - field: abbreviation - type: string - meta: - collection: material_coating - conditions: null - display: null - display_options: null - field: abbreviation - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 6 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: abbreviation - table: material_coating - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_coating - field: technical_name - type: string - meta: - collection: material_coating - conditions: null - display: null - display_options: null - field: technical_name - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 7 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: technical_name - table: material_coating - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_coating - field: composition - type: string - meta: - collection: material_coating - conditions: null - display: null - display_options: null - field: composition - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 8 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: composition - table: material_coating - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_coating - field: name - type: string - meta: - collection: material_coating - conditions: null - display: null - display_options: null - field: name - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: name - table: material_coating - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_coating - field: coating_status - type: integer - meta: - collection: material_coating - conditions: null - display: related-values - display_options: - template: "{{danger}}\_{{name}}" - field: coating_status - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: "{{danger}}\_{{name}}" - readonly: false - required: false - searchable: true - sort: 2 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: coating_status - table: material_coating - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material_status - foreign_key_column: id - - collection: material_coating - field: hazard_tags - type: alias - meta: - collection: material_coating - conditions: null - display: related-values - display_options: - template: "{{hazard_tags_id.hazard_source.source}}\_| {{hazard_tags_id.hazard_danger.danger}}\_| {{hazard_tags_id.hazard_severity.severity}}" - field: hazard_tags - group: null - hidden: false - interface: list-m2m - note: null - options: - fields: - - hazard_tags_id.hazard_source.source - - hazard_tags_id.hazard_danger.danger - - hazard_tags_id.hazard_severity.severity - layout: table - tableSpacing: compact - template: "{{hazard_tags_id.hazard_source.source}}\_| {{hazard_tags_id.hazard_danger.danger}}\_| {{hazard_tags_id.hazard_severity.severity}}" - readonly: false - required: false - searchable: true - sort: 3 - special: - - m2m - translations: null - validation: null - validation_message: null - width: full - - collection: material_coating - field: notes - type: text - meta: - collection: material_coating - conditions: null - display: null - display_options: null - field: notes - group: null - hidden: false - interface: input-multiline - note: null - options: null - readonly: false - required: false - searchable: true - sort: 9 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: notes - table: material_coating - data_type: text - default_value: null - max_length: 65535 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_coating - field: coating_status_override - type: string - meta: - collection: material_coating - conditions: null - display: null - display_options: null - field: coating_status_override - group: null - hidden: false - interface: select-dropdown - note: null - options: - choices: - - text: CRITICAL RISK > DANGEROUS - value: cr>d - - text: DANGEROUS > CAUTION - value: d>c - - text: CAUTION > SAFE - value: c>s - readonly: false - required: false - searchable: true - sort: 4 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: coating_status_override - table: material_coating - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_coating - field: override_reason - type: string - meta: - collection: material_coating - conditions: null - display: null - display_options: null - field: override_reason - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 5 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: override_reason - table: material_coating - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_coating_hazard_tags - field: id - type: integer - meta: - collection: material_coating_hazard_tags - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: material_coating_hazard_tags - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: material_coating_hazard_tags - field: material_coating_id - type: integer - meta: - collection: material_coating_hazard_tags - conditions: null - display: null - display_options: null - field: material_coating_id - group: null - hidden: true - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: material_coating_id - table: material_coating_hazard_tags - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material_coating - foreign_key_column: id - - collection: material_coating_hazard_tags - field: hazard_tags_id - type: integer - meta: - collection: material_coating_hazard_tags - conditions: null - display: null - display_options: null - field: hazard_tags_id - group: null - hidden: true - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: hazard_tags_id - table: material_coating_hazard_tags - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: hazard_tags - foreign_key_column: id - - collection: material_color - field: id - type: integer - meta: - collection: material_color - conditions: null - display: null - display_options: null - field: id - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: material_color - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: material_color - field: user_created - type: string - meta: - collection: material_color - conditions: null - display: null - display_options: null - field: user_created - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 4 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: user_created - table: material_color - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_color - field: user_updated - type: string - meta: - collection: material_color - conditions: null - display: null - display_options: null - field: user_updated - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 5 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: user_updated - table: material_color - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_color - field: sort - type: integer - meta: - collection: material_color - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 8 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: material_color - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_color - field: date_created - type: timestamp - meta: - collection: material_color - conditions: null - display: null - display_options: null - field: date_created - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 6 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: date_created - table: material_color - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_color - field: date_updated - type: timestamp - meta: - collection: material_color - conditions: null - display: null - display_options: null - field: date_updated - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 7 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: date_updated - table: material_color - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_color - field: name - type: string - meta: - collection: material_color - conditions: null - display: null - display_options: null - field: name - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: name - table: material_color - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_color - field: colors - type: string - meta: - collection: material_color - conditions: null - display: color - display_options: null - field: colors - group: null - hidden: false - interface: select-color - note: null - options: null - readonly: false - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: colors - table: material_color - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_hazard_tags - field: id - type: integer - meta: - collection: material_hazard_tags - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: material_hazard_tags - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: material_hazard_tags - field: material_id - type: integer - meta: - collection: material_hazard_tags - conditions: null - display: null - display_options: null - field: material_id - group: null - hidden: true - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: material_id - table: material_hazard_tags - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material - foreign_key_column: id - - collection: material_hazard_tags - field: hazard_tags_id - type: integer - meta: - collection: material_hazard_tags - conditions: null - display: null - display_options: null - field: hazard_tags_id - group: null - hidden: true - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: hazard_tags_id - table: material_hazard_tags - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: hazard_tags - foreign_key_column: id - - collection: material_opacity - field: id - type: integer - meta: - collection: material_opacity - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: material_opacity - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: material_opacity - field: sort - type: integer - meta: - collection: material_opacity - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 7 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: material_opacity - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_opacity - field: user_created - type: string - meta: - collection: material_opacity - conditions: null - display: user - display_options: null - field: user_created - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 3 - special: - - user-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_created - table: material_opacity - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: material_opacity - field: date_created - type: timestamp - meta: - collection: material_opacity - conditions: null - display: datetime - display_options: - relative: true - field: date_created - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 4 - special: - - date-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_created - table: material_opacity - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_opacity - field: user_updated - type: string - meta: - collection: material_opacity - conditions: null - display: user - display_options: null - field: user_updated - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 5 - special: - - user-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_updated - table: material_opacity - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: material_opacity - field: date_updated - type: timestamp - meta: - collection: material_opacity - conditions: null - display: datetime - display_options: - relative: true - field: date_updated - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 6 - special: - - date-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_updated - table: material_opacity - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_opacity - field: opacity - type: string - meta: - collection: material_opacity - conditions: null - display: raw - display_options: - choices: null - field: opacity - group: null - hidden: false - interface: input - note: null - options: - choices: null - placeholder: Transparent - readonly: false - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: opacity - table: material_opacity - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_status - field: id - type: integer - meta: - collection: material_status - conditions: null - display: null - display_options: null - field: id - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: material_status - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: material_status - field: user_created - type: string - meta: - collection: material_status - conditions: null - display: null - display_options: null - field: user_created - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 4 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: user_created - table: material_status - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_status - field: user_updated - type: string - meta: - collection: material_status - conditions: null - display: null - display_options: null - field: user_updated - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 5 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: user_updated - table: material_status - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_status - field: sort - type: integer - meta: - collection: material_status - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 8 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: material_status - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_status - field: date_created - type: timestamp - meta: - collection: material_status - conditions: null - display: null - display_options: null - field: date_created - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 6 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: date_created - table: material_status - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_status - field: date_updated - type: timestamp - meta: - collection: material_status - conditions: null - display: null - display_options: null - field: date_updated - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 7 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: date_updated - table: material_status - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_status - field: name - type: string - meta: - collection: material_status - conditions: null - display: null - display_options: null - field: name - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: name - table: material_status - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: material_status - field: danger - type: string - meta: - collection: material_status - conditions: null - display: color - display_options: null - field: danger - group: null - hidden: false - interface: select-color - note: null - options: - presets: - - color: '#FFFFFF' - name: Safe - - color: '#F5C211' - name: Caution - - color: '#E66100' - name: Dangerous - - color: '#C01C28' - name: Critical Risk - readonly: false - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: danger - table: material_status - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: projects - field: submission_id - type: integer - meta: - collection: projects - conditions: null - display: null - display_options: null - field: submission_id - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: submission_id - table: projects - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: projects - field: title - type: string - meta: - collection: projects - conditions: null - display: formatted-value - display_options: - format: true - field: title - group: null - hidden: false - interface: input - note: null - options: - placeholder: ' My Awesome Project' - readonly: false - required: true - searchable: true - sort: 4 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: title - table: projects - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: projects - field: uploader - type: string - meta: - collection: projects - conditions: null - display: formatted-value - display_options: null - field: uploader - group: null - hidden: false - interface: input - note: null - options: - placeholder: My Awesome Name - readonly: false - required: true - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: uploader - table: projects - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: projects - field: category - type: string - meta: - collection: projects - conditions: null - display: formatted-value - display_options: - format: true - field: category - group: null - hidden: false - interface: select-dropdown - note: null - options: - allowNone: true - allowOther: true - choices: - - text: Assets - value: assets - - text: Documents - value: documents - - text: Fixtures - value: fixtures - - text: Projects - value: projects - - text: Templates - value: templates - - text: Test Files - value: test_files - - text: Tools - value: tools - readonly: false - required: true - searchable: true - sort: 5 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: category - table: projects - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: projects - field: submission_date - type: dateTime - meta: - collection: projects - conditions: null - display: null - display_options: null - field: submission_date - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 9 - special: - - date-created - translations: null - validation: null - validation_message: null - width: full - schema: - name: submission_date - table: projects - data_type: datetime - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: projects - field: last_modified_date - type: dateTime - meta: - collection: projects - conditions: null - display: null - display_options: null - field: last_modified_date - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 10 - special: - - date-created - - date-updated - translations: null - validation: null - validation_message: null - width: full - schema: - name: last_modified_date - table: projects - data_type: datetime - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: projects - field: tags - type: json - meta: - collection: projects - conditions: null - display: null - display_options: null - field: tags - group: null - hidden: false - interface: tags - note: null - options: - placeholder: Add some tags for discoverability! - presets: - - '1064' - - fiber - - '10600' - - co2 - - gantry - - galvo - - 3d printing - - acrylic - - wood - - metal - - '355' - - uv - - '455' - - diode - - assembly required - - beginner - - intermediate - - advanced - - air assist - - rotary - - business - - document - - lightburn - - clb - - lbrn2 - - zip - - eps - - ai - - svg - - jpg - - png - - xcf - - vector - - raster - - asset - - testing - - test grid - - ezcad - - ezd - - ez3 - - plastic - - synthetic - - natural - - diy - - branding - - 3d model - - printing - - plotter - - uv printing - - form - - art - - fixture - - project - - template - - tools - - reference - - outline - - sales - - marketing - - stl - readonly: false - required: false - searchable: true - sort: 11 - special: - - cast-json - translations: null - validation: null - validation_message: null - width: full - schema: - name: tags - table: projects - data_type: longtext - default_value: null - max_length: 4294967295 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: projects - field: p_files - type: alias - meta: - collection: projects - conditions: null - display: null - display_options: null - field: p_files - group: null - hidden: false - interface: files - note: null - options: - folder: f264f066-5b38-4335-bb10-5b014bfa62cb - readonly: false - required: true - searchable: true - sort: 7 - special: - - files - translations: null - validation: null - validation_message: null - width: full - - collection: projects - field: instructions - type: text - meta: - collection: projects - conditions: null - display: null - display_options: null - field: instructions - group: null - hidden: false - interface: input-rich-text-md - note: null - options: - folder: 905a4259-0c8e-489b-b810-c27186a2f266 - placeholder: Instructions for your project? - readonly: false - required: false - searchable: true - sort: 8 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: instructions - table: projects - data_type: text - default_value: null - max_length: 65535 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: projects - field: p_image - type: uuid - meta: - collection: projects - conditions: null - display: image - display_options: null - field: p_image - group: null - hidden: false - interface: file-image - note: null - options: - crop: false - folder: da11b876-2ede-4e19-ad3a-76fc9db449a8 - readonly: false - required: true - searchable: true - sort: 6 - special: - - file - translations: null - validation: null - validation_message: null - width: full - schema: - name: p_image - table: projects - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_files - foreign_key_column: id - - collection: projects - field: owner - type: string - meta: - collection: projects - conditions: null - display: null - display_options: null - field: owner - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{username}}' - readonly: false - required: false - searchable: true - sort: 2 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: owner - table: projects - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: projects_files - field: id - type: integer - meta: - collection: projects_files - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: projects_files - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: projects_files - field: projects_submission_id - type: integer - meta: - collection: projects_files - conditions: null - display: null - display_options: null - field: projects_submission_id - group: null - hidden: true - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: projects_submission_id - table: projects_files - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: projects - foreign_key_column: submission_id - - collection: projects_files - field: directus_files_id - type: string - meta: - collection: projects_files - conditions: null - display: null - display_options: null - field: directus_files_id - group: null - hidden: true - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: directus_files_id - table: projects_files - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_files - foreign_key_column: id - - collection: settings_co2gal - field: setting_title - type: string - meta: - collection: settings_co2gal - conditions: null - display: formatted-value - display_options: - format: true - field: setting_title - group: null - hidden: false - interface: input - note: null - options: - placeholder: My Awesome Setting - readonly: false - required: true - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: setting_title - table: settings_co2gal - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gal - field: uploader - type: string - meta: - collection: settings_co2gal - conditions: null - display: formatted-value - display_options: - format: true - field: uploader - group: null - hidden: false - interface: input - note: null - options: - placeholder: Mr Laser King - readonly: false - required: true - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: uploader - table: settings_co2gal - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gal - field: submission_date - type: dateTime - meta: - collection: settings_co2gal - conditions: null - display: null - display_options: null - field: submission_date - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 24 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: submission_date - table: settings_co2gal - data_type: datetime - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gal - field: last_modified_date - type: dateTime - meta: - collection: settings_co2gal - conditions: null - display: null - display_options: null - field: last_modified_date - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 25 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: last_modified_date - table: settings_co2gal - data_type: datetime - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gal - field: submission_id - type: integer - meta: - collection: settings_co2gal - conditions: null - display: null - display_options: null - field: submission_id - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 23 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: submission_id - table: settings_co2gal - data_type: mediumint unsigned - default_value: null - max_length: null - numeric_precision: 8 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gal - field: photo - type: uuid - meta: - collection: settings_co2gal - conditions: null - display: image - display_options: null - field: photo - group: null - hidden: false - interface: file-image - note: null - options: - crop: false - folder: e5535371-828a-498b-80fc-3891b6220fd4 - readonly: false - required: true - searchable: true - sort: 4 - special: - - file - translations: null - validation: null - validation_message: null - width: full - schema: - name: photo - table: settings_co2gal - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_files - foreign_key_column: id - - collection: settings_co2gal - field: screen - type: uuid - meta: - collection: settings_co2gal - conditions: null - display: image - display_options: null - field: screen - group: null - hidden: false - interface: file-image - note: null - options: - crop: false - folder: 8201e4c0-c39c-456a-bd55-1beb96642bcb - readonly: false - required: false - searchable: true - sort: 5 - special: - - file - translations: null - validation: null - validation_message: null - width: full - schema: - name: screen - table: settings_co2gal - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_files - foreign_key_column: id - - collection: settings_co2gal - field: source - type: integer - meta: - collection: settings_co2gal - conditions: null - display: related-values - display_options: - template: "{{make}}\_{{model}}" - field: source - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: "{{make}}\_{{model}}" - readonly: false - required: true - searchable: true - sort: 6 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: source - table: settings_co2gal - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_source - foreign_key_column: submission_id - - collection: settings_co2gal - field: lens - type: integer - meta: - collection: settings_co2gal - conditions: null - display: related-values - display_options: - template: "{{field_size}}\_{{focal_length}}" - field: lens - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: "{{field_size}}\_{{focal_length}}" - readonly: false - required: true - searchable: true - sort: 7 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: lens - table: settings_co2gal - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_scan_lens - foreign_key_column: id - - collection: settings_co2gal - field: focus - type: decimal - meta: - collection: settings_co2gal - conditions: null - display: formatted-value - display_options: - suffix: mm - field: focus - group: null - hidden: false - interface: input - note: Focus, + values focus away, - values focus closer, in (mm) - options: - alwaysShowValue: true - maxValue: 10 - minValue: -10 - placeholder: '0' - stepInterval: null - readonly: false - required: true - searchable: true - sort: 11 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: focus - table: settings_co2gal - data_type: decimal - default_value: 0 - max_length: null - numeric_precision: 3 - numeric_scale: 1 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gal - field: mat - type: integer - meta: - collection: settings_co2gal - conditions: null - display: related-values - display_options: - template: "{{name}}\_\_\_\_ {{material_status.danger}}\_{{material_status.name}}" - field: mat - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: "{{name}}\_\_\_\_ {{material_status.danger}}\_{{material_status.name}}" - readonly: false - required: true - searchable: true - sort: 12 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat - table: settings_co2gal - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material - foreign_key_column: id - - collection: settings_co2gal - field: mat_coat - type: integer - meta: - collection: settings_co2gal - conditions: null - display: related-values - display_options: - template: "{{name}}\_\_\_\_ {{coating_status.danger}}\_{{coating_status.name}}" - field: mat_coat - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: "{{name}}\_\_\_\_ {{coating_status.danger}}\_{{coating_status.name}}" - readonly: false - required: true - searchable: true - sort: 13 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat_coat - table: settings_co2gal - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material_coating - foreign_key_column: id - - collection: settings_co2gal - field: mat_color - type: integer - meta: - collection: settings_co2gal - conditions: null - display: related-values - display_options: - template: "{{colors}}\_{{name}}" - field: mat_color - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: "{{colors}}\_{{name}}" - readonly: false - required: true - searchable: true - sort: 14 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat_color - table: settings_co2gal - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material_color - foreign_key_column: id - - collection: settings_co2gal - field: mat_opacity - type: integer - meta: - collection: settings_co2gal - conditions: null - display: related-values - display_options: - template: '{{opacity}}' - field: mat_opacity - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: '{{opacity}}' - readonly: false - required: true - searchable: true - sort: 15 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat_opacity - table: settings_co2gal - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material_opacity - foreign_key_column: id - - collection: settings_co2gal - field: mat_thickness - type: decimal - meta: - collection: settings_co2gal - conditions: null - display: formatted-value - display_options: - suffix: mm - field: mat_thickness - group: null - hidden: false - interface: input - note: null - options: - placeholder: '3' - readonly: false - required: false - searchable: true - sort: 16 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat_thickness - table: settings_co2gal - data_type: decimal - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 5 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gal - field: laser_soft - type: integer - meta: - collection: settings_co2gal - conditions: null - display: related-values - display_options: - template: '{{name}}' - field: laser_soft - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: '{{name}}' - readonly: false - required: true - searchable: true - sort: 17 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: laser_soft - table: settings_co2gal - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_software - foreign_key_column: id - - collection: settings_co2gal - field: repeat_all - type: integer - meta: - collection: settings_co2gal - conditions: null - display: formatted-value - display_options: - suffix: total passes - field: repeat_all - group: null - hidden: false - interface: input - note: How many times ALL settings below should be cycled through. - options: - max: 9999 - min: 1 - placeholder: '1' - readonly: false - required: true - searchable: true - sort: 18 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: repeat_all - table: settings_co2gal - data_type: int - default_value: 1 - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gal - field: setting_notes - type: text - meta: - collection: settings_co2gal - conditions: null - display: formatted-value - display_options: - format: true - field: setting_notes - group: null - hidden: false - interface: input-rich-text-md - note: null - options: - folder: 7b04a706-754d-4302-a9a0-6c88cd8faddf - readonly: false - required: false - searchable: true - sort: 19 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: setting_notes - table: settings_co2gal - data_type: text - default_value: null - max_length: 65535 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gal - field: fill_settings - type: json - meta: - collection: settings_co2gal - conditions: null - display: null - display_options: null - field: fill_settings - group: null - hidden: false - interface: list - note: null - options: - addLabel: Create New Fill - fields: - - field: name - meta: - field: name - interface: input - options: - placeholder: Engraving Pass - type: string - width: full - name: name - type: string - - field: power - meta: - display: formatted-value - display_options: - conditionalFormatting: null - suffix: ' %' - field: power - interface: input - note: Power as a % of total available. - options: - placeholder: '80' - type: integer - width: half - name: power - type: integer - - field: speed - meta: - display: formatted-value - display_options: - suffix: ' mm/s' - field: speed - interface: input - note: Galvo scan speed in mm/s - options: - placeholder: '1000' - type: integer - width: half - name: speed - type: integer - - field: frequency - meta: - display: formatted-value - display_options: - suffix: ' kHz' - field: frequency - interface: input - note: Freqency of pulses in kHz - options: - placeholder: '45' - type: integer - width: half - name: frequency - type: integer - - field: interval - meta: - display: formatted-value - display_options: - suffix: ' mm' - field: interval - interface: input - note: Spacing between scan line centers in scan pattern in mm - options: - placeholder: '0.025' - type: decimal - width: half - name: interval - type: decimal - - field: pass - meta: - display: formatted-value - display_options: - suffix: ' pass(es)' - field: pass - interface: input - note: Number of passes to execute - options: - placeholder: '1' - type: integer - width: half - name: pass - type: integer - - field: type - meta: - display: formatted-value - display_options: - format: true - field: type - interface: select-dropdown - note: Scan pattern to execute - options: - choices: - - text: UniDirectional - value: uni - - text: BiDirectional - value: bi - - text: Offset Fill - value: offset - type: string - width: half - name: type - type: string - - field: angle - meta: - display: formatted-value - display_options: - suffix: ° - field: angle - interface: input - note: Angle at which to execute the scan pattern in degrees - options: - placeholder: '45' - type: integer - width: half - name: angle - type: integer - - field: auto - meta: - display: boolean - field: auto - interface: boolean - note: Whether or not auto rotate is used, check for yes. - type: boolean - width: half - name: auto - type: boolean - - field: increment - meta: - display: formatted-value - display_options: - suffix: ° - field: increment - interface: input - note: >- - The angle per pass to adjust the scan pattern rotation when - using auto-rotate in degrees - options: - placeholder: '30' - type: integer - width: half - name: increment - type: integer - - field: cross - meta: - display: boolean - field: cross - interface: boolean - note: Whether or not cross-hatch is enabled, check for yes. - type: boolean - width: half - name: cross - type: boolean - - field: flood - meta: - display: boolean - field: flood - interface: boolean - note: Whether or not flood fill is enabled, check for yes. - type: boolean - width: half - name: flood - type: boolean - - field: air - meta: - display: boolean - field: air - interface: boolean - note: Whether or not air assist is enabled, check for yes. - type: boolean - width: half - name: air - type: boolean - readonly: false - required: false - searchable: true - sort: 20 - special: - - cast-json - translations: null - validation: null - validation_message: null - width: full - schema: - name: fill_settings - table: settings_co2gal - data_type: longtext - default_value: null - max_length: 4294967295 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gal - field: line_settings - type: json - meta: - collection: settings_co2gal - conditions: null - display: null - display_options: null - field: line_settings - group: null - hidden: false - interface: list - note: null - options: - addLabel: Create New Line - fields: - - field: name - meta: - display: formatted-value - display_options: - conditionalFormatting: null - format: true - field: name - interface: input - note: The name of the line setting - options: - placeholder: My great cut setting - type: string - width: full - name: name - type: string - - field: power - meta: - display: formatted-value - display_options: - conditionalFormatting: null - suffix: ' %' - field: power - interface: input - note: Power as a % of total available. - options: - placeholder: '80' - type: integer - width: half - name: power - type: integer - - field: speed - meta: - display: formatted-value - display_options: - suffix: ' mm/s' - field: speed - interface: input - note: Galvo scan speed in mm/s - options: - placeholder: '1000' - type: integer - width: half - name: speed - type: integer - - field: frequency - meta: - display: formatted-value - display_options: - suffix: ' kHz' - field: frequency - interface: input - note: Freqency of pulses in kHz - options: - placeholder: '45' - type: integer - width: half - name: frequency - type: integer - - field: perf - meta: - display: boolean - display_options: - labelOff: Disabled - labelOn: Enabled - field: perf - interface: boolean - note: Is perforation enabled in your setting? - required: false - type: boolean - width: full - name: perf - type: boolean - - field: cut - meta: - display: formatted-value - display_options: - suffix: mm - field: cut - interface: input - note: Amount to cut before skip (mm) - perf mode only. - options: - placeholder: '0.10' - type: decimal - width: half - name: cut - type: decimal - - field: skip - meta: - display: formatted-value - display_options: - suffix: mm - field: skip - interface: input - note: Amount to skip before the cut (mm) - perf mode only. - options: - placeholder: '0.10' - type: decimal - width: half - name: skip - type: decimal - - field: wobble - meta: - display: boolean - display_options: - labelOff: Disabled - labelOn: Enabled - field: wobble - interface: boolean - note: Is Wobble enabled in your setting? - type: boolean - width: full - name: wobble - type: boolean - - field: step - meta: - display: formatted-value - display_options: - suffix: mm - field: step - interface: input - note: Distance to step per wobble (mm) - wobble mode only. - options: - placeholder: '0.03' - type: decimal - width: half - name: step - type: decimal - - field: size - meta: - display: formatted-value - display_options: - suffix: mm - field: size - interface: input - note: Size to wobble per step (mm) - wobble mode only. - options: - placeholder: '0.2' - required: false - type: decimal - width: half - name: size - type: decimal - - field: pass - meta: - display: formatted-value - display_options: - suffix: ' pass(es)' - field: pass - interface: input - note: Number of passes to execute - options: - placeholder: '1' - type: integer - width: half - name: pass - type: integer - - field: air - meta: - display: boolean - field: air - interface: boolean - note: Whether or not air assist is enabled, check for yes. - type: boolean - width: half - name: air - type: boolean - readonly: false - required: false - searchable: true - sort: 21 - special: - - cast-json - translations: null - validation: null - validation_message: null - width: full - schema: - name: line_settings - table: settings_co2gal - data_type: longtext - default_value: null - max_length: 4294967295 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gal - field: raster_settings - type: json - meta: - collection: settings_co2gal - conditions: null - display: null - display_options: null - field: raster_settings - group: null - hidden: false - interface: list - note: null - options: - addLabel: Create New Raster - fields: - - field: name - meta: - display: formatted-value - display_options: - format: true - field: name - interface: input - note: Name of the raster setting - options: - placeholder: Photo Cleanup Pass - type: string - width: full - name: name - type: string - - field: power - meta: - display: formatted-value - display_options: - conditionalFormatting: null - suffix: ' %' - field: power - interface: input - note: Power as a % of total available. - options: - placeholder: '80' - type: integer - width: half - name: power - type: integer - - field: speed - meta: - display: formatted-value - display_options: - suffix: ' mm/s' - field: speed - interface: input - note: Galvo scan speed in mm/s - options: - placeholder: '1000' - type: integer - width: half - name: speed - type: integer - - field: frequency - meta: - display: formatted-value - display_options: - suffix: ' kHz' - field: frequency - interface: input - note: Freqency of pulses in kHz - options: - placeholder: '45' - type: integer - width: half - name: frequency - type: integer - - field: type - meta: - display: formatted-value - display_options: - format: true - field: type - interface: select-dropdown - note: Scan pattern to execute - options: - choices: - - text: UniDirectional - value: uni - - text: BiDirectional - value: bi - - text: Offset Fill - value: offset - type: string - width: half - name: type - type: string - - field: dither - meta: - field: dither - interface: select-dropdown - note: The dither mode to be applied to the raster image - options: - choices: - - text: Threshold - value: threshold - - text: Ordered - value: ordered - - text: Atkinson - value: atkinson - - text: Dither - value: dither - - text: Stucki - value: stucki - - text: Jarvis - value: jarvis - - text: Newsprint - value: newsprint - - text: Halftone - value: halftone - - text: Sketch - value: sketch - - text: Grayscale - value: grayscale - type: string - width: half - name: dither - type: string - - field: halftone_cell - meta: - display: formatted-value - field: halftone_cell - interface: input - note: The size of each halftone cell - only if halftone is selected - options: - placeholder: Cell size - halftone mode only. - type: decimal - width: half - name: halftone_cell - type: decimal - - field: halftone_angle - meta: - display: formatted-value - display_options: - suffix: ° - field: halftone_angle - interface: input - note: Angle the halftone pattern is applied to the image in degrees - options: - placeholder: Cell pattern angle - halftone mode only. - type: integer - width: half - name: halftone_angle - type: integer - - field: inversion - meta: - display: boolean - field: inversion - interface: boolean - note: Whether or not image inversion is applied, check for yes. - type: boolean - width: half - name: inversion - type: boolean - - field: interval - meta: - display: formatted-value - display_options: - suffix: ' mm' - field: interval - interface: input - note: Spacing between scan line centers in scan pattern in mm - options: - placeholder: '0.025' - type: decimal - width: half - name: interval - type: decimal - - field: dot - meta: - display: formatted-value - display_options: - suffix: ' mm' - field: dot - interface: input - note: >- - Adjustment to the width of a scan section to compensate for dot - overlap in mm - options: - placeholder: '0.08' - type: decimal - width: half - name: dot - type: decimal - - field: pass - meta: - display: formatted-value - display_options: - suffix: ' pass(es)' - field: pass - interface: input - note: Number of passes to execute - options: - placeholder: '1' - type: integer - width: half - name: pass - type: integer - - field: angle - meta: - field: angle - interface: input - type: integer - width: half - name: angle - type: integer - - field: auto - meta: - field: auto - interface: boolean - type: boolean - width: half - name: auto - type: boolean - - field: increment - meta: - field: increment - interface: input - type: integer - width: half - name: increment - type: integer - - field: cross - meta: - display: boolean - field: cross - interface: boolean - note: Whether or not cross-hatch is enabled, check for yes. - type: boolean - width: half - name: cross - type: boolean - - field: air - meta: - display: boolean - field: air - interface: boolean - note: Whether or not air assist is enabled, check for yes. - type: boolean - width: half - name: air - type: boolean - readonly: false - required: false - searchable: true - sort: 22 - special: - - cast-json - translations: null - validation: null - validation_message: null - width: full - schema: - name: raster_settings - table: settings_co2gal - data_type: longtext - default_value: null - max_length: 4294967295 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gal - field: lens_conf - type: integer - meta: - collection: settings_co2gal - conditions: null - display: related-values - display_options: - template: '{{name}}' - field: lens_conf - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: '{{name}}' - readonly: false - required: true - searchable: true - sort: 8 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: lens_conf - table: settings_co2gal - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_scan_lens_config - foreign_key_column: id - - collection: settings_co2gal - field: lens_apt - type: integer - meta: - collection: settings_co2gal - conditions: null - display: related-values - display_options: - template: '{{name}}' - field: lens_apt - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: '{{name}}' - readonly: false - required: true - searchable: true - sort: 9 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: lens_apt - table: settings_co2gal - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_scan_lens_apt - foreign_key_column: id - - collection: settings_co2gal - field: lens_exp - type: integer - meta: - collection: settings_co2gal - conditions: null - display: related-values - display_options: - template: '{{name}}' - field: lens_exp - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: '{{name}}' - readonly: false - required: true - searchable: true - sort: 10 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: lens_exp - table: settings_co2gal - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_scan_lens_exp - foreign_key_column: id - - collection: settings_co2gal - field: sort - type: integer - meta: - collection: settings_co2gal - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 26 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: settings_co2gal - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gal - field: owner - type: string - meta: - collection: settings_co2gal - conditions: null - display: related-values - display_options: - template: '{{username}}' - field: owner - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{username}}' - readonly: false - required: false - searchable: true - sort: 2 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: owner - table: settings_co2gal - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: settings_co2gan - field: submission_id - type: integer - meta: - collection: settings_co2gan - conditions: null - display: null - display_options: null - field: submission_id - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 21 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: submission_id - table: settings_co2gan - data_type: mediumint unsigned - default_value: null - max_length: null - numeric_precision: 8 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gan - field: setting_title - type: string - meta: - collection: settings_co2gan - conditions: null - display: formatted-value - display_options: - format: true - field: setting_title - group: null - hidden: false - interface: input - note: null - options: - placeholder: My Awesome Setting - readonly: false - required: true - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: setting_title - table: settings_co2gan - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gan - field: uploader - type: string - meta: - collection: settings_co2gan - conditions: null - display: formatted-value - display_options: - format: true - field: uploader - group: null - hidden: false - interface: input - note: null - options: - placeholder: Mr Laser King - readonly: false - required: true - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: uploader - table: settings_co2gan - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gan - field: submission_date - type: dateTime - meta: - collection: settings_co2gan - conditions: null - display: datetime - display_options: - relative: true - field: submission_date - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 22 - special: - - date-created - translations: null - validation: null - validation_message: null - width: full - schema: - name: submission_date - table: settings_co2gan - data_type: datetime - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gan - field: last_modified_date - type: dateTime - meta: - collection: settings_co2gan - conditions: null - display: datetime - display_options: - relative: true - field: last_modified_date - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 23 - special: - - date-created - - date-updated - translations: null - validation: null - validation_message: null - width: full - schema: - name: last_modified_date - table: settings_co2gan - data_type: datetime - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gan - field: screen - type: uuid - meta: - collection: settings_co2gan - conditions: null - display: image - display_options: null - field: screen - group: null - hidden: false - interface: file-image - note: null - options: - crop: false - folder: 9b7d0b47-c1f4-4749-8876-2e4b52ccded0 - readonly: false - required: false - searchable: true - sort: 5 - special: - - file - translations: null - validation: null - validation_message: null - width: full - schema: - name: screen - table: settings_co2gan - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_files - foreign_key_column: id - - collection: settings_co2gan - field: source - type: integer - meta: - collection: settings_co2gan - conditions: null - display: related-values - display_options: - template: "{{make}}\_{{model}}" - field: source - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: "{{make}}\_{{model}}" - readonly: false - required: true - searchable: true - sort: 6 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: source - table: settings_co2gan - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_source - foreign_key_column: submission_id - - collection: settings_co2gan - field: focus - type: decimal - meta: - collection: settings_co2gan - conditions: null - display: formatted-value - display_options: - suffix: mm - field: focus - group: null - hidden: false - interface: input - note: Focus, + values focus away, - values focus closer, in (mm) - options: - alwaysShowValue: true - maxValue: 10 - minValue: -10 - placeholder: '0' - stepInterval: null - readonly: false - required: true - searchable: true - sort: 9 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: focus - table: settings_co2gan - data_type: decimal - default_value: 0 - max_length: null - numeric_precision: 3 - numeric_scale: 1 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gan - field: mat_thickness - type: decimal - meta: - collection: settings_co2gan - conditions: null - display: formatted-value - display_options: - suffix: mm - field: mat_thickness - group: null - hidden: false - interface: input - note: null - options: - placeholder: '3' - readonly: false - required: false - searchable: true - sort: 14 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat_thickness - table: settings_co2gan - data_type: decimal - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 5 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gan - field: mat - type: integer - meta: - collection: settings_co2gan - conditions: null - display: related-values - display_options: - template: "{{name}}\_\_\_ {{material_status.danger}}\_{{material_status.name}}" - field: mat - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: "{{name}}\_\_\_\_ {{material_status.danger}}\_{{material_status.name}}" - readonly: false - required: true - searchable: true - sort: 10 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat - table: settings_co2gan - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material - foreign_key_column: id - - collection: settings_co2gan - field: mat_coat - type: integer - meta: - collection: settings_co2gan - conditions: null - display: related-values - display_options: - template: "{{name}}\_\_\_\_ {{coating_status.danger}}\_{{coating_status.name}}" - field: mat_coat - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: "{{name}}\_\_\_\_ {{coating_status.danger}}\_{{coating_status.name}}" - readonly: false - required: true - searchable: true - sort: 11 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat_coat - table: settings_co2gan - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material_coating - foreign_key_column: id - - collection: settings_co2gan - field: mat_color - type: integer - meta: - collection: settings_co2gan - conditions: null - display: related-values - display_options: - template: "{{colors}}\_{{name}}" - field: mat_color - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: "{{colors}}\_{{name}}" - readonly: false - required: true - searchable: true - sort: 12 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat_color - table: settings_co2gan - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material_color - foreign_key_column: id - - collection: settings_co2gan - field: mat_opacity - type: integer - meta: - collection: settings_co2gan - conditions: null - display: related-values - display_options: - template: '{{opacity}}' - field: mat_opacity - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: '{{opacity}}' - readonly: false - required: true - searchable: true - sort: 13 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat_opacity - table: settings_co2gan - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material_opacity - foreign_key_column: id - - collection: settings_co2gan - field: laser_soft - type: integer - meta: - collection: settings_co2gan - conditions: null - display: related-values - display_options: - template: '{{name}}' - field: laser_soft - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: '{{name}}' - readonly: false - required: true - searchable: true - sort: 15 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: laser_soft - table: settings_co2gan - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_software - foreign_key_column: id - - collection: settings_co2gan - field: repeat_all - type: integer - meta: - collection: settings_co2gan - conditions: null - display: formatted-value - display_options: - suffix: total passes - field: repeat_all - group: null - hidden: false - interface: input - note: How many times ALL settings below should be cycled through. - options: - max: 9999 - min: 1 - placeholder: '1' - readonly: false - required: true - searchable: true - sort: 16 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: repeat_all - table: settings_co2gan - data_type: int - default_value: 1 - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gan - field: setting_notes - type: text - meta: - collection: settings_co2gan - conditions: null - display: formatted-value - display_options: - format: true - field: setting_notes - group: null - hidden: false - interface: input-rich-text-md - note: null - options: - folder: 926e2c1a-7907-4ef2-b778-859c6f40ba82 - readonly: false - required: false - searchable: true - sort: 17 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: setting_notes - table: settings_co2gan - data_type: text - default_value: null - max_length: 65535 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gan - field: fill_settings - type: json - meta: - collection: settings_co2gan - conditions: null - display: null - display_options: null - field: fill_settings - group: null - hidden: false - interface: list - note: null - options: - addLabel: Create New Fill - fields: - - field: name - meta: - field: name - interface: input - options: - placeholder: Engraving Pass - type: string - width: full - name: name - type: string - - field: power - meta: - display: formatted-value - display_options: - conditionalFormatting: null - suffix: ' %' - field: power - interface: input - note: Power as a % of total available. - options: - placeholder: '80' - type: integer - width: half - name: power - type: integer - - field: speed - meta: - display: formatted-value - display_options: - suffix: ' mm/s' - field: speed - interface: input - note: Galvo scan speed in mm/s - options: - placeholder: '1000' - type: integer - width: half - name: speed - type: integer - - field: interval - meta: - display: formatted-value - display_options: - suffix: ' mm' - field: interval - interface: input - note: Spacing between scan line centers in scan pattern in mm - options: - placeholder: '0.025' - type: decimal - width: half - name: interval - type: decimal - - field: pass - meta: - display: formatted-value - display_options: - suffix: ' pass(es)' - field: pass - interface: input - note: Number of passes to execute - options: - placeholder: '1' - type: integer - width: half - name: pass - type: integer - - field: type - meta: - display: formatted-value - display_options: - format: true - field: type - interface: select-dropdown - note: Scan pattern to execute - options: - choices: - - text: UniDirectional - value: uni - - text: BiDirectional - value: bi - - text: Offset Fill - value: offset - type: string - width: half - name: type - type: string - - field: flood - meta: - display: boolean - field: flood - interface: boolean - note: Whether or not flood fill is enabled, check for yes. - type: boolean - width: half - name: flood - type: boolean - - field: air - meta: - display: boolean - field: air - interface: boolean - note: Whether or not air assist is enabled, check for yes. - type: boolean - width: half - name: air - type: boolean - readonly: false - required: false - searchable: true - sort: 18 - special: - - cast-json - translations: null - validation: null - validation_message: null - width: full - schema: - name: fill_settings - table: settings_co2gan - data_type: longtext - default_value: null - max_length: 4294967295 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gan - field: line_settings - type: json - meta: - collection: settings_co2gan - conditions: null - display: null - display_options: null - field: line_settings - group: null - hidden: false - interface: list - note: null - options: - addLabel: Create New Line - fields: - - field: name - meta: - display: formatted-value - display_options: - conditionalFormatting: null - format: true - field: name - interface: input - note: The name of the line setting - options: - placeholder: My great cut setting - type: string - width: full - name: name - type: string - - field: power - meta: - display: formatted-value - display_options: - conditionalFormatting: null - suffix: ' %' - field: power - interface: input - note: Power as a % of total available. - options: - placeholder: '80' - type: integer - width: half - name: power - type: integer - - field: speed - meta: - display: formatted-value - display_options: - suffix: ' mm/s' - field: speed - interface: input - note: Galvo scan speed in mm/s - options: - placeholder: '1000' - type: integer - width: half - name: speed - type: integer - - field: perf - meta: - display: boolean - display_options: - labelOff: Disabled - labelOn: Enabled - field: perf - interface: boolean - note: Is perforation enabled in your setting? - required: false - type: boolean - width: full - name: perf - type: boolean - - field: cut - meta: - display: formatted-value - display_options: - suffix: mm - field: cut - interface: input - note: Amount to cut before skip (mm) - perf mode only. - options: - placeholder: '0.10' - type: decimal - width: half - name: cut - type: decimal - - field: skip - meta: - display: formatted-value - display_options: - suffix: mm - field: skip - interface: input - note: Amount to skip before the cut (mm) - perf mode only. - options: - placeholder: '0.10' - type: decimal - width: half - name: skip - type: decimal - - field: pass - meta: - display: formatted-value - display_options: - suffix: ' pass(es)' - field: pass - interface: input - note: Number of passes to execute - options: - placeholder: '1' - type: integer - width: half - name: pass - type: integer - - field: air - meta: - display: boolean - field: air - interface: boolean - note: Whether or not air assist is enabled, check for yes. - type: boolean - width: half - name: air - type: boolean - readonly: false - required: false - searchable: true - sort: 19 - special: - - cast-json - translations: null - validation: null - validation_message: null - width: full - schema: - name: line_settings - table: settings_co2gan - data_type: longtext - default_value: null - max_length: 4294967295 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gan - field: raster_settings - type: json - meta: - collection: settings_co2gan - conditions: null - display: null - display_options: null - field: raster_settings - group: null - hidden: false - interface: list - note: null - options: - addLabel: Create New Raster - fields: - - field: name - meta: - display: formatted-value - display_options: - format: true - field: name - interface: input - note: Name of the raster setting - options: - placeholder: Photo Cleanup Pass - type: string - width: full - name: name - type: string - - field: power - meta: - display: formatted-value - display_options: - conditionalFormatting: null - suffix: ' %' - field: power - interface: input - note: Power as a % of total available. - options: - placeholder: '80' - type: integer - width: half - name: power - type: integer - - field: speed - meta: - display: formatted-value - display_options: - suffix: ' mm/s' - field: speed - interface: input - note: Galvo scan speed in mm/s - options: - placeholder: '1000' - type: integer - width: half - name: speed - type: integer - - field: type - meta: - display: formatted-value - display_options: - format: true - field: type - interface: select-dropdown - note: Scan pattern to execute - options: - choices: - - text: UniDirectional - value: uni - - text: BiDirectional - value: bi - - text: Offset Fill - value: offset - type: string - width: half - name: type - type: string - - field: dither - meta: - field: dither - interface: select-dropdown - note: The dither mode to be applied to the raster image - options: - choices: - - text: Threshold - value: threshold - - text: Ordered - value: ordered - - text: Atkinson - value: atkinson - - text: Dither - value: dither - - text: Stucki - value: stucki - - text: Jarvis - value: jarvis - - text: Newsprint - value: newsprint - - text: Halftone - value: halftone - - text: Sketch - value: sketch - - text: Grayscale - value: grayscale - type: string - width: half - name: dither - type: string - - field: halftone_cell - meta: - display: formatted-value - field: halftone_cell - interface: input - note: The size of each halftone cell - only if halftone is selected - options: - placeholder: Cell size - halftone mode only. - type: decimal - width: half - name: halftone_cell - type: decimal - - field: halftone_angle - meta: - display: formatted-value - display_options: - suffix: ° - field: halftone_angle - interface: input - note: Angle the halftone pattern is applied to the image in degrees - options: - placeholder: Cell pattern angle - halftone mode only. - type: integer - width: half - name: halftone_angle - type: integer - - field: inversion - meta: - display: boolean - field: inversion - interface: boolean - note: Whether or not image inversion is applied, check for yes. - type: boolean - width: half - name: inversion - type: boolean - - field: interval - meta: - display: formatted-value - display_options: - suffix: ' mm' - field: interval - interface: input - note: Spacing between scan line centers in scan pattern in mm - options: - placeholder: '0.025' - type: decimal - width: half - name: interval - type: decimal - - field: dot - meta: - display: formatted-value - display_options: - suffix: ' mm' - field: dot - interface: input - note: >- - Adjustment to the width of a scan section to compensate for dot - overlap in mm - options: - placeholder: '0.08' - type: decimal - width: half - name: dot - type: decimal - - field: pass - meta: - display: formatted-value - display_options: - suffix: ' pass(es)' - field: pass - interface: input - note: Number of passes to execute - options: - placeholder: '1' - type: integer - width: half - name: pass - type: integer - - field: air - meta: - display: boolean - field: air - interface: boolean - note: Whether or not air assist is enabled, check for yes. - type: boolean - width: half - name: air - type: boolean - readonly: false - required: false - searchable: true - sort: 20 - special: - - cast-json - translations: null - validation: null - validation_message: null - width: full - schema: - name: raster_settings - table: settings_co2gan - data_type: longtext - default_value: null - max_length: 4294967295 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gan - field: photo - type: uuid - meta: - collection: settings_co2gan - conditions: null - display: image - display_options: null - field: photo - group: null - hidden: false - interface: file-image - note: null - options: - crop: false - folder: d19c4f8d-a42f-422d-b113-b89b736c34e6 - readonly: false - required: true - searchable: true - sort: 4 - special: - - file - translations: null - validation: null - validation_message: null - width: full - schema: - name: photo - table: settings_co2gan - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_files - foreign_key_column: id - - collection: settings_co2gan - field: sort - type: integer - meta: - collection: settings_co2gan - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 24 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: settings_co2gan - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_co2gan - field: lens - type: integer - meta: - collection: settings_co2gan - conditions: null - display: related-values - display_options: - template: '{{name}}' - field: lens - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: '{{name}}' - readonly: false - required: true - searchable: true - sort: 7 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: lens - table: settings_co2gan - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_focus_lens - foreign_key_column: id - - collection: settings_co2gan - field: lens_conf - type: integer - meta: - collection: settings_co2gan - conditions: null - display: related-values - display_options: - template: '{{name}}' - field: lens_conf - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: '{{name}}' - readonly: false - required: true - searchable: true - sort: 8 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: lens_conf - table: settings_co2gan - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_focus_lens_config - foreign_key_column: id - - collection: settings_co2gan - field: owner - type: string - meta: - collection: settings_co2gan - conditions: null - display: null - display_options: null - field: owner - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{username}}' - readonly: false - required: false - searchable: true - sort: 2 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: owner - table: settings_co2gan - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: settings_fiber - field: submission_id - type: integer - meta: - collection: settings_fiber - conditions: null - display: null - display_options: null - field: submission_id - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 20 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: submission_id - table: settings_fiber - data_type: mediumint unsigned - default_value: null - max_length: null - numeric_precision: 8 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: settings_fiber - field: setting_title - type: string - meta: - collection: settings_fiber - conditions: null - display: formatted-value - display_options: - format: true - field: setting_title - group: null - hidden: false - interface: input - note: null - options: - placeholder: My Awesome Setting - readonly: false - required: true - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: setting_title - table: settings_fiber - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_fiber - field: uploader - type: string - meta: - collection: settings_fiber - conditions: null - display: formatted-value - display_options: - format: true - field: uploader - group: null - hidden: false - interface: input - note: null - options: - placeholder: Mr Laser King - readonly: false - required: true - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: uploader - table: settings_fiber - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_fiber - field: submission_date - type: dateTime - meta: - collection: settings_fiber - conditions: null - display: null - display_options: null - field: submission_date - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 21 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: submission_date - table: settings_fiber - data_type: datetime - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_fiber - field: last_modified_date - type: dateTime - meta: - collection: settings_fiber - conditions: null - display: null - display_options: null - field: last_modified_date - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 22 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: last_modified_date - table: settings_fiber - data_type: datetime - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_fiber - field: photo - type: uuid - meta: - collection: settings_fiber - conditions: null - display: image - display_options: null - field: photo - group: null - hidden: false - interface: file-image - note: null - options: - crop: false - folder: 54f6a9d2-bc57-41fc-8c7d-7c7d7cb9cadc - readonly: false - required: true - searchable: true - sort: 4 - special: - - file - translations: null - validation: null - validation_message: null - width: full - schema: - name: photo - table: settings_fiber - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_files - foreign_key_column: id - - collection: settings_fiber - field: screen - type: uuid - meta: - collection: settings_fiber - conditions: null - display: image - display_options: null - field: screen - group: null - hidden: false - interface: file-image - note: null - options: - folder: 5c830975-7926-4e01-911c-2443b62d7f88 - readonly: false - required: false - searchable: true - sort: 5 - special: - - file - translations: null - validation: null - validation_message: null - width: full - schema: - name: screen - table: settings_fiber - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_files - foreign_key_column: id - - collection: settings_fiber - field: source - type: integer - meta: - collection: settings_fiber - conditions: null - display: related-values - display_options: - template: "{{make}}\_{{model}}" - field: source - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: "{{make}}\_{{model}}" - readonly: false - required: true - searchable: true - sort: 6 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: source - table: settings_fiber - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_source - foreign_key_column: submission_id - - collection: settings_fiber - field: lens - type: integer - meta: - collection: settings_fiber - conditions: null - display: related-values - display_options: - template: "{{field_size}}\_{{focal_length}}" - field: lens - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: "{{field_size}}\_{{focal_length}}" - readonly: false - required: true - searchable: true - sort: 7 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: lens - table: settings_fiber - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_scan_lens - foreign_key_column: id - - collection: settings_fiber - field: mat - type: integer - meta: - collection: settings_fiber - conditions: null - display: related-values - display_options: - template: "{{name}} \_{{material_status.danger}}\_{{material_status.name}}" - field: mat - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: "{{name}}\_\_\_\_ {{material_status.danger}}\_{{material_status.name}}" - readonly: false - required: true - searchable: true - sort: 9 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat - table: settings_fiber - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material - foreign_key_column: id - - collection: settings_fiber - field: mat_color - type: integer - meta: - collection: settings_fiber - conditions: null - display: related-values - display_options: - template: "{{colors}} \_{{name}}" - field: mat_color - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: "{{colors}}\_ {{name}}" - readonly: false - required: true - searchable: true - sort: 11 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat_color - table: settings_fiber - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material_color - foreign_key_column: id - - collection: settings_fiber - field: mat_thickness - type: decimal - meta: - collection: settings_fiber - conditions: null - display: formatted-value - display_options: - suffix: mm - field: mat_thickness - group: null - hidden: false - interface: input - note: null - options: - placeholder: '3' - readonly: false - required: false - searchable: true - sort: 13 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat_thickness - table: settings_fiber - data_type: decimal - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 5 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_fiber - field: laser_soft - type: integer - meta: - collection: settings_fiber - conditions: null - display: related-values - display_options: - template: '{{name}}' - field: laser_soft - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{name}}' - readonly: false - required: true - searchable: true - sort: 14 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: laser_soft - table: settings_fiber - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_software - foreign_key_column: id - - collection: settings_fiber - field: fill_settings - type: json - meta: - collection: settings_fiber - conditions: null - display: null - display_options: null - field: fill_settings - group: null - hidden: false - interface: list - note: null - options: - addLabel: Create New Fill - fields: - - field: name - meta: - field: name - interface: input - options: - placeholder: Engraving Pass - type: string - width: full - name: name - type: string - - field: power - meta: - display: formatted-value - display_options: - conditionalFormatting: null - suffix: ' %' - field: power - interface: input - note: Power as a % of total available. - options: - placeholder: '80' - type: integer - width: half - name: power - type: integer - - field: speed - meta: - display: formatted-value - display_options: - suffix: ' mm/s' - field: speed - interface: input - note: Galvo scan speed in mm/s - options: - placeholder: '1000' - type: integer - width: half - name: speed - type: integer - - field: frequency - meta: - display: formatted-value - display_options: - suffix: ' kHz' - field: frequency - interface: input - note: Freqency of pulses in kHz - options: - placeholder: '45' - type: integer - width: half - name: frequency - type: integer - - field: pulse - meta: - display: formatted-value - display_options: - suffix: ' ns' - field: pulse - interface: input - note: Width of each pulse in ns - options: - placeholder: '200' - type: integer - width: half - name: pulse - type: integer - - field: interval - meta: - display: formatted-value - display_options: - suffix: ' mm' - field: interval - interface: input - note: Spacing between scan line centers in scan pattern in mm - options: - placeholder: '0.025' - type: decimal - width: half - name: interval - type: decimal - - field: pass - meta: - display: formatted-value - display_options: - suffix: ' pass(es)' - field: pass - interface: input - note: Number of passes to execute - options: - placeholder: '1' - type: integer - width: half - name: pass - type: integer - - field: type - meta: - display: formatted-value - display_options: - format: true - field: type - interface: select-dropdown - note: Scan pattern to execute - options: - choices: - - text: UniDirectional - value: uni - - text: BiDirectional - value: bi - - text: Offset Fill - value: offset - type: string - width: half - name: type - type: string - - field: angle - meta: - display: formatted-value - display_options: - suffix: ° - field: angle - interface: input - note: Angle at which to execute the scan pattern in degrees - options: - placeholder: '45' - type: integer - width: half - name: angle - type: integer - - field: auto - meta: - display: boolean - field: auto - interface: boolean - note: Whether or not auto rotate is used, check for yes. - type: boolean - width: half - name: auto - type: boolean - - field: increment - meta: - display: formatted-value - display_options: - suffix: ° - field: increment - interface: input - note: >- - The angle per pass to adjust the scan pattern rotation when - using auto-rotate in degrees - options: - placeholder: '30' - type: integer - width: half - name: increment - type: integer - - field: cross - meta: - display: boolean - field: cross - interface: boolean - note: Whether or not cross-hatch is enabled, check for yes. - type: boolean - width: half - name: cross - type: boolean - - field: flood - meta: - display: boolean - field: flood - interface: boolean - note: Whether or not flood fill is enabled, check for yes. - type: boolean - width: half - name: flood - type: boolean - - field: air - meta: - display: boolean - field: air - interface: boolean - note: Whether or not air assist is enabled, check for yes. - type: boolean - width: half - name: air - type: boolean - readonly: false - required: false - searchable: true - sort: 17 - special: - - cast-json - translations: null - validation: null - validation_message: null - width: full - schema: - name: fill_settings - table: settings_fiber - data_type: longtext - default_value: null - max_length: 4294967295 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_fiber - field: line_settings - type: json - meta: - collection: settings_fiber - conditions: null - display: null - display_options: null - field: line_settings - group: null - hidden: false - interface: list - note: null - options: - addLabel: Create New Line - fields: - - field: name - meta: - display: formatted-value - display_options: - conditionalFormatting: null - format: true - field: name - interface: input - note: The name of the line setting - options: - placeholder: My great cut setting - type: string - width: full - name: name - type: string - - field: power - meta: - display: formatted-value - display_options: - conditionalFormatting: null - suffix: ' %' - field: power - interface: input - note: Power as a % of total available. - options: - placeholder: '80' - type: integer - width: half - name: power - type: integer - - field: speed - meta: - display: formatted-value - display_options: - suffix: ' mm/s' - field: speed - interface: input - note: Galvo scan speed in mm/s - options: - placeholder: '1000' - type: integer - width: half - name: speed - type: integer - - field: frequency - meta: - display: formatted-value - display_options: - suffix: ' kHz' - field: frequency - interface: input - note: Freqency of pulses in kHz - options: - placeholder: '45' - type: integer - width: half - name: frequency - type: integer - - field: pulse - meta: - display: formatted-value - display_options: - suffix: ' ns' - field: pulse - interface: input - note: Width of each pulse in ns - options: - placeholder: '200' - type: integer - width: half - name: pulse - type: integer - - field: perf - meta: - display: boolean - display_options: - labelOff: Disabled - labelOn: Enabled - field: perf - interface: boolean - note: Is perforation enabled in your setting? - required: false - type: boolean - width: full - name: perf - type: boolean - - field: cut - meta: - display: formatted-value - display_options: - suffix: mm - field: cut - interface: input - note: Amount to cut before skip (mm) - perf mode only. - options: - placeholder: '0.10' - type: decimal - width: half - name: cut - type: decimal - - field: skip - meta: - display: formatted-value - display_options: - suffix: mm - field: skip - interface: input - note: Amount to skip before the cut (mm) - perf mode only. - options: - placeholder: '0.10' - type: decimal - width: half - name: skip - type: decimal - - field: wobble - meta: - display: boolean - display_options: - labelOff: Disabled - labelOn: Enabled - field: wobble - interface: boolean - note: Is Wobble enabled in your setting? - type: boolean - width: full - name: wobble - type: boolean - - field: step - meta: - display: formatted-value - display_options: - suffix: mm - field: step - interface: input - note: Distance to step per wobble (mm) - wobble mode only. - options: - placeholder: '0.03' - type: decimal - width: half - name: step - type: decimal - - field: size - meta: - display: formatted-value - display_options: - suffix: mm - field: size - interface: input - note: Size to wobble per step (mm) - wobble mode only. - options: - placeholder: '0.2' - required: false - type: decimal - width: half - name: size - type: decimal - - field: pass - meta: - display: formatted-value - display_options: - suffix: ' pass(es)' - field: pass - interface: input - note: Number of passes to execute - options: - placeholder: '1' - type: integer - width: half - name: pass - type: integer - - field: air - meta: - display: boolean - field: air - interface: boolean - note: Whether or not air assist is enabled, check for yes. - type: boolean - width: half - name: air - type: boolean - readonly: false - required: false - searchable: true - sort: 18 - special: - - cast-json - translations: null - validation: null - validation_message: null - width: full - schema: - name: line_settings - table: settings_fiber - data_type: longtext - default_value: null - max_length: 4294967295 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_fiber - field: raster_settings - type: json - meta: - collection: settings_fiber - conditions: null - display: null - display_options: null - field: raster_settings - group: null - hidden: false - interface: list - note: null - options: - addLabel: Create New Raster - fields: - - field: name - meta: - display: formatted-value - display_options: - format: true - field: name - interface: input - note: Name of the raster setting - options: - placeholder: Photo Cleanup Pass - type: string - width: full - name: name - type: string - - field: power - meta: - display: formatted-value - display_options: - conditionalFormatting: null - suffix: ' %' - field: power - interface: input - note: Power as a % of total available. - options: - placeholder: '80' - type: integer - width: half - name: power - type: integer - - field: speed - meta: - display: formatted-value - display_options: - suffix: ' mm/s' - field: speed - interface: input - note: Galvo scan speed in mm/s - options: - placeholder: '1000' - type: integer - width: half - name: speed - type: integer - - field: frequency - meta: - display: formatted-value - display_options: - suffix: ' kHz' - field: frequency - interface: input - note: Freqency of pulses in kHz - options: - placeholder: '45' - type: integer - width: half - name: frequency - type: integer - - field: pulse - meta: - display: formatted-value - display_options: - suffix: ' ns' - field: pulse - interface: input - note: Width of each pulse in ns - options: - placeholder: '200' - type: integer - width: half - name: pulse - type: integer - - field: type - meta: - display: formatted-value - display_options: - format: true - field: type - interface: select-dropdown - note: Scan pattern to execute - options: - choices: - - text: UniDirectional - value: uni - - text: BiDirectional - value: bi - - text: Offset Fill - value: offset - type: string - width: half - name: type - type: string - - field: dither - meta: - field: dither - interface: select-dropdown - note: The dither mode to be applied to the raster image - options: - choices: - - text: Threshold - value: threshold - - text: Ordered - value: ordered - - text: Atkinson - value: atkinson - - text: Dither - value: dither - - text: Stucki - value: stucki - - text: Jarvis - value: jarvis - - text: Newsprint - value: newsprint - - text: Halftone - value: halftone - - text: Sketch - value: sketch - - text: Grayscale - value: grayscale - type: string - width: half - name: dither - type: string - - field: halftone_cell - meta: - display: formatted-value - field: halftone_cell - interface: input - note: The size of each halftone cell - only if halftone is selected - options: - placeholder: Cell size - halftone mode only. - type: decimal - width: half - name: halftone_cell - type: decimal - - field: halftone_angle - meta: - display: formatted-value - display_options: - suffix: ° - field: halftone_angle - interface: input - note: Angle the halftone pattern is applied to the image in degrees - options: - placeholder: Cell pattern angle - halftone mode only. - type: integer - width: half - name: halftone_angle - type: integer - - field: inversion - meta: - display: boolean - field: inversion - interface: boolean - note: Whether or not image inversion is applied, check for yes. - type: boolean - width: half - name: inversion - type: boolean - - field: interval - meta: - display: formatted-value - display_options: - suffix: ' mm' - field: interval - interface: input - note: Spacing between scan line centers in scan pattern in mm - options: - placeholder: '0.025' - type: decimal - width: half - name: interval - type: decimal - - field: dot - meta: - display: formatted-value - display_options: - suffix: ' mm' - field: dot - interface: input - note: >- - Adjustment to the width of a scan section to compensate for dot - overlap in mm - options: - placeholder: '0.08' - type: decimal - width: half - name: dot - type: decimal - - field: pass - meta: - display: formatted-value - display_options: - suffix: ' pass(es)' - field: pass - interface: input - note: Number of passes to execute - options: - placeholder: '1' - type: integer - width: half - name: pass - type: integer - - field: cross - meta: - display: boolean - field: cross - interface: boolean - note: Whether or not cross-hatch is enabled, check for yes. - type: boolean - width: half - name: cross - type: boolean - - field: air - meta: - display: boolean - field: air - interface: boolean - note: Whether or not air assist is enabled, check for yes. - type: boolean - width: half - name: air - type: boolean - readonly: false - required: false - searchable: true - sort: 19 - special: - - cast-json - translations: null - validation: null - validation_message: null - width: full - schema: - name: raster_settings - table: settings_fiber - data_type: longtext - default_value: null - max_length: 4294967295 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_fiber - field: mat_coat - type: integer - meta: - collection: settings_fiber - conditions: null - display: related-values - display_options: - template: "{{name}}\_ {{coating_status.danger}}\_{{coating_status.name}}" - field: mat_coat - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: "{{name}}\_ {{coating_status.danger}}\_{{coating_status.name}}" - readonly: false - required: true - searchable: true - sort: 10 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat_coat - table: settings_fiber - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material_coating - foreign_key_column: id - - collection: settings_fiber - field: mat_opacity - type: integer - meta: - collection: settings_fiber - conditions: null - display: related-values - display_options: - template: '{{opacity}}' - field: mat_opacity - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{opacity}}' - readonly: false - required: true - searchable: true - sort: 12 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat_opacity - table: settings_fiber - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material_opacity - foreign_key_column: id - - collection: settings_fiber - field: repeat_all - type: integer - meta: - collection: settings_fiber - conditions: null - display: formatted-value - display_options: - suffix: total passes - field: repeat_all - group: null - hidden: false - interface: input - note: How many times ALL settings below should be cycled through. - options: - max: 9999 - min: 1 - placeholder: '1' - readonly: false - required: true - searchable: true - sort: 15 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: repeat_all - table: settings_fiber - data_type: int - default_value: 1 - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_fiber - field: setting_notes - type: text - meta: - collection: settings_fiber - conditions: null - display: null - display_options: null - field: setting_notes - group: null - hidden: false - interface: input-rich-text-md - note: null - options: - folder: 00eed759-480e-43cc-9de3-854dc59cca79 - readonly: false - required: false - searchable: true - sort: 16 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: setting_notes - table: settings_fiber - data_type: text - default_value: null - max_length: 65535 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_fiber - field: focus - type: decimal - meta: - collection: settings_fiber - conditions: null - display: formatted-value - display_options: - suffix: mm - field: focus - group: null - hidden: false - interface: input - note: Focus, + values focus away, - values focus closer, in (mm) - options: - alwaysShowValue: true - maxValue: 10 - minValue: -10 - placeholder: '0' - stepInterval: null - readonly: false - required: true - searchable: true - sort: 8 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: focus - table: settings_fiber - data_type: decimal - default_value: 0 - max_length: null - numeric_precision: 3 - numeric_scale: 1 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_fiber - field: owner - type: string - meta: - collection: settings_fiber - conditions: null - display: null - display_options: null - field: owner - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{username}}' - readonly: false - required: false - searchable: true - sort: 2 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: owner - table: settings_fiber - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: settings_uv - field: uploader - type: string - meta: - collection: settings_uv - conditions: null - display: formatted-value - display_options: - format: true - field: uploader - group: null - hidden: false - interface: input - note: null - options: - placeholder: Mr Laser King - readonly: false - required: true - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: uploader - table: settings_uv - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_uv - field: submission_date - type: dateTime - meta: - collection: settings_uv - conditions: null - display: null - display_options: null - field: submission_date - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 21 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: submission_date - table: settings_uv - data_type: datetime - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_uv - field: last_modified_date - type: dateTime - meta: - collection: settings_uv - conditions: null - display: null - display_options: null - field: last_modified_date - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 22 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: last_modified_date - table: settings_uv - data_type: datetime - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_uv - field: submission_id - type: integer - meta: - collection: settings_uv - conditions: null - display: null - display_options: null - field: submission_id - group: null - hidden: false - interface: null - note: null - options: null - readonly: false - required: false - searchable: true - sort: 20 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: submission_id - table: settings_uv - data_type: mediumint unsigned - default_value: null - max_length: null - numeric_precision: 8 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: settings_uv - field: setting_title - type: string - meta: - collection: settings_uv - conditions: null - display: formatted-value - display_options: - format: true - field: setting_title - group: null - hidden: false - interface: input - note: null - options: - placeholder: My Awesome Setting - readonly: false - required: true - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: setting_title - table: settings_uv - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_uv - field: screen - type: uuid - meta: - collection: settings_uv - conditions: null - display: image - display_options: null - field: screen - group: null - hidden: false - interface: file-image - note: null - options: - crop: false - folder: a84f54b1-0e92-4ea6-8fbe-37a3a74bd49c - readonly: false - required: false - searchable: true - sort: 5 - special: - - file - translations: null - validation: null - validation_message: null - width: full - schema: - name: screen - table: settings_uv - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_files - foreign_key_column: id - - collection: settings_uv - field: photo - type: uuid - meta: - collection: settings_uv - conditions: null - display: image - display_options: null - field: photo - group: null - hidden: false - interface: file-image - note: null - options: - crop: false - folder: c639360b-3116-4b5d-98da-f8b502089486 - readonly: false - required: true - searchable: true - sort: 4 - special: - - file - translations: null - validation: null - validation_message: null - width: full - schema: - name: photo - table: settings_uv - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_files - foreign_key_column: id - - collection: settings_uv - field: source - type: integer - meta: - collection: settings_uv - conditions: null - display: related-values - display_options: - template: "{{make}}\_{{model}}" - field: source - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: "{{make}}\_{{model}}" - readonly: false - required: true - searchable: true - sort: 6 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: source - table: settings_uv - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_source - foreign_key_column: submission_id - - collection: settings_uv - field: lens - type: integer - meta: - collection: settings_uv - conditions: null - display: related-values - display_options: - template: "{{field_size}}\_{{focal_length}}" - field: lens - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: "{{field_size}}\_{{focal_length}}" - readonly: false - required: true - searchable: true - sort: 7 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: lens - table: settings_uv - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_scan_lens - foreign_key_column: id - - collection: settings_uv - field: focus - type: decimal - meta: - collection: settings_uv - conditions: null - display: formatted-value - display_options: - suffix: mm - field: focus - group: null - hidden: false - interface: input - note: Focus, + values focus away, - values focus closer, in (mm) - options: - alwaysShowValue: true - maxValue: 10 - minValue: -10 - placeholder: '0' - stepInterval: null - readonly: false - required: true - searchable: true - sort: 8 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: focus - table: settings_uv - data_type: decimal - default_value: 0 - max_length: null - numeric_precision: 3 - numeric_scale: 1 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_uv - field: mat - type: integer - meta: - collection: settings_uv - conditions: null - display: related-values - display_options: - template: "{{name}}\_\_\_\_ {{material_status.danger}}\_{{material_status.name}}" - field: mat - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: "{{name}}\_\_\_\_ {{material_status.danger}}\_{{material_status.name}}" - readonly: false - required: true - searchable: true - sort: 9 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat - table: settings_uv - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material - foreign_key_column: id - - collection: settings_uv - field: mat_coat - type: integer - meta: - collection: settings_uv - conditions: null - display: related-values - display_options: - template: "{{name}}\_\_\_\_ {{coating_status.danger}}\_{{coating_status.name}}" - field: mat_coat - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: "{{name}}\_\_\_\_ {{coating_status.danger}}\_{{coating_status.name}}" - readonly: false - required: true - searchable: true - sort: 10 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat_coat - table: settings_uv - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material_coating - foreign_key_column: id - - collection: settings_uv - field: mat_color - type: integer - meta: - collection: settings_uv - conditions: null - display: related-values - display_options: - template: "{{colors}}\_{{name}}" - field: mat_color - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: "{{colors}}\_{{name}}" - readonly: false - required: true - searchable: true - sort: 11 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat_color - table: settings_uv - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material_color - foreign_key_column: id - - collection: settings_uv - field: mat_opacity - type: integer - meta: - collection: settings_uv - conditions: null - display: related-values - display_options: - template: '{{opacity}}' - field: mat_opacity - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - enableCreate: false - template: '{{opacity}}' - readonly: false - required: true - searchable: true - sort: 12 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat_opacity - table: settings_uv - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: material_opacity - foreign_key_column: id - - collection: settings_uv - field: mat_thickness - type: decimal - meta: - collection: settings_uv - conditions: null - display: formatted-value - display_options: - suffix: mm - field: mat_thickness - group: null - hidden: false - interface: input - note: null - options: - placeholder: '3' - readonly: false - required: false - searchable: true - sort: 13 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: mat_thickness - table: settings_uv - data_type: decimal - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 5 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_uv - field: laser_soft - type: integer - meta: - collection: settings_uv - conditions: null - display: related-values - display_options: - template: '{{name}}' - field: laser_soft - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{name}}' - readonly: false - required: true - searchable: true - sort: 14 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: laser_soft - table: settings_uv - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_software - foreign_key_column: id - - collection: settings_uv - field: repeat_all - type: integer - meta: - collection: settings_uv - conditions: null - display: formatted-value - display_options: - suffix: total passes - field: repeat_all - group: null - hidden: false - interface: input - note: How many times ALL settings below should be cycled through. - options: - max: 9999 - min: 1 - placeholder: '1' - readonly: false - required: true - searchable: true - sort: 15 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: repeat_all - table: settings_uv - data_type: int - default_value: 1 - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_uv - field: setting_notes - type: text - meta: - collection: settings_uv - conditions: null - display: formatted-value - display_options: - format: true - field: setting_notes - group: null - hidden: false - interface: input-rich-text-md - note: null - options: - folder: 8ca37379-7178-48b2-8670-6b8d8a880677 - readonly: false - required: false - searchable: true - sort: 16 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: setting_notes - table: settings_uv - data_type: text - default_value: null - max_length: 65535 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_uv - field: fill_settings - type: json - meta: - collection: settings_uv - conditions: null - display: null - display_options: null - field: fill_settings - group: null - hidden: false - interface: list - note: null - options: - addLabel: Create New Fill - fields: - - field: name - meta: - field: name - interface: input - options: - placeholder: Engraving Pass - type: string - width: full - name: name - type: string - - field: speed - meta: - display: formatted-value - display_options: - suffix: ' mm/s' - field: speed - interface: input - note: Galvo scan speed in mm/s - options: - placeholder: '1000' - type: integer - width: half - name: speed - type: integer - - field: frequency - meta: - display: formatted-value - display_options: - suffix: ' kHz' - field: frequency - interface: input - note: Freqency of pulses in kHz - options: - placeholder: '45' - type: integer - width: half - name: frequency - type: integer - - field: pulse - meta: - display: formatted-value - display_options: - suffix: ' ns' - field: pulse - interface: input - note: Width of each pulse in ns - options: - placeholder: '200' - type: integer - width: half - name: pulse - type: integer - - field: interval - meta: - display: formatted-value - display_options: - suffix: ' mm' - field: interval - interface: input - note: Spacing between scan line centers in scan pattern in mm - options: - placeholder: '0.025' - type: decimal - width: half - name: interval - type: decimal - - field: pass - meta: - display: formatted-value - display_options: - suffix: ' pass(es)' - field: pass - interface: input - note: Number of passes to execute - options: - placeholder: '1' - type: integer - width: half - name: pass - type: integer - - field: type - meta: - display: formatted-value - display_options: - format: true - field: type - interface: select-dropdown - note: Scan pattern to execute - options: - choices: - - text: UniDirectional - value: uni - - text: BiDirectional - value: bi - - text: Offset Fill - value: offset - type: string - width: half - name: type - type: string - - field: angle - meta: - display: formatted-value - display_options: - suffix: ° - field: angle - interface: input - note: Angle at which to execute the scan pattern in degrees - options: - placeholder: '45' - type: integer - width: half - name: angle - type: integer - - field: auto - meta: - display: boolean - field: auto - interface: boolean - note: Whether or not auto rotate is used, check for yes. - type: boolean - width: half - name: auto - type: boolean - - field: increment - meta: - display: formatted-value - display_options: - suffix: ° - field: increment - interface: input - note: >- - The angle per pass to adjust the scan pattern rotation when - using auto-rotate in degrees - options: - placeholder: '30' - type: integer - width: half - name: increment - type: integer - - field: cross - meta: - display: boolean - field: cross - interface: boolean - note: Whether or not cross-hatch is enabled, check for yes. - type: boolean - width: half - name: cross - type: boolean - - field: flood - meta: - display: boolean - field: flood - interface: boolean - note: Whether or not flood fill is enabled, check for yes. - type: boolean - width: half - name: flood - type: boolean - - field: air - meta: - display: boolean - field: air - interface: boolean - note: Whether or not air assist is enabled, check for yes. - type: boolean - width: half - name: air - type: boolean - readonly: false - required: false - searchable: true - sort: 17 - special: - - cast-json - translations: null - validation: null - validation_message: null - width: full - schema: - name: fill_settings - table: settings_uv - data_type: longtext - default_value: null - max_length: 4294967295 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_uv - field: line_settings - type: json - meta: - collection: settings_uv - conditions: null - display: null - display_options: null - field: line_settings - group: null - hidden: false - interface: list - note: null - options: - addLabel: Create New Line - fields: - - field: name - meta: - display: formatted-value - display_options: - conditionalFormatting: null - format: true - field: name - interface: input - note: The name of the line setting - options: - placeholder: My great cut setting - type: string - width: full - name: name - type: string - - field: speed - meta: - display: formatted-value - display_options: - suffix: ' mm/s' - field: speed - interface: input - note: Galvo scan speed in mm/s - options: - placeholder: '1000' - type: integer - width: half - name: speed - type: integer - - field: frequency - meta: - display: formatted-value - display_options: - suffix: ' kHz' - field: frequency - interface: input - note: Freqency of pulses in kHz - options: - placeholder: '45' - type: integer - width: half - name: frequency - type: integer - - field: pulse - meta: - display: formatted-value - display_options: - suffix: ' ns' - field: pulse - interface: input - note: Width of each pulse in ns - options: - placeholder: '200' - type: integer - width: half - name: pulse - type: integer - - field: perf - meta: - display: boolean - display_options: - labelOff: Disabled - labelOn: Enabled - field: perf - interface: boolean - note: Is perforation enabled in your setting? - required: false - type: boolean - width: full - name: perf - type: boolean - - field: cut - meta: - display: formatted-value - display_options: - suffix: mm - field: cut - interface: input - note: Amount to cut before skip (mm) - perf mode only. - options: - placeholder: '0.10' - type: decimal - width: half - name: cut - type: decimal - - field: skip - meta: - display: formatted-value - display_options: - suffix: mm - field: skip - interface: input - note: Amount to skip before the cut (mm) - perf mode only. - options: - placeholder: '0.10' - type: decimal - width: half - name: skip - type: decimal - - field: wobble - meta: - display: boolean - display_options: - labelOff: Disabled - labelOn: Enabled - field: wobble - interface: boolean - note: Is Wobble enabled in your setting? - type: boolean - width: full - name: wobble - type: boolean - - field: step - meta: - display: formatted-value - display_options: - suffix: mm - field: step - interface: input - note: Distance to step per wobble (mm) - wobble mode only. - options: - placeholder: '0.03' - type: decimal - width: half - name: step - type: decimal - - field: size - meta: - display: formatted-value - display_options: - suffix: mm - field: size - interface: input - note: Size to wobble per step (mm) - wobble mode only. - options: - placeholder: '0.2' - required: false - type: decimal - width: half - name: size - type: decimal - - field: pass - meta: - display: formatted-value - display_options: - suffix: ' pass(es)' - field: pass - interface: input - note: Number of passes to execute - options: - placeholder: '1' - type: integer - width: half - name: pass - type: integer - - field: air - meta: - display: boolean - field: air - interface: boolean - note: Whether or not air assist is enabled, check for yes. - type: boolean - width: half - name: air - type: boolean - readonly: false - required: false - searchable: true - sort: 18 - special: - - cast-json - translations: null - validation: null - validation_message: null - width: full - schema: - name: line_settings - table: settings_uv - data_type: longtext - default_value: null - max_length: 4294967295 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_uv - field: raster_settings - type: json - meta: - collection: settings_uv - conditions: null - display: null - display_options: null - field: raster_settings - group: null - hidden: false - interface: list - note: null - options: - addLabel: Create New Raster - fields: - - field: name - meta: - display: formatted-value - display_options: - format: true - field: name - interface: input - note: Name of the raster setting - options: - placeholder: Photo Cleanup Pass - type: string - width: full - name: name - type: string - - field: speed - meta: - display: formatted-value - display_options: - suffix: ' mm/s' - field: speed - interface: input - note: Galvo scan speed in mm/s - options: - placeholder: '1000' - type: integer - width: half - name: speed - type: integer - - field: frequency - meta: - display: formatted-value - display_options: - suffix: ' kHz' - field: frequency - interface: input - note: Freqency of pulses in kHz - options: - placeholder: '45' - type: integer - width: half - name: frequency - type: integer - - field: pulse - meta: - display: formatted-value - display_options: - suffix: ' ns' - field: pulse - interface: input - note: Width of each pulse in ns - options: - placeholder: '200' - type: integer - width: half - name: pulse - type: integer - - field: type - meta: - display: formatted-value - display_options: - format: true - field: type - interface: select-dropdown - note: Scan pattern to execute - options: - choices: - - text: UniDirectional - value: uni - - text: BiDirectional - value: bi - - text: Offset Fill - value: offset - type: string - width: half - name: type - type: string - - field: dither - meta: - field: dither - interface: select-dropdown - note: The dither mode to be applied to the raster image - options: - choices: - - text: Threshold - value: threshold - - text: Ordered - value: ordered - - text: Atkinson - value: atkinson - - text: Dither - value: dither - - text: Stucki - value: stucki - - text: Jarvis - value: jarvis - - text: Newsprint - value: newsprint - - text: Halftone - value: halftone - - text: Sketch - value: sketch - - text: Grayscale - value: grayscale - type: string - width: half - name: dither - type: string - - field: halftone_cell - meta: - display: formatted-value - field: halftone_cell - interface: input - note: The size of each halftone cell - only if halftone is selected - options: - placeholder: Cell size - halftone mode only. - type: decimal - width: half - name: halftone_cell - type: decimal - - field: halftone_angle - meta: - display: formatted-value - display_options: - suffix: ° - field: halftone_angle - interface: input - note: Angle the halftone pattern is applied to the image in degrees - options: - placeholder: Cell pattern angle - halftone mode only. - type: integer - width: half - name: halftone_angle - type: integer - - field: inversion - meta: - display: boolean - field: inversion - interface: boolean - note: Whether or not image inversion is applied, check for yes. - type: boolean - width: half - name: inversion - type: boolean - - field: interval - meta: - display: formatted-value - display_options: - suffix: ' mm' - field: interval - interface: input - note: Spacing between scan line centers in scan pattern in mm - options: - placeholder: '0.025' - type: decimal - width: half - name: interval - type: decimal - - field: dot - meta: - display: formatted-value - display_options: - suffix: ' mm' - field: dot - interface: input - note: >- - Adjustment to the width of a scan section to compensate for dot - overlap in mm - options: - placeholder: '0.08' - type: decimal - width: half - name: dot - type: decimal - - field: pass - meta: - display: formatted-value - display_options: - suffix: ' pass(es)' - field: pass - interface: input - note: Number of passes to execute - options: - placeholder: '1' - type: integer - width: half - name: pass - type: integer - - field: cross - meta: - display: boolean - field: cross - interface: boolean - note: Whether or not cross-hatch is enabled, check for yes. - type: boolean - width: half - name: cross - type: boolean - - field: air - meta: - display: boolean - field: air - interface: boolean - note: Whether or not air assist is enabled, check for yes. - type: boolean - width: half - name: air - type: boolean - readonly: false - required: false - searchable: true - sort: 19 - special: - - cast-json - translations: null - validation: null - validation_message: null - width: full - schema: - name: raster_settings - table: settings_uv - data_type: longtext - default_value: null - max_length: 4294967295 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: settings_uv - field: owner - type: string - meta: - collection: settings_uv - conditions: null - display: null - display_options: null - field: owner - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{username}}' - readonly: false - required: false - searchable: true - sort: 2 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: owner - table: settings_uv - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: user_claims - field: id - type: integer - meta: - collection: user_claims - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: user_claims - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: user_claims - field: status - type: string - meta: - collection: user_claims - conditions: null - display: labels - display_options: - choices: - - background: var(--theme--primary-background) - color: '#F9F06B' - foreground: var(--theme--primary) - text: pending - value: pending - - background: var(--theme--background-normal) - color: '#8FF0A4' - foreground: var(--theme--foreground) - text: approved - value: approved - - background: var(--theme--warning-background) - color: '#E01B24' - foreground: var(--theme--warning) - text: rejected - value: rejected - showAsDot: true - field: status - group: null - hidden: false - interface: select-dropdown - note: null - options: - choices: - - color: '#F9F06B' - text: pending - value: pending - - color: '#2EC27E' - text: approved - value: approved - - color: '#E01B24' - text: rejected - value: rejected - readonly: false - required: true - searchable: true - sort: 5 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: status - table: user_claims - data_type: varchar - default_value: pending - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_claims - field: sort - type: integer - meta: - collection: user_claims - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 6 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: user_claims - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_claims - field: user_created - type: string - meta: - collection: user_claims - conditions: null - display: user - display_options: null - field: user_created - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 7 - special: - - user-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_created - table: user_claims - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: user_claims - field: date_created - type: timestamp - meta: - collection: user_claims - conditions: null - display: datetime - display_options: - relative: true - field: date_created - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 8 - special: - - date-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_created - table: user_claims - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_claims - field: user_updated - type: string - meta: - collection: user_claims - conditions: null - display: user - display_options: null - field: user_updated - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 9 - special: - - user-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_updated - table: user_claims - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: user_claims - field: date_updated - type: timestamp - meta: - collection: user_claims - conditions: null - display: datetime - display_options: - relative: true - field: date_updated - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 10 - special: - - date-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_updated - table: user_claims - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_claims - field: target_id - type: string - meta: - collection: user_claims - conditions: null - display: null - display_options: null - field: target_id - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: true - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: target_id - table: user_claims - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_claims - field: claimant - type: string - meta: - collection: user_claims - conditions: null - display: user - display_options: null - field: claimant - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{username}}' - readonly: false - required: true - searchable: true - sort: 4 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: claimant - table: user_claims - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: user_claims - field: note - type: text - meta: - collection: user_claims - conditions: null - display: null - display_options: null - field: note - group: null - hidden: false - interface: input-multiline - note: null - options: null - readonly: false - required: false - searchable: true - sort: 11 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: note - table: user_claims - data_type: text - default_value: null - max_length: 65535 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_claims - field: reviewed_by - type: string - meta: - collection: user_claims - conditions: null - display: null - display_options: null - field: reviewed_by - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{username}}' - readonly: false - required: false - searchable: true - sort: 12 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: reviewed_by - table: user_claims - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: user_claims - field: reviewed_at - type: dateTime - meta: - collection: user_claims - conditions: null - display: null - display_options: null - field: reviewed_at - group: null - hidden: false - interface: datetime - note: null - options: null - readonly: false - required: false - searchable: true - sort: 13 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: reviewed_at - table: user_claims - data_type: datetime - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_claims - field: target_collection - type: string - meta: - collection: user_claims - conditions: null - display: null - display_options: null - field: target_collection - group: null - hidden: false - interface: select-dropdown - note: null - options: - choices: - - color: '#8FF0A4' - text: settings_fiber - value: settings_fiber - - color: '#93006A' - text: settings_uv - value: settings_uv - - color: '#F66151' - text: settings_co2gal - value: settings_co2gal - - color: '#E01B24' - text: settings_co2gan - value: settings_co2gan - - color: '#813D9C' - text: projects - value: projects - readonly: false - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: target_collection - table: user_claims - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_claims - field: unique_key - type: string - meta: - collection: user_claims - conditions: null - display: null - display_options: null - field: unique_key - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 14 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: unique_key - table: user_claims - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_memberships - field: id - type: integer - meta: - collection: user_memberships - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: user_memberships - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: user_memberships - field: provider - type: string - meta: - collection: user_memberships - conditions: null - display: null - display_options: null - field: provider - group: null - hidden: false - interface: select-dropdown - note: null - options: - choices: - - text: Ko-Fi - value: kofi - - text: Patreon - value: patreon - - text: LMA - value: mighty - readonly: false - required: false - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: provider - table: user_memberships - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_memberships - field: external_user_id - type: string - meta: - collection: user_memberships - conditions: null - display: null - display_options: null - field: external_user_id - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 4 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: external_user_id - table: user_memberships - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_memberships - field: email - type: string - meta: - collection: user_memberships - conditions: null - display: null - display_options: null - field: email - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 5 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: email - table: user_memberships - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_memberships - field: username - type: string - meta: - collection: user_memberships - conditions: null - display: null - display_options: null - field: username - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 6 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: username - table: user_memberships - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_memberships - field: status - type: string - meta: - collection: user_memberships - conditions: null - display: null - display_options: null - field: status - group: null - hidden: false - interface: select-dropdown - note: null - options: - choices: - - text: active - value: active - - text: canceled - value: canceled - - text: refunded - value: refunded - - text: one-time - value: one_time - readonly: false - required: false - searchable: true - sort: 7 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: status - table: user_memberships - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_memberships - field: tier - type: string - meta: - collection: user_memberships - conditions: null - display: null - display_options: null - field: tier - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 8 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: tier - table: user_memberships - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_memberships - field: started_at - type: dateTime - meta: - collection: user_memberships - conditions: null - display: null - display_options: null - field: started_at - group: null - hidden: false - interface: datetime - note: null - options: null - readonly: false - required: false - searchable: true - sort: 9 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: started_at - table: user_memberships - data_type: datetime - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_memberships - field: renews_at - type: dateTime - meta: - collection: user_memberships - conditions: null - display: null - display_options: null - field: renews_at - group: null - hidden: false - interface: datetime - note: null - options: null - readonly: false - required: false - searchable: true - sort: 10 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: renews_at - table: user_memberships - data_type: datetime - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_memberships - field: last_event_at - type: dateTime - meta: - collection: user_memberships - conditions: null - display: null - display_options: null - field: last_event_at - group: null - hidden: false - interface: datetime - note: null - options: null - readonly: false - required: false - searchable: true - sort: 11 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: last_event_at - table: user_memberships - data_type: datetime - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_memberships - field: app_user - type: string - meta: - collection: user_memberships - conditions: null - display: null - display_options: null - field: app_user - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{username}}' - readonly: false - required: false - searchable: true - sort: 2 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: app_user - table: user_memberships - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: user_memberships - field: claim_token - type: string - meta: - collection: user_memberships - conditions: null - display: null - display_options: null - field: claim_token - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 13 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: claim_token - table: user_memberships - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_memberships - field: claim_expires_at - type: dateTime - meta: - collection: user_memberships - conditions: null - display: null - display_options: null - field: claim_expires_at - group: null - hidden: false - interface: datetime - note: null - options: null - readonly: false - required: false - searchable: true - sort: 14 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: claim_expires_at - table: user_memberships - data_type: datetime - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_memberships - field: claim_user_id - type: string - meta: - collection: user_memberships - conditions: null - display: null - display_options: null - field: claim_user_id - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{username}}' - readonly: false - required: false - searchable: true - sort: 15 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: claim_user_id - table: user_memberships - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: user_memberships - field: raw - type: text - meta: - collection: user_memberships - conditions: null - display: null - display_options: null - field: raw - group: null - hidden: false - interface: input-multiline - note: null - options: null - readonly: false - required: false - searchable: true - sort: 16 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: raw - table: user_memberships - data_type: text - default_value: null - max_length: 65535 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_preferences - field: id - type: integer - meta: - collection: user_preferences - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: user_preferences - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: user_preferences - field: status - type: string - meta: - collection: user_preferences - conditions: null - display: labels - display_options: - choices: - - background: var(--theme--primary-background) - color: var(--theme--primary) - foreground: var(--theme--primary) - text: $t:published - value: published - - background: var(--theme--background-normal) - color: var(--theme--foreground) - foreground: var(--theme--foreground) - text: $t:draft - value: draft - - background: var(--theme--warning-background) - color: var(--theme--warning) - foreground: var(--theme--warning) - text: $t:archived - value: archived - showAsDot: true - field: status - group: null - hidden: false - interface: select-dropdown - note: null - options: - choices: - - color: var(--theme--primary) - text: $t:published - value: published - - color: var(--theme--foreground) - text: $t:draft - value: draft - - color: var(--theme--warning) - text: $t:archived - value: archived - readonly: false - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: status - table: user_preferences - data_type: varchar - default_value: draft - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_preferences - field: sort - type: integer - meta: - collection: user_preferences - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: user_preferences - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_preferences - field: user_created - type: string - meta: - collection: user_preferences - conditions: null - display: user - display_options: null - field: user_created - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 4 - special: - - user-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_created - table: user_preferences - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: user_preferences - field: date_created - type: timestamp - meta: - collection: user_preferences - conditions: null - display: datetime - display_options: - relative: true - field: date_created - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 5 - special: - - date-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_created - table: user_preferences - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_preferences - field: user_updated - type: string - meta: - collection: user_preferences - conditions: null - display: user - display_options: null - field: user_updated - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 6 - special: - - user-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_updated - table: user_preferences - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: user_preferences - field: date_updated - type: timestamp - meta: - collection: user_preferences - conditions: null - display: datetime - display_options: - relative: true - field: date_updated - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 7 - special: - - date-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_updated - table: user_preferences - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_rig_type - field: id - type: integer - meta: - collection: user_rig_type - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: user_rig_type - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: user_rig_type - field: sort - type: integer - meta: - collection: user_rig_type - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: user_rig_type - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_rig_type - field: name - type: string - meta: - collection: user_rig_type - conditions: null - display: null - display_options: null - field: name - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 2 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: name - table: user_rig_type - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_rigs - field: id - type: integer - meta: - collection: user_rigs - conditions: null - display: null - display_options: null - field: id - group: null - hidden: true - interface: input - note: null - options: null - readonly: true - required: false - searchable: true - sort: 1 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: id - table: user_rigs - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: false - is_unique: false - is_indexed: false - is_primary_key: true - is_generated: false - generation_expression: null - has_auto_increment: true - foreign_key_table: null - foreign_key_column: null - - collection: user_rigs - field: sort - type: integer - meta: - collection: user_rigs - conditions: null - display: null - display_options: null - field: sort - group: null - hidden: true - interface: input - note: null - options: null - readonly: false - required: false - searchable: true - sort: 12 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: sort - table: user_rigs - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_rigs - field: user_created - type: string - meta: - collection: user_rigs - conditions: null - display: user - display_options: null - field: user_created - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 13 - special: - - user-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_created - table: user_rigs - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: user_rigs - field: date_created - type: timestamp - meta: - collection: user_rigs - conditions: null - display: datetime - display_options: - relative: true - field: date_created - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 14 - special: - - date-created - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_created - table: user_rigs - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_rigs - field: user_updated - type: string - meta: - collection: user_rigs - conditions: null - display: user - display_options: null - field: user_updated - group: null - hidden: true - interface: select-dropdown-m2o - note: null - options: - template: '{{avatar}} {{first_name}} {{last_name}}' - readonly: true - required: false - searchable: true - sort: 15 - special: - - user-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: user_updated - table: user_rigs - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: user_rigs - field: date_updated - type: timestamp - meta: - collection: user_rigs - conditions: null - display: datetime - display_options: - relative: true - field: date_updated - group: null - hidden: true - interface: datetime - note: null - options: null - readonly: true - required: false - searchable: true - sort: 16 - special: - - date-updated - translations: null - validation: null - validation_message: null - width: half - schema: - name: date_updated - table: user_rigs - data_type: timestamp - default_value: null - max_length: null - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_rigs - field: owner - type: string - meta: - collection: user_rigs - conditions: null - display: related-values - display_options: - template: '{{username}}' - field: owner - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: null - readonly: false - required: true - searchable: true - sort: 2 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: owner - table: user_rigs - data_type: char - default_value: null - max_length: 36 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: directus_users - foreign_key_column: id - - collection: user_rigs - field: name - type: string - meta: - collection: user_rigs - conditions: null - display: null - display_options: null - field: name - group: null - hidden: false - interface: input - note: null - options: null - readonly: false - required: true - searchable: true - sort: 3 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: name - table: user_rigs - data_type: varchar - default_value: null - max_length: 255 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null - - collection: user_rigs - field: rig_type - type: integer - meta: - collection: user_rigs - conditions: null - display: null - display_options: null - field: rig_type - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{name}}' - readonly: false - required: true - searchable: true - sort: 4 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: rig_type - table: user_rigs - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: user_rig_type - foreign_key_column: id - - collection: user_rigs - field: laser_source - type: integer - meta: - collection: user_rigs - conditions: null - display: null - display_options: null - field: laser_source - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: null - readonly: false - required: true - searchable: true - sort: 5 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: laser_source - table: user_rigs - data_type: int - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_source - foreign_key_column: submission_id - - collection: user_rigs - field: laser_scan_lens - type: integer - meta: - collection: user_rigs - conditions: null - display: null - display_options: null - field: laser_scan_lens - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{field_size}} {{focal_length}}' - readonly: false - required: false - searchable: true - sort: 7 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: laser_scan_lens - table: user_rigs - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_scan_lens - foreign_key_column: id - - collection: user_rigs - field: laser_focus_lens - type: integer - meta: - collection: user_rigs - conditions: null - display: null - display_options: null - field: laser_focus_lens - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{name}}' - readonly: false - required: false - searchable: true - sort: 6 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: laser_focus_lens - table: user_rigs - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_focus_lens - foreign_key_column: id - - collection: user_rigs - field: laser_scan_lens_apt - type: integer - meta: - collection: user_rigs - conditions: null - display: null - display_options: null - field: laser_scan_lens_apt - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{name}}' - readonly: false - required: false - searchable: true - sort: 8 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: laser_scan_lens_apt - table: user_rigs - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_scan_lens_apt - foreign_key_column: id - - collection: user_rigs - field: laser_scan_lens_exp - type: integer - meta: - collection: user_rigs - conditions: null - display: null - display_options: null - field: laser_scan_lens_exp - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: null - readonly: false - required: false - searchable: true - sort: 9 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: laser_scan_lens_exp - table: user_rigs - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_scan_lens_exp - foreign_key_column: id - - collection: user_rigs - field: laser_software - type: integer - meta: - collection: user_rigs - conditions: null - display: null - display_options: null - field: laser_software - group: null - hidden: false - interface: select-dropdown-m2o - note: null - options: - template: '{{name}}' - readonly: false - required: false - searchable: true - sort: 10 - special: - - m2o - translations: null - validation: null - validation_message: null - width: full - schema: - name: laser_software - table: user_rigs - data_type: int unsigned - default_value: null - max_length: null - numeric_precision: 10 - numeric_scale: 0 - is_nullable: true - is_unique: false - is_indexed: true - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: laser_software - foreign_key_column: id - - collection: user_rigs - field: notes - type: text - meta: - collection: user_rigs - conditions: null - display: null - display_options: null - field: notes - group: null - hidden: false - interface: input-multiline - note: null - options: null - readonly: false - required: false - searchable: true - sort: 11 - special: null - translations: null - validation: null - validation_message: null - width: full - schema: - name: notes - table: user_rigs - data_type: text - default_value: null - max_length: 65535 - numeric_precision: null - numeric_scale: null - is_nullable: true - is_unique: false - is_indexed: false - is_primary_key: false - is_generated: false - generation_expression: null - has_auto_increment: false - foreign_key_table: null - foreign_key_column: null -systemFields: - - collection: directus_access - field: policy - schema: - is_indexed: true - - collection: directus_access - field: role - schema: - is_indexed: true - - collection: directus_access - field: user - schema: - is_indexed: true - - collection: directus_activity - field: collection - schema: - is_indexed: true - - collection: directus_activity - field: timestamp - schema: - is_indexed: true - - collection: directus_collections - field: group - schema: - is_indexed: true - - collection: directus_comments - field: user_created - schema: - is_indexed: true - - collection: directus_comments - field: user_updated - schema: - is_indexed: true - - collection: directus_dashboards - field: user_created - schema: - is_indexed: true - - collection: directus_deployment_projects - field: user_created - schema: - is_indexed: true - - collection: directus_deployment_runs - field: project - schema: - is_indexed: true - - collection: directus_deployment_runs - field: user_created - schema: - is_indexed: true - - collection: directus_deployments - field: user_created - schema: - is_indexed: true - - collection: directus_fields - field: collection - schema: - is_indexed: true - - collection: directus_files - field: folder - schema: - is_indexed: true - - collection: directus_files - field: modified_by - schema: - is_indexed: true - - collection: directus_files - field: uploaded_by - schema: - is_indexed: true - - collection: directus_flows - field: user_created - schema: - is_indexed: true - - collection: directus_folders - field: parent - schema: - is_indexed: true - - collection: directus_notifications - field: recipient - schema: - is_indexed: true - - collection: directus_notifications - field: sender - schema: - is_indexed: true - - collection: directus_oauth_clients - field: date_created - schema: - is_indexed: true - - collection: directus_oauth_codes - field: client - schema: - is_indexed: true - - collection: directus_oauth_codes - field: expires_at - schema: - is_indexed: true - - collection: directus_oauth_codes - field: used_at - schema: - is_indexed: true - - collection: directus_oauth_codes - field: user - schema: - is_indexed: true - - collection: directus_oauth_consents - field: client - schema: - is_indexed: true - - collection: directus_oauth_tokens - field: code_hash - schema: - is_indexed: true - - collection: directus_oauth_tokens - field: expires_at - schema: - is_indexed: true - - collection: directus_oauth_tokens - field: previous_session - schema: - is_indexed: true - - collection: directus_oauth_tokens - field: session - schema: - is_indexed: true - - collection: directus_oauth_tokens - field: user - schema: - is_indexed: true - - collection: directus_operations - field: flow - schema: - is_indexed: true - - collection: directus_operations - field: user_created - schema: - is_indexed: true - - collection: directus_panels - field: dashboard - schema: - is_indexed: true - - collection: directus_panels - field: user_created - schema: - is_indexed: true - - collection: directus_permissions - field: collection - schema: - is_indexed: true - - collection: directus_permissions - field: policy - schema: - is_indexed: true - - collection: directus_presets - field: collection - schema: - is_indexed: true - - collection: directus_presets - field: role - schema: - is_indexed: true - - collection: directus_presets - field: user - schema: - is_indexed: true - - collection: directus_relations - field: many_collection - schema: - is_indexed: true - - collection: directus_relations - field: one_collection - schema: - is_indexed: true - - collection: directus_revisions - field: activity - schema: - is_indexed: true - - collection: directus_revisions - field: collection - schema: - is_indexed: true - - collection: directus_revisions - field: parent - schema: - is_indexed: true - - collection: directus_revisions - field: version - schema: - is_indexed: true - - collection: directus_roles - field: parent - schema: - is_indexed: true - - collection: directus_sessions - field: share - schema: - is_indexed: true - - collection: directus_sessions - field: user - schema: - is_indexed: true - - collection: directus_settings - field: project_logo - schema: - is_indexed: true - - collection: directus_settings - field: public_background - schema: - is_indexed: true - - collection: directus_settings - field: public_favicon - schema: - is_indexed: true - - collection: directus_settings - field: public_foreground - schema: - is_indexed: true - - collection: directus_settings - field: public_registration_role - schema: - is_indexed: true - - collection: directus_settings - field: storage_default_folder - schema: - is_indexed: true - - collection: directus_shares - field: collection - schema: - is_indexed: true - - collection: directus_shares - field: role - schema: - is_indexed: true - - collection: directus_shares - field: user_created - schema: - is_indexed: true - - collection: directus_users - field: role - schema: - is_indexed: true - - collection: directus_versions - field: collection - schema: - is_indexed: true - - collection: directus_versions - field: user_created - schema: - is_indexed: true - - collection: directus_versions - field: user_updated - schema: - is_indexed: true -relations: - - collection: att_color - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: att_color - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: att_color - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: att_color - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: att_p_type - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: att_p_type - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: att_p_type - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: att_p_type - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: att_scan_lens - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: att_scan_lens - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: att_scan_lens - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: att_scan_lens - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: att_software - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: att_software - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: att_software - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: att_software - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: bg_cat - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: bg_cat - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: bg_cat - column: user_updated - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: bg_cat_user_updated_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: bg_cat - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: bg_cat - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: bg_cat - column: user_created - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: bg_cat_user_created_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: bg_entries - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: bg_entries - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: bg_entries - column: user_created - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: bg_entries_user_created_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: bg_entries - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: bg_entries - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: bg_entries - column: user_updated - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: bg_entries_user_updated_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: bg_entries - field: index - related_collection: directus_files - meta: - junction_field: null - many_collection: bg_entries - many_field: index - one_allowed_collections: null - one_collection: directus_files - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: bg_entries - column: index - foreign_key_table: directus_files - foreign_key_column: id - constraint_name: bg_entries_index_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: bg_entries - field: header - related_collection: directus_files - meta: - junction_field: null - many_collection: bg_entries - many_field: header - one_allowed_collections: null - one_collection: directus_files - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: bg_entries - column: header - foreign_key_table: directus_files - foreign_key_column: id - constraint_name: bg_entries_header_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: bg_entries - field: bg_entry_sub_cat - related_collection: bg_sub_cat - meta: - junction_field: null - many_collection: bg_entries - many_field: bg_entry_sub_cat - one_allowed_collections: null - one_collection: bg_sub_cat - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: bg_entries - column: bg_entry_sub_cat - foreign_key_table: bg_sub_cat - foreign_key_column: id - constraint_name: bg_entries_bg_entry_sub_cat_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: bg_entries - field: bg_entry_cat - related_collection: bg_cat - meta: - junction_field: null - many_collection: bg_entries - many_field: bg_entry_cat - one_allowed_collections: null - one_collection: bg_cat - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: bg_entries - column: bg_entry_cat - foreign_key_table: bg_cat - foreign_key_column: id - constraint_name: bg_entries_bg_entry_cat_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: bg_sub_cat - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: bg_sub_cat - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: bg_sub_cat - column: user_created - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: bg_sub_cat_user_created_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: bg_sub_cat - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: bg_sub_cat - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: bg_sub_cat - column: user_updated - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: bg_sub_cat_user_updated_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: bg_sub_cat - field: bg_entry_cat - related_collection: bg_cat - meta: - junction_field: null - many_collection: bg_sub_cat - many_field: bg_entry_cat - one_allowed_collections: null - one_collection: bg_cat - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: bg_sub_cat - column: bg_entry_cat - foreign_key_table: bg_cat - foreign_key_column: id - constraint_name: bg_sub_cat_bg_entry_cat_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: hazard_danger - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: hazard_danger - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: hazard_danger - column: user_created - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: hazard_danger_user_created_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: hazard_danger - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: hazard_danger - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: hazard_danger - column: user_updated - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: hazard_danger_user_updated_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: hazard_severity - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: hazard_severity - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: hazard_severity - column: user_updated - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: hazard_severity_user_updated_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: hazard_severity - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: hazard_severity - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: hazard_severity - column: user_created - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: hazard_severity_user_created_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: hazard_source - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: hazard_source - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: hazard_source - column: user_created - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: hazard_source_user_created_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: hazard_source - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: hazard_source - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: hazard_source - column: user_updated - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: hazard_source_user_updated_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: hazard_tags - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: hazard_tags - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: hazard_tags - column: user_created - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: hazard_tags_user_created_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: hazard_tags - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: hazard_tags - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: hazard_tags - column: user_updated - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: hazard_tags_user_updated_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: hazard_tags - field: hazard_source - related_collection: hazard_source - meta: - junction_field: null - many_collection: hazard_tags - many_field: hazard_source - one_allowed_collections: null - one_collection: hazard_source - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: hazard_tags - column: hazard_source - foreign_key_table: hazard_source - foreign_key_column: id - constraint_name: hazard_tags_hazard_source_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: hazard_tags - field: hazard_danger - related_collection: hazard_danger - meta: - junction_field: null - many_collection: hazard_tags - many_field: hazard_danger - one_allowed_collections: null - one_collection: hazard_danger - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: hazard_tags - column: hazard_danger - foreign_key_table: hazard_danger - foreign_key_column: id - constraint_name: hazard_tags_hazard_danger_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: hazard_tags - field: hazard_severity - related_collection: hazard_severity - meta: - junction_field: null - many_collection: hazard_tags - many_field: hazard_severity - one_allowed_collections: null - one_collection: hazard_severity - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: hazard_tags - column: hazard_severity - foreign_key_table: hazard_severity - foreign_key_column: id - constraint_name: hazard_tags_hazard_severity_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: laser_focus_lens - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: laser_focus_lens - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: laser_focus_lens - column: user_created - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: laser_focus_lens_user_created_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: laser_focus_lens - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: laser_focus_lens - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: laser_focus_lens - column: user_updated - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: laser_focus_lens_user_updated_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: laser_focus_lens_config - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: laser_focus_lens_config - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: laser_focus_lens_config - column: user_updated - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: laser_focus_lens_config_user_updated_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: laser_focus_lens_config - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: laser_focus_lens_config - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: laser_focus_lens_config - column: user_created - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: laser_focus_lens_config_user_created_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: laser_focus_lens_diameter - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: laser_focus_lens_diameter - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: laser_focus_lens_diameter - column: user_created - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: laser_focus_lens_diameter_user_created_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: laser_focus_lens_diameter - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: laser_focus_lens_diameter - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: laser_focus_lens_diameter - column: user_updated - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: laser_focus_lens_diameter_user_updated_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: laser_scan_lens_apt - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: laser_scan_lens_apt - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: laser_scan_lens_apt - column: user_created - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: laser_scan_lens_apt_user_created_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: laser_scan_lens_apt - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: laser_scan_lens_apt - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: laser_scan_lens_apt - column: user_updated - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: laser_scan_lens_apt_user_updated_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: laser_scan_lens_config - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: laser_scan_lens_config - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: laser_scan_lens_config - column: user_updated - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: laser_scan_lens_config_user_updated_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: laser_scan_lens_config - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: laser_scan_lens_config - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: laser_scan_lens_config - column: user_created - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: laser_scan_lens_config_user_created_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: laser_scan_lens_exp - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: laser_scan_lens_exp - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: laser_scan_lens_exp - column: user_updated - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: laser_scan_lens_exp_user_updated_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: laser_scan_lens_exp - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: laser_scan_lens_exp - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: laser_scan_lens_exp - column: user_created - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: laser_scan_lens_exp_user_created_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: le_fiber_settings - field: material_db - related_collection: le_materials - meta: - junction_field: null - many_collection: le_fiber_settings - many_field: material_db - one_allowed_collections: null - one_collection: le_materials - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: le_fiber_settings - field: color - related_collection: att_color - meta: - junction_field: null - many_collection: le_fiber_settings - many_field: color - one_allowed_collections: null - one_collection: att_color - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: le_fiber_settings - field: p_type - related_collection: att_p_type - meta: - junction_field: null - many_collection: le_fiber_settings - many_field: p_type - one_allowed_collections: null - one_collection: att_p_type - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: le_fiber_settings - field: fiber_settings_photos - related_collection: directus_files - meta: - junction_field: null - many_collection: le_fiber_settings - many_field: fiber_settings_photos - one_allowed_collections: null - one_collection: directus_files - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: le_fiber_settings - field: fiber_settings_screenshots - related_collection: directus_files - meta: - junction_field: null - many_collection: le_fiber_settings - many_field: fiber_settings_screenshots - one_allowed_collections: null - one_collection: directus_files - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: le_fiber_settings - field: software_type - related_collection: att_software - meta: - junction_field: null - many_collection: le_fiber_settings - many_field: software_type - one_allowed_collections: null - one_collection: att_software - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: le_fiber_settings - field: scan_lens - related_collection: att_scan_lens - meta: - junction_field: null - many_collection: le_fiber_settings - many_field: scan_lens - one_allowed_collections: null - one_collection: att_scan_lens - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: le_material_categories - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: le_material_categories - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: le_material_categories - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: le_material_categories - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: le_materials - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: le_materials - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: le_materials - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: le_materials - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: le_materials - field: material_category - related_collection: le_material_categories - meta: - junction_field: null - many_collection: le_materials - many_field: material_category - one_allowed_collections: null - one_collection: le_material_categories - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: le_materials - field: safety_status - related_collection: le_safety_status - meta: - junction_field: null - many_collection: le_materials - many_field: safety_status - one_allowed_collections: null - one_collection: le_safety_status - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: le_materials_le_safety_tags - field: le_safety_tags_id - related_collection: le_safety_tags - meta: - junction_field: le_materials_id - many_collection: le_materials_le_safety_tags - many_field: le_safety_tags_id - one_allowed_collections: null - one_collection: le_safety_tags - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: le_materials_le_safety_tags - field: le_materials_id - related_collection: le_materials - meta: - junction_field: le_safety_tags_id - many_collection: le_materials_le_safety_tags - many_field: le_materials_id - one_allowed_collections: null - one_collection: le_materials - one_collection_field: null - one_deselect_action: nullify - one_field: safety_tags - sort_field: null - - collection: le_safety_status - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: le_safety_status - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: le_safety_status - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: le_safety_status - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: le_safety_tags - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: le_safety_tags - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: le_safety_tags - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: le_safety_tags - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - - collection: material - field: material_cat - related_collection: material_cat - meta: - junction_field: null - many_collection: material - many_field: material_cat - one_allowed_collections: null - one_collection: material_cat - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: material - column: material_cat - foreign_key_table: material_cat - foreign_key_column: id - constraint_name: material_material_cat_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: material - field: material_status - related_collection: material_status - meta: - junction_field: null - many_collection: material - many_field: material_status - one_allowed_collections: null - one_collection: material_status - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: material - column: material_status - foreign_key_table: material_status - foreign_key_column: id - constraint_name: material_material_status_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: material_coating - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: material_coating - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: material_coating - column: user_updated - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: material_coating_user_updated_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: material_coating - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: material_coating - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: material_coating - column: user_created - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: material_coating_user_created_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: material_coating - field: coating_status - related_collection: material_status - meta: - junction_field: null - many_collection: material_coating - many_field: coating_status - one_allowed_collections: null - one_collection: material_status - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: material_coating - column: coating_status - foreign_key_table: material_status - foreign_key_column: id - constraint_name: material_coating_coating_status_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: material_coating_hazard_tags - field: hazard_tags_id - related_collection: hazard_tags - meta: - junction_field: material_coating_id - many_collection: material_coating_hazard_tags - many_field: hazard_tags_id - one_allowed_collections: null - one_collection: hazard_tags - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: material_coating_hazard_tags - column: hazard_tags_id - foreign_key_table: hazard_tags - foreign_key_column: id - constraint_name: material_coating_hazard_tags_hazard_tags_id_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: material_coating_hazard_tags - field: material_coating_id - related_collection: material_coating - meta: - junction_field: hazard_tags_id - many_collection: material_coating_hazard_tags - many_field: material_coating_id - one_allowed_collections: null - one_collection: material_coating - one_collection_field: null - one_deselect_action: nullify - one_field: hazard_tags - sort_field: null - schema: - table: material_coating_hazard_tags - column: material_coating_id - foreign_key_table: material_coating - foreign_key_column: id - constraint_name: material_coating_hazard_tags_material_coating_id_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: material_hazard_tags - field: hazard_tags_id - related_collection: hazard_tags - meta: - junction_field: material_id - many_collection: material_hazard_tags - many_field: hazard_tags_id - one_allowed_collections: null - one_collection: hazard_tags - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: material_hazard_tags - column: hazard_tags_id - foreign_key_table: hazard_tags - foreign_key_column: id - constraint_name: material_hazard_tags_hazard_tags_id_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: material_hazard_tags - field: material_id - related_collection: material - meta: - junction_field: hazard_tags_id - many_collection: material_hazard_tags - many_field: material_id - one_allowed_collections: null - one_collection: material - one_collection_field: null - one_deselect_action: nullify - one_field: hazard_tags - sort_field: null - schema: - table: material_hazard_tags - column: material_id - foreign_key_table: material - foreign_key_column: id - constraint_name: material_hazard_tags_material_id_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: material_opacity - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: material_opacity - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: material_opacity - column: user_created - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: material_opacity_user_created_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: material_opacity - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: material_opacity - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: material_opacity - column: user_updated - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: material_opacity_user_updated_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: projects - field: p_image - related_collection: directus_files - meta: - junction_field: null - many_collection: projects - many_field: p_image - one_allowed_collections: null - one_collection: directus_files - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: projects - column: p_image - foreign_key_table: directus_files - foreign_key_column: id - constraint_name: projects_p_image_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: projects - field: owner - related_collection: directus_users - meta: - junction_field: null - many_collection: projects - many_field: owner - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: projects - column: owner - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: projects_owner_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: projects_files - field: directus_files_id - related_collection: directus_files - meta: - junction_field: projects_submission_id - many_collection: projects_files - many_field: directus_files_id - one_allowed_collections: null - one_collection: directus_files - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: projects_files - column: directus_files_id - foreign_key_table: directus_files - foreign_key_column: id - constraint_name: projects_files_directus_files_id_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: projects_files - field: projects_submission_id - related_collection: projects - meta: - junction_field: directus_files_id - many_collection: projects_files - many_field: projects_submission_id - one_allowed_collections: null - one_collection: projects - one_collection_field: null - one_deselect_action: nullify - one_field: p_files - sort_field: null - schema: - table: projects_files - column: projects_submission_id - foreign_key_table: projects - foreign_key_column: submission_id - constraint_name: projects_files_projects_submission_id_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gal - field: photo - related_collection: directus_files - meta: - junction_field: null - many_collection: settings_co2gal - many_field: photo - one_allowed_collections: null - one_collection: directus_files - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gal - column: photo - foreign_key_table: directus_files - foreign_key_column: id - constraint_name: settings_co2gal_photo_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gal - field: screen - related_collection: directus_files - meta: - junction_field: null - many_collection: settings_co2gal - many_field: screen - one_allowed_collections: null - one_collection: directus_files - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gal - column: screen - foreign_key_table: directus_files - foreign_key_column: id - constraint_name: settings_co2gal_screen_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gal - field: source - related_collection: laser_source - meta: - junction_field: null - many_collection: settings_co2gal - many_field: source - one_allowed_collections: null - one_collection: laser_source - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gal - column: source - foreign_key_table: laser_source - foreign_key_column: submission_id - constraint_name: settings_co2gal_source_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gal - field: lens - related_collection: laser_scan_lens - meta: - junction_field: settings_co2gal_submission_id - many_collection: settings_co2gal - many_field: lens - one_allowed_collections: [] - one_collection: laser_scan_lens - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gal - column: lens - foreign_key_table: laser_scan_lens - foreign_key_column: id - constraint_name: settings_co2gal_lens_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gal - field: mat - related_collection: material - meta: - junction_field: null - many_collection: settings_co2gal - many_field: mat - one_allowed_collections: null - one_collection: material - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gal - column: mat - foreign_key_table: material - foreign_key_column: id - constraint_name: settings_co2gal_mat_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gal - field: mat_coat - related_collection: material_coating - meta: - junction_field: null - many_collection: settings_co2gal - many_field: mat_coat - one_allowed_collections: null - one_collection: material_coating - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gal - column: mat_coat - foreign_key_table: material_coating - foreign_key_column: id - constraint_name: settings_co2gal_mat_coat_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gal - field: mat_color - related_collection: material_color - meta: - junction_field: null - many_collection: settings_co2gal - many_field: mat_color - one_allowed_collections: null - one_collection: material_color - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gal - column: mat_color - foreign_key_table: material_color - foreign_key_column: id - constraint_name: settings_co2gal_mat_color_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gal - field: mat_opacity - related_collection: material_opacity - meta: - junction_field: null - many_collection: settings_co2gal - many_field: mat_opacity - one_allowed_collections: null - one_collection: material_opacity - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gal - column: mat_opacity - foreign_key_table: material_opacity - foreign_key_column: id - constraint_name: settings_co2gal_mat_opacity_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gal - field: laser_soft - related_collection: laser_software - meta: - junction_field: null - many_collection: settings_co2gal - many_field: laser_soft - one_allowed_collections: null - one_collection: laser_software - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gal - column: laser_soft - foreign_key_table: laser_software - foreign_key_column: id - constraint_name: settings_co2gal_laser_soft_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gal - field: lens_conf - related_collection: laser_scan_lens_config - meta: - junction_field: null - many_collection: settings_co2gal - many_field: lens_conf - one_allowed_collections: null - one_collection: laser_scan_lens_config - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gal - column: lens_conf - foreign_key_table: laser_scan_lens_config - foreign_key_column: id - constraint_name: settings_co2gal_lens_conf_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gal - field: lens_apt - related_collection: laser_scan_lens_apt - meta: - junction_field: null - many_collection: settings_co2gal - many_field: lens_apt - one_allowed_collections: null - one_collection: laser_scan_lens_apt - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gal - column: lens_apt - foreign_key_table: laser_scan_lens_apt - foreign_key_column: id - constraint_name: settings_co2gal_lens_apt_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gal - field: lens_exp - related_collection: laser_scan_lens_exp - meta: - junction_field: null - many_collection: settings_co2gal - many_field: lens_exp - one_allowed_collections: null - one_collection: laser_scan_lens_exp - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gal - column: lens_exp - foreign_key_table: laser_scan_lens_exp - foreign_key_column: id - constraint_name: settings_co2gal_lens_exp_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gal - field: owner - related_collection: directus_users - meta: - junction_field: null - many_collection: settings_co2gal - many_field: owner - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gal - column: owner - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: settings_co2gal_owner_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gan - field: screen - related_collection: directus_files - meta: - junction_field: null - many_collection: settings_co2gan - many_field: screen - one_allowed_collections: null - one_collection: directus_files - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gan - column: screen - foreign_key_table: directus_files - foreign_key_column: id - constraint_name: settings_co2gan_screen_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gan - field: source - related_collection: laser_source - meta: - junction_field: null - many_collection: settings_co2gan - many_field: source - one_allowed_collections: null - one_collection: laser_source - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gan - column: source - foreign_key_table: laser_source - foreign_key_column: submission_id - constraint_name: settings_co2gan_source_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gan - field: mat - related_collection: material - meta: - junction_field: null - many_collection: settings_co2gan - many_field: mat - one_allowed_collections: null - one_collection: material - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gan - column: mat - foreign_key_table: material - foreign_key_column: id - constraint_name: settings_co2gan_mat_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gan - field: mat_coat - related_collection: material_coating - meta: - junction_field: null - many_collection: settings_co2gan - many_field: mat_coat - one_allowed_collections: null - one_collection: material_coating - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gan - column: mat_coat - foreign_key_table: material_coating - foreign_key_column: id - constraint_name: settings_co2gan_mat_coat_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gan - field: mat_color - related_collection: material_color - meta: - junction_field: null - many_collection: settings_co2gan - many_field: mat_color - one_allowed_collections: null - one_collection: material_color - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gan - column: mat_color - foreign_key_table: material_color - foreign_key_column: id - constraint_name: settings_co2gan_mat_color_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gan - field: mat_opacity - related_collection: material_opacity - meta: - junction_field: null - many_collection: settings_co2gan - many_field: mat_opacity - one_allowed_collections: null - one_collection: material_opacity - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gan - column: mat_opacity - foreign_key_table: material_opacity - foreign_key_column: id - constraint_name: settings_co2gan_mat_opacity_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gan - field: laser_soft - related_collection: laser_software - meta: - junction_field: null - many_collection: settings_co2gan - many_field: laser_soft - one_allowed_collections: null - one_collection: laser_software - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gan - column: laser_soft - foreign_key_table: laser_software - foreign_key_column: id - constraint_name: settings_co2gan_laser_soft_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gan - field: photo - related_collection: directus_files - meta: - junction_field: null - many_collection: settings_co2gan - many_field: photo - one_allowed_collections: null - one_collection: directus_files - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gan - column: photo - foreign_key_table: directus_files - foreign_key_column: id - constraint_name: settings_co2gan_photo_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gan - field: lens - related_collection: laser_focus_lens - meta: - junction_field: null - many_collection: settings_co2gan - many_field: lens - one_allowed_collections: null - one_collection: laser_focus_lens - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gan - column: lens - foreign_key_table: laser_focus_lens - foreign_key_column: id - constraint_name: settings_co2gan_lens_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gan - field: lens_conf - related_collection: laser_focus_lens_config - meta: - junction_field: null - many_collection: settings_co2gan - many_field: lens_conf - one_allowed_collections: null - one_collection: laser_focus_lens_config - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gan - column: lens_conf - foreign_key_table: laser_focus_lens_config - foreign_key_column: id - constraint_name: settings_co2gan_lens_conf_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_co2gan - field: owner - related_collection: directus_users - meta: - junction_field: null - many_collection: settings_co2gan - many_field: owner - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_co2gan - column: owner - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: settings_co2gan_owner_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_fiber - field: photo - related_collection: directus_files - meta: - junction_field: null - many_collection: settings_fiber - many_field: photo - one_allowed_collections: null - one_collection: directus_files - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_fiber - column: photo - foreign_key_table: directus_files - foreign_key_column: id - constraint_name: settings_fiber_photo_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_fiber - field: screen - related_collection: directus_files - meta: - junction_field: null - many_collection: settings_fiber - many_field: screen - one_allowed_collections: null - one_collection: directus_files - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_fiber - column: screen - foreign_key_table: directus_files - foreign_key_column: id - constraint_name: settings_fiber_screen_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_fiber - field: source - related_collection: laser_source - meta: - junction_field: null - many_collection: settings_fiber - many_field: source - one_allowed_collections: null - one_collection: laser_source - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_fiber - column: source - foreign_key_table: laser_source - foreign_key_column: submission_id - constraint_name: settings_fiber_source_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_fiber - field: lens - related_collection: laser_scan_lens - meta: - junction_field: null - many_collection: settings_fiber - many_field: lens - one_allowed_collections: null - one_collection: laser_scan_lens - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_fiber - column: lens - foreign_key_table: laser_scan_lens - foreign_key_column: id - constraint_name: settings_fiber_lens_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_fiber - field: mat - related_collection: material - meta: - junction_field: null - many_collection: settings_fiber - many_field: mat - one_allowed_collections: null - one_collection: material - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_fiber - column: mat - foreign_key_table: material - foreign_key_column: id - constraint_name: settings_fiber_mat_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_fiber - field: mat_color - related_collection: material_color - meta: - junction_field: null - many_collection: settings_fiber - many_field: mat_color - one_allowed_collections: null - one_collection: material_color - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_fiber - column: mat_color - foreign_key_table: material_color - foreign_key_column: id - constraint_name: settings_fiber_mat_color_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_fiber - field: laser_soft - related_collection: laser_software - meta: - junction_field: null - many_collection: settings_fiber - many_field: laser_soft - one_allowed_collections: null - one_collection: laser_software - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_fiber - column: laser_soft - foreign_key_table: laser_software - foreign_key_column: id - constraint_name: settings_fiber_laser_soft_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_fiber - field: mat_coat - related_collection: material_coating - meta: - junction_field: null - many_collection: settings_fiber - many_field: mat_coat - one_allowed_collections: null - one_collection: material_coating - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_fiber - column: mat_coat - foreign_key_table: material_coating - foreign_key_column: id - constraint_name: settings_fiber_mat_coat_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_fiber - field: mat_opacity - related_collection: material_opacity - meta: - junction_field: null - many_collection: settings_fiber - many_field: mat_opacity - one_allowed_collections: null - one_collection: material_opacity - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_fiber - column: mat_opacity - foreign_key_table: material_opacity - foreign_key_column: id - constraint_name: settings_fiber_mat_opacity_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_fiber - field: owner - related_collection: directus_users - meta: - junction_field: null - many_collection: settings_fiber - many_field: owner - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_fiber - column: owner - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: settings_fiber_owner_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_uv - field: screen - related_collection: directus_files - meta: - junction_field: null - many_collection: settings_uv - many_field: screen - one_allowed_collections: null - one_collection: directus_files - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_uv - column: screen - foreign_key_table: directus_files - foreign_key_column: id - constraint_name: settings_uv_screen_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_uv - field: photo - related_collection: directus_files - meta: - junction_field: null - many_collection: settings_uv - many_field: photo - one_allowed_collections: null - one_collection: directus_files - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_uv - column: photo - foreign_key_table: directus_files - foreign_key_column: id - constraint_name: settings_uv_photo_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_uv - field: source - related_collection: laser_source - meta: - junction_field: null - many_collection: settings_uv - many_field: source - one_allowed_collections: null - one_collection: laser_source - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_uv - column: source - foreign_key_table: laser_source - foreign_key_column: submission_id - constraint_name: settings_uv_source_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_uv - field: lens - related_collection: laser_scan_lens - meta: - junction_field: null - many_collection: settings_uv - many_field: lens - one_allowed_collections: null - one_collection: laser_scan_lens - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_uv - column: lens - foreign_key_table: laser_scan_lens - foreign_key_column: id - constraint_name: settings_uv_lens_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_uv - field: mat - related_collection: material - meta: - junction_field: null - many_collection: settings_uv - many_field: mat - one_allowed_collections: null - one_collection: material - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_uv - column: mat - foreign_key_table: material - foreign_key_column: id - constraint_name: settings_uv_mat_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_uv - field: mat_coat - related_collection: material_coating - meta: - junction_field: null - many_collection: settings_uv - many_field: mat_coat - one_allowed_collections: null - one_collection: material_coating - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_uv - column: mat_coat - foreign_key_table: material_coating - foreign_key_column: id - constraint_name: settings_uv_mat_coat_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_uv - field: mat_color - related_collection: material_color - meta: - junction_field: null - many_collection: settings_uv - many_field: mat_color - one_allowed_collections: null - one_collection: material_color - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_uv - column: mat_color - foreign_key_table: material_color - foreign_key_column: id - constraint_name: settings_uv_mat_color_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_uv - field: mat_opacity - related_collection: material_opacity - meta: - junction_field: null - many_collection: settings_uv - many_field: mat_opacity - one_allowed_collections: null - one_collection: material_opacity - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_uv - column: mat_opacity - foreign_key_table: material_opacity - foreign_key_column: id - constraint_name: settings_uv_mat_opacity_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: settings_uv - field: laser_soft - related_collection: laser_software - meta: - junction_field: null - many_collection: settings_uv - many_field: laser_soft - one_allowed_collections: null - one_collection: laser_software - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_uv - column: laser_soft - foreign_key_table: laser_software - foreign_key_column: id - constraint_name: settings_uv_laser_soft_foreign - on_update: RESTRICT - on_delete: NO ACTION - - collection: settings_uv - field: owner - related_collection: directus_users - meta: - junction_field: null - many_collection: settings_uv - many_field: owner - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: settings_uv - column: owner - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: settings_uv_owner_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: user_claims - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: user_claims - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: user_claims - column: user_created - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: user_claims_user_created_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: user_claims - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: user_claims - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: user_claims - column: user_updated - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: user_claims_user_updated_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: user_claims - field: claimant - related_collection: directus_users - meta: - junction_field: null - many_collection: user_claims - many_field: claimant - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: user_claims - column: claimant - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: user_claims_claimant_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: user_claims - field: reviewed_by - related_collection: directus_users - meta: - junction_field: null - many_collection: user_claims - many_field: reviewed_by - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: user_claims - column: reviewed_by - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: user_claims_reviewed_by_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: user_memberships - field: app_user - related_collection: directus_users - meta: - junction_field: null - many_collection: user_memberships - many_field: app_user - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: user_memberships - column: app_user - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: user_memberships_app_user_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: user_memberships - field: claim_user_id - related_collection: directus_users - meta: - junction_field: null - many_collection: user_memberships - many_field: claim_user_id - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: user_memberships - column: claim_user_id - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: user_memberships_claim_user_id_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: user_preferences - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: user_preferences - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: user_preferences - column: user_created - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: user_preferences_user_created_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: user_preferences - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: user_preferences - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: user_preferences - column: user_updated - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: user_preferences_user_updated_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: user_rigs - field: user_created - related_collection: directus_users - meta: - junction_field: null - many_collection: user_rigs - many_field: user_created - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: user_rigs - column: user_created - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: user_rigs_user_created_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: user_rigs - field: user_updated - related_collection: directus_users - meta: - junction_field: null - many_collection: user_rigs - many_field: user_updated - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: user_rigs - column: user_updated - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: user_rigs_user_updated_foreign - on_update: RESTRICT - on_delete: RESTRICT - - collection: user_rigs - field: owner - related_collection: directus_users - meta: - junction_field: null - many_collection: user_rigs - many_field: owner - one_allowed_collections: null - one_collection: directus_users - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: user_rigs - column: owner - foreign_key_table: directus_users - foreign_key_column: id - constraint_name: user_rigs_owner_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: user_rigs - field: rig_type - related_collection: user_rig_type - meta: - junction_field: null - many_collection: user_rigs - many_field: rig_type - one_allowed_collections: null - one_collection: user_rig_type - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: user_rigs - column: rig_type - foreign_key_table: user_rig_type - foreign_key_column: id - constraint_name: user_rigs_rig_type_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: user_rigs - field: laser_source - related_collection: laser_source - meta: - junction_field: null - many_collection: user_rigs - many_field: laser_source - one_allowed_collections: null - one_collection: laser_source - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: user_rigs - column: laser_source - foreign_key_table: laser_source - foreign_key_column: submission_id - constraint_name: user_rigs_laser_source_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: user_rigs - field: laser_scan_lens - related_collection: laser_scan_lens - meta: - junction_field: null - many_collection: user_rigs - many_field: laser_scan_lens - one_allowed_collections: null - one_collection: laser_scan_lens - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: user_rigs - column: laser_scan_lens - foreign_key_table: laser_scan_lens - foreign_key_column: id - constraint_name: user_rigs_laser_scan_lens_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: user_rigs - field: laser_focus_lens - related_collection: laser_focus_lens - meta: - junction_field: null - many_collection: user_rigs - many_field: laser_focus_lens - one_allowed_collections: null - one_collection: laser_focus_lens - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: user_rigs - column: laser_focus_lens - foreign_key_table: laser_focus_lens - foreign_key_column: id - constraint_name: user_rigs_laser_focus_lens_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: user_rigs - field: laser_scan_lens_apt - related_collection: laser_scan_lens_apt - meta: - junction_field: null - many_collection: user_rigs - many_field: laser_scan_lens_apt - one_allowed_collections: null - one_collection: laser_scan_lens_apt - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: user_rigs - column: laser_scan_lens_apt - foreign_key_table: laser_scan_lens_apt - foreign_key_column: id - constraint_name: user_rigs_laser_scan_lens_apt_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: user_rigs - field: laser_scan_lens_exp - related_collection: laser_scan_lens_exp - meta: - junction_field: null - many_collection: user_rigs - many_field: laser_scan_lens_exp - one_allowed_collections: null - one_collection: laser_scan_lens_exp - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: user_rigs - column: laser_scan_lens_exp - foreign_key_table: laser_scan_lens_exp - foreign_key_column: id - constraint_name: user_rigs_laser_scan_lens_exp_foreign - on_update: RESTRICT - on_delete: SET NULL - - collection: user_rigs - field: laser_software - related_collection: laser_software - meta: - junction_field: null - many_collection: user_rigs - many_field: laser_software - one_allowed_collections: null - one_collection: laser_software - one_collection_field: null - one_deselect_action: nullify - one_field: null - sort_field: null - schema: - table: user_rigs - column: laser_software - foreign_key_table: laser_software - foreign_key_column: id - constraint_name: user_rigs_laser_software_foreign - on_update: RESTRICT - on_delete: SET NULL