ObjectOS
リファレンス

フィールドタイプ

オブジェクトに宣言できるすべてのフィールドタイプ — 何を格納し、どのオプションを受け付け、REST、Console、AI Builder にどう現れるか。

フィールドタイプ

48 個の組み込みフィールドタイプを、ファミリーごとに分類しています。完全な Zod スキーマは packages/spec/src/data/field.zod.ts にあります — このページは実用的なサマリーです。

コアプロパティ(すべてのフィールド)

プロパティデフォルト目的
namestring (snake_case)マシン識別子 — REST パスセグメント、SQL カラム
labelstringConsole での表示ラベル
typeFieldType下記の型テーブルを参照
requiredbooleanfalseNOT NULL 制約
uniquebooleanfalseユニークインデックス
searchablebooleanfalse/api/v1/search 用にインデックス化
multiplebooleanfalse値の配列を格納
defaultValueunknown初期値(リテラルまたは CEL)
columnNamestring= name物理 DB カラムを上書き
hiddenbooleanfalseデフォルトの Console ビューから非表示
readonlybooleanfalseフォームで無効化
systembooleanfalse自動注入(id, created_at, …)
indexbooleanfalseDB インデックスを作成
externalIdbooleanfalse外部キーによる upsert の対象
inlineHelpTextstringツールチップ / ヘルパーテキスト
conditionalRequiredP 述語CEL が真のとき必須
trackHistorybooleanfalse値の変更を、レコードのアクティビティタイムラインに人間が読める形式のエントリとして表示(ADR-0052)

テキストファミリー

用途主なオプション
text短い文字列maxLength, minLength
textarea複数行maxLength
emailメールアドレスフォーマット検証あり。小文字化される
urlURLフォーマット検証あり
phone電話番号E.164
password一方向シークレット認証サブシステムによってハッシュ化され、GET では返されない
secret復号可能なシークレット(API キー、トークン、DB パスワード)crypto プロバイダーによって保存時に暗号化され、不透明な参照として格納され、読み取り時にマスクされる。フェイルクローズ——プロバイダー未設定では、書き込みは平文を永続化せずにスローする
markdownmarkdown 本文Console プレビューでレンダリング
htmlサニタイズ済み HTML書き込み時に DOMPurify を適用
richtextWYSIWYGConsole エディタ + シリアライズされた JSON

数値

用途主なオプション
number浮動小数点min, max, precision, scale
currency金額currencyConfig: { precision, currencyMode: 'fixed' | 'dynamic', defaultCurrency }
percent0〜100 %min, max, scale

integerdecimal は別の型ではありません。整数には scale: 0 を指定した number、 固定小数には precision+scale を指定した number を使用してください。

日付 / 時刻

格納するもの備考
dateカレンダー日付タイムゾーンなし
datetime瞬間UTC
time壁時計の時刻日付なし

ロジック

備考
booleanチェックボックス
toggleboolean と同じ。スイッチ UI

選択

備考
select単一選択 — オプションをインラインで宣言するか、picklist から参照
multiselect複数選択。配列として格納
radioラジオ表示の select の UI エイリアス
checkboxesチェックボックス表示の multiselect の UI エイリアス

オプションの形:

options: [
  { value: 'low',    label: 'Low' },
  { value: 'high',   label: 'High',   color: '#e02' },
  { value: 'urgent', label: 'Urgent', color: '#c00' }
]

リレーション

多重度セマンティクス
lookup多対一緩い参照。親を削除してもデフォルトでは子は削除されない
master_detail多対一、カスケード親なしには子が存在できない。権限は親から継承される
tree自己参照階層構造(同じオブジェクト上の parent_id)

共通オプション:

{
  type: 'lookup',
  reference: 'account',                       // target object name
  referenceFilters: ['status:active'],        // narrow the lookup picker
  deleteBehavior: 'set_null'                  // 'set_null' | 'cascade' | 'restrict'
}

算出

機能主なオプション
formula導出値。読み取り時または再計算時に評価されるexpression: F\record.qty * record.unit_price`` — CEL を参照
summary子リレーションのロールアップsummaryOperations: { object, field, function }count | sum | avg | min | max
autonumber自動採番される表示番号format(例: TKT-{0000})、startAt

Formula の例:

{
  name: 'profit_margin',
  type: 'formula',
  expression: F`(record.revenue - record.cost) / record.revenue * 100`
}

メディア

用途主なオプション
image画像添付fileAttachmentConfig(下記参照)
file任意のファイル同上
avatarプロフィール画像正方形クロップ、適切なデフォルト
video動画アップロード再生時間 + サムネイルキャプチャ
audio音声波形プレビュー
fileAttachmentConfig: {
  maxSize: 10_000_000,                        // bytes
  allowedTypes: ['image/png','image/jpeg'],
  virusScan: true,
  storageProvider: 's3',                       // see Configure → Storage
  imageValidation: { minWidth: 200, maxWidth: 4096, generateThumbnails: ['sm','md','lg'] }
}

構造化

格納するもの備考
json任意の JSONPostgres では JSONB として格納
composite名前付きフィールドを持つサブレコードインライン構造体。別テーブルではない
repeatercomposite 値の配列子オブジェクトなしの一対多

拡張 UI

備考
location緯度/経度 + 精度
address番地 / 市区町村 / 地域 / 郵便番号 / 国
codeソースコードフィールド — language, theme, lineNumbers
colorcolorFormat: 'hex' | 'rgb' | 'rgba' | 'hsl', presetColors[]
rating1〜N 個の星 — max, icon
sliderスライダー UI を持つ範囲付き数値
signature手書き署名。画像として格納
qrcode値を QR またはバーコード(EAN / UPC / Code128)としてレンダリング
progress導出されたパーセントをバーとして表示
tagsオートコンプリート付きの自由形式タグ配列
vector埋め込みカラム — vectorConfig: { dimensions, distanceMetric: 'cosine' | 'euclidean', indexed, indexType: 'hnsw' | 'ivfflat' }

システムフィールド(すべてのオブジェクトに自動注入)

フィールド備考
idtext (ULID)主キー
created_atdatetimeUTC の挿入時刻
updated_atdatetimeUTC の最終書き込み時刻
created_bylookup → user挿入したユーザー
updated_bylookup → user最後に書き込んだユーザー
versioninteger楽観的並行性トークン

これらは宣言しません — オブジェクトごとに ObjectSpec.systemFields: false でオプトアウトできます(推奨されることはほとんどありません)。

フィールドがスタックを流れる仕組み

*.object.ts (field spec)

   ├─► Postgres / MySQL / SQLite column + index + constraint
   ├─► REST: validated on POST/PATCH, exposed on GET
   ├─► Console: form widget + list column
   ├─► AI Builder: tool argument schema (so the AI knows what to ask)
   └─► Audit: change-tracked if `trackHistory: true`

関連項目

On this page