@onplo/sdk 0.0.0-stage → 0.0.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.
- package/LICENSE +202 -0
- package/README.md +24 -2
- package/generated/account.d.ts +11006 -0
- package/generated/account.js +1 -0
- package/generated/ai.d.ts +10007 -0
- package/generated/ai.js +1 -0
- package/generated/compliance.d.ts +18459 -0
- package/generated/compliance.js +1 -0
- package/generated/devices.d.ts +15494 -0
- package/generated/devices.js +1 -0
- package/generated/flows.d.ts +8117 -0
- package/generated/flows.js +1 -0
- package/generated/identity.d.ts +2628 -0
- package/generated/identity.js +1 -0
- package/generated/index.d.ts +36 -0
- package/generated/index.js +13 -0
- package/generated/integrations.d.ts +8045 -0
- package/generated/integrations.js +1 -0
- package/generated/keys.d.ts +8603 -0
- package/generated/keys.js +1 -0
- package/generated/software.d.ts +1466 -0
- package/generated/software.js +1 -0
- package/generated/storage.d.ts +9256 -0
- package/generated/storage.js +1 -0
- package/package.json +25 -4
- package/src/index.d.ts +31 -0
- package/src/index.js +36 -0
|
@@ -0,0 +1,1466 @@
|
|
|
1
|
+
export interface paths {
|
|
2
|
+
"/software-projects": {
|
|
3
|
+
parameters: {
|
|
4
|
+
query?: never;
|
|
5
|
+
header?: never;
|
|
6
|
+
path?: never;
|
|
7
|
+
cookie?: never;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* The software projects you may see
|
|
11
|
+
* @description EVERY SOFTWARE PROJECT YOU MAY SEE, in the account environment this credential acts in, in
|
|
12
|
+
* the order they were marked. A project you hold no grant on is absent, never masked.
|
|
13
|
+
*
|
|
14
|
+
* AN UNMARKED PROJECT IS LEFT OUT unless `include_unmarked` asks for it: it is archived, and
|
|
15
|
+
* stays readable with all it holds.
|
|
16
|
+
*
|
|
17
|
+
* EACH ROW SAYS WHAT STORAGE LAST SAID OF ITS FOLDER (`folder_state`): there, in Trash, or gone
|
|
18
|
+
* for good.
|
|
19
|
+
*/
|
|
20
|
+
get: operations["listSoftwareProjects"];
|
|
21
|
+
put?: never;
|
|
22
|
+
post?: never;
|
|
23
|
+
delete?: never;
|
|
24
|
+
options?: never;
|
|
25
|
+
head?: never;
|
|
26
|
+
patch?: never;
|
|
27
|
+
trace?: never;
|
|
28
|
+
};
|
|
29
|
+
"/software-projects-in-own-folders": {
|
|
30
|
+
parameters: {
|
|
31
|
+
query?: never;
|
|
32
|
+
header?: never;
|
|
33
|
+
path?: never;
|
|
34
|
+
cookie?: never;
|
|
35
|
+
};
|
|
36
|
+
get?: never;
|
|
37
|
+
put?: never;
|
|
38
|
+
/**
|
|
39
|
+
* Mark a folder of your own as a software project
|
|
40
|
+
* @description A STORAGE FOLDER BECOMES A SOFTWARE PROJECT. Any folder of your own, a nested one too. The
|
|
41
|
+
* code stays in it, with Storage keeping its versions; Software never moves, renames or copies
|
|
42
|
+
* it.
|
|
43
|
+
*
|
|
44
|
+
* TWO PERMISSIONS, EACH ASKED OF ITS OWN OBJECT. "Mark a folder as a software project" is asked
|
|
45
|
+
* of the account environment, and the right to share the folder in Storage is asked of the
|
|
46
|
+
* folder: sharing is asked, not just reading, because marking lets the project's viewers see
|
|
47
|
+
* what is built from the code. A refusal is one 403.
|
|
48
|
+
*
|
|
49
|
+
* WHOEVER MARKS IT HOLDS ADMINISTRATOR ON THE PROJECT, and looks after it, until it is handed
|
|
50
|
+
* on. A folder of your own is yours, so the project is yours too.
|
|
51
|
+
*
|
|
52
|
+
* A COMPANY FOLDER IS MARKED BY ITS OWN OPERATION, `markCompanyFolderAsSoftwareProject`, because
|
|
53
|
+
* its folder permission is a different one (decision 0831).
|
|
54
|
+
*
|
|
55
|
+
* A FOLDER THAT IS NOT THERE IS REFUSED with `folder_not_found`, and nothing is made: no such
|
|
56
|
+
* folder, one in Trash, a file, one in a colleague's tree. The answer does not say which.
|
|
57
|
+
*
|
|
58
|
+
* A FOLDER ALREADY A SOFTWARE PROJECT IS REFUSED with `folder_already_a_software_project`. A
|
|
59
|
+
* folder inside another project's folder is its own folder, and may be marked.
|
|
60
|
+
*
|
|
61
|
+
* ONLY A PERSON MARKS A FOLDER. A machine is refused with a 422 on `/body/folder_id`, code
|
|
62
|
+
* `agents_never_mark_a_folder`: there is no person whose share it would be.
|
|
63
|
+
*/
|
|
64
|
+
post: operations["markOwnFolderAsSoftwareProject"];
|
|
65
|
+
delete?: never;
|
|
66
|
+
options?: never;
|
|
67
|
+
head?: never;
|
|
68
|
+
patch?: never;
|
|
69
|
+
trace?: never;
|
|
70
|
+
};
|
|
71
|
+
"/software-projects-in-company-folders": {
|
|
72
|
+
parameters: {
|
|
73
|
+
query?: never;
|
|
74
|
+
header?: never;
|
|
75
|
+
path?: never;
|
|
76
|
+
cookie?: never;
|
|
77
|
+
};
|
|
78
|
+
get?: never;
|
|
79
|
+
put?: never;
|
|
80
|
+
/**
|
|
81
|
+
* Mark a company folder as a software project
|
|
82
|
+
* @description The same act as `markOwnFolderAsSoftwareProject`, on a folder of the company's, and the
|
|
83
|
+
* project is the company's. Its folder permission is "Set who may reach a company folder".
|
|
84
|
+
*
|
|
85
|
+
* A PERSONAL ACCOUNT ENVIRONMENT HAS NO COMPANY FOLDERS: there, this is refused with 409
|
|
86
|
+
* `company_project_in_a_personal_environment`, and nothing is made.
|
|
87
|
+
*
|
|
88
|
+
* WHOEVER MARKS IT HOLDS ADMINISTRATOR ON THE PROJECT from the moment it exists: the identity
|
|
89
|
+
* service places that role in the same act that makes the project (ONPLO-4976), so a company
|
|
90
|
+
* project nobody may manage is never made.
|
|
91
|
+
*/
|
|
92
|
+
post: operations["markCompanyFolderAsSoftwareProject"];
|
|
93
|
+
delete?: never;
|
|
94
|
+
options?: never;
|
|
95
|
+
head?: never;
|
|
96
|
+
patch?: never;
|
|
97
|
+
trace?: never;
|
|
98
|
+
};
|
|
99
|
+
"/software-projects/{software_project_id}": {
|
|
100
|
+
parameters: {
|
|
101
|
+
query?: never;
|
|
102
|
+
header?: never;
|
|
103
|
+
path: {
|
|
104
|
+
software_project_id: components["parameters"]["SoftwareProjectId"];
|
|
105
|
+
};
|
|
106
|
+
cookie?: never;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Read one software project
|
|
110
|
+
* @description THE PROJECT AND ITS SETTINGS, an unmarked one too. Seeing it never opens the code: a file
|
|
111
|
+
* opens in Storage only for someone Storage lets read it.
|
|
112
|
+
*/
|
|
113
|
+
get: operations["getSoftwareProject"];
|
|
114
|
+
put?: never;
|
|
115
|
+
post?: never;
|
|
116
|
+
/**
|
|
117
|
+
* Unmark a software project
|
|
118
|
+
* @description THE FOLDER IS UNTOUCHED: it stays in Storage with its code and versions, and is no longer a
|
|
119
|
+
* software project, so it may be marked again. The project is archived, and its builds,
|
|
120
|
+
* checks, screens and releases stay readable to whoever could read them.
|
|
121
|
+
*
|
|
122
|
+
* UNMARKING ONE ALREADY UNMARKED IS NOT AN ERROR: nothing is left to unmark.
|
|
123
|
+
*/
|
|
124
|
+
delete: operations["unmarkSoftwareProject"];
|
|
125
|
+
options?: never;
|
|
126
|
+
head?: never;
|
|
127
|
+
/**
|
|
128
|
+
* Change a software project's settings
|
|
129
|
+
* @description NAME, STAGING SITE, PRODUCTION SITE, WHERE SCREENS COME FROM. Every field is optional; an
|
|
130
|
+
* omitted field is untouched, and an explicit `null` clears a site.
|
|
131
|
+
*
|
|
132
|
+
* NOT HERE: the folder (`chooseOwnFolderForSoftwareProject`), who looks after it
|
|
133
|
+
* (`handOnSoftwareProject`), and GitHub (`connectSoftwareProjectToGitHub`), each an act of its
|
|
134
|
+
* own.
|
|
135
|
+
*
|
|
136
|
+
* AN UNMARKED PROJECT IS NOT CHANGED: 409 `software_project_unmarked`.
|
|
137
|
+
*/
|
|
138
|
+
patch: operations["updateSoftwareProject"];
|
|
139
|
+
trace?: never;
|
|
140
|
+
};
|
|
141
|
+
"/software-projects/{software_project_id}/looked-after-by": {
|
|
142
|
+
parameters: {
|
|
143
|
+
query?: never;
|
|
144
|
+
header?: never;
|
|
145
|
+
path: {
|
|
146
|
+
software_project_id: components["parameters"]["SoftwareProjectId"];
|
|
147
|
+
};
|
|
148
|
+
cookie?: never;
|
|
149
|
+
};
|
|
150
|
+
get?: never;
|
|
151
|
+
/**
|
|
152
|
+
* Hand on a software project
|
|
153
|
+
* @description WHO LOOKS AFTER IT changes to another member of the account environment, who takes
|
|
154
|
+
* Administrator on the project with it. The one before steps down: their access on the project
|
|
155
|
+
* becomes Editor, a share they were given included, because a person holds one grant on a
|
|
156
|
+
* project (decision 0650). When the folder is their own, they still own it, so they keep full
|
|
157
|
+
* rights over the project for as long as the folder is theirs.
|
|
158
|
+
*
|
|
159
|
+
* HANDING IT TO THE PERSON WHO LOOKS AFTER IT NOW CHANGES NOTHING and refuses nothing.
|
|
160
|
+
*
|
|
161
|
+
* SOMEONE WHO IS NOT A MEMBER IS REFUSED with a 422 on `/body/person_id`, code `not_a_member`.
|
|
162
|
+
* An unmarked project is not handed on: 409 `software_project_unmarked`.
|
|
163
|
+
*/
|
|
164
|
+
put: operations["handOnSoftwareProject"];
|
|
165
|
+
post?: never;
|
|
166
|
+
delete?: never;
|
|
167
|
+
options?: never;
|
|
168
|
+
head?: never;
|
|
169
|
+
patch?: never;
|
|
170
|
+
trace?: never;
|
|
171
|
+
};
|
|
172
|
+
"/software-projects/{software_project_id}/github": {
|
|
173
|
+
parameters: {
|
|
174
|
+
query?: never;
|
|
175
|
+
header?: never;
|
|
176
|
+
path: {
|
|
177
|
+
software_project_id: components["parameters"]["SoftwareProjectId"];
|
|
178
|
+
};
|
|
179
|
+
cookie?: never;
|
|
180
|
+
};
|
|
181
|
+
get?: never;
|
|
182
|
+
/**
|
|
183
|
+
* Connect a software project to a GitHub repository
|
|
184
|
+
* @description "CODE ALSO ON GITHUB": a GitHub connection the Integrations app holds, and the repository on
|
|
185
|
+
* it. Connecting sends the code outside Onplo, so it is an act of its own, held from Manager up,
|
|
186
|
+
* and using the connection is asked of the account environment as Integrations gives it.
|
|
187
|
+
*
|
|
188
|
+
* CONNECTING AGAIN REPLACES the connection and the repository the project had.
|
|
189
|
+
*
|
|
190
|
+
* A CONNECTION THAT IS NOT A GITHUB ONE, OR NOT USABLE HERE, is refused with a 422 on
|
|
191
|
+
* `/body/connection_id`, code `github_connection_not_usable`. An unmarked project is not
|
|
192
|
+
* connected: 409 `software_project_unmarked`.
|
|
193
|
+
*/
|
|
194
|
+
put: operations["connectSoftwareProjectToGitHub"];
|
|
195
|
+
post?: never;
|
|
196
|
+
delete?: never;
|
|
197
|
+
options?: never;
|
|
198
|
+
head?: never;
|
|
199
|
+
patch?: never;
|
|
200
|
+
trace?: never;
|
|
201
|
+
};
|
|
202
|
+
"/software-projects/{software_project_id}/own-folder": {
|
|
203
|
+
parameters: {
|
|
204
|
+
query?: never;
|
|
205
|
+
header?: never;
|
|
206
|
+
path: {
|
|
207
|
+
software_project_id: components["parameters"]["SoftwareProjectId"];
|
|
208
|
+
};
|
|
209
|
+
cookie?: never;
|
|
210
|
+
};
|
|
211
|
+
get?: never;
|
|
212
|
+
/**
|
|
213
|
+
* Choose another folder of your own for a software project
|
|
214
|
+
* @description "FOLDER GONE — CHOOSE ANOTHER FOLDER OR UNMARK IT". Once Trash removes a project's folder for
|
|
215
|
+
* good, the project asks for another. Choosing one asks the same as marking one: the right to
|
|
216
|
+
* share the new folder. The project keeps its id, its name, its settings and its history; old
|
|
217
|
+
* builds keep naming the folder they were built from.
|
|
218
|
+
*
|
|
219
|
+
* ONLY A PROJECT IN A FOLDER OF YOUR OWN chooses one of yours. A company project chooses a
|
|
220
|
+
* company folder (`chooseCompanyFolderForSoftwareProject`), and its id is not found here.
|
|
221
|
+
*
|
|
222
|
+
* A PROJECT WHOSE FOLDER IS STILL THERE OR IN TRASH IS REFUSED with 409 `folder_still_there`:
|
|
223
|
+
* it follows its folder, and a project is never pointed away from a folder that exists.
|
|
224
|
+
* A folder that is not there is refused with `folder_not_found`, one already a software project
|
|
225
|
+
* with `folder_already_a_software_project`, and nothing changes.
|
|
226
|
+
*/
|
|
227
|
+
put: operations["chooseOwnFolderForSoftwareProject"];
|
|
228
|
+
post?: never;
|
|
229
|
+
delete?: never;
|
|
230
|
+
options?: never;
|
|
231
|
+
head?: never;
|
|
232
|
+
patch?: never;
|
|
233
|
+
trace?: never;
|
|
234
|
+
};
|
|
235
|
+
"/software-projects/{software_project_id}/company-folder": {
|
|
236
|
+
parameters: {
|
|
237
|
+
query?: never;
|
|
238
|
+
header?: never;
|
|
239
|
+
path: {
|
|
240
|
+
software_project_id: components["parameters"]["SoftwareProjectId"];
|
|
241
|
+
};
|
|
242
|
+
cookie?: never;
|
|
243
|
+
};
|
|
244
|
+
get?: never;
|
|
245
|
+
/**
|
|
246
|
+
* Choose another company folder for a software project
|
|
247
|
+
* @description The same act as `chooseOwnFolderForSoftwareProject`, for a company project and a company
|
|
248
|
+
* folder, whose folder permission is "Set who may reach a company folder".
|
|
249
|
+
*/
|
|
250
|
+
put: operations["chooseCompanyFolderForSoftwareProject"];
|
|
251
|
+
post?: never;
|
|
252
|
+
delete?: never;
|
|
253
|
+
options?: never;
|
|
254
|
+
head?: never;
|
|
255
|
+
patch?: never;
|
|
256
|
+
trace?: never;
|
|
257
|
+
};
|
|
258
|
+
"/software-projects/{software_project_id}/grants": {
|
|
259
|
+
parameters: {
|
|
260
|
+
query?: never;
|
|
261
|
+
header?: never;
|
|
262
|
+
path: {
|
|
263
|
+
software_project_id: components["parameters"]["SoftwareProjectId"];
|
|
264
|
+
};
|
|
265
|
+
cookie?: never;
|
|
266
|
+
};
|
|
267
|
+
get?: never;
|
|
268
|
+
put?: never;
|
|
269
|
+
/**
|
|
270
|
+
* Share a software project
|
|
271
|
+
* @description ONE OF FOUR ROLES — Viewer, Editor, Manager, Administrator — each the register's
|
|
272
|
+
* `software.role.<this word>`. Commenter is not offered on a project, because comments live on
|
|
273
|
+
* a build or a screen.
|
|
274
|
+
*
|
|
275
|
+
* WITH A MEMBER OR A TEAM OF THIS ACCOUNT ENVIRONMENT. Nobody by that id here, or no such team,
|
|
276
|
+
* is refused (409 `recipient_not_found`). SHARING WITH AN OUTSIDE TESTER IS NOT HERE YET: a
|
|
277
|
+
* share outside the account environment asks Account's permission as well (decision 0658), so
|
|
278
|
+
* `recipient.kind` has no word for an outside person until that half is declared.
|
|
279
|
+
*
|
|
280
|
+
* SHARING AGAIN CHANGES THE SHARE THAT IS THERE. A holder has one grant per object (decision
|
|
281
|
+
* 0650), so a person or a team shared with again takes the new role and the new end and keeps
|
|
282
|
+
* the id. `created` says which it was and the status is `200` either way.
|
|
283
|
+
*
|
|
284
|
+
* `access_until` IS THE MOMENT THIS SHARE ENDS, and the time zone it was chosen in (decision
|
|
285
|
+
* 0650). Left out, the share has no end. A moment that has already passed is refused (422
|
|
286
|
+
* naming `access_until`, `access_until_passed`).
|
|
287
|
+
*
|
|
288
|
+
* NEVER AN AI AGENT'S TO DO, and never a raw key's: a share is a grant of access (403
|
|
289
|
+
* `ring_requires_person`).
|
|
290
|
+
*
|
|
291
|
+
* THE IDENTITY SERVICE KEEPS THE GRANT, AND WRITES IT ITSELF. When it cannot be reached, 503
|
|
292
|
+
* `identity_unavailable`: whether the share landed is not known, so send the same request
|
|
293
|
+
* again.
|
|
294
|
+
*/
|
|
295
|
+
post: operations["shareSoftwareProject"];
|
|
296
|
+
delete?: never;
|
|
297
|
+
options?: never;
|
|
298
|
+
head?: never;
|
|
299
|
+
patch?: never;
|
|
300
|
+
trace?: never;
|
|
301
|
+
};
|
|
302
|
+
"/software-projects/{software_project_id}/grants/{grant_id}": {
|
|
303
|
+
parameters: {
|
|
304
|
+
query?: never;
|
|
305
|
+
header?: never;
|
|
306
|
+
path: {
|
|
307
|
+
software_project_id: components["parameters"]["SoftwareProjectId"];
|
|
308
|
+
/** @description The id sharing the project answered. A share is a grant, and the identity service gives it its id. */
|
|
309
|
+
grant_id: components["parameters"]["SoftwareProjectShareId"];
|
|
310
|
+
};
|
|
311
|
+
cookie?: never;
|
|
312
|
+
};
|
|
313
|
+
get?: never;
|
|
314
|
+
put?: never;
|
|
315
|
+
post?: never;
|
|
316
|
+
/**
|
|
317
|
+
* End a share of a software project
|
|
318
|
+
* @description THE ACCESS STOPS AT ONCE. The share is ended and never deleted, and ending one that has
|
|
319
|
+
* already ended is not an error.
|
|
320
|
+
*
|
|
321
|
+
* ENDED WHERE IT WAS PLACED, as a share is changed (409 `share_placed_elsewhere`). An id that
|
|
322
|
+
* names no share reaching this project is the 404.
|
|
323
|
+
*
|
|
324
|
+
* When the identity service cannot be reached, 503 `identity_unavailable`: whether the share
|
|
325
|
+
* ended is not known, so send the same request again.
|
|
326
|
+
*/
|
|
327
|
+
delete: operations["endSoftwareProjectShare"];
|
|
328
|
+
options?: never;
|
|
329
|
+
head?: never;
|
|
330
|
+
/**
|
|
331
|
+
* Change a share of a software project
|
|
332
|
+
* @description A DIFFERENT ROLE, OR A DIFFERENT END. Every field is optional; an omitted field is untouched,
|
|
333
|
+
* and an explicit `null` on `access_until` removes the end. Both edits land or neither does.
|
|
334
|
+
*
|
|
335
|
+
* CHANGED WHERE IT WAS PLACED. A role held across the whole account environment reaches the
|
|
336
|
+
* project too, and is changed where it was given (409 `share_placed_elsewhere`). An id that
|
|
337
|
+
* names no share reaching this project is the 404.
|
|
338
|
+
*
|
|
339
|
+
* A SHARE THAT HAS ENDED IS NEVER BROUGHT BACK BY CHANGING ITS END (409 `share_ended`).
|
|
340
|
+
*
|
|
341
|
+
* When the identity service cannot be reached, 503 `identity_unavailable`: whether the change
|
|
342
|
+
* landed is not known, so send the same request again.
|
|
343
|
+
*/
|
|
344
|
+
patch: operations["changeSoftwareProjectShare"];
|
|
345
|
+
trace?: never;
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
export type webhooks = Record<string, never>;
|
|
349
|
+
export interface components {
|
|
350
|
+
schemas: {
|
|
351
|
+
/**
|
|
352
|
+
* Format: uuid
|
|
353
|
+
* @description A UUID version 7 (RFC 9562) — sortable by creation, and never a counter. A software project's
|
|
354
|
+
* id is its own, never its folder's: the project can outlive its folder and be given another.
|
|
355
|
+
* @example 019250e1-8f3c-7c21-9a4d-3a2f7b6c1d90
|
|
356
|
+
*/
|
|
357
|
+
Id: string;
|
|
358
|
+
/**
|
|
359
|
+
* @description WHOSE FOLDERS THE PROJECT IS IN. `personal`: a folder of your own, so the project is yours.
|
|
360
|
+
* `company`: a company folder, so the project is the company's; only in a business account
|
|
361
|
+
* environment.
|
|
362
|
+
* @enum {string}
|
|
363
|
+
*/
|
|
364
|
+
OwnerScope: "personal" | "company";
|
|
365
|
+
/**
|
|
366
|
+
* @description What the project is called on every page of Software. One line.
|
|
367
|
+
* @example Customer portal
|
|
368
|
+
*/
|
|
369
|
+
SoftwareProjectName: string;
|
|
370
|
+
/**
|
|
371
|
+
* Format: uri
|
|
372
|
+
* @example https://www.example.com
|
|
373
|
+
*/
|
|
374
|
+
SiteAddress: string;
|
|
375
|
+
/**
|
|
376
|
+
* @description Where the project's screens come from: its specification, a robot walking the staging site,
|
|
377
|
+
* or both.
|
|
378
|
+
* @enum {string}
|
|
379
|
+
*/
|
|
380
|
+
ScreensComeFrom: "specification" | "robot" | "both";
|
|
381
|
+
/**
|
|
382
|
+
* @description WHAT STORAGE LAST SAID OF THE PROJECT'S FOLDER. `there`: the folder is in Storage, wherever it
|
|
383
|
+
* was moved and whatever it is called now. `in_trash`: "Folder in Trash" — no new build starts,
|
|
384
|
+
* everything stays readable, and restoring the folder brings the project back as it was.
|
|
385
|
+
* `gone`: Trash removed it for good — "choose another folder or unmark it".
|
|
386
|
+
* @enum {string}
|
|
387
|
+
*/
|
|
388
|
+
FolderState: "there" | "in_trash" | "gone";
|
|
389
|
+
/**
|
|
390
|
+
* @description The repository on GitHub, as GitHub writes it, `owner/name`.
|
|
391
|
+
* @example example-org/customer-portal
|
|
392
|
+
*/
|
|
393
|
+
GitHubRepository: string;
|
|
394
|
+
/**
|
|
395
|
+
* @description A STORAGE FOLDER MARKED AS A SOFTWARE PROJECT, and the project's own settings. Nothing of the
|
|
396
|
+
* folder's is here: its name, its place and its files are Storage's to answer.
|
|
397
|
+
*/
|
|
398
|
+
SoftwareProject: {
|
|
399
|
+
id: components["schemas"]["Id"];
|
|
400
|
+
name: components["schemas"]["SoftwareProjectName"];
|
|
401
|
+
/** @description The Storage folder the code is in, by its id. A move or a rename keeps it. */
|
|
402
|
+
folder_id: components["schemas"]["Id"];
|
|
403
|
+
folder_state: components["schemas"]["FolderState"];
|
|
404
|
+
owner_scope: components["schemas"]["OwnerScope"];
|
|
405
|
+
/** @description Where builds are tried before release. `null` when none is set. */
|
|
406
|
+
staging_site: components["schemas"]["SiteAddress"] | null;
|
|
407
|
+
/** @description The address people use. `null` when none is set. */
|
|
408
|
+
production_site: components["schemas"]["SiteAddress"] | null;
|
|
409
|
+
screens_come_from: components["schemas"]["ScreensComeFrom"];
|
|
410
|
+
/** @description The member who looks after the project and holds Administrator on it. `null` once that person asked to be forgotten: the project stays the company's and names nobody until it is handed on. */
|
|
411
|
+
looked_after_by: components["schemas"]["Id"] | null;
|
|
412
|
+
/** @description "Code also on GitHub": the repository it is connected to. `null` when it is not. */
|
|
413
|
+
github_repository: components["schemas"]["GitHubRepository"] | null;
|
|
414
|
+
/** @description `true` once the project is unmarked: archived, and read and nothing else. */
|
|
415
|
+
unmarked: boolean;
|
|
416
|
+
/** @description When the folder was marked. */
|
|
417
|
+
created_at: components["schemas"]["Timestamp"];
|
|
418
|
+
};
|
|
419
|
+
/** @description Which folder becomes a software project, and what the project is called. */
|
|
420
|
+
NewSoftwareProject: {
|
|
421
|
+
/** @description The Storage folder, by its id. */
|
|
422
|
+
folder_id: components["schemas"]["Id"];
|
|
423
|
+
name: components["schemas"]["SoftwareProjectName"];
|
|
424
|
+
};
|
|
425
|
+
/** @description A new name, sites, or where screens come from. At least one. */
|
|
426
|
+
SoftwareProjectUpdate: {
|
|
427
|
+
name?: components["schemas"]["SoftwareProjectName"];
|
|
428
|
+
/** @description A new staging site, or `null` to clear it. */
|
|
429
|
+
staging_site?: components["schemas"]["SiteAddress"] | null;
|
|
430
|
+
/** @description A new production site, or `null` to clear it. */
|
|
431
|
+
production_site?: components["schemas"]["SiteAddress"] | null;
|
|
432
|
+
screens_come_from?: components["schemas"]["ScreensComeFrom"];
|
|
433
|
+
};
|
|
434
|
+
SoftwareProjectHandOn: {
|
|
435
|
+
/** @description The member who looks after the project from now on. */
|
|
436
|
+
person_id: components["schemas"]["Id"];
|
|
437
|
+
};
|
|
438
|
+
/** @description Which GitHub connection the code goes out through, and to which repository on it. */
|
|
439
|
+
GitHubRepositoryChoice: {
|
|
440
|
+
/** @description A GitHub connection the Integrations app holds, by its id. */
|
|
441
|
+
connection_id: components["schemas"]["Id"];
|
|
442
|
+
repository: components["schemas"]["GitHubRepository"];
|
|
443
|
+
};
|
|
444
|
+
FolderChoice: {
|
|
445
|
+
/** @description The Storage folder the project is in from now on, by its id. */
|
|
446
|
+
folder_id: components["schemas"]["Id"];
|
|
447
|
+
};
|
|
448
|
+
/**
|
|
449
|
+
* @description WHO A PROJECT IS SHARED WITH, by id and never by name: a member of this account environment,
|
|
450
|
+
* or one of its teams. The outside tester is not here yet (`shareSoftwareProject` says why).
|
|
451
|
+
*/
|
|
452
|
+
SoftwareProjectShareRecipient: {
|
|
453
|
+
/** @enum {string} */
|
|
454
|
+
kind: "person" | "team";
|
|
455
|
+
id: components["schemas"]["Id"];
|
|
456
|
+
};
|
|
457
|
+
/**
|
|
458
|
+
* @description WHAT A SHARE LETS ITS HOLDER DO — the ladder every app has (decision 0969), each the
|
|
459
|
+
* register's `software.role.<this word>`. No Commenter: comments live on a build or a screen.
|
|
460
|
+
* @enum {string}
|
|
461
|
+
*/
|
|
462
|
+
SoftwareProjectShareRole: "viewer" | "editor" | "manager" | "administrator";
|
|
463
|
+
/**
|
|
464
|
+
* @description WHEN A SHARE ENDS: A MOMENT AND THE TIME ZONE IT WAS CHOSEN IN (decision 0650). The shape is
|
|
465
|
+
* Storage's `AccessUntil`, key for key, so a share reads the same in every app.
|
|
466
|
+
*/
|
|
467
|
+
SoftwareProjectShareAccessUntil: {
|
|
468
|
+
/**
|
|
469
|
+
* Format: date-time
|
|
470
|
+
* @description The moment the share ends, RFC 3339 with its offset written out. A request may write
|
|
471
|
+
* it in any offset; an answer writes it in UTC, as every moment here is.
|
|
472
|
+
* @example 2026-11-03T16:00:00Z
|
|
473
|
+
*/
|
|
474
|
+
at: string;
|
|
475
|
+
/**
|
|
476
|
+
* @description The IANA time zone the moment was chosen in.
|
|
477
|
+
* @example Europe/Brussels
|
|
478
|
+
*/
|
|
479
|
+
zone: string;
|
|
480
|
+
};
|
|
481
|
+
/**
|
|
482
|
+
* @description ONE SHARE OF ONE SOFTWARE PROJECT. It is a grant the identity service keeps, so every field
|
|
483
|
+
* of it is that service's answer and Software stores none of it.
|
|
484
|
+
*/
|
|
485
|
+
SoftwareProjectShare: {
|
|
486
|
+
/** @description The grant's id, given by the identity service. */
|
|
487
|
+
id: components["schemas"]["Id"];
|
|
488
|
+
/** @description The project the share was placed on. */
|
|
489
|
+
software_project_id: components["schemas"]["Id"];
|
|
490
|
+
recipient: components["schemas"]["SoftwareProjectShareRecipient"];
|
|
491
|
+
role: components["schemas"]["SoftwareProjectShareRole"];
|
|
492
|
+
/** @description `null` when the share has no end. */
|
|
493
|
+
access_until: components["schemas"]["SoftwareProjectShareAccessUntil"] | null;
|
|
494
|
+
/** @description When it was first given. A later change leaves this as it was. */
|
|
495
|
+
created_at: components["schemas"]["Timestamp"];
|
|
496
|
+
};
|
|
497
|
+
/** @description What sharing a project answers — the share, and whether this request made it. */
|
|
498
|
+
PlacedSoftwareProjectShare: {
|
|
499
|
+
share: components["schemas"]["SoftwareProjectShare"];
|
|
500
|
+
/**
|
|
501
|
+
* @description `true` when this request made the share. `false` when the person or team already held
|
|
502
|
+
* one placed on this project and this request changed it: the id is the one they had.
|
|
503
|
+
*/
|
|
504
|
+
created: boolean;
|
|
505
|
+
};
|
|
506
|
+
/** @description Who to share the project with, what they may do, and when it ends. */
|
|
507
|
+
NewSoftwareProjectShare: {
|
|
508
|
+
recipient: components["schemas"]["SoftwareProjectShareRecipient"];
|
|
509
|
+
role: components["schemas"]["SoftwareProjectShareRole"];
|
|
510
|
+
/** @description Left out or `null`, the share has no end. */
|
|
511
|
+
access_until?: components["schemas"]["SoftwareProjectShareAccessUntil"] | null;
|
|
512
|
+
};
|
|
513
|
+
/** @description A different role, a different end, or both. At least one. */
|
|
514
|
+
SoftwareProjectShareChange: {
|
|
515
|
+
role?: components["schemas"]["SoftwareProjectShareRole"];
|
|
516
|
+
/** @description A new end, or `null` to remove the end. Left out, the end is untouched. */
|
|
517
|
+
access_until?: components["schemas"]["SoftwareProjectShareAccessUntil"] | null;
|
|
518
|
+
};
|
|
519
|
+
/**
|
|
520
|
+
* Format: date-time
|
|
521
|
+
* @description RFC 3339, always UTC, always with the offset written out.
|
|
522
|
+
* @example 2026-09-13T06:06:00Z
|
|
523
|
+
*/
|
|
524
|
+
Timestamp: string;
|
|
525
|
+
/**
|
|
526
|
+
* @description Pass it as `cursor` for the next page. `null` means this was the last page — the only
|
|
527
|
+
* honest end signal, because a short page is not one.
|
|
528
|
+
*/
|
|
529
|
+
NextCursor: string | null;
|
|
530
|
+
/**
|
|
531
|
+
* @description RFC 9457. Served as `application/problem+json`, on every failure, from every operation —
|
|
532
|
+
* one shape to handle rather than one per endpoint. CLOSED, like every other object here:
|
|
533
|
+
* the server validates its own answers against this schema, and an open object is the one
|
|
534
|
+
* shape that check cannot see through.
|
|
535
|
+
*/
|
|
536
|
+
Problem: {
|
|
537
|
+
/**
|
|
538
|
+
* Format: uri
|
|
539
|
+
* @description A stable URI naming the kind of problem. Dereferenceable; documentation lives there.
|
|
540
|
+
* @example https://onplo.com/problems/folder_already_a_software_project
|
|
541
|
+
*/
|
|
542
|
+
type: string;
|
|
543
|
+
/** @example This folder is a software project already */
|
|
544
|
+
title: string;
|
|
545
|
+
status: number;
|
|
546
|
+
/** @description What went wrong THIS time, in a sentence a person could be shown. */
|
|
547
|
+
detail?: string;
|
|
548
|
+
/**
|
|
549
|
+
* Format: uri-reference
|
|
550
|
+
* @description The request path this happened on.
|
|
551
|
+
*/
|
|
552
|
+
instance?: string;
|
|
553
|
+
/**
|
|
554
|
+
* @description The machine name, stable across wording changes. `type` is the URI a human opens; this
|
|
555
|
+
* is what a client branches on.
|
|
556
|
+
* @example folder_already_a_software_project
|
|
557
|
+
*/
|
|
558
|
+
code: string;
|
|
559
|
+
/**
|
|
560
|
+
* Format: uuid
|
|
561
|
+
* @description Quote it in a support request and the exact call can be found. It is also on the
|
|
562
|
+
* `Onplo-Request-Id` response header of every response, failed or not.
|
|
563
|
+
*/
|
|
564
|
+
request_id: string;
|
|
565
|
+
/** @description One entry per field that is wrong. REQUIRED on a 422. */
|
|
566
|
+
errors?: {
|
|
567
|
+
/**
|
|
568
|
+
* @description A JSON Pointer (RFC 6901) at the wrong value, rooted at the REQUEST: `/body/...`
|
|
569
|
+
* for a body field, `/query/...` for a query parameter, `/path/...` for a path
|
|
570
|
+
* segment.
|
|
571
|
+
* @example /body/name
|
|
572
|
+
* @example /query/limit
|
|
573
|
+
*/
|
|
574
|
+
pointer: string;
|
|
575
|
+
code: string;
|
|
576
|
+
detail: string;
|
|
577
|
+
}[];
|
|
578
|
+
};
|
|
579
|
+
};
|
|
580
|
+
responses: {
|
|
581
|
+
/**
|
|
582
|
+
* @description The request could not be read, so nothing in it was looked at — `malformed_request`. Its body
|
|
583
|
+
* is not valid JSON, or its address carries a broken `%`-escape. No field is named, because
|
|
584
|
+
* none was read. Declared on every operation, the ones that take no body included: a body is
|
|
585
|
+
* read before the server knows which operation it was sent to.
|
|
586
|
+
*/
|
|
587
|
+
BadRequest: {
|
|
588
|
+
headers: {
|
|
589
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
590
|
+
[name: string]: unknown;
|
|
591
|
+
};
|
|
592
|
+
content: {
|
|
593
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
594
|
+
/** @enum {unknown} */
|
|
595
|
+
code?: "malformed_request";
|
|
596
|
+
};
|
|
597
|
+
};
|
|
598
|
+
};
|
|
599
|
+
/**
|
|
600
|
+
* @description There is no usable credential on this call — it is missing, malformed, unknown, expired, or
|
|
601
|
+
* it has been REVOKED. A revoked credential fails HERE and not with 403, because it is no
|
|
602
|
+
* longer a credential.
|
|
603
|
+
*/
|
|
604
|
+
Unauthorized: {
|
|
605
|
+
headers: {
|
|
606
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
607
|
+
"WWW-Authenticate": components["headers"]["WwwAuthenticate"];
|
|
608
|
+
[name: string]: unknown;
|
|
609
|
+
};
|
|
610
|
+
content: {
|
|
611
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
612
|
+
/** @enum {unknown} */
|
|
613
|
+
code?: "credential_missing" | "credential_malformed" | "credential_unknown" | "credential_expired" | "credential_revoked";
|
|
614
|
+
};
|
|
615
|
+
};
|
|
616
|
+
};
|
|
617
|
+
/**
|
|
618
|
+
* @description The credential is good and this call is refused anyway. `permission_missing`: the
|
|
619
|
+
* credential does not carry the permission this operation needs, on this software project —
|
|
620
|
+
* and that is the answer whether or not the project exists, so a refusal never tells you one
|
|
621
|
+
* does. `ring_requires_person`: a ring-1 act attempted by a raw key or an agent, refused
|
|
622
|
+
* regardless of scopes; sharing a project is one. `outside_session_scope`: allowed to this
|
|
623
|
+
* subject and not within the scope this session declared at sign-in.
|
|
624
|
+
*
|
|
625
|
+
* ONE COMPONENT ON EVERY OPERATION. THE ENUM IS THE UNION ACROSS EVERY ONPLO CONTRACT, so a
|
|
626
|
+
* client writes one branch.
|
|
627
|
+
*/
|
|
628
|
+
Forbidden: {
|
|
629
|
+
headers: {
|
|
630
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
631
|
+
[name: string]: unknown;
|
|
632
|
+
};
|
|
633
|
+
content: {
|
|
634
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
635
|
+
/** @enum {unknown} */
|
|
636
|
+
code?: "permission_missing" | "ring_requires_person" | "outside_session_scope";
|
|
637
|
+
};
|
|
638
|
+
};
|
|
639
|
+
};
|
|
640
|
+
/**
|
|
641
|
+
* @description No such thing, for a caller who was allowed to ask. A caller who was not is answered 403,
|
|
642
|
+
* the same whether the thing exists or not, so neither answer tells somebody a project
|
|
643
|
+
* exists that they hold no role on.
|
|
644
|
+
*/
|
|
645
|
+
NotFound: {
|
|
646
|
+
headers: {
|
|
647
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
648
|
+
"Cache-Control": components["headers"]["CacheControl"];
|
|
649
|
+
[name: string]: unknown;
|
|
650
|
+
};
|
|
651
|
+
content: {
|
|
652
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
653
|
+
/** @enum {unknown} */
|
|
654
|
+
code?: "not_found";
|
|
655
|
+
};
|
|
656
|
+
};
|
|
657
|
+
};
|
|
658
|
+
/**
|
|
659
|
+
* @description The request body is larger than this API reads — `request_too_large`. `detail` names the
|
|
660
|
+
* limit in bytes. Declared on every operation, for the reason `BadRequest` gives. This API never
|
|
661
|
+
* takes a file: the code stays in Storage.
|
|
662
|
+
*/
|
|
663
|
+
ContentTooLarge: {
|
|
664
|
+
headers: {
|
|
665
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
666
|
+
[name: string]: unknown;
|
|
667
|
+
};
|
|
668
|
+
content: {
|
|
669
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
670
|
+
/** @enum {unknown} */
|
|
671
|
+
code?: "request_too_large";
|
|
672
|
+
};
|
|
673
|
+
};
|
|
674
|
+
};
|
|
675
|
+
/**
|
|
676
|
+
* @description The request body is in a form this API does not read — `unsupported_media_type`. This API
|
|
677
|
+
* reads JSON, sent uncompressed as `application/json`, and nothing else.
|
|
678
|
+
*/
|
|
679
|
+
UnsupportedMediaType: {
|
|
680
|
+
headers: {
|
|
681
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
682
|
+
[name: string]: unknown;
|
|
683
|
+
};
|
|
684
|
+
content: {
|
|
685
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
686
|
+
/** @enum {unknown} */
|
|
687
|
+
code?: "unsupported_media_type";
|
|
688
|
+
};
|
|
689
|
+
};
|
|
690
|
+
};
|
|
691
|
+
/**
|
|
692
|
+
* @description The request parsed and something in it is wrong. `errors` says what, one entry per field,
|
|
693
|
+
* each with a JSON Pointer at it. ONE `code`, because the detail is in `errors`.
|
|
694
|
+
*/
|
|
695
|
+
Unprocessable: {
|
|
696
|
+
headers: {
|
|
697
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
698
|
+
[name: string]: unknown;
|
|
699
|
+
};
|
|
700
|
+
content: {
|
|
701
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
702
|
+
/** @enum {unknown} */
|
|
703
|
+
code?: "unprocessable_request";
|
|
704
|
+
};
|
|
705
|
+
};
|
|
706
|
+
};
|
|
707
|
+
/**
|
|
708
|
+
* @description Something failed that this contract cannot describe — including an answer this API produced
|
|
709
|
+
* and then refused to send, because the contract does not describe that answer either
|
|
710
|
+
* (`response_not_in_contract`). Response validation stays on in production (decision 0551).
|
|
711
|
+
* `request_id` is what finds the call.
|
|
712
|
+
*/
|
|
713
|
+
ServerError: {
|
|
714
|
+
headers: {
|
|
715
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
716
|
+
[name: string]: unknown;
|
|
717
|
+
};
|
|
718
|
+
content: {
|
|
719
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
720
|
+
/** @enum {unknown} */
|
|
721
|
+
code?: "internal_error" | "response_not_in_contract";
|
|
722
|
+
};
|
|
723
|
+
};
|
|
724
|
+
};
|
|
725
|
+
/**
|
|
726
|
+
* @description The authorization service could not be asked, so whether this credential carries the
|
|
727
|
+
* permission is UNKNOWN — `authorization_unavailable`. Never a 403, which would claim the
|
|
728
|
+
* credential lacks the permission when all that is known is that we could not ask.
|
|
729
|
+
*/
|
|
730
|
+
ServiceUnavailable: {
|
|
731
|
+
headers: {
|
|
732
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
733
|
+
[name: string]: unknown;
|
|
734
|
+
};
|
|
735
|
+
content: {
|
|
736
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
737
|
+
/** @enum {unknown} */
|
|
738
|
+
code?: "authorization_unavailable";
|
|
739
|
+
};
|
|
740
|
+
};
|
|
741
|
+
};
|
|
742
|
+
/**
|
|
743
|
+
* @description One of two things could not be reached. `authorization_unavailable`: the authorization
|
|
744
|
+
* service could not be asked, so whether this credential carries the permission is unknown,
|
|
745
|
+
* and nothing was written. `identity_unavailable`: the call was allowed, and the identity
|
|
746
|
+
* service, which writes a share's grant itself, could not then be asked to write it. Whether
|
|
747
|
+
* the share changed is NOT KNOWN, so send the same request again: it is the same act, and its
|
|
748
|
+
* answer says how the share stands. The three operations on a project's share answer this in
|
|
749
|
+
* place of the shared `503`.
|
|
750
|
+
*/
|
|
751
|
+
IdentityUnavailable: {
|
|
752
|
+
headers: {
|
|
753
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
754
|
+
[name: string]: unknown;
|
|
755
|
+
};
|
|
756
|
+
content: {
|
|
757
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
758
|
+
/** @enum {unknown} */
|
|
759
|
+
code?: "authorization_unavailable" | "identity_unavailable";
|
|
760
|
+
};
|
|
761
|
+
};
|
|
762
|
+
};
|
|
763
|
+
/**
|
|
764
|
+
* @description **Onplo has not built this operation yet** — `not_implemented` (decision 0580). It is
|
|
765
|
+
* declared here because the contract is written before the code; it is not a 404, because the
|
|
766
|
+
* address is right, and not a 503, because there is nothing to retry. Treat the operation as
|
|
767
|
+
* absent for now. Nothing about your credential or your request caused this.
|
|
768
|
+
*/
|
|
769
|
+
NotImplemented: {
|
|
770
|
+
headers: {
|
|
771
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
772
|
+
"Cache-Control": components["headers"]["CacheControl"];
|
|
773
|
+
[name: string]: unknown;
|
|
774
|
+
};
|
|
775
|
+
content: {
|
|
776
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
777
|
+
/** @enum {unknown} */
|
|
778
|
+
code?: "not_implemented";
|
|
779
|
+
};
|
|
780
|
+
};
|
|
781
|
+
};
|
|
782
|
+
/**
|
|
783
|
+
* @description Refused, and nothing is made: the folder is not there (`folder_not_found`), or it is a
|
|
784
|
+
* software project already (`folder_already_a_software_project`).
|
|
785
|
+
*/
|
|
786
|
+
MarkRefused: {
|
|
787
|
+
headers: {
|
|
788
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
789
|
+
[name: string]: unknown;
|
|
790
|
+
};
|
|
791
|
+
content: {
|
|
792
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
793
|
+
/** @enum {unknown} */
|
|
794
|
+
code?: "folder_not_found" | "folder_already_a_software_project";
|
|
795
|
+
};
|
|
796
|
+
};
|
|
797
|
+
};
|
|
798
|
+
/**
|
|
799
|
+
* @description Refused, and nothing is made: the folder is not there (`folder_not_found`), it is a software
|
|
800
|
+
* project already (`folder_already_a_software_project`), or this account environment is a
|
|
801
|
+
* personal one, with no company folders (`company_project_in_a_personal_environment`).
|
|
802
|
+
*/
|
|
803
|
+
CompanyMarkRefused: {
|
|
804
|
+
headers: {
|
|
805
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
806
|
+
[name: string]: unknown;
|
|
807
|
+
};
|
|
808
|
+
content: {
|
|
809
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
810
|
+
/** @enum {unknown} */
|
|
811
|
+
code?: "folder_not_found" | "folder_already_a_software_project" | "company_project_in_a_personal_environment";
|
|
812
|
+
};
|
|
813
|
+
};
|
|
814
|
+
};
|
|
815
|
+
/** @description Refused, and nothing changed: the project is unmarked, and an archived project is read and nothing else (`software_project_unmarked`). */
|
|
816
|
+
ProjectUnmarked: {
|
|
817
|
+
headers: {
|
|
818
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
819
|
+
[name: string]: unknown;
|
|
820
|
+
};
|
|
821
|
+
content: {
|
|
822
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
823
|
+
/** @enum {unknown} */
|
|
824
|
+
code?: "software_project_unmarked";
|
|
825
|
+
};
|
|
826
|
+
};
|
|
827
|
+
};
|
|
828
|
+
/**
|
|
829
|
+
* @description Refused, and nothing changed: the project's folder is still there or in Trash, and the
|
|
830
|
+
* project follows it (`folder_still_there`); the folder chosen is not there
|
|
831
|
+
* (`folder_not_found`) or is a software project already (`folder_already_a_software_project`);
|
|
832
|
+
* or the project is unmarked (`software_project_unmarked`).
|
|
833
|
+
*/
|
|
834
|
+
FolderChoiceRefused: {
|
|
835
|
+
headers: {
|
|
836
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
837
|
+
[name: string]: unknown;
|
|
838
|
+
};
|
|
839
|
+
content: {
|
|
840
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
841
|
+
/** @enum {unknown} */
|
|
842
|
+
code?: "folder_still_there" | "folder_not_found" | "folder_already_a_software_project" | "software_project_unmarked";
|
|
843
|
+
};
|
|
844
|
+
};
|
|
845
|
+
};
|
|
846
|
+
/**
|
|
847
|
+
* @description One of three things could not be asked, and in each NOTHING WAS MADE.
|
|
848
|
+
* `authorization_unavailable`: what this credential may do is unknown. `storage_unavailable`:
|
|
849
|
+
* the Storage app, which says whether the folder is there and holds it for the project.
|
|
850
|
+
* `identity_unavailable`: the identity service, which is told the project exists. The same
|
|
851
|
+
* request can be sent again.
|
|
852
|
+
*/
|
|
853
|
+
MarkUnavailable: {
|
|
854
|
+
headers: {
|
|
855
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
856
|
+
[name: string]: unknown;
|
|
857
|
+
};
|
|
858
|
+
content: {
|
|
859
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
860
|
+
/** @enum {unknown} */
|
|
861
|
+
code?: "authorization_unavailable" | "storage_unavailable" | "identity_unavailable";
|
|
862
|
+
};
|
|
863
|
+
};
|
|
864
|
+
};
|
|
865
|
+
/**
|
|
866
|
+
* @description One of two things could not be asked, and in both NOTHING CHANGED.
|
|
867
|
+
* `authorization_unavailable`: what this credential may do is unknown. `storage_unavailable`:
|
|
868
|
+
* the Storage app, which says whether the folder chosen is there and holds it for the project.
|
|
869
|
+
* The same request can be sent again.
|
|
870
|
+
*/
|
|
871
|
+
StorageUnavailable: {
|
|
872
|
+
headers: {
|
|
873
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
874
|
+
[name: string]: unknown;
|
|
875
|
+
};
|
|
876
|
+
content: {
|
|
877
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
878
|
+
/** @enum {unknown} */
|
|
879
|
+
code?: "authorization_unavailable" | "storage_unavailable";
|
|
880
|
+
};
|
|
881
|
+
};
|
|
882
|
+
};
|
|
883
|
+
/**
|
|
884
|
+
* @description One of two things could not be asked, and in both NOTHING CHANGED.
|
|
885
|
+
* `authorization_unavailable`: what this credential may do is unknown.
|
|
886
|
+
* `integrations_unavailable`: the Integrations app, which says whether the connection may be
|
|
887
|
+
* used and keeps its list of what uses it. The same request can be sent again.
|
|
888
|
+
*/
|
|
889
|
+
IntegrationsUnavailable: {
|
|
890
|
+
headers: {
|
|
891
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
892
|
+
[name: string]: unknown;
|
|
893
|
+
};
|
|
894
|
+
content: {
|
|
895
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
896
|
+
/** @enum {unknown} */
|
|
897
|
+
code?: "authorization_unavailable" | "integrations_unavailable";
|
|
898
|
+
};
|
|
899
|
+
};
|
|
900
|
+
};
|
|
901
|
+
};
|
|
902
|
+
parameters: {
|
|
903
|
+
/** @description How many to return. */
|
|
904
|
+
Limit: number;
|
|
905
|
+
/**
|
|
906
|
+
* @description The `next_cursor` of the previous page. Opaque on purpose — its contents are the server's
|
|
907
|
+
* business and change without notice.
|
|
908
|
+
*/
|
|
909
|
+
Cursor: string;
|
|
910
|
+
/** @description Only projects in folders of your own, or only the company's. Left out, both. */
|
|
911
|
+
OwnerScopeFilter: components["schemas"]["OwnerScope"];
|
|
912
|
+
/** @description List unmarked projects too, each carrying that it is unmarked. */
|
|
913
|
+
IncludeUnmarked: boolean;
|
|
914
|
+
SoftwareProjectId: components["schemas"]["Id"];
|
|
915
|
+
/** @description The id sharing the project answered. A share is a grant, and the identity service gives it its id. */
|
|
916
|
+
SoftwareProjectShareId: components["schemas"]["Id"];
|
|
917
|
+
};
|
|
918
|
+
requestBodies: never;
|
|
919
|
+
headers: {
|
|
920
|
+
/**
|
|
921
|
+
* @description The id of this call. Minted by the server as a UUID version 7 and **never taken from a
|
|
922
|
+
* request header** (decision 0553). It rides EVERY response, and it is the same value as the
|
|
923
|
+
* problem document's `request_id` when there is one. Quote it in a support request and the
|
|
924
|
+
* exact call can be found.
|
|
925
|
+
*/
|
|
926
|
+
OnploRequestId: string;
|
|
927
|
+
/**
|
|
928
|
+
* @description The challenge RFC 9110 §11.6.1 and RFC 6750 §3 require on a 401 under a bearer scheme
|
|
929
|
+
* (decision 0569). `Bearer realm="onplo"` alone when no credential was sent; otherwise
|
|
930
|
+
* `Bearer realm="onplo", error="invalid_token"`. It never carries `error_description` and never
|
|
931
|
+
* `scope`. A 403 carries no challenge at all.
|
|
932
|
+
*/
|
|
933
|
+
WwwAuthenticate: string;
|
|
934
|
+
/**
|
|
935
|
+
* @description `no-store`, on the statuses RFC 9110 §15.1 makes cacheable by default — a 404 and a 501
|
|
936
|
+
* (decision 0580). A cached "not built yet" would outlive the day the operation is built, and
|
|
937
|
+
* a cached "no such project" the day the project is shared with you.
|
|
938
|
+
*/
|
|
939
|
+
CacheControl: "no-store";
|
|
940
|
+
};
|
|
941
|
+
pathItems: never;
|
|
942
|
+
}
|
|
943
|
+
export type $defs = Record<string, never>;
|
|
944
|
+
export interface operations {
|
|
945
|
+
listSoftwareProjects: {
|
|
946
|
+
parameters: {
|
|
947
|
+
query?: {
|
|
948
|
+
/** @description How many to return. */
|
|
949
|
+
limit?: components["parameters"]["Limit"];
|
|
950
|
+
/**
|
|
951
|
+
* @description The `next_cursor` of the previous page. Opaque on purpose — its contents are the server's
|
|
952
|
+
* business and change without notice.
|
|
953
|
+
*/
|
|
954
|
+
cursor?: components["parameters"]["Cursor"];
|
|
955
|
+
/** @description Only projects in folders of your own, or only the company's. Left out, both. */
|
|
956
|
+
owner_scope?: components["parameters"]["OwnerScopeFilter"];
|
|
957
|
+
/** @description List unmarked projects too, each carrying that it is unmarked. */
|
|
958
|
+
include_unmarked?: components["parameters"]["IncludeUnmarked"];
|
|
959
|
+
};
|
|
960
|
+
header?: never;
|
|
961
|
+
path?: never;
|
|
962
|
+
cookie?: never;
|
|
963
|
+
};
|
|
964
|
+
requestBody?: never;
|
|
965
|
+
responses: {
|
|
966
|
+
/** @description The software projects. */
|
|
967
|
+
200: {
|
|
968
|
+
headers: {
|
|
969
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
970
|
+
[name: string]: unknown;
|
|
971
|
+
};
|
|
972
|
+
content: {
|
|
973
|
+
"application/json": {
|
|
974
|
+
data: components["schemas"]["SoftwareProject"][];
|
|
975
|
+
next_cursor: components["schemas"]["NextCursor"];
|
|
976
|
+
};
|
|
977
|
+
};
|
|
978
|
+
};
|
|
979
|
+
400: components["responses"]["BadRequest"];
|
|
980
|
+
401: components["responses"]["Unauthorized"];
|
|
981
|
+
403: components["responses"]["Forbidden"];
|
|
982
|
+
413: components["responses"]["ContentTooLarge"];
|
|
983
|
+
415: components["responses"]["UnsupportedMediaType"];
|
|
984
|
+
422: components["responses"]["Unprocessable"];
|
|
985
|
+
500: components["responses"]["ServerError"];
|
|
986
|
+
501: components["responses"]["NotImplemented"];
|
|
987
|
+
503: components["responses"]["ServiceUnavailable"];
|
|
988
|
+
};
|
|
989
|
+
};
|
|
990
|
+
markOwnFolderAsSoftwareProject: {
|
|
991
|
+
parameters: {
|
|
992
|
+
query?: never;
|
|
993
|
+
header?: never;
|
|
994
|
+
path?: never;
|
|
995
|
+
cookie?: never;
|
|
996
|
+
};
|
|
997
|
+
requestBody: {
|
|
998
|
+
content: {
|
|
999
|
+
"application/json": components["schemas"]["NewSoftwareProject"];
|
|
1000
|
+
};
|
|
1001
|
+
};
|
|
1002
|
+
responses: {
|
|
1003
|
+
/** @description The software project, as it now stands. */
|
|
1004
|
+
201: {
|
|
1005
|
+
headers: {
|
|
1006
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
1007
|
+
[name: string]: unknown;
|
|
1008
|
+
};
|
|
1009
|
+
content: {
|
|
1010
|
+
"application/json": components["schemas"]["SoftwareProject"];
|
|
1011
|
+
};
|
|
1012
|
+
};
|
|
1013
|
+
400: components["responses"]["BadRequest"];
|
|
1014
|
+
401: components["responses"]["Unauthorized"];
|
|
1015
|
+
403: components["responses"]["Forbidden"];
|
|
1016
|
+
409: components["responses"]["MarkRefused"];
|
|
1017
|
+
413: components["responses"]["ContentTooLarge"];
|
|
1018
|
+
415: components["responses"]["UnsupportedMediaType"];
|
|
1019
|
+
422: components["responses"]["Unprocessable"];
|
|
1020
|
+
500: components["responses"]["ServerError"];
|
|
1021
|
+
501: components["responses"]["NotImplemented"];
|
|
1022
|
+
503: components["responses"]["MarkUnavailable"];
|
|
1023
|
+
};
|
|
1024
|
+
};
|
|
1025
|
+
markCompanyFolderAsSoftwareProject: {
|
|
1026
|
+
parameters: {
|
|
1027
|
+
query?: never;
|
|
1028
|
+
header?: never;
|
|
1029
|
+
path?: never;
|
|
1030
|
+
cookie?: never;
|
|
1031
|
+
};
|
|
1032
|
+
requestBody: {
|
|
1033
|
+
content: {
|
|
1034
|
+
"application/json": components["schemas"]["NewSoftwareProject"];
|
|
1035
|
+
};
|
|
1036
|
+
};
|
|
1037
|
+
responses: {
|
|
1038
|
+
/** @description The software project, as it now stands. */
|
|
1039
|
+
201: {
|
|
1040
|
+
headers: {
|
|
1041
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
1042
|
+
[name: string]: unknown;
|
|
1043
|
+
};
|
|
1044
|
+
content: {
|
|
1045
|
+
"application/json": components["schemas"]["SoftwareProject"];
|
|
1046
|
+
};
|
|
1047
|
+
};
|
|
1048
|
+
400: components["responses"]["BadRequest"];
|
|
1049
|
+
401: components["responses"]["Unauthorized"];
|
|
1050
|
+
403: components["responses"]["Forbidden"];
|
|
1051
|
+
409: components["responses"]["CompanyMarkRefused"];
|
|
1052
|
+
413: components["responses"]["ContentTooLarge"];
|
|
1053
|
+
415: components["responses"]["UnsupportedMediaType"];
|
|
1054
|
+
422: components["responses"]["Unprocessable"];
|
|
1055
|
+
500: components["responses"]["ServerError"];
|
|
1056
|
+
501: components["responses"]["NotImplemented"];
|
|
1057
|
+
503: components["responses"]["MarkUnavailable"];
|
|
1058
|
+
};
|
|
1059
|
+
};
|
|
1060
|
+
getSoftwareProject: {
|
|
1061
|
+
parameters: {
|
|
1062
|
+
query?: never;
|
|
1063
|
+
header?: never;
|
|
1064
|
+
path: {
|
|
1065
|
+
software_project_id: components["parameters"]["SoftwareProjectId"];
|
|
1066
|
+
};
|
|
1067
|
+
cookie?: never;
|
|
1068
|
+
};
|
|
1069
|
+
requestBody?: never;
|
|
1070
|
+
responses: {
|
|
1071
|
+
/** @description The software project. */
|
|
1072
|
+
200: {
|
|
1073
|
+
headers: {
|
|
1074
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
1075
|
+
[name: string]: unknown;
|
|
1076
|
+
};
|
|
1077
|
+
content: {
|
|
1078
|
+
"application/json": components["schemas"]["SoftwareProject"];
|
|
1079
|
+
};
|
|
1080
|
+
};
|
|
1081
|
+
400: components["responses"]["BadRequest"];
|
|
1082
|
+
401: components["responses"]["Unauthorized"];
|
|
1083
|
+
403: components["responses"]["Forbidden"];
|
|
1084
|
+
404: components["responses"]["NotFound"];
|
|
1085
|
+
413: components["responses"]["ContentTooLarge"];
|
|
1086
|
+
415: components["responses"]["UnsupportedMediaType"];
|
|
1087
|
+
422: components["responses"]["Unprocessable"];
|
|
1088
|
+
500: components["responses"]["ServerError"];
|
|
1089
|
+
501: components["responses"]["NotImplemented"];
|
|
1090
|
+
503: components["responses"]["ServiceUnavailable"];
|
|
1091
|
+
};
|
|
1092
|
+
};
|
|
1093
|
+
unmarkSoftwareProject: {
|
|
1094
|
+
parameters: {
|
|
1095
|
+
query?: never;
|
|
1096
|
+
header?: never;
|
|
1097
|
+
path: {
|
|
1098
|
+
software_project_id: components["parameters"]["SoftwareProjectId"];
|
|
1099
|
+
};
|
|
1100
|
+
cookie?: never;
|
|
1101
|
+
};
|
|
1102
|
+
requestBody?: never;
|
|
1103
|
+
responses: {
|
|
1104
|
+
/** @description The folder is no longer a software project. */
|
|
1105
|
+
204: {
|
|
1106
|
+
headers: {
|
|
1107
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
1108
|
+
[name: string]: unknown;
|
|
1109
|
+
};
|
|
1110
|
+
content?: never;
|
|
1111
|
+
};
|
|
1112
|
+
400: components["responses"]["BadRequest"];
|
|
1113
|
+
401: components["responses"]["Unauthorized"];
|
|
1114
|
+
403: components["responses"]["Forbidden"];
|
|
1115
|
+
404: components["responses"]["NotFound"];
|
|
1116
|
+
413: components["responses"]["ContentTooLarge"];
|
|
1117
|
+
415: components["responses"]["UnsupportedMediaType"];
|
|
1118
|
+
422: components["responses"]["Unprocessable"];
|
|
1119
|
+
500: components["responses"]["ServerError"];
|
|
1120
|
+
501: components["responses"]["NotImplemented"];
|
|
1121
|
+
503: components["responses"]["ServiceUnavailable"];
|
|
1122
|
+
};
|
|
1123
|
+
};
|
|
1124
|
+
updateSoftwareProject: {
|
|
1125
|
+
parameters: {
|
|
1126
|
+
query?: never;
|
|
1127
|
+
header?: never;
|
|
1128
|
+
path: {
|
|
1129
|
+
software_project_id: components["parameters"]["SoftwareProjectId"];
|
|
1130
|
+
};
|
|
1131
|
+
cookie?: never;
|
|
1132
|
+
};
|
|
1133
|
+
requestBody: {
|
|
1134
|
+
content: {
|
|
1135
|
+
"application/json": components["schemas"]["SoftwareProjectUpdate"];
|
|
1136
|
+
};
|
|
1137
|
+
};
|
|
1138
|
+
responses: {
|
|
1139
|
+
/** @description The software project as it now stands. */
|
|
1140
|
+
200: {
|
|
1141
|
+
headers: {
|
|
1142
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
1143
|
+
[name: string]: unknown;
|
|
1144
|
+
};
|
|
1145
|
+
content: {
|
|
1146
|
+
"application/json": components["schemas"]["SoftwareProject"];
|
|
1147
|
+
};
|
|
1148
|
+
};
|
|
1149
|
+
400: components["responses"]["BadRequest"];
|
|
1150
|
+
401: components["responses"]["Unauthorized"];
|
|
1151
|
+
403: components["responses"]["Forbidden"];
|
|
1152
|
+
404: components["responses"]["NotFound"];
|
|
1153
|
+
409: components["responses"]["ProjectUnmarked"];
|
|
1154
|
+
413: components["responses"]["ContentTooLarge"];
|
|
1155
|
+
415: components["responses"]["UnsupportedMediaType"];
|
|
1156
|
+
422: components["responses"]["Unprocessable"];
|
|
1157
|
+
500: components["responses"]["ServerError"];
|
|
1158
|
+
501: components["responses"]["NotImplemented"];
|
|
1159
|
+
503: components["responses"]["ServiceUnavailable"];
|
|
1160
|
+
};
|
|
1161
|
+
};
|
|
1162
|
+
handOnSoftwareProject: {
|
|
1163
|
+
parameters: {
|
|
1164
|
+
query?: never;
|
|
1165
|
+
header?: never;
|
|
1166
|
+
path: {
|
|
1167
|
+
software_project_id: components["parameters"]["SoftwareProjectId"];
|
|
1168
|
+
};
|
|
1169
|
+
cookie?: never;
|
|
1170
|
+
};
|
|
1171
|
+
requestBody: {
|
|
1172
|
+
content: {
|
|
1173
|
+
"application/json": components["schemas"]["SoftwareProjectHandOn"];
|
|
1174
|
+
};
|
|
1175
|
+
};
|
|
1176
|
+
responses: {
|
|
1177
|
+
/** @description The software project, looked after by the person named. */
|
|
1178
|
+
200: {
|
|
1179
|
+
headers: {
|
|
1180
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
1181
|
+
[name: string]: unknown;
|
|
1182
|
+
};
|
|
1183
|
+
content: {
|
|
1184
|
+
"application/json": components["schemas"]["SoftwareProject"];
|
|
1185
|
+
};
|
|
1186
|
+
};
|
|
1187
|
+
400: components["responses"]["BadRequest"];
|
|
1188
|
+
401: components["responses"]["Unauthorized"];
|
|
1189
|
+
403: components["responses"]["Forbidden"];
|
|
1190
|
+
404: components["responses"]["NotFound"];
|
|
1191
|
+
409: components["responses"]["ProjectUnmarked"];
|
|
1192
|
+
413: components["responses"]["ContentTooLarge"];
|
|
1193
|
+
415: components["responses"]["UnsupportedMediaType"];
|
|
1194
|
+
422: components["responses"]["Unprocessable"];
|
|
1195
|
+
500: components["responses"]["ServerError"];
|
|
1196
|
+
501: components["responses"]["NotImplemented"];
|
|
1197
|
+
503: components["responses"]["IdentityUnavailable"];
|
|
1198
|
+
};
|
|
1199
|
+
};
|
|
1200
|
+
connectSoftwareProjectToGitHub: {
|
|
1201
|
+
parameters: {
|
|
1202
|
+
query?: never;
|
|
1203
|
+
header?: never;
|
|
1204
|
+
path: {
|
|
1205
|
+
software_project_id: components["parameters"]["SoftwareProjectId"];
|
|
1206
|
+
};
|
|
1207
|
+
cookie?: never;
|
|
1208
|
+
};
|
|
1209
|
+
requestBody: {
|
|
1210
|
+
content: {
|
|
1211
|
+
"application/json": components["schemas"]["GitHubRepositoryChoice"];
|
|
1212
|
+
};
|
|
1213
|
+
};
|
|
1214
|
+
responses: {
|
|
1215
|
+
/** @description The software project, connected. */
|
|
1216
|
+
200: {
|
|
1217
|
+
headers: {
|
|
1218
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
1219
|
+
[name: string]: unknown;
|
|
1220
|
+
};
|
|
1221
|
+
content: {
|
|
1222
|
+
"application/json": components["schemas"]["SoftwareProject"];
|
|
1223
|
+
};
|
|
1224
|
+
};
|
|
1225
|
+
400: components["responses"]["BadRequest"];
|
|
1226
|
+
401: components["responses"]["Unauthorized"];
|
|
1227
|
+
403: components["responses"]["Forbidden"];
|
|
1228
|
+
404: components["responses"]["NotFound"];
|
|
1229
|
+
409: components["responses"]["ProjectUnmarked"];
|
|
1230
|
+
413: components["responses"]["ContentTooLarge"];
|
|
1231
|
+
415: components["responses"]["UnsupportedMediaType"];
|
|
1232
|
+
422: components["responses"]["Unprocessable"];
|
|
1233
|
+
500: components["responses"]["ServerError"];
|
|
1234
|
+
501: components["responses"]["NotImplemented"];
|
|
1235
|
+
503: components["responses"]["IntegrationsUnavailable"];
|
|
1236
|
+
};
|
|
1237
|
+
};
|
|
1238
|
+
chooseOwnFolderForSoftwareProject: {
|
|
1239
|
+
parameters: {
|
|
1240
|
+
query?: never;
|
|
1241
|
+
header?: never;
|
|
1242
|
+
path: {
|
|
1243
|
+
software_project_id: components["parameters"]["SoftwareProjectId"];
|
|
1244
|
+
};
|
|
1245
|
+
cookie?: never;
|
|
1246
|
+
};
|
|
1247
|
+
requestBody: {
|
|
1248
|
+
content: {
|
|
1249
|
+
"application/json": components["schemas"]["FolderChoice"];
|
|
1250
|
+
};
|
|
1251
|
+
};
|
|
1252
|
+
responses: {
|
|
1253
|
+
/** @description The software project, in its new folder. */
|
|
1254
|
+
200: {
|
|
1255
|
+
headers: {
|
|
1256
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
1257
|
+
[name: string]: unknown;
|
|
1258
|
+
};
|
|
1259
|
+
content: {
|
|
1260
|
+
"application/json": components["schemas"]["SoftwareProject"];
|
|
1261
|
+
};
|
|
1262
|
+
};
|
|
1263
|
+
400: components["responses"]["BadRequest"];
|
|
1264
|
+
401: components["responses"]["Unauthorized"];
|
|
1265
|
+
403: components["responses"]["Forbidden"];
|
|
1266
|
+
404: components["responses"]["NotFound"];
|
|
1267
|
+
409: components["responses"]["FolderChoiceRefused"];
|
|
1268
|
+
413: components["responses"]["ContentTooLarge"];
|
|
1269
|
+
415: components["responses"]["UnsupportedMediaType"];
|
|
1270
|
+
422: components["responses"]["Unprocessable"];
|
|
1271
|
+
500: components["responses"]["ServerError"];
|
|
1272
|
+
501: components["responses"]["NotImplemented"];
|
|
1273
|
+
503: components["responses"]["StorageUnavailable"];
|
|
1274
|
+
};
|
|
1275
|
+
};
|
|
1276
|
+
chooseCompanyFolderForSoftwareProject: {
|
|
1277
|
+
parameters: {
|
|
1278
|
+
query?: never;
|
|
1279
|
+
header?: never;
|
|
1280
|
+
path: {
|
|
1281
|
+
software_project_id: components["parameters"]["SoftwareProjectId"];
|
|
1282
|
+
};
|
|
1283
|
+
cookie?: never;
|
|
1284
|
+
};
|
|
1285
|
+
requestBody: {
|
|
1286
|
+
content: {
|
|
1287
|
+
"application/json": components["schemas"]["FolderChoice"];
|
|
1288
|
+
};
|
|
1289
|
+
};
|
|
1290
|
+
responses: {
|
|
1291
|
+
/** @description The software project, in its new folder. */
|
|
1292
|
+
200: {
|
|
1293
|
+
headers: {
|
|
1294
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
1295
|
+
[name: string]: unknown;
|
|
1296
|
+
};
|
|
1297
|
+
content: {
|
|
1298
|
+
"application/json": components["schemas"]["SoftwareProject"];
|
|
1299
|
+
};
|
|
1300
|
+
};
|
|
1301
|
+
400: components["responses"]["BadRequest"];
|
|
1302
|
+
401: components["responses"]["Unauthorized"];
|
|
1303
|
+
403: components["responses"]["Forbidden"];
|
|
1304
|
+
404: components["responses"]["NotFound"];
|
|
1305
|
+
409: components["responses"]["FolderChoiceRefused"];
|
|
1306
|
+
413: components["responses"]["ContentTooLarge"];
|
|
1307
|
+
415: components["responses"]["UnsupportedMediaType"];
|
|
1308
|
+
422: components["responses"]["Unprocessable"];
|
|
1309
|
+
500: components["responses"]["ServerError"];
|
|
1310
|
+
501: components["responses"]["NotImplemented"];
|
|
1311
|
+
503: components["responses"]["StorageUnavailable"];
|
|
1312
|
+
};
|
|
1313
|
+
};
|
|
1314
|
+
shareSoftwareProject: {
|
|
1315
|
+
parameters: {
|
|
1316
|
+
query?: never;
|
|
1317
|
+
header?: never;
|
|
1318
|
+
path: {
|
|
1319
|
+
software_project_id: components["parameters"]["SoftwareProjectId"];
|
|
1320
|
+
};
|
|
1321
|
+
cookie?: never;
|
|
1322
|
+
};
|
|
1323
|
+
requestBody: {
|
|
1324
|
+
content: {
|
|
1325
|
+
"application/json": components["schemas"]["NewSoftwareProjectShare"];
|
|
1326
|
+
};
|
|
1327
|
+
};
|
|
1328
|
+
responses: {
|
|
1329
|
+
/** @description The share as it now stands, and whether this request made it. */
|
|
1330
|
+
200: {
|
|
1331
|
+
headers: {
|
|
1332
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
1333
|
+
[name: string]: unknown;
|
|
1334
|
+
};
|
|
1335
|
+
content: {
|
|
1336
|
+
"application/json": components["schemas"]["PlacedSoftwareProjectShare"];
|
|
1337
|
+
};
|
|
1338
|
+
};
|
|
1339
|
+
400: components["responses"]["BadRequest"];
|
|
1340
|
+
401: components["responses"]["Unauthorized"];
|
|
1341
|
+
403: components["responses"]["Forbidden"];
|
|
1342
|
+
404: components["responses"]["NotFound"];
|
|
1343
|
+
/** @description Refused: nobody by that id, or no such team, in this account environment (`recipient_not_found`). Nothing was shared. */
|
|
1344
|
+
409: {
|
|
1345
|
+
headers: {
|
|
1346
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
1347
|
+
[name: string]: unknown;
|
|
1348
|
+
};
|
|
1349
|
+
content: {
|
|
1350
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
1351
|
+
/** @enum {unknown} */
|
|
1352
|
+
code?: "recipient_not_found";
|
|
1353
|
+
};
|
|
1354
|
+
};
|
|
1355
|
+
};
|
|
1356
|
+
413: components["responses"]["ContentTooLarge"];
|
|
1357
|
+
415: components["responses"]["UnsupportedMediaType"];
|
|
1358
|
+
422: components["responses"]["Unprocessable"];
|
|
1359
|
+
500: components["responses"]["ServerError"];
|
|
1360
|
+
501: components["responses"]["NotImplemented"];
|
|
1361
|
+
503: components["responses"]["IdentityUnavailable"];
|
|
1362
|
+
};
|
|
1363
|
+
};
|
|
1364
|
+
endSoftwareProjectShare: {
|
|
1365
|
+
parameters: {
|
|
1366
|
+
query?: never;
|
|
1367
|
+
header?: never;
|
|
1368
|
+
path: {
|
|
1369
|
+
software_project_id: components["parameters"]["SoftwareProjectId"];
|
|
1370
|
+
/** @description The id sharing the project answered. A share is a grant, and the identity service gives it its id. */
|
|
1371
|
+
grant_id: components["parameters"]["SoftwareProjectShareId"];
|
|
1372
|
+
};
|
|
1373
|
+
cookie?: never;
|
|
1374
|
+
};
|
|
1375
|
+
requestBody?: never;
|
|
1376
|
+
responses: {
|
|
1377
|
+
/** @description Ended. */
|
|
1378
|
+
204: {
|
|
1379
|
+
headers: {
|
|
1380
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
1381
|
+
[name: string]: unknown;
|
|
1382
|
+
};
|
|
1383
|
+
content?: never;
|
|
1384
|
+
};
|
|
1385
|
+
400: components["responses"]["BadRequest"];
|
|
1386
|
+
401: components["responses"]["Unauthorized"];
|
|
1387
|
+
403: components["responses"]["Forbidden"];
|
|
1388
|
+
404: components["responses"]["NotFound"];
|
|
1389
|
+
/** @description Refused: the access was given across the whole account environment and is ended there (`share_placed_elsewhere`). Nothing was changed. */
|
|
1390
|
+
409: {
|
|
1391
|
+
headers: {
|
|
1392
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
1393
|
+
[name: string]: unknown;
|
|
1394
|
+
};
|
|
1395
|
+
content: {
|
|
1396
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
1397
|
+
/** @enum {unknown} */
|
|
1398
|
+
code?: "share_placed_elsewhere";
|
|
1399
|
+
};
|
|
1400
|
+
};
|
|
1401
|
+
};
|
|
1402
|
+
413: components["responses"]["ContentTooLarge"];
|
|
1403
|
+
415: components["responses"]["UnsupportedMediaType"];
|
|
1404
|
+
422: components["responses"]["Unprocessable"];
|
|
1405
|
+
500: components["responses"]["ServerError"];
|
|
1406
|
+
501: components["responses"]["NotImplemented"];
|
|
1407
|
+
503: components["responses"]["IdentityUnavailable"];
|
|
1408
|
+
};
|
|
1409
|
+
};
|
|
1410
|
+
changeSoftwareProjectShare: {
|
|
1411
|
+
parameters: {
|
|
1412
|
+
query?: never;
|
|
1413
|
+
header?: never;
|
|
1414
|
+
path: {
|
|
1415
|
+
software_project_id: components["parameters"]["SoftwareProjectId"];
|
|
1416
|
+
/** @description The id sharing the project answered. A share is a grant, and the identity service gives it its id. */
|
|
1417
|
+
grant_id: components["parameters"]["SoftwareProjectShareId"];
|
|
1418
|
+
};
|
|
1419
|
+
cookie?: never;
|
|
1420
|
+
};
|
|
1421
|
+
requestBody: {
|
|
1422
|
+
content: {
|
|
1423
|
+
"application/json": components["schemas"]["SoftwareProjectShareChange"];
|
|
1424
|
+
};
|
|
1425
|
+
};
|
|
1426
|
+
responses: {
|
|
1427
|
+
/** @description The share as it now stands. */
|
|
1428
|
+
200: {
|
|
1429
|
+
headers: {
|
|
1430
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
1431
|
+
[name: string]: unknown;
|
|
1432
|
+
};
|
|
1433
|
+
content: {
|
|
1434
|
+
"application/json": components["schemas"]["SoftwareProjectShare"];
|
|
1435
|
+
};
|
|
1436
|
+
};
|
|
1437
|
+
400: components["responses"]["BadRequest"];
|
|
1438
|
+
401: components["responses"]["Unauthorized"];
|
|
1439
|
+
403: components["responses"]["Forbidden"];
|
|
1440
|
+
404: components["responses"]["NotFound"];
|
|
1441
|
+
/**
|
|
1442
|
+
* @description Refused, and nothing was changed: the access was given across the whole account
|
|
1443
|
+
* environment and is changed there (`share_placed_elsewhere`), or the share has ended
|
|
1444
|
+
* (`share_ended`).
|
|
1445
|
+
*/
|
|
1446
|
+
409: {
|
|
1447
|
+
headers: {
|
|
1448
|
+
"Onplo-Request-Id": components["headers"]["OnploRequestId"];
|
|
1449
|
+
[name: string]: unknown;
|
|
1450
|
+
};
|
|
1451
|
+
content: {
|
|
1452
|
+
"application/problem+json": components["schemas"]["Problem"] & {
|
|
1453
|
+
/** @enum {unknown} */
|
|
1454
|
+
code?: "share_placed_elsewhere" | "share_ended";
|
|
1455
|
+
};
|
|
1456
|
+
};
|
|
1457
|
+
};
|
|
1458
|
+
413: components["responses"]["ContentTooLarge"];
|
|
1459
|
+
415: components["responses"]["UnsupportedMediaType"];
|
|
1460
|
+
422: components["responses"]["Unprocessable"];
|
|
1461
|
+
500: components["responses"]["ServerError"];
|
|
1462
|
+
501: components["responses"]["NotImplemented"];
|
|
1463
|
+
503: components["responses"]["IdentityUnavailable"];
|
|
1464
|
+
};
|
|
1465
|
+
};
|
|
1466
|
+
}
|