From 92ce8bce97dee709c793aa32db5a140e927c2b81 Mon Sep 17 00:00:00 2001 From: makearmy Date: Fri, 10 Jul 2026 10:51:04 -0400 Subject: [PATCH 1/2] Document Directus production contract and repair auth --- app/app/api/auth/register/route.ts | 98 +- app/lib/directus.ts | 39 +- directus/README.md | 34 + directus/auth-contract.md | 37 + directus/deployment.md | 54 + directus/env.example | 71 + directus/flows.md | 47 + directus/integration-testing.md | 61 + directus/permissions.md | 90 + directus/reference/deployment-inventory.md | 29 + .../reference/docker-compose.sanitized.yml | 28 + .../reference/environment-variable-names.txt | 24 + directus/reference/exports/access.json | 44 + .../exports/directus-user-fields.json | 19 + directus/reference/exports/flows.json | 35 + directus/reference/exports/operations.json | 94 + directus/reference/exports/permissions.json | 1176 + directus/reference/exports/policies.json | 62 + directus/reference/exports/roles.json | 30 + directus/reference/exports/settings.json | 11 + directus/reference/nginx-summary.txt | 33 + directus/reference/schema-comparison.txt | 8 + .../directus_access-columns.tsv | 5 + .../directus_fields-columns.tsv | 20 + .../directus_flows-columns.tsv | 12 + .../directus_operations-columns.tsv | 12 + .../directus_permissions-columns.tsv | 8 + .../directus_policies-columns.tsv | 8 + .../directus_roles-columns.tsv | 5 + .../directus_settings-columns.tsv | 66 + directus/schema-differences.md | 55 + directus/schema.yaml | 22571 ++++++++++++++++ 32 files changed, 24821 insertions(+), 65 deletions(-) create mode 100644 directus/README.md create mode 100644 directus/auth-contract.md create mode 100644 directus/deployment.md create mode 100644 directus/env.example create mode 100644 directus/flows.md create mode 100644 directus/integration-testing.md create mode 100644 directus/permissions.md create mode 100644 directus/reference/deployment-inventory.md create mode 100644 directus/reference/docker-compose.sanitized.yml create mode 100644 directus/reference/environment-variable-names.txt create mode 100644 directus/reference/exports/access.json create mode 100644 directus/reference/exports/directus-user-fields.json create mode 100644 directus/reference/exports/flows.json create mode 100644 directus/reference/exports/operations.json create mode 100644 directus/reference/exports/permissions.json create mode 100644 directus/reference/exports/policies.json create mode 100644 directus/reference/exports/roles.json create mode 100644 directus/reference/exports/settings.json create mode 100644 directus/reference/nginx-summary.txt create mode 100644 directus/reference/schema-comparison.txt create mode 100644 directus/reference/system-table-columns/directus_access-columns.tsv create mode 100644 directus/reference/system-table-columns/directus_fields-columns.tsv create mode 100644 directus/reference/system-table-columns/directus_flows-columns.tsv create mode 100644 directus/reference/system-table-columns/directus_operations-columns.tsv create mode 100644 directus/reference/system-table-columns/directus_permissions-columns.tsv create mode 100644 directus/reference/system-table-columns/directus_policies-columns.tsv create mode 100644 directus/reference/system-table-columns/directus_roles-columns.tsv create mode 100644 directus/reference/system-table-columns/directus_settings-columns.tsv create mode 100644 directus/schema-differences.md create mode 100644 directus/schema.yaml diff --git a/app/app/api/auth/register/route.ts b/app/app/api/auth/register/route.ts index e9efabe..5cbc79c 100644 --- a/app/app/api/auth/register/route.ts +++ b/app/app/api/auth/register/route.ts @@ -1,13 +1,12 @@ // 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) { @@ -15,16 +14,18 @@ function bad(message: string, status = 400) { } const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; -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", +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, }); - 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) { @@ -32,9 +33,6 @@ 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(); @@ -46,53 +44,35 @@ 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"); - // 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", + try { + if (await directusUserExists(email, username)) { + return bad("Email or username already in use", 409); } - ); - const existsJson = await existsRes.json().catch(() => ({})); - if (Array.isArray(existsJson?.data) && existsJson.data.length > 0) { - return bad("Email or username already in use", 409); + } catch (error: any) { + logDirectusFailure("duplicate lookup", 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 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); } - // Auto-login (email-based; directus expects "email" even though it's an identifier) - const tokens = await directusLogin(email, password); + 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); + } - const res = NextResponse.json({ ok: true, id: cj?.data?.id || null }, { status: 201 }); + const res = NextResponse.json({ ok: true, id: user.id }, { status: 201 }); if (tokens?.access_token) { res.cookies.set("ma_at", tokens.access_token, { path: "/", diff --git a/app/lib/directus.ts b/app/lib/directus.ts index f9d705f..950e23c 100644 --- a/app/lib/directus.ts +++ b/app/lib/directus.ts @@ -4,14 +4,28 @@ // ⚠️ 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 || "").replace(/\/$/, ""); -const TOKEN_ADMIN_REGISTER = process.env.DIRECTUS_TOKEN_ADMIN_REGISTER || ""; // server-only +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 the older aliases as fallbacks so an existing +// deployment does not silently lose authentication during migration. +const TOKEN_ADMIN_REGISTER = + process.env.DIRECTUS_TOKEN_ADMIN_REGISTER || + process.env.DIRECTUS_SERVICE_TOKEN || + process.env.DIRECTUS_ADMIN_TOKEN || + ""; // 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"); +if (!BASE) console.warn("[directus] Missing DIRECTUS_URL / NEXT_PUBLIC_API_BASE_URL"); if (!TOKEN_ADMIN_REGISTER) - console.warn("[directus] Missing DIRECTUS_TOKEN_ADMIN_REGISTER (used for registration and username login)"); + console.warn( + "[directus] Missing DIRECTUS_TOKEN_ADMIN_REGISTER (or legacy service-token alias) " + + "used for registration and username login" + ); export function bytesFromMB(mb: number) { return Math.round(mb * 1024 * 1024); @@ -119,7 +133,8 @@ export async function dxDELETE(path: string, bearer: string): Promise(path: string, init?: RequestInit): Promise { - if (!TOKEN_ADMIN_REGISTER) throw new Error("Missing DIRECTUS_TOKEN_ADMIN_REGISTER"); + if (!BASE) throw new Error("Missing Directus base URL"); + if (!TOKEN_ADMIN_REGISTER) throw new Error("Missing Directus registration credential"); const res = await fetch(`${BASE}${path}`, { ...init, headers: { @@ -231,13 +246,25 @@ export async function createDirectusUser(input: { } export async function emailForUsername(username: string): Promise { - const q = `/users?filter[username][_eq]=${encodeURIComponent(username)}&fields=email&limit=1`; + const clean = username.trim(); + if (!clean) return null; + const q = `/users?filter[username][_eq]=${encodeURIComponent(clean)}&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/directus/README.md b/directus/README.md new file mode 100644 index 0000000..0a90703 --- /dev/null +++ b/directus/README.md @@ -0,0 +1,34 @@ +# 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 new file mode 100644 index 0000000..19c05f7 --- /dev/null +++ b/directus/auth-contract.md @@ -0,0 +1,37 @@ +# 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 new file mode 100644 index 0000000..085606f --- /dev/null +++ b/directus/deployment.md @@ -0,0 +1,54 @@ +# 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 new file mode 100644 index 0000000..14449cf --- /dev/null +++ b/directus/env.example @@ -0,0 +1,71 @@ +# 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 new file mode 100644 index 0000000..251e18f --- /dev/null +++ b/directus/flows.md @@ -0,0 +1,47 @@ +# 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 new file mode 100644 index 0000000..72c2feb --- /dev/null +++ b/directus/integration-testing.md @@ -0,0 +1,61 @@ +# 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 new file mode 100644 index 0000000..84321b1 --- /dev/null +++ b/directus/permissions.md @@ -0,0 +1,90 @@ +# 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 new file mode 100644 index 0000000..68dfabd --- /dev/null +++ b/directus/reference/deployment-inventory.md @@ -0,0 +1,29 @@ +# 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 new file mode 100644 index 0000000..dde2e97 --- /dev/null +++ b/directus/reference/docker-compose.sanitized.yml @@ -0,0 +1,28 @@ +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 new file mode 100644 index 0000000..c0e194d --- /dev/null +++ b/directus/reference/environment-variable-names.txt @@ -0,0 +1,24 @@ +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 new file mode 100644 index 0000000..b9e1940 --- /dev/null +++ b/directus/reference/exports/access.json @@ -0,0 +1,44 @@ +[ + { + "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 new file mode 100644 index 0000000..e257da7 --- /dev/null +++ b/directus/reference/exports/directus-user-fields.json @@ -0,0 +1,19 @@ +[ + { + "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 new file mode 100644 index 0000000..02deaef --- /dev/null +++ b/directus/reference/exports/flows.json @@ -0,0 +1,35 @@ +[ + { + "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 new file mode 100644 index 0000000..f6ebdcd --- /dev/null +++ b/directus/reference/exports/operations.json @@ -0,0 +1,94 @@ +[ + { + "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 new file mode 100644 index 0000000..770a6f4 --- /dev/null +++ b/directus/reference/exports/permissions.json @@ -0,0 +1,1176 @@ +[ + { + "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 new file mode 100644 index 0000000..cb43960 --- /dev/null +++ b/directus/reference/exports/policies.json @@ -0,0 +1,62 @@ +[ + { + "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 new file mode 100644 index 0000000..8847f19 --- /dev/null +++ b/directus/reference/exports/roles.json @@ -0,0 +1,30 @@ +[ + { + "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 new file mode 100644 index 0000000..dc9f23c --- /dev/null +++ b/directus/reference/exports/settings.json @@ -0,0 +1,11 @@ +[ + { + "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 new file mode 100644 index 0000000..ea57905 --- /dev/null +++ b/directus/reference/nginx-summary.txt @@ -0,0 +1,33 @@ +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 new file mode 100644 index 0000000..a44985c --- /dev/null +++ b/directus/reference/schema-comparison.txt @@ -0,0 +1,8 @@ +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 new file mode 100644 index 0000000..c159bfc --- /dev/null +++ b/directus/reference/system-table-columns/directus_access-columns.tsv @@ -0,0 +1,5 @@ +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 new file mode 100644 index 0000000..fe3341d --- /dev/null +++ b/directus/reference/system-table-columns/directus_fields-columns.tsv @@ -0,0 +1,20 @@ +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 new file mode 100644 index 0000000..297b778 --- /dev/null +++ b/directus/reference/system-table-columns/directus_flows-columns.tsv @@ -0,0 +1,12 @@ +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 new file mode 100644 index 0000000..b60950b --- /dev/null +++ b/directus/reference/system-table-columns/directus_operations-columns.tsv @@ -0,0 +1,12 @@ +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 new file mode 100644 index 0000000..0c32c46 --- /dev/null +++ b/directus/reference/system-table-columns/directus_permissions-columns.tsv @@ -0,0 +1,8 @@ +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 new file mode 100644 index 0000000..4353e7f --- /dev/null +++ b/directus/reference/system-table-columns/directus_policies-columns.tsv @@ -0,0 +1,8 @@ +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 new file mode 100644 index 0000000..992e2ea --- /dev/null +++ b/directus/reference/system-table-columns/directus_roles-columns.tsv @@ -0,0 +1,5 @@ +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 new file mode 100644 index 0000000..d2af55b --- /dev/null +++ b/directus/reference/system-table-columns/directus_settings-columns.tsv @@ -0,0 +1,66 @@ +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 new file mode 100644 index 0000000..a2da87c --- /dev/null +++ b/directus/schema-differences.md @@ -0,0 +1,55 @@ +# 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 new file mode 100644 index 0000000..2d40d34 --- /dev/null +++ b/directus/schema.yaml @@ -0,0 +1,22571 @@ +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 From 4884b5d3672673672c8b698b72b6ffafef12eb23 Mon Sep 17 00:00:00 2001 From: makearmy Date: Fri, 10 Jul 2026 11:13:18 -0400 Subject: [PATCH 2/2] Retry authorized Directus registration credentials --- app/lib/directus.ts | 57 ++++++++++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 19 deletions(-) diff --git a/app/lib/directus.ts b/app/lib/directus.ts index 950e23c..d17bdc1 100644 --- a/app/lib/directus.ts +++ b/app/lib/directus.ts @@ -10,18 +10,21 @@ const BASE = ( "" ).replace(/\/$/, ""); // DIRECTUS_TOKEN_ADMIN_REGISTER is the canonical credential for the production -// Registration Bot policy. Keep the older aliases as fallbacks so an existing -// deployment does not silently lose authentication during migration. -const TOKEN_ADMIN_REGISTER = - process.env.DIRECTUS_TOKEN_ADMIN_REGISTER || - process.env.DIRECTUS_SERVICE_TOKEN || - process.env.DIRECTUS_ADMIN_TOKEN || - ""; // server-only +// 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 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 (!TOKEN_ADMIN_REGISTER) +if (!REGISTRATION_CREDENTIALS.length) console.warn( "[directus] Missing DIRECTUS_TOKEN_ADMIN_REGISTER (or legacy service-token alias) " + "used for registration and username login" @@ -134,17 +137,33 @@ export async function dxDELETE(path: string, bearer: string): Promise(path: string, init?: RequestInit): Promise { if (!BASE) throw new Error("Missing Directus base URL"); - if (!TOKEN_ADMIN_REGISTER) throw new Error("Missing Directus registration credential"); - 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; + 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"); } // ─────────────────────────────────────────────────────────────