Record data model

Updated:

View field support, webhooks, and list parameters for each integration on the Supported Integrations page.

FieldTypeRequiredDescription
idstringNo
created_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
updated_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
database_idstringNosource Database ID
table_idstringNosource Database Table ID
fieldsobjectYesThe record's values, keyed by the table's field (column) names; each value is a typed value object (e.g. { "string": "Acme" } or { "number": 3 })
fields.stringstringNo
fields.numbernumberNo
fields.booleanbooleanNo
fields.datestringNo
fields.selectionstring[]No
fields.is_nullbooleanNo
row_numbernumberNo
metadataDatastoreMetadata[]No
metadata[].idstringNoThe ID of the custom field definition (from the metadata/metadata endpoint).
metadata[].slugstringNoThe integration's API name (key) of an existing custom field. List valid slugs for this object with the metadata/metadata endpoint; unknown slugs are rejected by the integration.
metadata[].valueobjectNoThe field's value, typed by `format`: DATE as ISO-8601 (`YYYY-MM-DD`, or `YYYY-MM-DDTHH:MM:SSZ` for date-times); NUMBER, PRICE and CURRENCY as a number; BOOLEAN and YES_NO as true/false; MULTIPLE_SELECT as an array of option values; otherwise a string.
metadata[].namespacestringNo
metadata[].formatenumNoThe data type of the custom field, which determines how `value` is formatted. Values: TEXT, NUMBER, DATE, BOOLEAN, FILE, TEXTAREA, SINGLE_SELECT, MULTIPLE_SELECT, MEASUREMENT, PRICE, YES_NO, CURRENCY, URL
metadata[].extra_dataobjectNo

TypeScript

TypeScript
export type DatastoreRecord = {
	id?: string;
	created_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	updated_at?: string-time; // (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
	database_id?: string; // source Database ID
	table_id?: string; // source Database Table ID
	fields: Record <string, { 
		string?: string;
		number?: number;
		boolean?: boolean;
		date?: string;
		selection?: any;
		is_null?: boolean; 
	}> ; // The record's values, keyed by the table's field (column) names; each value is a typed value object (e.g. { "string": "Acme" } or { "number": 3 })
	row_number?: number;
	metadata?: [];
	raw?: any;
} 

Zod

Zod
import { z } from 'zod';

export const ZodDatastoreRecord = z.object({
	id: z.string().optional(),
	created_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	updated_at: z.string-time().optional().describe("(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"),
	database_id: z.string().optional().describe("source Database ID"),
	table_id: z.string().optional().describe("source Database Table ID"),
	fields: z.record(z.string(), z.object({ 
			string: z.string().optional(),
			number: z.number().optional(),
			boolean: z.boolean().optional(),
			date: z.string().optional(),
			selection: z.unknown().optional(),
			is_null: z.boolean().optional()
})).describe("The record's values, keyed by the table's field (column) names; each value is a typed value object (e.g. { "string": "Acme" } or { "number": 3 })"),
	row_number: z.number().optional(),
	metadata: z.array().optional(),

});

Python

Python
import dataclasses

@dataclasses.dataclass
class DatastoreRecord:
	id: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	created_at: Optional[str]
	"""(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)"""
	updated_at: Optional[str]
	"""source Database ID"""
	database_id: Optional[str]
	"""source Database Table ID"""
	table_id: Optional[str]
	"""The record's values, keyed by the table's field (column) names; each value is a typed value object (e.g. { "string": "Acme" } or { "number": 3 })"""
	fields: PropertyDatastoreRecordFields
	row_number: Optional[int]
	metadata: Optional[PropertyDatastoreRecordMetadata]
Are we missing anything? Let us know
Was this page helpful?