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 | - | - |
| apiTokens | array of ApiToken | Tak | - | Every API key of the account, live, expired or revoked, as the API keys list shows it: names, the workshop, scopes and dates, never a secret. |
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.
| 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""kg""g""l""ml" | - |
| 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""kg""g""l""ml" | - |
| 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 Workshop resource this includes the payment provider identifiers and the timestamps of recent AI-assisted actions, since this endpoint exports the record as kept, not the view returned to members.
| 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 application maps each id to its styling. |
| 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 application maps each id to its font. |
| 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 Workshop resource this includes the payment provider identifiers and the timestamps of recent AI-assisted actions, since this endpoint exports the record as kept, not the view returned to members. |
| grids | array of AccountDataExportGrid | Tak | - | - |
| estimates | array of AccountDataExportEstimate | Tak | - | - |
| orders | array of AccountDataExportOrder | Tak | - | - |
ApiToken
An API key as the API returns it. The secret is never part of this shape; the full key is returned once, by the create endpoint.
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| id | string | Tak | - | - |
| publicId | string | Tak | - | The middle segment of the key, `mcr_<publicId>_<secret>`: what a list shows and what a request is looked up by. |
| name | string | Tak | - | - |
| workshopId | string | Tak | - | The one workshop the key acts in, fixed at creation. |
| scopes | array of ApiTokenScope | Tak | - | Already expanded: a write scope is always listed together with its read scope. |
| createdAt | string | Tak | format: "date-time" | - |
| expiresAt | string | Tak | format: "date-time" | - |
| lastUsedAt | string | null | Tak | - | Written at most once a minute per key; null until the key is first used. |
| revokedAt | string | null | Tak | - | Set the moment the key is revoked; null while it is live. |
| source | ApiTokenSource | Tak | - | `personal` for a key created on the API keys page. `oauth` is reserved and never returned today. |
ApiTokenScope
One permission an API key holds. A write scope implies the matching read scope, and a stored key always lists both.
string"estimates:read""estimates:write""orders:read""orders:write"ApiTokenSource
`personal` for a key created on the API keys page. `oauth` is reserved and never returned today.
string"personal""oauth"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 application maps each id to its styling.
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. 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. `kg` and `g` count weight, `l` and `ml` count volume, `freeform` is a unit the crafter describes in the label. |
| 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 was drafted by AI 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}$"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. `kg` and `g` count weight, `l` and `ml` count volume, `freeform` is a unit the crafter describes in the label. |
| 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. `kg` and `g` count weight, `l` and `ml` count volume, `freeform` is a unit the crafter describes in the label.
string"sqm""linear_m""piece""pair""hour""job""freeform""kg""g""l""ml"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. `kg` and `g` count weight, `l` and `ml` count volume, `freeform` is a unit the crafter describes in the label. |
| 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. `kg` and `g` count weight, `l` and `ml` count volume, `freeform` is a unit the crafter describes in the label. |
| 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 application maps each id to its font.
string"sans""serif""didone""mono""rounded"UserLocale
The account's UI language preference.
string"en""pl"Workshop
A workshop as returned to a member, with the plan 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 application maps each id to its styling. |
| 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 application maps each id to its font. |
| 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 grant made by Mercastra, the retired self-serve trial (old data only, nothing creates one any more), or a paid subscription.
string"grant""trial""subscription"WorkshopsList
| Pole | Typ | Wymagane | Ograniczenia | Opis |
|---|---|---|---|---|
| workshops | array of Workshop | Tak | - | - |