@epilot/cli 0.1.8 → 0.1.10
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.
- package/README.md +31 -4
- package/definitions/journey.json +257 -12
- package/definitions/kanban.json +630 -78
- package/definitions/organization.json +580 -51
- package/dist/{access-token-ZDNEKP3G.js → access-token-PTTCRMGK.js} +1 -1
- package/dist/{address-2SW3VMN3.js → address-2FDPEPR6.js} +1 -1
- package/dist/{address-suggestions-26ZRCECN.js → address-suggestions-XBEK5DDQ.js} +1 -1
- package/dist/{ai-agents-PDOHJ7VB.js → ai-agents-ZY5BNVTN.js} +1 -1
- package/dist/{app-XJNMGPZO.js → app-IT5FWGUK.js} +1 -1
- package/dist/{audit-logs-L2OCFRGO.js → audit-logs-FB4TE4TI.js} +1 -1
- package/dist/{automation-UB7OFM4Q.js → automation-JE5LDKJM.js} +1 -1
- package/dist/{billing-ZXHTBUAP.js → billing-GOFCP5T3.js} +1 -1
- package/dist/bin/epilot.js +52 -52
- package/dist/{blueprint-manifest-RMKS5EQA.js → blueprint-manifest-WJIQKFYK.js} +1 -1
- package/dist/{chunk-PHXL66VA.js → chunk-MNSG22DM.js} +3 -2
- package/dist/{chunk-HWUVFZIB.js → chunk-P5IZZW4Y.js} +11 -7
- package/dist/{completion-EKFXGPNK.js → completion-HZNPHJI4.js} +1 -1
- package/dist/{consent-AQ2DKCDR.js → consent-DSMWWHUL.js} +1 -1
- package/dist/{customer-portal-CGP4ZX4R.js → customer-portal-IJYTJYUZ.js} +1 -1
- package/dist/{dashboard-IDWUGNZW.js → dashboard-DOAX6XDG.js} +1 -1
- package/dist/{data-management-U7ZRAGLQ.js → data-management-C4JPPUPD.js} +1 -1
- package/dist/{deduplication-QQUSPXAF.js → deduplication-7OGLZLAC.js} +1 -1
- package/dist/{design-PQ2FUC2D.js → design-3CAYTWFY.js} +1 -1
- package/dist/{document-Y76RC3MP.js → document-NT5JOJQV.js} +1 -1
- package/dist/{email-settings-XM3ADDAU.js → email-settings-2M3WJTQS.js} +1 -1
- package/dist/{email-template-72P5GBEO.js → email-template-F4PLBPPC.js} +1 -1
- package/dist/{entity-XHM54EGF.js → entity-32LKMZAU.js} +1 -1
- package/dist/{entity-mapping-L5QITA2E.js → entity-mapping-OBCZDYQJ.js} +1 -1
- package/dist/{environments-VW3SQQ6D.js → environments-H3TBCDQE.js} +1 -1
- package/dist/{erp-integration-XCFKHGOU.js → erp-integration-UW6H55EK.js} +1 -1
- package/dist/{event-catalog-XZ233C2K.js → event-catalog-NVAPTZ4M.js} +1 -1
- package/dist/{file-TYBZ6WUC.js → file-US2HR4SV.js} +1 -1
- package/dist/{iban-IEGS2B6M.js → iban-7QUCOULB.js} +1 -1
- package/dist/{journey-HY3MNAHS.js → journey-E5T4BZZX.js} +1 -1
- package/dist/{kanban-7RLHAPAB.js → kanban-7UHU5VE6.js} +1 -1
- package/dist/{message-K7E26IZC.js → message-7KY33RJE.js} +1 -1
- package/dist/{metering-2OGVZIBR.js → metering-P7BZGMY7.js} +1 -1
- package/dist/{notes-KQVLCMGP.js → notes-TNJ7FPA3.js} +1 -1
- package/dist/{notification-BFBWDPZV.js → notification-6KXEFVO5.js} +1 -1
- package/dist/{organization-LI7FM5BQ.js → organization-FF4Y3PBO.js} +1 -1
- package/dist/{partner-directory-XPAISFGT.js → partner-directory-VH2SBAS2.js} +1 -1
- package/dist/{permissions-R5A4XMTY.js → permissions-KENZ4HNY.js} +1 -1
- package/dist/{pricing-Y4T6VKYN.js → pricing-P6QZ77VJ.js} +1 -1
- package/dist/{pricing-tier-HWKSYSVR.js → pricing-tier-2IRJMTM6.js} +1 -1
- package/dist/{purpose-5AUHF3IO.js → purpose-IHROR6LQ.js} +1 -1
- package/dist/{sandbox-QSGFCXMZ.js → sandbox-62XQPOU6.js} +1 -1
- package/dist/{submission-Z73M4XKQ.js → submission-PUWGOYQB.js} +1 -1
- package/dist/{targeting-U5YIFO6Q.js → targeting-QB3DFYNI.js} +1 -1
- package/dist/{template-variables-AV4T4OL2.js → template-variables-IPKRUJ4E.js} +1 -1
- package/dist/{upgrade-2SY2XG5S.js → upgrade-TNDH4WGQ.js} +1 -1
- package/dist/{user-S7XP7EFG.js → user-2CP75TFC.js} +1 -1
- package/dist/{validation-rules-MJRLZCHT.js → validation-rules-GNI4EEG5.js} +1 -1
- package/dist/{webhooks-X2VR5SVC.js → webhooks-2OWUX7UL.js} +1 -1
- package/dist/{workflow-EGOFLIKI.js → workflow-WSLERVJI.js} +1 -1
- package/dist/{workflow-definition-65ZR33O5.js → workflow-definition-FP3WKHGG.js} +1 -1
- package/package.json +1 -1
|
@@ -2,25 +2,33 @@
|
|
|
2
2
|
"openapi": "3.0.3",
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "Organization API",
|
|
5
|
-
"description": "
|
|
6
|
-
"version": "1.
|
|
5
|
+
"description": "The Organization API provides endpoints for managing epilot tenant organizations.\n\n## Overview\n\nThis API allows you to:\n- **Retrieve organization details** - Get information about the current organization or a specific organization by ID\n- **Update organization profiles** - Modify organization name, contact information, address, and branding assets\n- **Manage organization settings** - Configure organization-wide settings such as feature flags and preferences\n- **Branding configuration** - Set organization logos, email signatures, and style settings\n\n## Organization Types\n\nOrganizations can be configured as:\n- **Production** - Live production environments for real business operations\n- **Sandbox** - Test environments linked to a parent production organization\n",
|
|
6
|
+
"version": "1.1.0"
|
|
7
7
|
},
|
|
8
8
|
"tags": [
|
|
9
9
|
{
|
|
10
10
|
"name": "Organization",
|
|
11
|
-
"description": "
|
|
11
|
+
"description": "Endpoints for managing organization profiles and information.\n\nOrganizations represent tenant accounts in the epilot platform. Each organization has:\n- Basic profile information (name, contact details, address)\n- Branding assets (logo, email signature)\n- Configuration settings\n- Usage type (Production or Sandbox)\n"
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
"name": "Organization Settings",
|
|
15
|
-
"description": "
|
|
15
|
+
"description": "Endpoints for managing organization-wide configuration settings.\n\nSettings are stored as key-value pairs and can include:\n- Feature flags (e.g., double_opt_in)\n- Integration configurations\n- Platform preferences\n\nSettings values can be strings, numbers, booleans, arrays, or objects.\n"
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"name": "Cleanup",
|
|
19
|
-
"description": "Internal
|
|
19
|
+
"description": "Internal endpoints for organization cleanup operations.\n\nThese endpoints are used by internal services to manage the deletion and cleanup\nof organization data across the platform. They track cleanup status per service\nto ensure complete data removal.\n"
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
"name": "Internal",
|
|
23
|
-
"description": "Internal endpoints"
|
|
23
|
+
"description": "Internal endpoints for platform administration.\n\nThese endpoints are not part of the public API and are used by internal epilot\nservices for administrative operations such as organization provisioning,\ndata aggregation, and cross-organization queries.\n"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"name": "HubSpot",
|
|
27
|
+
"description": "Internal endpoints for HubSpot CRM integration.\n\nThese endpoints provide access to HubSpot company data synchronized with the\nepilot data warehouse for organization mapping and CRM integration purposes.\n"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "Feature Settings",
|
|
31
|
+
"description": "Feature flag metadata for the organization settings page.\n\nThis metadata is used by frontend applications to render feature toggles\nwithout hardcoding titles, descriptions, badges, and visibility rules in the UI.\n"
|
|
24
32
|
}
|
|
25
33
|
],
|
|
26
34
|
"security": [
|
|
@@ -33,20 +41,44 @@
|
|
|
33
41
|
"get": {
|
|
34
42
|
"operationId": "getCurrentOrganization",
|
|
35
43
|
"summary": "getCurrentOrganization",
|
|
36
|
-
"description": "
|
|
44
|
+
"description": "Retrieves the organization associated with the authenticated user's current session.\n\nThis endpoint is useful for fetching organization details without knowing the organization ID,\nas it automatically resolves the organization from the authentication token.\n",
|
|
37
45
|
"tags": [
|
|
38
46
|
"Organization"
|
|
39
47
|
],
|
|
40
48
|
"responses": {
|
|
41
49
|
"200": {
|
|
42
|
-
"description": "
|
|
50
|
+
"description": "The organization associated with the current authenticated user",
|
|
43
51
|
"content": {
|
|
44
52
|
"application/json": {
|
|
45
53
|
"schema": {
|
|
46
54
|
"$ref": "#/components/schemas/Organization"
|
|
55
|
+
},
|
|
56
|
+
"example": {
|
|
57
|
+
"id": "739224",
|
|
58
|
+
"name": "Epilot",
|
|
59
|
+
"email": "contact@epilot.cloud",
|
|
60
|
+
"phone": "+49123456789",
|
|
61
|
+
"website": "https://epilot.cloud",
|
|
62
|
+
"address": {
|
|
63
|
+
"country": "Germany",
|
|
64
|
+
"city": "Cologne",
|
|
65
|
+
"postal_code": "50667",
|
|
66
|
+
"street": "Im Mediapark",
|
|
67
|
+
"street_number": "8a"
|
|
68
|
+
},
|
|
69
|
+
"organization_use": "Production",
|
|
70
|
+
"created_date": "2021-01-15T10:30:00Z",
|
|
71
|
+
"logo_url": "https://epilot-playground-organization-data.s3.eu-central-1.amazonaws.com/epilot-logo.png",
|
|
72
|
+
"signature": "<p>Best regards,<br/>The epilot Team</p>"
|
|
47
73
|
}
|
|
48
74
|
}
|
|
49
75
|
}
|
|
76
|
+
},
|
|
77
|
+
"401": {
|
|
78
|
+
"description": "Unauthorized - Invalid or missing authentication token"
|
|
79
|
+
},
|
|
80
|
+
"403": {
|
|
81
|
+
"description": "Forbidden - User does not have permission to access organization data"
|
|
50
82
|
}
|
|
51
83
|
}
|
|
52
84
|
}
|
|
@@ -55,7 +87,7 @@
|
|
|
55
87
|
"get": {
|
|
56
88
|
"operationId": "getOrganization",
|
|
57
89
|
"summary": "getOrganization",
|
|
58
|
-
"description": "
|
|
90
|
+
"description": "Retrieves detailed information about a specific organization by its unique identifier.\n\nReturns the organization's profile information including name, contact details,\naddress, branding assets, and configuration.\n",
|
|
59
91
|
"tags": [
|
|
60
92
|
"Organization"
|
|
61
93
|
],
|
|
@@ -67,26 +99,53 @@
|
|
|
67
99
|
"$ref": "#/components/schemas/OrganizationId"
|
|
68
100
|
},
|
|
69
101
|
"required": true,
|
|
70
|
-
"description": "The
|
|
102
|
+
"description": "The unique identifier of the organization to retrieve"
|
|
71
103
|
}
|
|
72
104
|
],
|
|
73
105
|
"responses": {
|
|
74
106
|
"200": {
|
|
75
|
-
"description": "
|
|
107
|
+
"description": "Organization details retrieved successfully",
|
|
76
108
|
"content": {
|
|
77
109
|
"application/json": {
|
|
78
110
|
"schema": {
|
|
79
111
|
"$ref": "#/components/schemas/Organization"
|
|
112
|
+
},
|
|
113
|
+
"example": {
|
|
114
|
+
"id": "739224",
|
|
115
|
+
"name": "Epilot",
|
|
116
|
+
"email": "contact@epilot.cloud",
|
|
117
|
+
"phone": "+49123456789",
|
|
118
|
+
"website": "https://epilot.cloud",
|
|
119
|
+
"address": {
|
|
120
|
+
"country": "Germany",
|
|
121
|
+
"city": "Cologne",
|
|
122
|
+
"postal_code": "50667",
|
|
123
|
+
"street": "Im Mediapark",
|
|
124
|
+
"street_number": "8a"
|
|
125
|
+
},
|
|
126
|
+
"organization_use": "Production",
|
|
127
|
+
"created_date": "2021-01-15T10:30:00Z",
|
|
128
|
+
"logo_url": "https://epilot-playground-organization-data.s3.eu-central-1.amazonaws.com/epilot-logo.png",
|
|
129
|
+
"signature": "<p>Best regards,<br/>The epilot Team</p>"
|
|
80
130
|
}
|
|
81
131
|
}
|
|
82
132
|
}
|
|
133
|
+
},
|
|
134
|
+
"401": {
|
|
135
|
+
"description": "Unauthorized - Invalid or missing authentication token"
|
|
136
|
+
},
|
|
137
|
+
"403": {
|
|
138
|
+
"description": "Forbidden - User does not have permission to access this organization"
|
|
139
|
+
},
|
|
140
|
+
"404": {
|
|
141
|
+
"description": "Not Found - Organization with the specified ID does not exist"
|
|
83
142
|
}
|
|
84
143
|
}
|
|
85
144
|
},
|
|
86
145
|
"patch": {
|
|
87
146
|
"operationId": "updateOrganization",
|
|
88
147
|
"summary": "updateOrganization",
|
|
89
|
-
"description": "Updates an organization",
|
|
148
|
+
"description": "Updates an organization's profile information.\n\nThis endpoint supports partial updates - only the fields provided in the request body\nwill be modified. Fields not included in the request will retain their current values.\n\nCommon use cases:\n- Updating contact information (email, phone, website)\n- Changing the organization name\n- Updating the postal address\n- Setting or updating branding assets (logo_url, logo_thumbnail_url)\n- Configuring the default email signature\n",
|
|
90
149
|
"tags": [
|
|
91
150
|
"Organization"
|
|
92
151
|
],
|
|
@@ -98,21 +157,38 @@
|
|
|
98
157
|
"$ref": "#/components/schemas/OrganizationId"
|
|
99
158
|
},
|
|
100
159
|
"required": true,
|
|
101
|
-
"description": "The
|
|
160
|
+
"description": "The unique identifier of the organization to update"
|
|
102
161
|
}
|
|
103
162
|
],
|
|
104
163
|
"requestBody": {
|
|
164
|
+
"description": "Organization fields to update. Only provided fields will be modified.",
|
|
165
|
+
"required": true,
|
|
105
166
|
"content": {
|
|
106
167
|
"application/json": {
|
|
107
168
|
"schema": {
|
|
108
169
|
"$ref": "#/components/schemas/Organization"
|
|
170
|
+
},
|
|
171
|
+
"example": {
|
|
172
|
+
"name": "Epilot GmbH",
|
|
173
|
+
"email": "info@epilot.cloud",
|
|
174
|
+
"phone": "+49221123456",
|
|
175
|
+
"website": "https://www.epilot.cloud",
|
|
176
|
+
"address": {
|
|
177
|
+
"country": "Germany",
|
|
178
|
+
"city": "Cologne",
|
|
179
|
+
"postal_code": "50667",
|
|
180
|
+
"street": "Im Mediapark",
|
|
181
|
+
"street_number": "8a"
|
|
182
|
+
},
|
|
183
|
+
"logo_url": "https://example.com/new-logo.png",
|
|
184
|
+
"signature": "<p>Kind regards,<br/>The epilot Team</p>"
|
|
109
185
|
}
|
|
110
186
|
}
|
|
111
187
|
}
|
|
112
188
|
},
|
|
113
189
|
"responses": {
|
|
114
190
|
"200": {
|
|
115
|
-
"description": "
|
|
191
|
+
"description": "Organization updated successfully",
|
|
116
192
|
"content": {
|
|
117
193
|
"application/json": {
|
|
118
194
|
"schema": {
|
|
@@ -120,15 +196,27 @@
|
|
|
120
196
|
}
|
|
121
197
|
}
|
|
122
198
|
}
|
|
199
|
+
},
|
|
200
|
+
"400": {
|
|
201
|
+
"description": "Bad Request - Invalid request body or field values"
|
|
202
|
+
},
|
|
203
|
+
"401": {
|
|
204
|
+
"description": "Unauthorized - Invalid or missing authentication token"
|
|
205
|
+
},
|
|
206
|
+
"403": {
|
|
207
|
+
"description": "Forbidden - User does not have permission to update this organization"
|
|
208
|
+
},
|
|
209
|
+
"404": {
|
|
210
|
+
"description": "Not Found - Organization with the specified ID does not exist"
|
|
123
211
|
}
|
|
124
212
|
}
|
|
125
213
|
}
|
|
126
214
|
},
|
|
127
215
|
"/v2/organization/{org_id}/settings": {
|
|
128
216
|
"get": {
|
|
129
|
-
"description": "Get full organization settings object",
|
|
130
217
|
"operationId": "getSettings",
|
|
131
218
|
"summary": "getSettings",
|
|
219
|
+
"description": "Retrieves all configuration settings for an organization.\n\nReturns a key-value map of all settings configured for the organization.\nSettings control various platform features and behaviors including:\n- Feature flags (e.g., double_opt_in, email_tracking)\n- Integration configurations\n- UI preferences\n- Workflow settings\n",
|
|
132
220
|
"tags": [
|
|
133
221
|
"Organization Settings"
|
|
134
222
|
],
|
|
@@ -140,28 +228,55 @@
|
|
|
140
228
|
"$ref": "#/components/schemas/OrganizationId"
|
|
141
229
|
},
|
|
142
230
|
"required": true,
|
|
143
|
-
"description": "The
|
|
231
|
+
"description": "The unique identifier of the organization"
|
|
144
232
|
}
|
|
145
233
|
],
|
|
146
234
|
"responses": {
|
|
147
235
|
"200": {
|
|
148
|
-
"description": "
|
|
236
|
+
"description": "Organization settings retrieved successfully",
|
|
149
237
|
"content": {
|
|
150
238
|
"application/json": {
|
|
151
239
|
"schema": {
|
|
152
240
|
"$ref": "#/components/schemas/Settings"
|
|
241
|
+
},
|
|
242
|
+
"example": {
|
|
243
|
+
"double_opt_in": {
|
|
244
|
+
"enabled": true
|
|
245
|
+
},
|
|
246
|
+
"email_tracking": {
|
|
247
|
+
"enabled": true,
|
|
248
|
+
"track_opens": true,
|
|
249
|
+
"track_clicks": false
|
|
250
|
+
},
|
|
251
|
+
"default_language": "de",
|
|
252
|
+
"workflow_notifications": {
|
|
253
|
+
"enabled": true,
|
|
254
|
+
"channels": [
|
|
255
|
+
"email",
|
|
256
|
+
"in_app"
|
|
257
|
+
]
|
|
258
|
+
}
|
|
153
259
|
}
|
|
154
260
|
}
|
|
155
261
|
}
|
|
262
|
+
},
|
|
263
|
+
"401": {
|
|
264
|
+
"description": "Unauthorized - Invalid or missing authentication token"
|
|
265
|
+
},
|
|
266
|
+
"403": {
|
|
267
|
+
"description": "Forbidden - User does not have permission to access organization settings"
|
|
268
|
+
},
|
|
269
|
+
"404": {
|
|
270
|
+
"description": "Not Found - Organization with the specified ID does not exist"
|
|
156
271
|
}
|
|
157
272
|
}
|
|
158
273
|
}
|
|
159
274
|
},
|
|
160
275
|
"/v2/organization/{org_id}/settings/{key}": {
|
|
161
276
|
"put": {
|
|
162
|
-
"description": "Updates an organization setting",
|
|
163
277
|
"operationId": "putSettingsValue",
|
|
164
278
|
"summary": "putSettingsValue",
|
|
279
|
+
"description": "Creates or updates a specific organization setting identified by its key.\n\nThe setting value can be any valid JSON type:\n- String (e.g., \"en\", \"production\")\n- Number (e.g., 100, 3.14)\n- Boolean (e.g., true, false)\n- Object (e.g., {\"enabled\": true, \"threshold\": 50})\n- Array (e.g., [\"email\", \"sms\", \"push\"])\n\nIf the setting key does not exist, it will be created. If it exists, its value\nwill be replaced with the new value.\n",
|
|
165
280
|
"tags": [
|
|
166
281
|
"Organization Settings"
|
|
167
282
|
],
|
|
@@ -173,7 +288,7 @@
|
|
|
173
288
|
"$ref": "#/components/schemas/OrganizationId"
|
|
174
289
|
},
|
|
175
290
|
"required": true,
|
|
176
|
-
"description": "The
|
|
291
|
+
"description": "The unique identifier of the organization"
|
|
177
292
|
},
|
|
178
293
|
{
|
|
179
294
|
"in": "path",
|
|
@@ -182,36 +297,73 @@
|
|
|
182
297
|
"type": "string"
|
|
183
298
|
},
|
|
184
299
|
"required": true,
|
|
185
|
-
"description": "
|
|
300
|
+
"description": "The setting key to create or update.\nCommon keys include: double_opt_in, email_tracking, default_language, workflow_notifications\n",
|
|
301
|
+
"example": "double_opt_in"
|
|
186
302
|
}
|
|
187
303
|
],
|
|
188
304
|
"requestBody": {
|
|
189
|
-
"description": "
|
|
305
|
+
"description": "The value to set for the specified setting key",
|
|
306
|
+
"required": true,
|
|
190
307
|
"content": {
|
|
191
308
|
"application/json": {
|
|
192
309
|
"schema": {
|
|
193
310
|
"$ref": "#/components/schemas/SettingsValue"
|
|
311
|
+
},
|
|
312
|
+
"examples": {
|
|
313
|
+
"boolean_setting": {
|
|
314
|
+
"summary": "Boolean setting",
|
|
315
|
+
"value": {
|
|
316
|
+
"enabled": true
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
"string_setting": {
|
|
320
|
+
"summary": "String setting",
|
|
321
|
+
"value": "de"
|
|
322
|
+
},
|
|
323
|
+
"object_setting": {
|
|
324
|
+
"summary": "Object setting",
|
|
325
|
+
"value": {
|
|
326
|
+
"enabled": true,
|
|
327
|
+
"track_opens": true,
|
|
328
|
+
"track_clicks": false
|
|
329
|
+
}
|
|
330
|
+
}
|
|
194
331
|
}
|
|
195
332
|
}
|
|
196
333
|
}
|
|
197
334
|
},
|
|
198
335
|
"responses": {
|
|
199
336
|
"200": {
|
|
200
|
-
"description": "
|
|
337
|
+
"description": "Setting updated successfully",
|
|
201
338
|
"content": {
|
|
202
339
|
"application/json": {
|
|
203
340
|
"schema": {
|
|
204
341
|
"$ref": "#/components/schemas/SettingsValue"
|
|
342
|
+
},
|
|
343
|
+
"example": {
|
|
344
|
+
"enabled": true
|
|
205
345
|
}
|
|
206
346
|
}
|
|
207
347
|
}
|
|
348
|
+
},
|
|
349
|
+
"400": {
|
|
350
|
+
"description": "Bad Request - Invalid setting value"
|
|
351
|
+
},
|
|
352
|
+
"401": {
|
|
353
|
+
"description": "Unauthorized - Invalid or missing authentication token"
|
|
354
|
+
},
|
|
355
|
+
"403": {
|
|
356
|
+
"description": "Forbidden - User does not have permission to modify organization settings"
|
|
357
|
+
},
|
|
358
|
+
"404": {
|
|
359
|
+
"description": "Not Found - Organization with the specified ID does not exist"
|
|
208
360
|
}
|
|
209
361
|
}
|
|
210
362
|
},
|
|
211
363
|
"delete": {
|
|
212
|
-
"description": "Updates an organization nsetting",
|
|
213
364
|
"operationId": "deleteSettingsValue",
|
|
214
365
|
"summary": "deleteSettingsValue",
|
|
366
|
+
"description": "Removes a specific organization setting identified by its key.\n\nAfter deletion, the setting will no longer appear in the organization's settings\nand any features relying on this setting will use their default behavior.\n",
|
|
215
367
|
"tags": [
|
|
216
368
|
"Organization Settings"
|
|
217
369
|
],
|
|
@@ -223,7 +375,7 @@
|
|
|
223
375
|
"$ref": "#/components/schemas/OrganizationId"
|
|
224
376
|
},
|
|
225
377
|
"required": true,
|
|
226
|
-
"description": "The
|
|
378
|
+
"description": "The unique identifier of the organization"
|
|
227
379
|
},
|
|
228
380
|
{
|
|
229
381
|
"in": "path",
|
|
@@ -232,12 +384,47 @@
|
|
|
232
384
|
"type": "string"
|
|
233
385
|
},
|
|
234
386
|
"required": true,
|
|
235
|
-
"description": "
|
|
387
|
+
"description": "The setting key to delete",
|
|
388
|
+
"example": "double_opt_in"
|
|
236
389
|
}
|
|
237
390
|
],
|
|
238
391
|
"responses": {
|
|
239
392
|
"200": {
|
|
240
|
-
"description": "
|
|
393
|
+
"description": "Setting deleted successfully"
|
|
394
|
+
},
|
|
395
|
+
"401": {
|
|
396
|
+
"description": "Unauthorized - Invalid or missing authentication token"
|
|
397
|
+
},
|
|
398
|
+
"403": {
|
|
399
|
+
"description": "Forbidden - User does not have permission to delete organization settings"
|
|
400
|
+
},
|
|
401
|
+
"404": {
|
|
402
|
+
"description": "Not Found - Organization or setting key does not exist"
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
},
|
|
407
|
+
"/v2/feature-settings": {
|
|
408
|
+
"get": {
|
|
409
|
+
"operationId": "getFeatureSettings",
|
|
410
|
+
"summary": "Get platform configuration metadata",
|
|
411
|
+
"description": "Returns platform-level configuration metadata including feature flag definitions,\nresource type mappings, and error code severities.\n\nThis data is static (identical for all organizations) and changes infrequently.\nClients should cache responses using the Cache-Control header.\n",
|
|
412
|
+
"tags": [
|
|
413
|
+
"Feature Settings"
|
|
414
|
+
],
|
|
415
|
+
"responses": {
|
|
416
|
+
"200": {
|
|
417
|
+
"description": "Platform configuration metadata",
|
|
418
|
+
"content": {
|
|
419
|
+
"application/json": {
|
|
420
|
+
"schema": {
|
|
421
|
+
"$ref": "#/components/schemas/FeatureSettings"
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
},
|
|
426
|
+
"401": {
|
|
427
|
+
"description": "Unauthorized - Invalid or missing authentication token"
|
|
241
428
|
}
|
|
242
429
|
}
|
|
243
430
|
}
|
|
@@ -255,10 +442,12 @@
|
|
|
255
442
|
"schemas": {
|
|
256
443
|
"OrganizationId": {
|
|
257
444
|
"type": "string",
|
|
445
|
+
"description": "Unique identifier for an organization (tenant) in the epilot platform",
|
|
258
446
|
"example": "739224"
|
|
259
447
|
},
|
|
260
448
|
"Organization": {
|
|
261
449
|
"type": "object",
|
|
450
|
+
"description": "Represents an epilot organization (tenant).\n\nAn organization contains all the configuration, branding, and contact information\nfor a tenant account on the epilot platform.\n",
|
|
262
451
|
"properties": {
|
|
263
452
|
"id": {
|
|
264
453
|
"$ref": "#/components/schemas/OrganizationId"
|
|
@@ -316,6 +505,7 @@
|
|
|
316
505
|
},
|
|
317
506
|
"organization_use": {
|
|
318
507
|
"type": "string",
|
|
508
|
+
"description": "Indicates whether this is a production or sandbox organization.\nSandbox organizations are linked to a parent production organization for testing purposes.\n",
|
|
319
509
|
"enum": [
|
|
320
510
|
"Production",
|
|
321
511
|
"Sandbox"
|
|
@@ -324,6 +514,7 @@
|
|
|
324
514
|
},
|
|
325
515
|
"parent_production_org_id": {
|
|
326
516
|
"type": "string",
|
|
517
|
+
"description": "The ID of the parent production organization.\nOnly set for sandbox organizations to link them to their production counterpart.\n",
|
|
327
518
|
"nullable": true
|
|
328
519
|
},
|
|
329
520
|
"created_date": {
|
|
@@ -389,10 +580,20 @@
|
|
|
389
580
|
"type": "number",
|
|
390
581
|
"example": 50,
|
|
391
582
|
"nullable": true
|
|
583
|
+
},
|
|
584
|
+
"tags": {
|
|
585
|
+
"type": "array",
|
|
586
|
+
"description": "Labels/tags associated with the organization for categorization and filtering.\nUsed internally to classify organizations (e.g., \"enterprise\", \"beta-tester\", \"test org\").\n",
|
|
587
|
+
"items": {
|
|
588
|
+
"type": "string",
|
|
589
|
+
"example": "test org"
|
|
590
|
+
},
|
|
591
|
+
"nullable": true
|
|
392
592
|
}
|
|
393
593
|
}
|
|
394
594
|
},
|
|
395
595
|
"InternalOrganization": {
|
|
596
|
+
"description": "Extended organization object with internal-only fields.\n\nIncludes all fields from the base Organization schema plus additional\ninternal metadata used for platform administration and support.\n",
|
|
396
597
|
"allOf": [
|
|
397
598
|
{
|
|
398
599
|
"$ref": "#/components/schemas/Organization"
|
|
@@ -401,18 +602,26 @@
|
|
|
401
602
|
},
|
|
402
603
|
"SettingKey": {
|
|
403
604
|
"type": "string",
|
|
605
|
+
"description": "A unique key identifying an organization setting.\nCommon setting keys include: double_opt_in, email_tracking, default_language, workflow_notifications\n",
|
|
404
606
|
"example": "double_opt_in"
|
|
405
607
|
},
|
|
406
608
|
"Settings": {
|
|
407
609
|
"type": "object",
|
|
610
|
+
"description": "A key-value map of all organization settings.\nKeys are setting identifiers and values can be any valid JSON type.\n",
|
|
408
611
|
"additionalProperties": true,
|
|
409
612
|
"example": {
|
|
410
613
|
"double_opt_in": {
|
|
411
614
|
"enabled": true
|
|
412
|
-
}
|
|
615
|
+
},
|
|
616
|
+
"email_tracking": {
|
|
617
|
+
"enabled": true,
|
|
618
|
+
"track_opens": true
|
|
619
|
+
},
|
|
620
|
+
"default_language": "de"
|
|
413
621
|
}
|
|
414
622
|
},
|
|
415
623
|
"SettingsValue": {
|
|
624
|
+
"description": "The value of an organization setting.\nCan be any valid JSON type: string, number, boolean, array, or object.\n",
|
|
416
625
|
"anyOf": [
|
|
417
626
|
{
|
|
418
627
|
"type": "string"
|
|
@@ -441,9 +650,10 @@
|
|
|
441
650
|
},
|
|
442
651
|
"CreateOrganizationRequest": {
|
|
443
652
|
"type": "object",
|
|
653
|
+
"description": "Request payload for creating a new organization",
|
|
444
654
|
"properties": {
|
|
445
655
|
"organization_detail": {
|
|
446
|
-
"description": "
|
|
656
|
+
"description": "Core organization information for the new tenant",
|
|
447
657
|
"type": "object",
|
|
448
658
|
"required": [
|
|
449
659
|
"name",
|
|
@@ -452,21 +662,22 @@
|
|
|
452
662
|
],
|
|
453
663
|
"properties": {
|
|
454
664
|
"name": {
|
|
455
|
-
"description": "
|
|
665
|
+
"description": "Display name for the organization",
|
|
456
666
|
"type": "string",
|
|
457
667
|
"example": "epilot"
|
|
458
668
|
},
|
|
459
669
|
"email_address": {
|
|
460
|
-
"description": "
|
|
670
|
+
"description": "Primary contact email for the organization",
|
|
461
671
|
"type": "string",
|
|
462
672
|
"example": "epilot@epilot.cloud"
|
|
463
673
|
},
|
|
464
674
|
"type": {
|
|
465
|
-
"description": "type",
|
|
675
|
+
"description": "Organization type classification.\n- Vendor: Primary organization type for epilot customers\n- Partner: Partner organization type\n",
|
|
466
676
|
"type": "string",
|
|
467
677
|
"example": "Vendor"
|
|
468
678
|
},
|
|
469
679
|
"organization_use": {
|
|
680
|
+
"description": "Whether this is a production or sandbox environment.\nSandbox organizations are for testing and linked to a production org.\n",
|
|
470
681
|
"type": "string",
|
|
471
682
|
"enum": [
|
|
472
683
|
"Production",
|
|
@@ -474,24 +685,26 @@
|
|
|
474
685
|
]
|
|
475
686
|
},
|
|
476
687
|
"pricing_tier_id": {
|
|
477
|
-
"description": "
|
|
688
|
+
"description": "The ULID of the pricing tier to assign to this organization.\nDetermines feature access and billing.\n",
|
|
478
689
|
"type": "string",
|
|
479
690
|
"example": "01GEKHZHSN19KK10ZS92Y3WY9B"
|
|
480
691
|
}
|
|
481
692
|
}
|
|
482
693
|
},
|
|
483
694
|
"owner_user": {
|
|
484
|
-
"description": "
|
|
695
|
+
"description": "Initial owner user details.\nThis user will receive an invitation email to complete registration\nand become the organization administrator.\n",
|
|
485
696
|
"type": "object",
|
|
486
697
|
"required": [
|
|
487
698
|
"email_address"
|
|
488
699
|
],
|
|
489
700
|
"properties": {
|
|
490
701
|
"full_name": {
|
|
702
|
+
"description": "Full name of the owner user",
|
|
491
703
|
"type": "string",
|
|
492
704
|
"example": "Ny Huynh"
|
|
493
705
|
},
|
|
494
706
|
"email_address": {
|
|
707
|
+
"description": "Email address for the invitation (must be unique in the platform)",
|
|
495
708
|
"type": "string",
|
|
496
709
|
"example": "ny.huynhthi@axonactive.com"
|
|
497
710
|
}
|
|
@@ -501,25 +714,27 @@
|
|
|
501
714
|
},
|
|
502
715
|
"DataPointsResponse": {
|
|
503
716
|
"type": "array",
|
|
717
|
+
"description": "List of data point metrics for all organizations",
|
|
504
718
|
"items": {
|
|
505
719
|
"$ref": "#/components/schemas/DataPoint"
|
|
506
720
|
}
|
|
507
721
|
},
|
|
508
722
|
"DataPoint": {
|
|
509
723
|
"type": "object",
|
|
724
|
+
"description": "Data point metrics for a single organization, used for usage tracking and billing",
|
|
510
725
|
"properties": {
|
|
511
726
|
"id": {
|
|
512
|
-
"description": "
|
|
727
|
+
"description": "The organization ID (numeric format)",
|
|
513
728
|
"type": "number",
|
|
514
729
|
"example": 206801
|
|
515
730
|
},
|
|
516
731
|
"max_customer": {
|
|
517
|
-
"description": "
|
|
732
|
+
"description": "Maximum number of customer entities recorded in the previous month.\nUsed as a high-water mark for billing calculations.\n",
|
|
518
733
|
"type": "number",
|
|
519
734
|
"example": 10
|
|
520
735
|
},
|
|
521
736
|
"actual_customer": {
|
|
522
|
-
"description": "
|
|
737
|
+
"description": "Current count of customer entities in the organization.\nRepresents the actual usage at the time of the query.\n",
|
|
523
738
|
"type": "number",
|
|
524
739
|
"example": 10
|
|
525
740
|
}
|
|
@@ -527,6 +742,7 @@
|
|
|
527
742
|
},
|
|
528
743
|
"OrganizationToCleanup": {
|
|
529
744
|
"type": "object",
|
|
745
|
+
"description": "Represents an organization that has been marked for deletion and requires cleanup.\nContains metadata about the deletion request.\n",
|
|
530
746
|
"required": [
|
|
531
747
|
"org_id",
|
|
532
748
|
"deleted_at",
|
|
@@ -537,11 +753,13 @@
|
|
|
537
753
|
"$ref": "#/components/schemas/OrganizationId"
|
|
538
754
|
},
|
|
539
755
|
"deleted_at": {
|
|
756
|
+
"description": "Timestamp when the organization was marked for deletion",
|
|
540
757
|
"type": "string",
|
|
541
758
|
"format": "date-time",
|
|
542
759
|
"example": "2021-06-01T00:00:00Z"
|
|
543
760
|
},
|
|
544
761
|
"deleted_by": {
|
|
762
|
+
"description": "User ID of the person who initiated the deletion",
|
|
545
763
|
"type": "string",
|
|
546
764
|
"example": "123456"
|
|
547
765
|
}
|
|
@@ -549,6 +767,7 @@
|
|
|
549
767
|
},
|
|
550
768
|
"OrganizationCleanupStatus": {
|
|
551
769
|
"type": "object",
|
|
770
|
+
"description": "Records the cleanup status reported by a specific service for an organization.\nEach service that stores organization data reports its cleanup operations here.\n",
|
|
552
771
|
"required": [
|
|
553
772
|
"org_id",
|
|
554
773
|
"service_name"
|
|
@@ -558,36 +777,29 @@
|
|
|
558
777
|
"$ref": "#/components/schemas/OrganizationId"
|
|
559
778
|
},
|
|
560
779
|
"service_name": {
|
|
780
|
+
"description": "Name of the service reporting its cleanup status",
|
|
561
781
|
"type": "string",
|
|
562
782
|
"example": "organization-api"
|
|
563
783
|
},
|
|
564
784
|
"operations": {
|
|
565
|
-
"
|
|
566
|
-
{
|
|
567
|
-
"action": "Delete",
|
|
568
|
-
"resource": "OrgTable",
|
|
569
|
-
"extra_info": "pk: ORG#739224"
|
|
570
|
-
},
|
|
571
|
-
{
|
|
572
|
-
"action": "Archive",
|
|
573
|
-
"resource": "s3://my-bucket",
|
|
574
|
-
"extra_info": "my-bucket/my-key.txt"
|
|
575
|
-
}
|
|
576
|
-
],
|
|
785
|
+
"description": "List of cleanup operations performed by the service.\nEach operation describes what action was taken on which resource.\n",
|
|
577
786
|
"type": "array",
|
|
578
787
|
"items": {
|
|
579
788
|
"type": "object",
|
|
580
789
|
"additionalProperties": true,
|
|
581
790
|
"properties": {
|
|
582
791
|
"action": {
|
|
792
|
+
"description": "The type of cleanup action performed.\nCommon values: Delete, Archive, Purge\n",
|
|
583
793
|
"type": "string",
|
|
584
794
|
"example": "Delete"
|
|
585
795
|
},
|
|
586
796
|
"resource": {
|
|
797
|
+
"description": "The resource that was cleaned up.\nCan be a table name, S3 bucket, or other resource identifier.\n",
|
|
587
798
|
"type": "string",
|
|
588
799
|
"example": "OrgTable"
|
|
589
800
|
},
|
|
590
801
|
"extra_info": {
|
|
802
|
+
"description": "Additional context about the cleanup operation",
|
|
591
803
|
"anyOf": [
|
|
592
804
|
{
|
|
593
805
|
"type": "string"
|
|
@@ -612,6 +824,326 @@
|
|
|
612
824
|
]
|
|
613
825
|
}
|
|
614
826
|
}
|
|
827
|
+
},
|
|
828
|
+
"example": [
|
|
829
|
+
{
|
|
830
|
+
"action": "Delete",
|
|
831
|
+
"resource": "OrgTable",
|
|
832
|
+
"extra_info": "pk: ORG#739224"
|
|
833
|
+
},
|
|
834
|
+
{
|
|
835
|
+
"action": "Archive",
|
|
836
|
+
"resource": "s3://my-bucket",
|
|
837
|
+
"extra_info": "my-bucket/my-key.txt"
|
|
838
|
+
}
|
|
839
|
+
]
|
|
840
|
+
}
|
|
841
|
+
}
|
|
842
|
+
},
|
|
843
|
+
"HubspotCompany": {
|
|
844
|
+
"type": "object",
|
|
845
|
+
"description": "Represents a company record from HubSpot CRM synchronized to the epilot data warehouse.\nUsed for CRM integration and organization mapping.\n",
|
|
846
|
+
"properties": {
|
|
847
|
+
"company_id": {
|
|
848
|
+
"type": "string",
|
|
849
|
+
"description": "The unique HubSpot company identifier",
|
|
850
|
+
"example": "12345678901"
|
|
851
|
+
},
|
|
852
|
+
"company_name": {
|
|
853
|
+
"type": "string",
|
|
854
|
+
"nullable": true,
|
|
855
|
+
"description": "The display name of the company in HubSpot",
|
|
856
|
+
"example": "Acme Corp"
|
|
857
|
+
},
|
|
858
|
+
"domain": {
|
|
859
|
+
"type": "string",
|
|
860
|
+
"nullable": true,
|
|
861
|
+
"description": "The primary web domain associated with the company",
|
|
862
|
+
"example": "acme.com"
|
|
863
|
+
}
|
|
864
|
+
}
|
|
865
|
+
},
|
|
866
|
+
"HubspotCompaniesResponse": {
|
|
867
|
+
"type": "object",
|
|
868
|
+
"description": "Response containing a list of HubSpot companies matching the search criteria",
|
|
869
|
+
"properties": {
|
|
870
|
+
"results": {
|
|
871
|
+
"type": "array",
|
|
872
|
+
"description": "List of HubSpot companies matching the query",
|
|
873
|
+
"items": {
|
|
874
|
+
"$ref": "#/components/schemas/HubspotCompany"
|
|
875
|
+
}
|
|
876
|
+
},
|
|
877
|
+
"total": {
|
|
878
|
+
"type": "integer",
|
|
879
|
+
"description": "Total number of companies in the response",
|
|
880
|
+
"example": 10
|
|
881
|
+
}
|
|
882
|
+
}
|
|
883
|
+
},
|
|
884
|
+
"HubspotOrganizationData": {
|
|
885
|
+
"type": "object",
|
|
886
|
+
"description": "HubSpot company data associated with an epilot organization.\nContains business metrics and CRM properties synced from HubSpot.\n",
|
|
887
|
+
"properties": {
|
|
888
|
+
"company_id": {
|
|
889
|
+
"type": "string",
|
|
890
|
+
"description": "The unique HubSpot company identifier",
|
|
891
|
+
"example": "5278308807"
|
|
892
|
+
},
|
|
893
|
+
"company_name": {
|
|
894
|
+
"type": "string",
|
|
895
|
+
"nullable": true,
|
|
896
|
+
"description": "The display name of the company in HubSpot",
|
|
897
|
+
"example": "Stadtwerke Meerbusch Willich Netz"
|
|
898
|
+
},
|
|
899
|
+
"domain": {
|
|
900
|
+
"type": "string",
|
|
901
|
+
"nullable": true,
|
|
902
|
+
"description": "The primary web domain associated with the company",
|
|
903
|
+
"example": "stadtwerke-service.de"
|
|
904
|
+
},
|
|
905
|
+
"current_mrr": {
|
|
906
|
+
"type": "string",
|
|
907
|
+
"nullable": true,
|
|
908
|
+
"description": "Current Monthly Recurring Revenue",
|
|
909
|
+
"example": "11033.33"
|
|
910
|
+
},
|
|
911
|
+
"potential_mrr": {
|
|
912
|
+
"type": "string",
|
|
913
|
+
"nullable": true,
|
|
914
|
+
"description": "Potential Monthly Recurring Revenue",
|
|
915
|
+
"example": "20000"
|
|
916
|
+
},
|
|
917
|
+
"company_size": {
|
|
918
|
+
"type": "string",
|
|
919
|
+
"nullable": true,
|
|
920
|
+
"description": "Company size classification",
|
|
921
|
+
"example": "Large"
|
|
922
|
+
},
|
|
923
|
+
"pricing_tier": {
|
|
924
|
+
"type": "string",
|
|
925
|
+
"nullable": true,
|
|
926
|
+
"description": "Current pricing tier",
|
|
927
|
+
"example": "Professional"
|
|
928
|
+
},
|
|
929
|
+
"lifecyclestage": {
|
|
930
|
+
"type": "string",
|
|
931
|
+
"nullable": true,
|
|
932
|
+
"description": "HubSpot lifecycle stage",
|
|
933
|
+
"example": "customer"
|
|
934
|
+
},
|
|
935
|
+
"industry": {
|
|
936
|
+
"type": "string",
|
|
937
|
+
"nullable": true,
|
|
938
|
+
"description": "Industry classification",
|
|
939
|
+
"example": "Energiedienstleister"
|
|
940
|
+
},
|
|
941
|
+
"numberofemployees": {
|
|
942
|
+
"type": "string",
|
|
943
|
+
"nullable": true,
|
|
944
|
+
"description": "Number of employees",
|
|
945
|
+
"example": "200"
|
|
946
|
+
},
|
|
947
|
+
"customer_number": {
|
|
948
|
+
"type": "string",
|
|
949
|
+
"nullable": true,
|
|
950
|
+
"description": "epilot customer number",
|
|
951
|
+
"example": "10031"
|
|
952
|
+
},
|
|
953
|
+
"no_of_users": {
|
|
954
|
+
"type": "string",
|
|
955
|
+
"nullable": true,
|
|
956
|
+
"description": "Number of active users",
|
|
957
|
+
"example": "34"
|
|
958
|
+
},
|
|
959
|
+
"activation_rate": {
|
|
960
|
+
"type": "string",
|
|
961
|
+
"nullable": true,
|
|
962
|
+
"description": "User activation rate",
|
|
963
|
+
"example": "0.647059"
|
|
964
|
+
},
|
|
965
|
+
"active_features": {
|
|
966
|
+
"type": "string",
|
|
967
|
+
"nullable": true,
|
|
968
|
+
"description": "List of active features",
|
|
969
|
+
"example": "Installer Portal"
|
|
970
|
+
},
|
|
971
|
+
"usecases_implemented": {
|
|
972
|
+
"type": "string",
|
|
973
|
+
"nullable": true,
|
|
974
|
+
"description": "Implemented use cases",
|
|
975
|
+
"example": "GRID: Installations (MGA);GRID: House Connections"
|
|
976
|
+
},
|
|
977
|
+
"buyer_journey": {
|
|
978
|
+
"type": "string",
|
|
979
|
+
"nullable": true,
|
|
980
|
+
"description": "Current buyer's journey stage",
|
|
981
|
+
"example": "Expansion-Ready"
|
|
982
|
+
},
|
|
983
|
+
"country": {
|
|
984
|
+
"type": "string",
|
|
985
|
+
"nullable": true,
|
|
986
|
+
"description": "Company country",
|
|
987
|
+
"example": "Germany"
|
|
988
|
+
},
|
|
989
|
+
"city": {
|
|
990
|
+
"type": "string",
|
|
991
|
+
"nullable": true,
|
|
992
|
+
"description": "Company city",
|
|
993
|
+
"example": "Willich"
|
|
994
|
+
},
|
|
995
|
+
"properties": {
|
|
996
|
+
"type": "object",
|
|
997
|
+
"additionalProperties": true,
|
|
998
|
+
"description": "Full HubSpot properties object with all available fields"
|
|
999
|
+
}
|
|
1000
|
+
}
|
|
1001
|
+
},
|
|
1002
|
+
"FeatureSettings": {
|
|
1003
|
+
"type": "object",
|
|
1004
|
+
"description": "Feature settings metadata served to frontend applications.",
|
|
1005
|
+
"required": [
|
|
1006
|
+
"version",
|
|
1007
|
+
"feature_flags"
|
|
1008
|
+
],
|
|
1009
|
+
"properties": {
|
|
1010
|
+
"version": {
|
|
1011
|
+
"type": "string",
|
|
1012
|
+
"description": "Schema version for backwards compatibility",
|
|
1013
|
+
"example": "1.0.0"
|
|
1014
|
+
},
|
|
1015
|
+
"feature_flags": {
|
|
1016
|
+
"type": "array",
|
|
1017
|
+
"description": "Feature flag metadata for the settings page",
|
|
1018
|
+
"items": {
|
|
1019
|
+
"$ref": "#/components/schemas/FeatureFlagMetadata"
|
|
1020
|
+
}
|
|
1021
|
+
}
|
|
1022
|
+
}
|
|
1023
|
+
},
|
|
1024
|
+
"FeatureFlagMetadata": {
|
|
1025
|
+
"type": "object",
|
|
1026
|
+
"description": "Metadata for a single feature flag toggle",
|
|
1027
|
+
"required": [
|
|
1028
|
+
"feature_name",
|
|
1029
|
+
"visibility_rules"
|
|
1030
|
+
],
|
|
1031
|
+
"properties": {
|
|
1032
|
+
"feature_name": {
|
|
1033
|
+
"type": "string",
|
|
1034
|
+
"description": "Unique identifier matching the organization setting key",
|
|
1035
|
+
"example": "canary"
|
|
1036
|
+
},
|
|
1037
|
+
"title": {
|
|
1038
|
+
"$ref": "#/components/schemas/I18nString"
|
|
1039
|
+
},
|
|
1040
|
+
"description": {
|
|
1041
|
+
"$ref": "#/components/schemas/I18nString"
|
|
1042
|
+
},
|
|
1043
|
+
"badge": {
|
|
1044
|
+
"type": "string",
|
|
1045
|
+
"description": "Badge label shown next to the feature toggle",
|
|
1046
|
+
"enum": [
|
|
1047
|
+
"alpha",
|
|
1048
|
+
"beta",
|
|
1049
|
+
"new",
|
|
1050
|
+
"advanced",
|
|
1051
|
+
"experiment",
|
|
1052
|
+
"deprecated"
|
|
1053
|
+
]
|
|
1054
|
+
},
|
|
1055
|
+
"confetti": {
|
|
1056
|
+
"type": "boolean",
|
|
1057
|
+
"description": "Whether to show confetti animation when enabled"
|
|
1058
|
+
},
|
|
1059
|
+
"one_way": {
|
|
1060
|
+
"type": "boolean",
|
|
1061
|
+
"description": "Whether the toggle can only be turned on (not off)"
|
|
1062
|
+
},
|
|
1063
|
+
"reverse_checked": {
|
|
1064
|
+
"type": "boolean",
|
|
1065
|
+
"description": "Whether the toggle value is inverted (checked = disabled)"
|
|
1066
|
+
},
|
|
1067
|
+
"is_visible_for_partner": {
|
|
1068
|
+
"type": "boolean",
|
|
1069
|
+
"description": "Whether this feature is visible for partner organizations"
|
|
1070
|
+
},
|
|
1071
|
+
"visibility_rules": {
|
|
1072
|
+
"type": "array",
|
|
1073
|
+
"description": "Rules that must ALL pass for this feature to be visible (implicit AND)",
|
|
1074
|
+
"items": {
|
|
1075
|
+
"$ref": "#/components/schemas/VisibilityRule"
|
|
1076
|
+
}
|
|
1077
|
+
}
|
|
1078
|
+
}
|
|
1079
|
+
},
|
|
1080
|
+
"I18nString": {
|
|
1081
|
+
"type": "object",
|
|
1082
|
+
"description": "Internationalized string with a translation key and optional default value",
|
|
1083
|
+
"required": [
|
|
1084
|
+
"key"
|
|
1085
|
+
],
|
|
1086
|
+
"properties": {
|
|
1087
|
+
"key": {
|
|
1088
|
+
"type": "string",
|
|
1089
|
+
"description": "Translation key for i18n lookup",
|
|
1090
|
+
"example": "canary_setting.title"
|
|
1091
|
+
},
|
|
1092
|
+
"default_value": {
|
|
1093
|
+
"type": "string",
|
|
1094
|
+
"description": "Fallback value when translation is not available",
|
|
1095
|
+
"example": "Canary Updates"
|
|
1096
|
+
}
|
|
1097
|
+
}
|
|
1098
|
+
},
|
|
1099
|
+
"VisibilityRule": {
|
|
1100
|
+
"type": "object",
|
|
1101
|
+
"description": "A rule that determines feature visibility. Rules are combined with AND logic\nat the top level. Supports boolean combinators (and, or, not) for complex logic.\n",
|
|
1102
|
+
"required": [
|
|
1103
|
+
"type"
|
|
1104
|
+
],
|
|
1105
|
+
"properties": {
|
|
1106
|
+
"type": {
|
|
1107
|
+
"type": "string",
|
|
1108
|
+
"description": "The rule type discriminator",
|
|
1109
|
+
"enum": [
|
|
1110
|
+
"always",
|
|
1111
|
+
"never",
|
|
1112
|
+
"advanced_mode",
|
|
1113
|
+
"pricing_tier",
|
|
1114
|
+
"feature_flag",
|
|
1115
|
+
"permission",
|
|
1116
|
+
"setting_enabled",
|
|
1117
|
+
"flag_enabled",
|
|
1118
|
+
"not",
|
|
1119
|
+
"and",
|
|
1120
|
+
"or"
|
|
1121
|
+
]
|
|
1122
|
+
},
|
|
1123
|
+
"setting_key": {
|
|
1124
|
+
"type": "string",
|
|
1125
|
+
"description": "Setting key for pricing_tier and setting_enabled rules"
|
|
1126
|
+
},
|
|
1127
|
+
"flag_name": {
|
|
1128
|
+
"type": "string",
|
|
1129
|
+
"description": "Flag name for feature_flag and flag_enabled rules"
|
|
1130
|
+
},
|
|
1131
|
+
"action": {
|
|
1132
|
+
"type": "string",
|
|
1133
|
+
"description": "Permission action for permission rules"
|
|
1134
|
+
},
|
|
1135
|
+
"resource": {
|
|
1136
|
+
"type": "string",
|
|
1137
|
+
"description": "Optional resource for permission rules"
|
|
1138
|
+
},
|
|
1139
|
+
"rule": {
|
|
1140
|
+
"$ref": "#/components/schemas/VisibilityRule"
|
|
1141
|
+
},
|
|
1142
|
+
"rules": {
|
|
1143
|
+
"type": "array",
|
|
1144
|
+
"description": "Child rules for and/or combinators",
|
|
1145
|
+
"items": {
|
|
1146
|
+
"$ref": "#/components/schemas/VisibilityRule"
|
|
615
1147
|
}
|
|
616
1148
|
}
|
|
617
1149
|
}
|
|
@@ -619,9 +1151,6 @@
|
|
|
619
1151
|
}
|
|
620
1152
|
},
|
|
621
1153
|
"servers": [
|
|
622
|
-
{
|
|
623
|
-
"url": "https://organization-v2.sls.epilot.io"
|
|
624
|
-
},
|
|
625
1154
|
{
|
|
626
1155
|
"url": "https://organization-v2.sls.epilot.io"
|
|
627
1156
|
}
|