picked 0.0.101 → 0.0.102-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/docs/reference/dashboard/workflow-test-runs.md +40 -17
  2. package/docs/reference/management-api/schema/action.md +67 -79
  3. package/docs/reference/management-api/schema/analytics-session.md +77 -94
  4. package/docs/reference/management-api/schema/analytics.md +16 -14
  5. package/docs/reference/management-api/schema/api-key.md +43 -51
  6. package/docs/reference/management-api/schema/auth.md +271 -404
  7. package/docs/reference/management-api/schema/cms-fields.md +348 -245
  8. package/docs/reference/management-api/schema/cms-models.md +369 -378
  9. package/docs/reference/management-api/schema/common.md +69 -130
  10. package/docs/reference/management-api/schema/condition.md +63 -74
  11. package/docs/reference/management-api/schema/design-system.md +59 -51
  12. package/docs/reference/management-api/schema/experience.md +388 -364
  13. package/docs/reference/management-api/schema/external-api.md +153 -171
  14. package/docs/reference/management-api/schema/feature.md +85 -103
  15. package/docs/reference/management-api/schema/feedback.md +27 -31
  16. package/docs/reference/management-api/schema/field.md +117 -135
  17. package/docs/reference/management-api/schema/index.md +184 -184
  18. package/docs/reference/management-api/schema/integration.md +72 -78
  19. package/docs/reference/management-api/schema/label.md +81 -137
  20. package/docs/reference/management-api/schema/lead.md +80 -119
  21. package/docs/reference/management-api/schema/mcp-server.md +73 -71
  22. package/docs/reference/management-api/schema/metric.md +6 -9
  23. package/docs/reference/management-api/schema/operation.md +17 -26
  24. package/docs/reference/management-api/schema/organization.md +198 -220
  25. package/docs/reference/management-api/schema/project.md +177 -186
  26. package/docs/reference/management-api/schema/report.md +69 -65
  27. package/docs/reference/management-api/schema/saved-view.md +71 -71
  28. package/docs/reference/management-api/schema/shopify.md +331 -204
  29. package/docs/reference/management-api/schema/step.md +72 -80
  30. package/docs/reference/management-api/schema/tenant-branding.md +48 -70
  31. package/docs/reference/management-api/schema/workbench.md +54 -66
  32. package/docs/reference/management-api/schema/workflow-run.md +66 -79
  33. package/docs/reference/management-api/schema/workflow.md +310 -353
  34. package/docs/reference/management-api/schema/workspace-version.md +212 -261
  35. package/docs/reference/management-api/schema/workspace.md +275 -328
  36. package/package.json +4 -4
@@ -6,13 +6,14 @@ generated: true
6
6
 
7
7
  # Step schema
8
8
 
9
- The operations and types that `step.graphql` adds to the Management API. See [Management API schema](/reference/management-api/schema) for every domain, the endpoint and authentication.
9
+ See [Management API schema](/reference/management-api/schema) for every domain, the endpoint and authentication.
10
10
 
11
11
  ## Queries
12
12
 
13
13
  ### `step`
14
14
 
15
- Get a step by ID within a workspace.
15
+ Reads a step.
16
+ Scope: `ORGANIZATION_WORKSPACE_READ`.
16
17
 
17
18
  ```graphql
18
19
  step(id: ID!, workspaceId: ID!): Step @auth
@@ -20,7 +21,9 @@ step(id: ID!, workspaceId: ID!): Step @auth
20
21
 
21
22
  ### `steps`
22
23
 
23
- Get list of steps within a workspace.
24
+ Lists the steps in a workspace. `search` matches a case-insensitive substring of the name;
25
+ `sortKey` and `reverse` set the order.
26
+ Scope: `ORGANIZATION_WORKSPACE_READ`.
24
27
 
25
28
  ```graphql
26
29
  steps(first: Int, after: String, last: Int, before: String, workspaceId: ID!, search: String, sortKey: StepSortKeys = NAME, reverse: Boolean = false): StepConnection! @auth
