Schematy
Nazwane kształty, do których odsyłają pola REST API: każda encja i model, udokumentowane raz zamiast powtarzane przy każdym użyciu.
AccountDataExport
Everything Mercastra stores about the account and the workshops it belongs to, for portability. Workshops the account is only a member of (not the owner) are included in the same list as owned ones.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| user | AccountDataExportUser | Tak | - | The account record as stored, minus authentication method secrets. |
| workshops | array of AccountDataExportWorkshopEntry | Tak | - | - |
| feedback | array of AccountDataExportFeedback | Tak | - | - |
| authProviders | array of AccountDataExportAuthProvider | Tak | - | - |
AccountDataExportAuthProvider
A linked OAuth provider identity, as stored.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| provider | string | Tak | const: "google" | - |
| subject | string | Tak | - | - |
| linkedAt | string | Tak | format: "date-time" | - |
AccountDataExportEstimate
An estimate belonging to the workshop, with its saved revisions. Its PDF exports and hand-offs are not included (tracked in MR-44).
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| workshopId | string | Tak | - | - |
| name | string | Tak | - | - |
| recipientName | string | Nie | - | - |
| createdAt | string | Tak | format: "date-time" | - |
| updatedAt | string | Tak | format: "date-time" | - |
| markupPercent | number | Tak | - | - |
| discountPercent | number | Tak | - | - |
| lineItems | array of AccountDataExportLineItem | Tak | - | - |
| revisions | array of AccountDataExportEstimateRevision | Tak | - | - |
AccountDataExportEstimateRevision
A saved revision of an estimate, as stored.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| revisionNumber | number | Tak | - | - |
| createdAt | string | Tak | format: "date-time" | - |
| createdByUid | string | Tak | - | - |
| name | string | Tak | - | - |
| markupPercent | number | Tak | - | - |
| discountPercent | number | Tak | - | - |
| lineItems | array of AccountDataExportLineItem | Tak | - | - |
AccountDataExportFeedback
One feedback or support message the account submitted.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| kind | FeedbackKind | Tak | - | Whether the message is general feedback or a support request. |
| title | string | Tak | - | - |
| message | string | Tak | - | - |
| string | Tak | format: "email" | - | |
| locale | UserLocale | Tak | - | The account's UI language preference. |
| path | string | Nie | - | - |
| userAgent | string | Nie | - | - |
| createdAt | string | Tak | format: "date-time" | - |
AccountDataExportGrid
A grid belonging to the workshop, as stored.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| workshopId | string | Tak | - | - |
| name | string | Tak | - | - |
| iconSize | string | Tak | enum"small""medium""large" | - |
| createdAt | string | Tak | format: "date-time" | - |
| updatedAt | string | Tak | format: "date-time" | - |
| buttons | array of AccountDataExportGridButton | Tak | - | - |
AccountDataExportGridButton
One button on a grid, as stored.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| emoji | string | Tak | - | - |
| label | string | Tak | - | - |
| unit | string | Tak | enum"sqm""linear_m""piece""pair""hour""job""freeform" | - |
| unitPrice | number | Tak | - | - |
| backgroundColor | string | Nie | - | - |
| iconFileId | string | Nie | - | - |
AccountDataExportLineItem
One line item on an estimate or one of its revisions, as stored.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| label | string | Tak | - | - |
| unit | string | Tak | enum"sqm""linear_m""piece""pair""hour""job""freeform" | - |
| unitPrice | number | Tak | - | - |
| quantity | number | Tak | - | - |
| sourceButtonId | string | Nie | - | - |
AccountDataExportOrder
An order belonging to the workshop, as stored.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| workshopId | string | Tak | - | - |
| title | string | Tak | - | - |
| customerName | string | Tak | - | - |
| notes | string | Tak | - | - |
| status | OrderStatus | Tak | - | An order's stage, always one of these three values in this order: todo, in_progress, done. |
| createdAt | string | Tak | format: "date-time" | - |
| lastActivityAt | string | Tak | format: "date-time" | - |
| statusHistory | array of OrderStatusHistoryEntry | Tak | - | - |
AccountDataExportUser
The account record as stored, minus authentication method secrets.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| uid | string | Tak | - | - |
| string | Tak | format: "email" | - | |
| name | string | Tak | - | - |
| status | string | Tak | enum"pending""active""suspended""deleted" | - |
| emailVerifiedAt | string | null | Tak | - | - |
| termsVersion | string | Nie | - | - |
| termsAcceptedAt | string | Nie | format: "date-time" | - |
| lastLoginAt | string | Nie | format: "date-time" | - |
| locale | UserLocale | Nie | - | The account's UI language preference. |
AccountDataExportWorkshop
A workshop the account owns or belongs to, as stored: unlike the public Workshop resource this includes the raw billing ids and the AI rate-limit attempt timestamps, since this endpoint exports the record as kept, not the trimmed member-facing view.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| name | string | Tak | - | - |
| tagline | string | Tak | - | - |
| logo | string | Tak | - | - |
| crafterName | string | Tak | - | - |
| crafterAvatarSeed | string | Tak | - | - |
| background | Background | Tak | - | A preset background id for the workshop's poster. The id → CSS mapping is owned by the frontend. |
| customBackground | WorkshopCustomBackground | Nie | - | A freeform solid or gradient background overriding the preset `background` id, or null for no override. |
| titleFont | TitleFont | Tak | - | A preset title font id for the workshop's poster. The id → font mapping is owned by the frontend. |
| accentColor | HexColor | null | Nie | - | - |
| plan | WorkshopPlan | Nie | - | The workshop's resolved plan; an expired time-boxed Pro reads back as free. |
| planExpiresAt | string | null | Nie | - | - |
| planSource | WorkshopPlanSource | null | Nie | - | - |
| billingCustomerId | string | Nie | - | - |
| billingSubscriptionId | string | null | Nie | - | - |
| billingCancelAtPeriodEnd | boolean | Nie | - | - |
| context | WorkshopContext | Nie | - | The workshop's context notes as stored: free text describing the workshop and the moment the server last saved them. |
| contextDerived | WorkshopContextDerived | Nie | - | The AI-synthesized summary and suggested intents distilled from the workshop's context notes. |
| contextSynthesisAttempts | array of string | Nie | - | - |
| messageDraftAttempts | array of string | Nie | - | - |
| isDefault | boolean | Tak | - | - |
| createdAt | string | Tak | format: "date-time" | - |
AccountDataExportWorkshopEntry
One owned or joined workshop and everything in it.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| workshop | AccountDataExportWorkshop | Tak | - | A workshop the account owns or belongs to, as stored: unlike the public Workshop resource this includes the raw billing ids and the AI rate-limit attempt timestamps, since this endpoint exports the record as kept, not the trimmed member-facing view. |
| grids | array of AccountDataExportGrid | Tak | - | - |
| estimates | array of AccountDataExportEstimate | Tak | - | - |
| orders | array of AccountDataExportOrder | Tak | - | - |
AuthenticatedUser
The signed-in account, as returned by the endpoint that grants the session.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| uid | string | Tak | - | - |
| string | Tak | format: "email" | - | |
| name | string | Tak | - | - |
| locale | UserLocale | Tak | - | The account's UI language preference. |
AuthenticateResponse
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| user | AuthenticatedUser | Tak | - | The signed-in account, as returned by the endpoint that grants the session. |
Background
A preset background id for the workshop's poster. The id → CSS mapping is owned by the frontend.
string"paper""linen""sage""mist""blush""indigo""forest""plum""terracotta""charcoal""astral""ember""meadow""dusk""tide""orchid""copper""aurora""dawn""cloud"DocumentLocale
The language a generated estimate PDF or hand-off message is written in: pl (Polish) or en (English).
string"pl""en"Emoji
One emoji from Mercastra's curated icon set (see EMOJI_CATEGORIES).
stringminLength: 1Estimate
An estimate as returned to a member. Confirming it (see the confirm endpoint) snapshots this content into a new revision; nothing about the estimate itself records whether it has ever been confirmed.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| workshopId | string | Tak | - | - |
| name | string | Tak | - | - |
| recipientName | string | Nie | - | Absent when the estimate has no named recipient |
| createdAt | string | Tak | format: "date-time" | - |
| updatedAt | string | Tak | format: "date-time" | - |
| markupPercent | number | Tak | - | - |
| discountPercent | number | Tak | - | - |
| lineItems | array of LineItem | Tak | - | - |
EstimateConfirmation
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| estimate | Estimate | Tak | - | An estimate as returned to a member. Confirming it (see the confirm endpoint) snapshots this content into a new revision; nothing about the estimate itself records whether it has ever been confirmed. |
| revision | EstimateRevision | Tak | - | A snapshot of an estimate's content at the moment it was confirmed, numbered from 1. |
EstimateRevision
A snapshot of an estimate's content at the moment it was confirmed, numbered from 1.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| revisionNumber | number | Tak | - | - |
| createdAt | string | Tak | format: "date-time" | - |
| createdByUid | string | Tak | - | - |
| name | string | Tak | - | - |
| markupPercent | number | Tak | - | - |
| discountPercent | number | Tak | - | - |
| lineItems | array of LineItem | Tak | - | - |
EstimateRevisionsList
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| revisions | array of EstimateRevision | Tak | - | - |
EstimatesList
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| estimates | array of Estimate | Tak | - | - |
FeedbackKind
Whether the message is general feedback or a support request.
string"feedback""support"FileCategory
What a file is used for. Decides the accepted content types and any per-file size cap: grid_tile_icon (an image attached to a grid button, up to 512 KB) or estimate_pdf (a generated estimate PDF, no per-file cap).
string"grid_tile_icon""estimate_pdf"FileRecord
A stored file's metadata. Omits the internal GCS storage path; download the bytes through GET /files/{fileId}.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| scope | FileScope | Tak | - | The kind of resource a file is authorized against: workshop or estimate. Both categories accepted by POST /files resolve to workshop; estimate-scoped files are created by other endpoints, not this one. |
| scopeId | string | Tak | - | - |
| category | FileCategory | Tak | - | What a file is used for. Decides the accepted content types and any per-file size cap: grid_tile_icon (an image attached to a grid button, up to 512 KB) or estimate_pdf (a generated estimate PDF, no per-file cap). |
| name | string | Nie | - | - |
| contentType | string | Tak | - | - |
| sizeBytes | integer | Tak | minimum: -9007199254740991maximum: 9007199254740991 | - |
| uploadedByUid | string | Tak | - | - |
| createdAt | string | Tak | format: "date-time" | - |
| estimateId | string | Nie | - | Set only for files created against an estimate scope. |
FileScope
The kind of resource a file is authorized against: workshop or estimate. Both categories accepted by POST /files resolve to workshop; estimate-scoped files are created by other endpoints, not this one.
string"estimate""workshop"FilesList
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| files | array of FileRecord | Tak | - | - |
Grid
A grid as returned to a member: a named board of priceable buttons, capped at 10 per workshop.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| workshopId | string | Tak | - | - |
| name | string | Tak | - | - |
| iconSize | GridIconSize | Tak | - | A grid's icon size, one of these three values. |
| createdAt | string | Tak | format: "date-time" | - |
| updatedAt | string | Tak | format: "date-time" | - |
| buttons | array of GridButton | Tak | - | - |
GridButton
One priceable button on a grid. unit and unitPrice become the sourceButtonId'd line item's defaults when added to an estimate.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| emoji | Emoji | Tak | - | One emoji from Mercastra's curated icon set (see EMOJI_CATEGORIES). |
| label | string | Tak | - | - |
| unit | LineItemUnit | Tak | - | A line item's unit of measure, one of these seven values. |
| unitPrice | number | Tak | - | - |
| backgroundColor | HexColor | Nie | - | Absent when the button has no background override |
| iconFileId | string | Nie | - | Id of a file uploaded through POST /files with category grid_tile_icon. Absent when the button has no icon. |
GridIconInUse
The ids of every grid in the workshop with a button still referencing this icon.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| gridIds | array of string | Tak | - | - |
GridIconSize
A grid's icon size, one of these three values.
string"small""medium""large"GridsList
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| grids | array of Grid | Tak | - | - |
GridTemplate
A named starting set of catalog items for one domain, ready to turn into a grid's buttons.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| slug | string | Tak | - | - |
| domainSlug | string | Tak | - | References a PredefinedItemDomain's slug, by string match, not enforced |
| name | LocalizedText | Tak | - | The same text in English and Polish. |
| description | LocalizedText | Tak | - | The same text in English and Polish. |
| itemIds | array of string | Tak | - | References PredefinedGridItem ids, by string match, not enforced |
Handoff
A record that an estimate was handed off to its recipient somehow - not the message or PDF itself, just that it happened, when, how and in what tone.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| kind | HandoffKind | Tak | - | How a crafter delivered an estimate to its recipient, one of these five values: message-copied, message-shared, pdf-shared, pdf-and-message-shared or email-opened. Caller-supplied and not verified against anything that actually happened, see the hand-off endpoint's own description. |
| locale | DocumentLocale | Tak | - | The language a generated estimate PDF or hand-off message is written in: pl (Polish) or en (English). |
| preliminary | boolean | Tak | - | - |
| tone | MessageTone | Tak | - | The tone of a hand-off message, formal or friendly. Recorded on every hand-off regardless of aiDrafted, not just ones whose text came from the AI draft endpoint. |
| aiDrafted | boolean | Tak | - | Whether the delivered message text came from POST .../message-draft rather than being hand-written. |
| revisionNumber | number | Tak | - | The estimate's latest revision number at the time of hand-off. |
| createdAt | string | Tak | format: "date-time" | - |
| createdByUid | string | Tak | - | - |
| pdfExportId | string | Nie | - | The pdf export this hand-off refers to, when one was involved. Absent otherwise. |
HandoffKind
How a crafter delivered an estimate to its recipient, one of these five values: message-copied, message-shared, pdf-shared, pdf-and-message-shared or email-opened. Caller-supplied and not verified against anything that actually happened, see the hand-off endpoint's own description.
string"message-copied""message-shared""pdf-shared""pdf-and-message-shared""email-opened"HandoffsList
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| handoffs | array of Handoff | Tak | - | - |
HexColor
A #RRGGBB hex color.
stringpattern: "^#[0-9A-Fa-f]{6}quot;LineItem
One priced line on an estimate.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| label | string | Tak | - | - |
| unit | LineItemUnit | Tak | - | A line item's unit of measure, one of these seven values. |
| unitPrice | number | Tak | - | - |
| quantity | number | Tak | - | - |
| sourceButtonId | string | Nie | - | The grid button this line item was added from, when it was. Not validated on write. |
LineItemUnit
A line item's unit of measure, one of these seven values.
string"sqm""linear_m""piece""pair""hour""job""freeform"LocalizedText
The same text in English and Polish.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| en | string | Tak | - | - |
| pl | string | Tak | - | - |
MeProfile
The signed-in account's own profile.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| name | string | Tak | - | - |
| string | Tak | format: "email" | - | |
| locale | UserLocale | Tak | - | The account's UI language preference. |
| signInMethods | array of SignInMethod | Tak | - | - |
MessageTone
The tone of a hand-off message, formal or friendly. Recorded on every hand-off regardless of aiDrafted, not just ones whose text came from the AI draft endpoint.
string"formal""friendly"MostUsedLineItemsList
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| lineItems | array of object | Tak | - | - |
| lineItems[].label | string | Tak | - | - |
| lineItems[].unit | LineItemUnit | Tak | - | A line item's unit of measure, one of these seven values. |
| lineItems[].unitPrice | number | Tak | - | - |
| lineItems[].count | number | Tak | - | How many of the workshop's estimates use a line item with this label and unit |
| lineItems[].lastUsedAt | string | Tak | format: "date-time" | The updatedAt of the most recent estimate that uses it |
Order
An order as returned to a member: title, customer name and notes are edited in place through this same shape, status changes are recorded in statusHistory.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| workshopId | string | Tak | - | - |
| title | string | Tak | - | - |
| customerName | string | Tak | - | Blank when the order has no named customer |
| notes | string | Tak | - | - |
| status | OrderStatus | Tak | - | An order's stage, always one of these three values in this order: todo, in_progress, done. |
| createdAt | string | Tak | format: "date-time" | - |
| lastActivityAt | string | Tak | format: "date-time" | - |
| statusHistory | array of OrderStatusHistoryEntry | Tak | - | - |
OrdersList
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| orders | array of Order | Tak | - | - |
OrderStatus
An order's stage, always one of these three values in this order: todo, in_progress, done.
string"todo""in_progress""done"OrderStatusHistoryEntry
One entry in an order's status history: the status it moved to and when.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| status | OrderStatus | Tak | - | An order's stage, always one of these three values in this order: todo, in_progress, done. |
| at | string | Tak | format: "date-time" | - |
PdfExport
Metadata for one generated estimate PDF; this shape never carries the file's bytes, download them with GET /estimates/{estimateId}/pdf-exports/{pdfExportId}.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| revisionNumber | number | Tak | - | The estimate's latest revision number at the time of export. |
| toggles | PdfExportOptions | Tak | - | The visual toggles for a generated estimate PDF, each defaulting server-side when omitted. |
| generatedAt | string | Tak | format: "date-time" | - |
| createdByUid | string | Tak | - | - |
| locale | DocumentLocale | Nie | - | Absent only on a pdf export generated before locale was tracked. |
| preliminary | boolean | Nie | - | Absent only on a pdf export generated before preliminary was tracked. |
PdfExportOptions
The visual toggles for a generated estimate PDF, each defaulting server-side when omitted.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| breakdown | boolean | Tak | default: true | Include the itemized line-item breakdown table. |
| showMarkup | boolean | Tak | default: false | Show the markup percentage and amount. |
| showDiscount | boolean | Tak | default: false | Show the discount percentage and amount. |
| showRecipient | boolean | Tak | default: true | Show the recipient's name. |
| showBrandMark | boolean | Tak | default: true | Show Mercastra's brand mark. A workshop whose plan cannot disable it (see entitlements) has this forced back to true server-side regardless of what is sent. |
PdfExportsList
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| pdfExports | array of PdfExport | Tak | - | - |
PredefinedGridItem
One reference item a grid button can be built from: a label, a default unit and free-text tags.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| emoji | Emoji | Tak | - | One emoji from Mercastra's curated icon set (see EMOJI_CATEGORIES). |
| label | LocalizedText | Tak | - | The same text in English and Polish. |
| unit | LineItemUnit | Tak | - | A line item's unit of measure, one of these seven values. |
| tags | array of string | Tak | - | - |
PredefinedItemDomain
One craft domain grouping catalog items and templates, for example woodworking-and-carpentry.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| slug | string | Tak | - | - |
| label | LocalizedText | Tak | - | The same text in English and Polish. |
PredefinedItemsCatalog
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| items | array of PredefinedGridItem | Tak | - | - |
| domains | array of PredefinedItemDomain | Tak | - | - |
| templates | array of GridTemplate | Tak | - | - |
SignInMethod
A way the account can authenticate: a password, or a linked OAuth provider.
string"password""google"TitleFont
A preset title font id for the workshop's poster. The id → font mapping is owned by the frontend.
string"sans""serif""didone""mono""rounded"UserLocale
The account's UI language preference.
string"en""pl"Workshop
A workshop as returned to a member: billing ids and AI rate-limit attempt lists are stripped, the plan is already resolved for expiry.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| name | string | Tak | - | - |
| tagline | string | Tak | - | - |
| logo | string | Tak | - | One emoji from the curated icon set |
| crafterName | string | Tak | - | - |
| crafterAvatarSeed | string | Tak | - | - |
| background | Background | Tak | - | A preset background id for the workshop's poster. The id → CSS mapping is owned by the frontend. |
| customBackground | WorkshopCustomBackground | Nie | - | A freeform solid or gradient background overriding the preset `background` id, or null for no override. |
| titleFont | TitleFont | Tak | - | A preset title font id for the workshop's poster. The id → font mapping is owned by the frontend. |
| accentColor | HexColor | null | Nie | - | - |
| plan | WorkshopPlan | Tak | - | The workshop's resolved plan; an expired time-boxed Pro reads back as free. |
| planExpiresAt | string | null | Nie | - | Set while `plan` is a time-boxed Pro (a trial or a paid subscription's current period); null on a permanent plan |
| planSource | WorkshopPlanSource | null | Nie | - | - |
| context | WorkshopContext | Nie | - | The workshop's context notes as stored: free text describing the workshop and the moment the server last saved them. |
| contextDerived | WorkshopContextDerived | Nie | - | The AI-synthesized summary and suggested intents distilled from the workshop's context notes. |
| isDefault | boolean | Tak | - | - |
| members | array of WorkshopMember | Tak | - | - |
| createdAt | string | Tak | format: "date-time" | - |
WorkshopBilling
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| hasAccount | boolean | Tak | - | True once a payment-provider customer exists for the workshop |
| planSource | WorkshopPlanSource | null | Tak | - | - |
| cancelAtPeriodEnd | boolean | Tak | - | True only for a subscription the customer already canceled at the provider |
| checkoutAvailability | string | Tak | enum"available""pro_purchase_disabled""payments_not_configured" | - |
WorkshopContext
The workshop's context notes as stored: free text describing the workshop and the moment the server last saved them.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| notes | string | Tak | - | - |
| updatedAt | string | Tak | format: "date-time" | - |
WorkshopContextDerived
The AI-synthesized summary and suggested intents distilled from the workshop's context notes.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| summary | LocalizedText | Tak | - | At most 400 characters per language |
| suggestedIntents | object | Tak | additionalProperties: false | 3 to 5 entries per language, at most 80 characters each |
| suggestedIntents.en | array of string | Tak | - | - |
| suggestedIntents.pl | array of string | Tak | - | - |
| sourceUpdatedAt | string | Tak | format: "date-time" | The `context.updatedAt` this was derived from |
| generatedAt | string | Tak | format: "date-time" | - |
WorkshopCustomBackground
A freeform solid or gradient background overriding the preset `background` id, or null for no override.
object | object | nullWorkshopEntitlementsUsage
The workshop's plan entitlements and current quota usage, derived from stored state only.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| plan | WorkshopPlan | Tak | - | The workshop's resolved plan; an expired time-boxed Pro reads back as free. |
| planExpiresAt | string | null | Tak | - | - |
| brandMark | object | Tak | additionalProperties: false | - |
| brandMark.canDisable | boolean | Tak | - | - |
| fileStorage | object | Tak | additionalProperties: false | - |
| fileStorage.usedBytes | number | Tak | - | - |
| fileStorage.limitBytes | number | Tak | - | - |
| revisions | object | Tak | additionalProperties: false | null means unlimited (Pro); the value is per estimate, it carries no usage counter |
| revisions.limitPerEstimate | number | null | Tak | - | - |
| billing | WorkshopBilling | Tak | - | - |
WorkshopMember
A workshop member, resolved from its membership record.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | The member's user id |
| name | string | Tak | - | - |
| avatarSeed | string | Tak | - | - |
| role | string | Tak | enum"owner""member" | - |
WorkshopPlan
The workshop's resolved plan; an expired time-boxed Pro reads back as free.
string"free""pro"WorkshopPlanSource
What granted the current Pro plan: a founder CLI grant, the mocked self-serve trial, or a paid subscription.
string"grant""trial""subscription"WorkshopsList
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| workshops | array of Workshop | Tak | - | - |