import type * as Pinnacle from "../index.mjs"; /** * A hosted form definition. */ export interface Form { /** Form id (starts with `form_`). */ id: string; /** Public shareable URL of the form (`https://forms.pinnacle.sh/{form_id}`). */ url: string; /** Human-readable name for the form. Rendered as the form's title. */ name: string | null; /** Longer description rendered below the title. */ description: string | null; /** Ordered list of fields the recipient fills out. */ fields: Pinnacle.FormField[]; /** When true, the recipient can reopen the submission URL and edit their answers. When false, the URL becomes read-only after the first submit. */ can_update: boolean; /** After this timestamp the form stops accepting submissions. Null means no expiration. */ expires_at: string | null; /** Per-form theme tweaks layered on top of your team's default theme. Null means the team defaults are used as-is. */ theme_override: Pinnacle.FormThemeOverride | null; /** Count of distinct completed submissions for this form. Does not increment on edits to an existing `can_update=true` submission. */ submission_count: number; /** Timestamp of the most recent submission event. Updated on each new submit and on each edit of a `can_update=true` submission. */ last_submitted_at: string | null; /** When set, the form is archived (soft-deleted) and cannot accept new submissions or be updated. Restore by PATCHing `archived_at` back to null. */ archived_at: string | null; /** ISO 8601 timestamp of when the form was created. */ created_at: string; /** ISO 8601 timestamp of the most recent form mutation. */ updated_at: string; }