@@ -30,7 +33,8 @@ steps(first: Int, after: String, last: Int, before: String, workspaceId: ID!, se
30
33
 
31
34
  ### `stepCreate`
32
35
 
33
- Create a new step. Requires scope: `ORGANIZATION_PROJECTS_CREATE`.
36
+ Creates a step in a workspace.
37
+ Scope: `ORGANIZATION_WORKSPACE_UPDATE`.
34
38
 
35
39
  ```graphql
36
40
  stepCreate(input: StepCreateInput!): StepCreatePayload! @auth
@@ -38,7 +42,8 @@ stepCreate(input: StepCreateInput!): StepCreatePayload! @auth
38
42
 
39
43
  ### `stepUpdate`
40
44
 
41
- Update a step. Requires scope: `ORGANIZATION_PROJECTS_UPDATE`.
45
+ Updates a step.
46
+ Scope: `ORGANIZATION_WORKSPACE_UPDATE`.
42
47
 
43
48
  ```graphql
44
49
  stepUpdate(input: StepUpdateInput!): StepUpdatePayload! @auth
@@ -46,7 +51,9 @@ stepUpdate(input: StepUpdateInput!): StepUpdatePayload! @auth
46
51
 
47
52
  ### `stepDelete`
48
53
 
49
- Delete a step. Requires scope: `ORGANIZATION_PROJECTS_DELETE`.
54
+ Deletes a step. A step that an experience references is not deleted, and comes back as an
55
+ `IN_USE` user error.
56
+ Scope: `ORGANIZATION_WORKSPACE_UPDATE`.
50
57
 
51
58
  ```graphql
52
59
  stepDelete(input: StepDeleteInput!): StepDeletePayload! @auth
@@ -58,42 +65,34 @@ stepDelete(input: StepDeleteInput!): StepDeletePayload! @auth
58
65
 
59
66
  ```graphql
60
67
  """
61
- A step within a workspace. Rendered by the SDK as one screen of UI when
62
- the flow reaches a `StepNode` referencing this step.
63
-
64
- Carries a list of `Field`s (form inputs) and an optional `layoutName` or
65
- `layoutContentEntry` (the layout the SDK renders the fields into). The
66
- fields are workspace-level resources shared across steps; `Step.fields`
67
- returns this step's selection.
68
+ One screen that a visitor sees. It holds fields, and a flow shows it when it reaches a step node.
68
69
  """
69
70
  type Step {
70
- """Unique step identifier."""
71
+ """The ID of the step."""
71
72
  id: ID!
72
- """Display name of the step."""
73
+ """The name of the step."""
73
74
  name: String!
74
- """Stable, human-readable key for SDK consumers."""
75
+ """The stable identifier of the step, unique within its workspace."""
75
76
  key: String!
76
- """Optional description of the step."""
77
+ """A description of the step. Null when none is set."""
77
78
  description: String
78
79
  """
79
- Name of the layout the SDK should render this step with (free-form string, plug-in defined).
80
+ The layout name: the component that renders the step, such as `card` or `modal`. Null when none is set.
80
81
  """
81
82
  layoutName: String
82
83
  """
83
- Optional 1:1 reference to the CMS Content Entry that backs this step's layout. Mutually exclusive with `layoutName`.
84
+ The content entry that holds the step's layout content. Null when none is attached.
84
85
  """
85
86
  layoutContentEntry: ContentEntry
86
- """When this step was created."""
87
+ """When the step was created."""
87
88
  createdAt: DateTime!
88
- """When this step was last updated."""
89
+ """When the step last changed."""
89
90
  updatedAt: DateTime!
90
- """The workspace this step belongs to."""
91
+ """The workspace the step belongs to."""
91
92
  workspace: Workspace!
92
- """
93
- The workspace ID this step belongs to (denormalised for query convenience).
94
- """
93
+ """The ID of the workspace the step belongs to."""
95
94
  workspaceId: ID
96
- """Fields within this step."""
95
+ """The fields on the step, in order."""
97
96
  fields(first: Int, after: String, last: Int, before: String): FieldConnection!
98
97
  }
99
98
  ```
@@ -101,9 +100,9 @@ type Step {
101
100
  ### `StepEdge`
102
101
 
103
102
  ```graphql
104
- """Edge type for `StepConnection`."""
103
+ """A step in a page of results."""
105
104
  type StepEdge {
106
- """Pagination cursor for this edge."""
105
+ """The cursor of this edge."""
107
106
  cursor: String!
108
107
  """The step."""
109
108
  node: Step!
@@ -113,19 +112,15 @@ type StepEdge {
113
112
  ### `StepConnection`
114
113
 
115
114
  ```graphql
116
- """
117
- Relay-style connection of steps, with both an `edges` list and a flat `nodes` accessor.
118
- """
115
+ """A page of steps."""
119
116
  type StepConnection {
120
- """List of step edges."""
117
+ """The edges in this page."""
121
118
  edges: [StepEdge!]!
122
- """
123
- Flat list of steps, equivalent to `edges[].node`. Convenience accessor.
124
- """
119
+ """The steps in this page."""
125
120
  nodes: [Step!]!
126
- """Pagination metadata."""
121
+ """Where this page sits in the list."""
127
122
  pageInfo: PageInfo!
128
- """Total number of steps."""
123
+ """The number of steps across all pages, ignoring `search`."""
129
124
  totalCount: Int!
130
125
  }
131
126
  ```
@@ -133,21 +128,23 @@ type StepConnection {
133
128
  ### `StepCreateInput`
134
129
 
135
130
  ```graphql
136
- """Input for `stepCreate`."""
131
+ """The input of `stepCreate`."""
137
132
  input StepCreateInput {
138
- """Workspace ID to create the step in."""
133
+ """The ID of the workspace to create the step in."""
139
134
  workspaceId: ID!
140
- """Display name for the step."""
135
+ """The name of the step."""
141
136
  name: String!
142
- """Unique key identifier for the step."""
137
+ """
138
+ The stable identifier of the step, unique within the workspace. It cannot change later.
139
+ """
143
140
  key: String!
144
- """Optional description."""
141
+ """A description of the step."""
145
142
  description: String
146
- """Name of the layout the SDK should render this step with."""
147
- layoutName: String
148
143
  """
149
- IDs of workspace-level fields to associate with this step. Order is preserved.
144
+ The layout name: the component that renders the step, such as `card` or `modal`.
150
145
  """
146
+ layoutName: String
147
+ """The IDs of the fields to put on the step, in order."""
151
148
  fieldIds: [ID!]
152
149
  }
153
150
  ```
@@ -155,7 +152,7 @@ input StepCreateInput {
155
152
  ### `StepCreatePayload`
156
153
 
157
154
  ```graphql
158
- """Payload returned by `stepCreate`."""
155
+ """The result of `stepCreate`."""
159
156
  type StepCreatePayload {
160
157
  """The created step."""
161
158
  step: Step
@@ -165,24 +162,25 @@ type StepCreatePayload {
165
162
  ### `StepUpdateInput`
166
163
 
167
164
  ```graphql
168
- """Input for `stepUpdate`. Omit a field to leave it unchanged."""
165
+ """The input of `stepUpdate`. Omit a field to keep its value."""
169
166
  input StepUpdateInput {
170
- """Step ID."""
167
+ """The ID of the step."""
171
168
  id: ID!
172
- """Workspace ID the step belongs to."""
169
+ """The ID of the workspace the step belongs to."""
173
170
  workspaceId: ID!
174
- """New display name."""
171
+ """The name of the step."""
175
172
  name: String
176
- """New description."""
173
+ """A description of the step. Null clears it."""
177
174
  description: String
178
- """New layout name."""
175
+ """The layout name: the component that renders the step. Null clears it."""
179
176
  layoutName: String
180
177
  """
181
- ID of the CMS Content Entry to use as this step's layout. Pass null to detach the entry; mutually exclusive with `layoutName`.
178
+ The ID of a content entry to attach as the step's layout. The entry must be in the step's
179
+ workspace and belong to a page-layout or step-layout model. Null detaches the current entry.
182
180
  """
183
181
  layoutContentEntryId: ID
184
182
  """
185
- IDs of workspace-level fields to associate with this step. Replaces the existing field list when set.
183
+ The IDs of the fields on the step, in order. Replaces the current list.
186
184
  """
187
185
  fieldIds: [ID!]
188
186
  }
@@ -191,7 +189,7 @@ input StepUpdateInput {
191
189
  ### `StepUpdatePayload`
192
190
 
193
191
  ```graphql
194
- """Payload returned by `stepUpdate`."""
192
+ """The result of `stepUpdate`."""
195
193
  type StepUpdatePayload {
196
194
  """The updated step."""
197
195
  step: Step
@@ -201,11 +199,11 @@ type StepUpdatePayload {
201
199
  ### `StepDeleteInput`
202
200
 
203
201
  ```graphql
204
- """Input for `stepDelete`."""
202
+ """The input of `stepDelete`."""
205
203
  input StepDeleteInput {
206
- """Step ID."""
204
+ """The ID of the step."""
207
205
  id: ID!
208
- """Workspace ID the step belongs to."""
206
+ """The ID of the workspace the step belongs to."""
209
207
  workspaceId: ID!
210
208
  }
211
209
  ```
@@ -213,13 +211,11 @@ input StepDeleteInput {
213
211
  ### `StepDeletePayload`
214
212
 
215
213
  ```graphql
216
- """
217
- Payload returned by `stepDelete`. Returns `userErrors` when the step is in use.
218
- """
214
+ """The result of `stepDelete`."""
219
215
  type StepDeletePayload {
220
- """ID of the deleted step (null when `userErrors` is non-empty)."""
216
+ """The ID of the deleted step. Null when `userErrors` is not empty."""
221
217
  deletedStepId: ID
222
- """Validation errors. Empty array indicates success."""
218
+ """The reasons the step was not deleted. Empty on success."""
223
219
  userErrors: [StepDeleteUserError!]!
224
220
  }
225
221
  ```
@@ -227,11 +223,9 @@ type StepDeletePayload {
227
223
  ### `StepDeleteUserErrorCode`
228
224
 
229
225
  ```graphql
230
- """Machine-readable error codes for `stepDelete`."""
226
+ """The reasons `stepDelete` refuses a delete."""
231
227
  enum StepDeleteUserErrorCode {
232
- """
233
- The step is referenced by one or more experiences and cannot be deleted.
234
- """
228
+ """An experience references the step."""
235
229
  IN_USE
236
230
  }
237
231
  ```
@@ -239,18 +233,18 @@ enum StepDeleteUserErrorCode {
239
233
  ### `StepDeleteUserError`
240
234
 
241
235
  ```graphql
242
- """
243
- A user error from `stepDelete`. Carries the experiences that block the delete when `code` is `IN_USE`.
244
- """
236
+ """A reason `stepDelete` did not delete a step."""
245
237
  type StepDeleteUserError {
246
- """Path to the input field that caused the error."""
238
+ """
239
+ The path to the input field at fault. Null when no single field is at fault.
240
+ """
247
241
  field: [String!]
248
- """Human-readable error message."""
242
+ """A message to show the user."""
249
243
  message: String!
250
- """Machine-readable error code."""
244
+ """A machine-readable code."""
251
245
  code: StepDeleteUserErrorCode!
252
246
  """
253
- Experiences that reference this step (present when `code` is `IN_USE`).
247
+ The experiences that reference the step. Null unless `code` is `IN_USE`.
254
248
  """
255
249
  referencingExperiences: [ReferencingExperience!]
256
250
  }
@@ -259,15 +253,13 @@ type StepDeleteUserError {
259
253
  ### `StepSortKeys`
260
254
 
261
255
  ```graphql
262
- """
263
- Sort keys for `steps(...)`. Pair with `reverse: true` to flip the order (`NAME` + `reverse: false` sorts A→Z; `CREATED_AT` + `reverse: true` is newest-first).
264
- """
256
+ """The orders `steps` can sort by. `reverse: true` flips each."""
265
257
  enum StepSortKeys {
266
- """Sort by `name` (alphabetical)."""
258
+ """By name, A to Z."""
267
259
  NAME
268
- """Sort by `createdAt`."""
260
+ """By creation time, oldest first."""
269
261
  CREATED_AT
270
- """Sort by `updatedAt`."""
262
+ """By last change, oldest first."""
271
263
  UPDATED_AT
272
264
  }
273
265
  ```
@@ -6,13 +6,14 @@ generated: true
6
6
 
7
7
  # Tenant branding schema
8
8
 
9
- The operations and types that `tenant-branding.graphql` adds to the Management API. See [Management API schema](/reference/management-api/schema) for every domain, the endpoint and authentication.
9
+ See [Management API schema](/reference/management-api/schema) for every domain, the endpoint and authentication.
10
10
 
11
11
  ## Queries
12
12
 
13
13
  ### `tenant`
14
14
 
15
- Resolve a tenant (and its branding) by host or explicit slug. Unauthenticated; cached for 5 minutes.
15
+ Reads a tenant and its branding by slug or hostname. Returns the default tenant when neither
16
+ matches. Needs no authentication, and responses are cacheable for 5 minutes.
16
17
 
17
18
  ```graphql
18
19
  tenant(input: TenantInput!): Tenant! @cache(policy: "public, max-age=300, stale-while-revalidate=3600")
@@ -23,15 +24,15 @@ tenant(input: TenantInput!): Tenant! @cache(policy: "public, max-age=300, stale-
23
24
  ### `Tenant`
24
25
 
25
26
  ```graphql
26
- """A tenant dashboard deployment (e.g. `picked`, `convincely`)."""
27
+ """
28
+ A deployment of the dashboard with its own hostnames and branding, such as `picked`.
29
+ """
27
30
  type Tenant {
28
- """
29
- Machine-readable identifier for the tenant (e.g. `picked`, `convincely`).
30
- """
31
+ """The tenant's identifier, such as `picked`."""
31
32
  slug: String!
32
- """Hostnames this tenant serves the dashboard on."""
33
+ """The hostnames the tenant serves the dashboard on."""
33
34
  hosts: [String!]!
34
- """Visual identity for this tenant — logos, colours, radii."""
35
+ """The tenant's logos, colours and border radii."""
35
36
  branding: Branding!
36
37
  }
37
38
  ```
@@ -39,17 +40,15 @@ type Tenant {
39
40
  ### `Branding`
40
41
 
41
42
  ```graphql
42
- """
43
- Visual identity for a tenant — logos, colour palette, and shape tokens.
44
- """
43
+ """The visual identity of a tenant."""
45
44
  type Branding {
46
- """Human-readable product name shown in chrome and document titles."""
45
+ """The product name shown in the dashboard and in page titles."""
47
46
  productName: String!
48
- """Logos used throughout the dashboard."""
47
+ """The tenant's logos."""
49
48
  logos: BrandingLogos!
50
- """Brand colour tokens."""
49
+ """The tenant's colours."""
51
50
  colors: BrandingColors!
52
- """Border-radius tokens."""
51
+ """The tenant's border radii."""
53
52
  radii: BrandingRadii!
54
53
  }
55
54
  ```
@@ -57,15 +56,13 @@ type Branding {
57
56
  ### `BrandingLogos`
58
57
 
59
58
  ```graphql
60
- """
61
- Logo URLs for a tenant. Paths are absolute relative to the dashboard origin.
62
- """
59
+ """The logos of a tenant, as paths from the dashboard origin."""
63
60
  type BrandingLogos {
64
- """Small logo shown in the dashboard header."""
61
+ """The small logo in the dashboard header."""
65
62
  header: String!
66
- """Larger logo shown on authentication pages (sign-in, OAuth)."""
63
+ """The larger logo on the sign-in and authorisation pages."""
67
64
  auth: String!
68
- """Optional favicon URL."""
65
+ """The favicon. Null when the tenant has none."""
69
66
  favicon: String
70
67
  }
71
68
  ```
@@ -73,17 +70,15 @@ type BrandingLogos {
73
70
  ### `BrandingColors`
74
71
 
75
72
  ```graphql
76
- """
77
- Brand colour tokens for a tenant. Values are CSS colour expressions (`#rrggbb`, `rgb(...)`, etc.).
78
- """
73
+ """The colours of a tenant, as CSS colour values such as `#rrggbb`."""
79
74
  type BrandingColors {
80
- """Primary brand colour."""
75
+ """The primary brand colour."""
81
76
  primary: String!
82
- """Focus / outline ring colour used across the site."""
77
+ """The colour of focus rings."""
83
78
  focusRing: String!
84
- """Colour tokens for unauthenticated / auth pages."""
79
+ """The colours of the sign-in pages."""
85
80
  auth: BrandingAuthColors!
86
- """Colour tokens for authenticated / app pages."""
81
+ """The colours of the signed-in dashboard."""
87
82
  app: BrandingAppColors!
88
83
  }
89
84
  ```
@@ -91,19 +86,17 @@ type BrandingColors {
91
86
  ### `BrandingAuthColors`
92
87
 
93
88
  ```graphql
94
- """
95
- Colour tokens used on authentication pages (sign-in, OAuth callback, etc.).
96
- """
89
+ """The colours of a tenant's sign-in and authorisation pages."""
97
90
  type BrandingAuthColors {
98
- """Full auth page background."""
91
+ """The page background."""
99
92
  shellBg: String!
100
- """`AuthModal` / sign-in card background."""
93
+ """The sign-in card background."""
101
94
  cardBg: String!
102
- """Primary text colour on auth pages."""
95
+ """The text colour."""
103
96
  text: String!
104
- """Primary button background on auth pages."""
97
+ """The primary button background."""
105
98
  buttonBg: String!
106
- """Primary button text colour on auth pages."""
99
+ """The primary button text colour."""
107
100
  buttonText: String!
108
101
  }
109
102
  ```
@@ -111,37 +104,31 @@ type BrandingAuthColors {
111
104
  ### `BrandingAppColors`
112
105
 
113
106
  ```graphql
114
- """Colour tokens used on authenticated application pages."""
107
+ """The colours of a tenant's signed-in dashboard."""
115
108
  type BrandingAppColors {
116
- """Authenticated app shell (header / sidebar chrome) background."""
109
+ """The background of the header and sidebar frame."""
117
110
  shellBg: String!
118
- """
119
- Foreground colour for chrome (text + icons) sitting on the shell background.
120
- """
111
+ """The colour of text and icons on the frame background."""
121
112
  shellText: String!
122
- """Primary content area background (what sits inside the shell)."""
113
+ """The content area background."""
123
114
  contentBg: String!
124
115
  """
125
- Subdued content background (used for card subdued variants and similar muted surfaces inside the content area).
116
+ The background of muted surfaces in the content area, such as subdued cards.
126
117
  """
127
118
  contentBgSubdued: String!
128
- """
129
- Page-level background sitting behind page content (the main scroll viewport).
130
- """
119
+ """The background behind page content."""
131
120
  pageBg: String!
132
- """Subtle surface background for card headers and similar chrome."""
121
+ """The background of card headers and similar surfaces."""
133
122
  surfaceBg: String!
134
- """Sidebar (left nav rail) background."""
123
+ """The sidebar background."""
135
124
  sidebarBg: String!
136
- """
137
- Neutral surface background used for secondary buttons and similar muted chrome.
138
- """
125
+ """The background of secondary buttons and similar neutral surfaces."""
139
126
  neutralBg: String!
140
- """Primary text colour in the content area."""
127
+ """The text colour in the content area."""
141
128
  text: String!
142
- """Primary button background in the app."""
129
+ """The primary button background."""
143
130
  buttonBg: String!
144
- """Primary button text colour in the app."""
131
+ """The primary button text colour."""
145
132
  buttonText: String!
146
133
  }
147
134
  ```
@@ -149,13 +136,11 @@ type BrandingAppColors {
149
136
  ### `BrandingRadii`
150
137
 
151
138
  ```graphql
152
- """
153
- Border-radius tokens for a tenant. Values are CSS length expressions (`8px`, `0.5rem`, etc.).
154
- """
139
+ """The border radii of a tenant, as CSS lengths such as `8px`."""
155
140
  type BrandingRadii {
156
- """Border radius for buttons."""
141
+ """The border radius of buttons."""
157
142
  button: String!
158
- """Border radius for cards."""
143
+ """The border radius of cards."""
159
144
  card: String!
160
145
  }
161
146
  ```
@@ -163,22 +148,15 @@ type BrandingRadii {
163
148
  ### `TenantInput`
164
149
 
165
150
  ```graphql
166
- """
167
- Input for the `tenant` query. Either `host`, `slug`, both, or neither
168
- may be provided.
169
-
170
- When both are absent the default tenant is returned. When `slug` is set
171
- it wins over `host`. When only `host` is set, the server resolves the
172
- slug from the host registry; unknown hosts fall back to the default
173
- tenant.
174
- """
151
+ """The input of `tenant`. Both fields are optional."""
175
152
  input TenantInput {
176
153
  """
177
- Dashboard hostname (e.g. `dashboard.convincely.com`). Used when `slug` is absent or unknown.
154
+ The dashboard hostname, such as `dashboard.convincely.com`. Used when `slug` is null or matches
155
+ no tenant.
178
156
  """
179
157
  host: String
180
158
  """
181
- Explicit tenant slug override. Wins over `host` when it matches a registered tenant.
159
+ The tenant's slug. Takes precedence over `host` when it matches a tenant.
182
160
  """
183
161
  slug: String
184
162
  }