Skip to content

Core Fields — Project

Every column on the projects table (and its siblings) of the Mockomat metadata schema, with notes on what each value drives in the product. Use the anchors (#projects.<column>) to deep-link a specific field from the app's Read docs icons.

TIP

This page is reference, not tutorial. For the how-to side of project creation, see Getting Started. For sharing mechanics, see Preview & Hints.


Identity

These columns identify a project and never change shape, even when the display name does.

uuid

string · required · immutable

Stable identifier used in URLs, share links, and cross-references. Generated when the project is created and never modified — even renaming the project keeps the same uuid. Use this whenever you need to reference the project programmatically (API, exports, integrators).

name

string · required

The display name shown in lists, on the board, and on every share link. Treated as opaque text — pick whatever a human will recognise. Renaming is safe: nothing internal keys off the name, so existing links and integrations continue to work.

INFO

Names need not be globally unique. Two users can each have a project called Demo Shop. If you need a unique handle for URLs or external tools, that's what slug is for.

slug

string · required · URL-safe

Human-readable handle used in URLs and mock-API endpoints (e.g. mock/demo-shop/graphql). Auto-derived from the name when you first save the project but editable afterwards.

  • Must be lowercase, with hyphens instead of spaces.
  • Must be unique within your tenant — two projects in the same tenant cannot share a slug.
  • Changing the slug rewrites the public mock endpoint. Existing integrations stop resolving until they're updated.

icon

string · optional

Material icon name (e.g. auto_awesome, shopping_cart). Picked from the icon picker in the project dialog. Falls back to a generic project icon when unset.

subtitle

string · optional

Short one-liner shown under the project name on the workspace tile and in the project header — think tagline, not description. Plain text; no markdown.

color

string · optional

Theme colour for the project tile and board accents. Selected from a small palette in the project dialog. Stored as a token name (e.g. pink), not a raw hex value — the actual hue is resolved against the theme so dark and light modes look consistent.


Storage and ownership

These columns decide who can see and edit the project.

tenant_id

int · optional internally, effectively required for registered users

The workspace tenant (owning organisation) the project belongs to. Set automatically when a registered user creates a project. Anonymous / session-only projects can have a null tenant — those projects belong to a browser session, not an organisation.

workspace_id

int · optional

The workspace inside the tenant this project lives in. null means the tenant's default workspace — useful for backwards compatibility when a project was created before workspaces existed. Moving a project between workspaces is purely a workspace_id update; ownership (tenant_id) does not change.

user_id

string · optional

The user who originally created the project. Mainly used for audit and billing attribution. Workspace membership — not this field — controls access. Transferring a project to a new owner is supported via the project settings dialog.

session_id

string · optional

For anonymous try-Mockomat-without-signing-up projects. Holds the browser session ID that owns the project. As soon as the visitor signs up, the project is migrated to that user's tenant and session_id is cleared.


Publication & visibility

These columns control whether the project is private, listed publicly, or featured as a blueprint.

visibility

boolean · required · default false

When false (the default), the project is private to its tenant. When true, the project is published as a public blueprint — visible on mockomat.com/blueprints and importable by other users.

WARNING

Publishing is an admin-only operation, available through the Admin Zone tab of the project dialog. Publication is one-way until an admin unpublishes; the public listing is generated from the published copy, not the live project.

complexity_level

enum · optional

Difficulty rating shown next to a published blueprint (beginner, intermediate, advanced). Helps prospective users self-select. Only used when visibility is true.

teaser

text · optional

Two-to-three sentence sales pitch that appears on the public blueprint listing. Plain text; markdown is rendered as plain characters. Only relevant when visibility = true.

description

text · optional · markdown

Long-form description shown on the blueprint detail page. Supports inline markdown for emphasis, lists, and headings (no images). Empty by default for private projects.

display_order

int · optional

Integer sort key used to rank published blueprints inside their section. Lower numbers come first. Leave empty to use the default chronological order.

cover_image

string · optional

URL of the light-mode cover image for the blueprint listing (1200×630 recommended). Uploaded through the cover-image dropzone in the Admin Zone tab. Only used when visibility is true.

cover_image_dark

string · optional

Same as cover_image but for dark-mode display. When unset, the light-mode image is reused.


Sharing & collaboration

These columns control read-only preview links and read-write collaboration links shared with people outside your workspace.

preview_access

enum · required · default DISABLED

Controls whether a public, read-only preview link is generated for this project.

ValueMeaning
DISABLEDNo preview link. Project is only visible to workspace members.
PUBLICAnyone with the link can browse the project (no edits).
TOKENSame as PUBLIC, but the URL includes a random token; rotating the token invalidates old links.

preview_token

string · optional

Random opaque token appended to the preview URL when preview_access is TOKEN. Regenerated via the Regenerate token button; old URLs stop resolving immediately.

collaboration_access

enum · required · default DISABLED

Controls the read-write collaboration link — the one you share with people who should be able to edit the project even though they aren't formal workspace members.

ValueMeaning
DISABLEDNo collaboration link.
LINKAnyone with the link can join.
PASSWORDSame as LINK, plus a password gate.

WARNING

A collaboration link grants write access. Use PASSWORD and a TTL (see below) for anything beyond a quick pairing session.

collaboration_token

string · optional

The token portion of the collaboration URL. Rotating it (via the Regenerate token button) instantly invalidates all outstanding collaboration links.

collaboration_password

string · optional

When collaboration_access is PASSWORD, the password collaborators must enter to join. Stored hashed; never returned by the API.

collaboration_ttl_hours

int · optional

Hours the collaboration link stays valid after creation. Lets you hand out a link that auto-expires (e.g. 24h, 1 week, until cancelled). The expiry is computed at link creation and stored in collaboration_expires_at.

collaboration_expires_at

datetime · optional

Concrete expiry timestamp for the active collaboration link. After this moment, the link is no longer accepted; collaborators must be re-invited with a fresh link.


Board state

The Mockomat modelling board persists its viewport so opening a project returns you to the same zoom and pan as last time.

board_zoom

float · optional

Last zoom level the user had on the board (e.g. 1 = 100%, 0.5 = 50%). Auto-saved while modelling; rarely edited by hand.

board_pan_x · board_pan_y

float · optional · float · optional

Last pan offsets of the board viewport, in pixels. Saved alongside board_zoom.


Internals

These columns exist for the runtime and aren't meant to be edited in the dialog. They're documented here for integrators and support.

mock_token

string · required

The API-key token consumers send when calling /mock/{slug}/graphql. Auto-generated; rotated through the API Access section of the project settings.

models

string · required

Snapshot of the project's modelling schema (tables + attributes + relations) used by the runtime. Maintained automatically as you edit the board.

queries

string · required

Snapshot of the project's GraphQL query surface used by the runtime. Regenerated whenever the model or API design changes.

id · created_at · updated_at · deleted

int · required · datetime · required · datetime · required · boolean · required

Inherited from BaseEntity. Internal primary key, auto-timestamps, and the soft-delete flag. Active queries always filter deleted = false, so deleting a project doesn't physically remove the row — it makes the project invisible to everyone except admins running undelete tooling.


The project domain has two sibling tables that complete the picture:

  • project_collaborators — one row per collaborator who joined via a collaboration link. Tracks joined_via (link vs. password) and when they joined.
  • project_langs — translated copies of the human-facing fields (name, subtitle, description, teaser) for published blueprints. Auto-managed; end users don't edit project_langs directly.