quickbase-js 1.0.1-beta.0 → 1.1.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/{quickbaseClient.d.ts → quickbase.d.ts} +344 -339
  3. package/dist/{quickbaseClient.js → quickbase.js} +350 -266
  4. package/dist/quickbase.js.map +1 -0
  5. package/log-gen.yaml +3565 -0
  6. package/package.json +11 -7
  7. package/rollup.config.js +2 -2
  8. package/src/code-generation/fix-spec-definitions.ts +417 -68
  9. package/src/code-generation/fix-spec-paths.ts +207 -2
  10. package/src/code-generation/output/quickbase-fixed.json +646 -1122
  11. package/src/generated-unified/QuickbaseClient.ts +9 -8
  12. package/src/log-gen.ts +82 -35
  13. package/src/quickbaseClient.ts +39 -42
  14. package/test-artifacts/test-results.json +173 -1145
  15. package/tests/playwright/qb/auth/cacheSwitching.test.ts +2 -2
  16. package/tests/playwright/qb/auth/fetchTempToken401.test.ts +2 -2
  17. package/tests/playwright/qb/auth/getAppWithUserToken.test.ts +2 -2
  18. package/tests/playwright/qb/auth/getTempToken.test.ts +2 -2
  19. package/tests/playwright/qb/auth/tokenPrefetch.test.ts +2 -2
  20. package/tests/playwright/qb/auth/tokenRenewal.test.ts +2 -2
  21. package/tests/setup.ts +16 -8
  22. package/tests/vitest/qb/apps/getApp.test.ts +37 -43
  23. package/tests/vitest/qb/records/deleteRecords.test.ts +78 -0
  24. package/tests/vitest/qb/records/upsert.test.ts +72 -0
  25. package/tests/vitest/qb/tables/createTable.test.ts +55 -0
  26. package/tests/vitest/qb/tables/deleteTable.test.ts +50 -0
  27. package/tests/vitest/qb/tables/getAppTables.test.ts +43 -64
  28. package/tests/vitest/qb/tables/getTable.test.ts +26 -0
  29. package/tests/vitest/qb/tables/updateTable.test.ts +48 -0
  30. package/tests/vitest/unit/apps/getApp.test.ts +1 -1
  31. package/tests/vitest/unit/auth/fetchTempToken401.test.ts +4 -3
  32. package/tests/vitest/unit/auth/getTempToken.test.ts +8 -9
  33. package/tests/vitest/unit/auth/retryOn401.test.ts +1 -1
  34. package/tests/vitest/unit/auth/two401s.test.ts +1 -1
  35. package/tests/vitest/unit/fields/getFields.test.ts +1 -1
  36. package/tests/vitest/unit/records/deleteRecords.test.ts +118 -0
  37. package/tests/vitest/unit/records/upsert.test.ts +228 -0
  38. package/tests/vitest/unit/tables/createTable.test.ts +62 -0
  39. package/tests/vitest/unit/tables/deleteTable.test.ts +68 -0
  40. package/tests/vitest/unit/tables/getAppTables.test.ts +1 -1
  41. package/tests/vitest/unit/tables/getTable.test.ts +212 -0
  42. package/tests/vitest/unit/tables/updateTable.test.ts +74 -0
  43. package/tsconfig.json +3 -2
  44. package/vitest.config.ts +3 -2
  45. package/dist/quickbaseClient.js.map +0 -1
  46. package/logGen.yaml +0 -1820
  47. package/src/utils.ts +0 -5
@@ -12,297 +12,29 @@
12
12
  "paths": {
13
13
  "/apps": {
14
14
  "post": {
15
- "description": "Creates an application in an account. You must have application creation rights in the respective account. Main properties and application variables can be set with this API.",
16
- "summary": "Create an app",
17
15
  "operationId": "createApp",
18
- "consumes": [
19
- "application/json"
20
- ],
21
- "produces": [
22
- "application/json"
16
+ "summary": "Create a new application",
17
+ "tags": [
18
+ "Apps"
23
19
  ],
24
20
  "parameters": [
25
21
  {
26
- "x-amf-mediaType": "application/json",
22
+ "name": "body",
27
23
  "in": "body",
28
- "name": "generated",
24
+ "required": true,
29
25
  "schema": {
30
- "description": "The example below shows all the properties that can be set with this request. Additional properties that you can see, with the corresponding GET request, cannot be set through this API. See individual property descriptions below for details on how to set or change each.",
31
- "example": {
32
- "value": {
33
- "name": "My App",
34
- "description": "My first app",
35
- "assignToken": true,
36
- "securityProperties": {
37
- "allowClone": false,
38
- "allowExport": false,
39
- "enableAppTokens": false,
40
- "hideFromPublic": false,
41
- "mustBeRealmApproved": true,
42
- "useIPFilter": true
43
- },
44
- "variables": [
45
- {
46
- "name": "Variable1",
47
- "value": "Value1"
48
- }
49
- ]
50
- }
51
- },
52
- "type": "object",
53
- "additionalProperties": false,
54
- "required": [
55
- "name"
56
- ],
57
- "properties": {
58
- "assignToken": {
59
- "description": "Set to true if you would like to assign the app to the user token you used to create the application. The default is false.",
60
- "example": false,
61
- "type": "boolean"
62
- },
63
- "variables": {
64
- "description": "The app variables. A maximum of 10 variables can be inserted at a time. See [About Application Variables](https://help.quickbase.com/user-assistance/variables.html)",
65
- "type": "array",
66
- "items": {
67
- "type": "object",
68
- "additionalProperties": false,
69
- "required": [
70
- "name",
71
- "value"
72
- ],
73
- "properties": {
74
- "name": {
75
- "description": "The name for the variable.",
76
- "type": "string"
77
- },
78
- "value": {
79
- "description": "The value for the variable.",
80
- "type": "string"
81
- }
82
- }
83
- }
84
- },
85
- "name": {
86
- "description": "The app name. You are allowed to create multiple apps with the same name, in the same realm, because they will have different dbid values. We urge you to be careful about doing this.",
87
- "type": "string"
88
- },
89
- "securityProperties": {
90
- "description": "Application security properties.",
91
- "type": "object",
92
- "additionalProperties": false,
93
- "properties": {
94
- "hideFromPublic": {
95
- "description": "Hide from public application searches",
96
- "type": "boolean"
97
- },
98
- "mustBeRealmApproved": {
99
- "description": "Only \"approved\" users may access this application",
100
- "type": "boolean"
101
- },
102
- "allowClone": {
103
- "description": "Allow users who are not administrators to copy",
104
- "type": "boolean"
105
- },
106
- "useIPFilter": {
107
- "description": "Only users logging in from \"approved\" IP addresses may access this application",
108
- "type": "boolean"
109
- },
110
- "allowExport": {
111
- "description": "Allow users who are not administrators to export data",
112
- "type": "boolean"
113
- },
114
- "enableAppTokens": {
115
- "description": "Require Application Tokens",
116
- "type": "boolean"
117
- }
118
- }
119
- },
120
- "description": {
121
- "description": "The description for the app. If this property is left out, the app description will be blank.",
122
- "type": "string"
123
- }
124
- }
26
+ "$ref": "#/definitions/CreateAppRequest"
125
27
  }
126
28
  }
127
29
  ],
128
30
  "responses": {
129
31
  "200": {
130
- "description": "Success",
131
- "x-amf-mediaType": "application/json",
32
+ "description": "Success - application created",
132
33
  "schema": {
133
- "x-amf-examples": {
134
- "Simple Application": {
135
- "created": "2020-03-27T18:34:12Z",
136
- "dateFormat": "MM-DD-YYYY",
137
- "description": "My testing app",
138
- "hasEveryoneOnTheInternet": true,
139
- "id": "bpqe82s1",
140
- "memoryInfo": {
141
- "estMemory": 1,
142
- "estMemoryInclDependentApps": 2
143
- },
144
- "name": "Testing App",
145
- "securityProperties": {
146
- "allowClone": false,
147
- "allowExport": false,
148
- "enableAppTokens": false,
149
- "hideFromPublic": false,
150
- "mustBeRealmApproved": true,
151
- "useIPFilter": true
152
- },
153
- "timeZone": "(UTC-08:00) Pacific Time (US & Canada)",
154
- "updated": "2020-04-03T19:12:20Z",
155
- "dataClassification": "Confidential"
156
- },
157
- "Application with defined variables": {
158
- "description": "This examples shows the response of an application that contains one or more variables.",
159
- "value": {
160
- "created": "2020-03-27T18:34:12Z",
161
- "dateFormat": "MM-DD-YYYY",
162
- "description": "My testing app",
163
- "hasEveryoneOnTheInternet": true,
164
- "id": "bpqe82s1",
165
- "memoryInfo": {
166
- "estMemory": 1,
167
- "estMemoryInclDependentApps": 2
168
- },
169
- "name": "Testing App",
170
- "securityProperties": {
171
- "allowClone": false,
172
- "allowExport": false,
173
- "enableAppTokens": false,
174
- "hideFromPublic": false,
175
- "mustBeRealmApproved": true,
176
- "useIPFilter": true
177
- },
178
- "timeZone": "(UTC-08:00) Pacific Time (US & Canada)",
179
- "variables": [
180
- {
181
- "name": "Project End Date",
182
- "value": "7-16-2025"
183
- },
184
- {
185
- "name": "Project Manager Email",
186
- "value": "p.diaz@company.com"
187
- }
188
- ],
189
- "updated": "2020-04-03T19:12:20Z"
190
- }
191
- }
192
- },
193
- "type": "object",
194
- "additionalProperties": true,
195
- "required": [
196
- "name"
197
- ],
198
- "properties": {
199
- "name": {
200
- "description": "The app name. You are allowed to create multiple apps with the same name, in the same realm, because they will have different dbid values. We urge you to be careful about doing this.",
201
- "type": "string"
202
- },
203
- "description": {
204
- "description": "The description for the app. If this property is left out, the app description will be blank.",
205
- "type": "string"
206
- },
207
- "created": {
208
- "description": "The time and date the app was created, in the ISO 8601 time format YYYY-MM-DDThh:mm:ss.sssZ (in UTC time zone).",
209
- "type": "string"
210
- },
211
- "updated": {
212
- "description": "The time and date the app was last updated, in the ISO 8601 time format YYYY-MM-DDThh:mm:ss.sssZ (in UTC time zone).",
213
- "type": "string"
214
- },
215
- "dateFormat": {
216
- "description": "A description of the format used when displaying date values in this app. Note that this is a browser-only parameter - see the [Field type details](../fieldInfo) page in the API Guide for how time values are returned in API calls. See [About Localizing Dates](https://help.quickbase.com/user-assistance/about_localizing_dates_numbers.html) to set the app’s date format.",
217
- "type": "string"
218
- },
219
- "timeZone": {
220
- "description": "A description of the time zone used when displaying time values in this app. Note that this is a browser-only parameter - see the [Field type details](../fieldInfo) page in the portal for how time values are returned in API calls. See [Set the Time Zone for Both the Application and the Account](https://help.quickbase.com/user-assistance/application_local_timezone.html) to set the application’s time zone.",
221
- "type": "string"
222
- },
223
- "memoryInfo": {
224
- "type": "object",
225
- "description": "Application memory info",
226
- "additionalProperties": false,
227
- "properties": {
228
- "estMemory": {
229
- "type": "number",
230
- "description": "The estimated memory of this application in gigabytes"
231
- },
232
- "estMemoryInclDependentApps": {
233
- "type": "number",
234
- "description": "The estimated memory of this application and all dependent applications in gigabytes"
235
- }
236
- }
237
- },
238
- "id": {
239
- "description": "The unique identifier for this application.",
240
- "type": "string"
241
- },
242
- "hasEveryoneOnTheInternet": {
243
- "description": "Indicates whether app includes Everyone On The Internet access. See [Sharing apps with Everyone on the Internet (EOTI).](https://help.quickbase.com/user-assistance/share_with_everyone_on_internet.html)",
244
- "type": "boolean"
245
- },
246
- "variables": {
247
- "description": "The app variables. See [About Application Variables](https://help.quickbase.com/user-assistance/variables.html)",
248
- "type": "array",
249
- "items": {
250
- "type": "object",
251
- "additionalProperties": true,
252
- "properties": {
253
- "name": {
254
- "description": "Variable name.",
255
- "type": "string"
256
- },
257
- "value": {
258
- "description": "Variable value.",
259
- "type": "string"
260
- }
261
- }
262
- }
263
- },
264
- "dataClassification": {
265
- "description": "The Data Classification label assigned to the application. If Data Classification is not turned on, this will not be returned. If Data Classification is turned on, but application is not labeled, we return “None\". Data Classification labels can be added in the Admin Console by a Realm Administrator for Platform+ plans.",
266
- "type": "string"
267
- },
268
- "securityProperties": {
269
- "description": "Security properties of the application",
270
- "type": "object",
271
- "additionalProperties": true,
272
- "properties": {
273
- "allowClone": {
274
- "description": "Allow users who are not administrators to copy",
275
- "type": "boolean"
276
- },
277
- "allowExport": {
278
- "description": "Allow users who are not administrators to export data",
279
- "type": "boolean"
280
- },
281
- "hideFromPublic": {
282
- "description": "Hide from public application searches",
283
- "type": "boolean"
284
- },
285
- "enableAppTokens": {
286
- "description": "Require Application Tokens",
287
- "type": "boolean"
288
- },
289
- "useIPFilter": {
290
- "description": "Only users logging in from \"approved\" IP addresses may access this application",
291
- "type": "boolean"
292
- },
293
- "mustBeRealmApproved": {
294
- "description": "Only \"approved\" users may access this application",
295
- "type": "boolean"
296
- }
297
- }
298
- }
299
- }
34
+ "$ref": "#/definitions/CreateApp200Response"
300
35
  }
301
36
  }
302
- },
303
- "tags": [
304
- "Apps"
305
- ]
37
+ }
306
38
  }
307
39
  },
308
40
  "/apps/{appId}": {
@@ -317,7 +49,8 @@
317
49
  "name": "appId",
318
50
  "in": "path",
319
51
  "required": true,
320
- "type": "string"
52
+ "type": "string",
53
+ "description": "The application identifier."
321
54
  }
322
55
  ],
323
56
  "responses": {
@@ -672,7 +405,8 @@
672
405
  "name": "appId",
673
406
  "in": "query",
674
407
  "required": true,
675
- "type": "string"
408
+ "type": "string",
409
+ "description": "The application identifier."
676
410
  }
677
411
  ],
678
412
  "responses": {
@@ -686,347 +420,162 @@
686
420
  }
687
421
  }
688
422
  }
689
- }
690
- },
691
- "/tables/{tableId}": {
692
- "get": {
693
- "description": "Gets the properties of an individual table that is part of an application.",
694
- "operationId": "getTable",
695
- "summary": "Get a table",
696
- "consumes": [
697
- "application/json"
698
- ],
699
- "produces": [
700
- "application/json"
423
+ },
424
+ "post": {
425
+ "operationId": "createTable",
426
+ "summary": "Create a new table in an app",
427
+ "tags": [
428
+ "Tables"
701
429
  ],
702
430
  "parameters": [
703
431
  {
704
432
  "name": "appId",
705
- "description": "The unique identifier of an app",
706
- "required": true,
707
433
  "in": "query",
708
- "type": "string"
434
+ "required": true,
435
+ "type": "string",
436
+ "description": "The unique identifier of the app where the table will be created."
709
437
  },
710
438
  {
711
- "name": "tableId",
712
- "description": "The unique identifier (dbid) of the table.",
439
+ "name": "body",
440
+ "in": "body",
713
441
  "required": true,
714
- "in": "path",
715
- "type": "string"
716
- }
717
- ],
718
- "responses": {
719
- "200": {
720
- "description": "Success",
721
- "x-amf-mediaType": "application/json",
722
442
  "schema": {
723
- "example": {
724
- "name": "Example Table",
725
- "created": "2020-03-27T18:34:40Z",
726
- "updated": "2020-04-03T19:12:40Z",
727
- "alias": "_dbid_example_table",
728
- "description": "Table as an example.",
729
- "id": "bpqe82s0",
730
- "nextRecordId": 1,
731
- "nextFieldId": 1,
732
- "defaultSortFieldId": 2,
733
- "defaultSortOrder": "ASC",
734
- "keyFieldId": 3,
735
- "singleRecordName": "Example Record",
736
- "pluralRecordName": "Example Records",
737
- "sizeLimit": "150 MB",
738
- "spaceUsed": "17 MB",
739
- "spaceRemaining": "133 MB"
740
- },
741
443
  "type": "object",
742
- "additionalProperties": true,
743
444
  "properties": {
744
445
  "name": {
745
- "description": "The name of the table.",
746
- "type": "string"
747
- },
748
- "id": {
749
- "description": "The unique identifier (dbid) of the table.",
750
- "type": "string"
751
- },
752
- "alias": {
753
- "description": "The automatically-created table alias for the table.",
754
- "type": "string"
446
+ "type": "string",
447
+ "description": "The name of the table."
755
448
  },
756
449
  "description": {
757
- "description": "The description of the table, as configured by an application administrator.",
758
- "type": "string"
759
- },
760
- "created": {
761
- "description": "The time and date when the table was created, in the ISO 8601 time format YYYY-MM-DDThh:mm:ss.sssZ (in UTC time zone).",
762
- "type": "string"
763
- },
764
- "updated": {
765
- "description": "The time and date when the table schema or data was last updated, in the ISO 8601 time format YYYY-MM-DDThh:mm:ss.sssZ (in UTC time zone).",
766
- "type": "string"
767
- },
768
- "nextRecordId": {
769
- "description": "The incremental Record ID that will be used when the next record is created, as determined when the API call was ran.",
770
- "type": "integer"
771
- },
772
- "nextFieldId": {
773
- "description": "The incremental Field ID that will be used when the next field is created, as determined when the API call was ran.",
774
- "type": "integer"
775
- },
776
- "defaultSortFieldId": {
777
- "description": "The id of the field that is configured for default sorting.",
778
- "type": "integer"
779
- },
780
- "defaultSortOrder": {
781
- "description": "The configuration of the default sort order on the table.",
782
- "enum": [
783
- "ASC",
784
- "DESC"
785
- ],
786
- "type": "string"
787
- },
788
- "keyFieldId": {
789
- "description": "The id of the field that is configured to be the key on this table, which is usually the Quickbase Record ID.",
790
- "type": "integer"
450
+ "type": "string",
451
+ "description": "The description of the table."
791
452
  },
792
453
  "singleRecordName": {
793
- "description": "The builder-configured singular noun of the table.",
794
- "type": "string"
454
+ "type": "string",
455
+ "description": "Singular noun for records."
795
456
  },
796
457
  "pluralRecordName": {
797
- "description": "The builder-configured plural noun of the table.",
798
- "type": "string"
799
- },
800
- "sizeLimit": {
801
- "description": "The size limit for the table.",
802
- "type": "string"
803
- },
804
- "spaceUsed": {
805
- "description": "The amount of space currently being used by the table.",
806
- "type": "string"
807
- },
808
- "spaceRemaining": {
809
- "description": "The amount of space remaining for use by the table.",
810
- "type": "string"
458
+ "type": "string",
459
+ "description": "Plural noun for records."
811
460
  }
812
- }
461
+ },
462
+ "required": [
463
+ "name"
464
+ ]
813
465
  }
814
466
  }
815
- },
816
- "tags": [
817
- "Tables"
818
- ]
467
+ ],
468
+ "responses": {
469
+ "200": {
470
+ "description": "Success - table created",
471
+ "schema": {
472
+ "$ref": "#/definitions/Table"
473
+ }
474
+ }
475
+ }
476
+ }
477
+ },
478
+ "/tables/{tableId}": {
479
+ "get": {
480
+ "operationId": "getTable",
481
+ "summary": "Get a table by ID",
482
+ "tags": [
483
+ "Tables"
484
+ ],
485
+ "parameters": [
486
+ {
487
+ "name": "tableId",
488
+ "in": "path",
489
+ "required": true,
490
+ "type": "string",
491
+ "description": "The table identifier (dbid)."
492
+ },
493
+ {
494
+ "name": "appId",
495
+ "in": "query",
496
+ "required": true,
497
+ "type": "string",
498
+ "description": "The unique identifier of the app containing the table."
499
+ }
500
+ ],
501
+ "responses": {
502
+ "200": {
503
+ "description": "Success - table retrieved",
504
+ "schema": {
505
+ "$ref": "#/definitions/Table"
506
+ }
507
+ }
508
+ }
819
509
  },
820
510
  "post": {
821
- "description": "Updates the main properties of a specific table. Any properties of the table that you do not specify in the request body will remain unchanged.",
822
- "summary": "Update a table",
823
511
  "operationId": "updateTable",
824
- "consumes": [
825
- "application/json"
826
- ],
827
- "produces": [
828
- "application/json"
512
+ "summary": "Update a table by ID",
513
+ "tags": [
514
+ "Tables"
829
515
  ],
830
516
  "parameters": [
831
517
  {
832
- "name": "appId",
833
- "description": "The unique identifier of an app",
518
+ "name": "tableId",
519
+ "in": "path",
834
520
  "required": true,
835
- "in": "query",
836
- "type": "string"
521
+ "type": "string",
522
+ "description": "The table identifier (dbid)."
837
523
  },
838
524
  {
839
- "name": "tableId",
840
- "description": "The unique identifier (dbid) of the table.",
525
+ "name": "appId",
526
+ "in": "query",
841
527
  "required": true,
842
- "in": "path",
843
- "type": "string"
528
+ "type": "string",
529
+ "description": "The unique identifier of the app containing the table."
844
530
  },
845
531
  {
846
- "x-amf-mediaType": "application/json",
532
+ "name": "body",
847
533
  "in": "body",
848
- "name": "generated",
534
+ "required": true,
849
535
  "schema": {
850
- "description": "The example below shows all the properties that can be changed with this request. Additional properties that you can see with the corresponding GET request cannot be set through this API.",
851
- "example": {
852
- "name": "My table",
853
- "description": "my first table",
854
- "singleRecordName": "record",
855
- "pluralRecordName": "records"
856
- },
857
- "type": "object",
858
- "additionalProperties": true,
859
- "properties": {
860
- "name": {
861
- "description": "The name for the table.",
862
- "type": "string"
863
- },
864
- "pluralRecordName": {
865
- "description": "The plural noun for records in the table. If this value is not passed the default value is 'Records'.",
866
- "type": "string"
867
- },
868
- "singleRecordName": {
869
- "description": "The singular noun for records in the table. If this value is not passed the default value is 'Record'.",
870
- "type": "string"
871
- },
872
- "description": {
873
- "description": "The description for the table. If this value is not passed the default value is blank.",
874
- "type": "string"
875
- }
876
- }
536
+ "$ref": "#/definitions/UpdateTableRequest"
877
537
  }
878
538
  }
879
539
  ],
880
540
  "responses": {
881
541
  "200": {
882
- "description": "Success",
883
- "x-amf-mediaType": "application/json",
542
+ "description": "Success - table updated",
884
543
  "schema": {
885
- "example": {
886
- "name": "Example Table",
887
- "created": "2020-03-27T18:34:40Z",
888
- "updated": "2020-04-03T19:12:40Z",
889
- "alias": "_dbid_example_table",
890
- "description": "Table as an example.",
891
- "id": "bpqe82s0",
892
- "nextRecordId": 1,
893
- "nextFieldId": 1,
894
- "defaultSortFieldId": 2,
895
- "defaultSortOrder": "ASC",
896
- "keyFieldId": 3,
897
- "singleRecordName": "Example Record",
898
- "pluralRecordName": "Example Records",
899
- "sizeLimit": "150 MB",
900
- "spaceUsed": "17 MB",
901
- "spaceRemaining": "133 MB"
902
- },
903
- "type": "object",
904
- "additionalProperties": true,
905
- "properties": {
906
- "name": {
907
- "description": "The name of the table.",
908
- "type": "string"
909
- },
910
- "id": {
911
- "description": "The unique identifier (dbid) of the table.",
912
- "type": "string"
913
- },
914
- "alias": {
915
- "description": "The automatically-created table alias for the table.",
916
- "type": "string"
917
- },
918
- "description": {
919
- "description": "The description of the table, as configured by an application administrator.",
920
- "type": "string"
921
- },
922
- "created": {
923
- "description": "The time and date when the table was created, in the ISO 8601 time format YYYY-MM-DDThh:mm:ss.sssZ (in UTC time zone).",
924
- "type": "string"
925
- },
926
- "updated": {
927
- "description": "The time and date when the table schema or data was last updated, in the ISO 8601 time format YYYY-MM-DDThh:mm:ss.sssZ (in UTC time zone).",
928
- "type": "string"
929
- },
930
- "nextRecordId": {
931
- "description": "The incremental Record ID that will be used when the next record is created, as determined when the API call was ran.",
932
- "type": "integer"
933
- },
934
- "nextFieldId": {
935
- "description": "The incremental Field ID that will be used when the next field is created, as determined when the API call was ran.",
936
- "type": "integer"
937
- },
938
- "defaultSortFieldId": {
939
- "description": "The id of the field that is configured for default sorting.",
940
- "type": "integer"
941
- },
942
- "defaultSortOrder": {
943
- "description": "The configuration of the default sort order on the table.",
944
- "enum": [
945
- "ASC",
946
- "DESC"
947
- ],
948
- "type": "string"
949
- },
950
- "keyFieldId": {
951
- "description": "The id of the field that is configured to be the key on this table, which is usually the Quickbase Record ID.",
952
- "type": "integer"
953
- },
954
- "singleRecordName": {
955
- "description": "The builder-configured singular noun of the table.",
956
- "type": "string"
957
- },
958
- "pluralRecordName": {
959
- "description": "The builder-configured plural noun of the table.",
960
- "type": "string"
961
- },
962
- "sizeLimit": {
963
- "description": "The size limit for the table.",
964
- "type": "string"
965
- },
966
- "spaceUsed": {
967
- "description": "The amount of space currently being used by the table.",
968
- "type": "string"
969
- },
970
- "spaceRemaining": {
971
- "description": "The amount of space remaining for use by the table.",
972
- "type": "string"
973
- }
974
- }
544
+ "$ref": "#/definitions/Table"
975
545
  }
976
546
  }
977
- },
978
- "tags": [
979
- "Tables"
980
- ]
547
+ }
981
548
  },
982
549
  "delete": {
983
- "description": "Deletes a specific table in an application, including all of the data within it.",
984
550
  "operationId": "deleteTable",
985
- "summary": "Delete a table",
986
- "consumes": [
987
- "application/json"
988
- ],
989
- "produces": [
990
- "application/json"
551
+ "summary": "Delete a table by ID",
552
+ "tags": [
553
+ "Tables"
991
554
  ],
992
555
  "parameters": [
993
556
  {
994
- "name": "appId",
995
- "description": "The unique identifier of an app",
557
+ "name": "tableId",
558
+ "in": "path",
996
559
  "required": true,
997
- "in": "query",
998
- "type": "string"
560
+ "type": "string",
561
+ "description": "The table identifier (dbid)."
999
562
  },
1000
563
  {
1001
- "name": "tableId",
1002
- "description": "The unique identifier (dbid) of the table.",
564
+ "name": "appId",
565
+ "in": "query",
1003
566
  "required": true,
1004
- "in": "path",
1005
- "type": "string"
567
+ "type": "string",
568
+ "description": "The unique identifier of the app containing the table."
1006
569
  }
1007
570
  ],
1008
571
  "responses": {
1009
572
  "200": {
1010
- "description": "Success",
1011
- "x-amf-mediaType": "application/json",
573
+ "description": "Success - table deleted",
1012
574
  "schema": {
1013
- "example": {
1014
- "deletedTableId": "bck7gp3q2"
1015
- },
1016
- "type": "object",
1017
- "additionalProperties": true,
1018
- "properties": {
1019
- "deletedTableId": {
1020
- "description": "The deleted table id.",
1021
- "type": "string"
1022
- }
1023
- }
575
+ "$ref": "#/definitions/DeleteTableResponse"
1024
576
  }
1025
577
  }
1026
- },
1027
- "tags": [
1028
- "Tables"
1029
- ]
578
+ }
1030
579
  }
1031
580
  },
1032
581
  "/tables/{tableId}/relationships": {
@@ -2166,7 +1715,8 @@
2166
1715
  "name": "reportId",
2167
1716
  "in": "path",
2168
1717
  "required": true,
2169
- "type": "string"
1718
+ "type": "string",
1719
+ "description": "The report identifier."
2170
1720
  },
2171
1721
  {
2172
1722
  "name": "generated",
@@ -2202,13 +1752,15 @@
2202
1752
  "name": "tableId",
2203
1753
  "in": "query",
2204
1754
  "required": true,
2205
- "type": "string"
1755
+ "type": "string",
1756
+ "description": "The table identifier (dbid)."
2206
1757
  },
2207
1758
  {
2208
1759
  "name": "includeFieldPerms",
2209
1760
  "in": "query",
2210
1761
  "required": false,
2211
- "type": "boolean"
1762
+ "type": "boolean",
1763
+ "description": "Whether to include field permissions."
2212
1764
  }
2213
1765
  ],
2214
1766
  "responses": {
@@ -4485,441 +4037,66 @@
4485
4037
  },
4486
4038
  "/records": {
4487
4039
  "post": {
4488
- "description": "Insert and/or update record(s) in a table. In this single API call, inserts and updates can be submitted. Update can use the key field on the table, or any other supported unique field. Refer to the [Field types page](../fieldInfo) for more information about how each field type should be formatted. This operation allows for incremental processing of successful records, even when some of the records fail. \n**Note:** This endpoint supports a maximum payload size of 40MB.",
4489
- "summary": "Insert/Update record(s)",
4490
4040
  "operationId": "upsert",
4491
- "consumes": [
4492
- "application/json"
4493
- ],
4494
- "produces": [
4495
- "application/json"
4041
+ "summary": "Upsert records in a table",
4042
+ "tags": [
4043
+ "Records"
4496
4044
  ],
4497
4045
  "parameters": [
4498
4046
  {
4499
- "x-amf-mediaType": "application/json",
4047
+ "name": "body",
4500
4048
  "in": "body",
4501
- "name": "generated",
4049
+ "required": true,
4502
4050
  "schema": {
4503
- "x-amf-examples": {
4504
- "Insert record": {
4505
- "value": {
4506
- "to": "bck7gp3q2",
4507
- "data": [
4508
- {
4509
- "6": {
4510
- "value": "This is my text"
4511
- },
4512
- "7": {
4513
- "value": 10
4514
- },
4515
- "8": {
4516
- "value": "2019-12-18T08:00:00Z"
4517
- },
4518
- "9": {
4519
- "value": [
4520
- "a",
4521
- "b"
4522
- ]
4523
- },
4524
- "10": {
4525
- "value": true
4526
- },
4527
- "11": {
4528
- "value": "user@quickbase.com"
4529
- },
4530
- "12": {
4531
- "value": "www.quickbase.com"
4532
- },
4533
- "13": {
4534
- "value": [
4535
- {
4536
- "id": "123456.ab1s"
4537
- },
4538
- {
4539
- "id": "254789.mkgp"
4540
- },
4541
- {
4542
- "id": "789654.vc2s"
4543
- }
4544
- ]
4545
- }
4546
- }
4547
- ],
4548
- "fieldsToReturn": [
4549
- 6,
4550
- 7,
4551
- 8,
4552
- 9,
4553
- 10,
4554
- 11,
4555
- 12,
4556
- 13
4557
- ]
4558
- }
4559
- },
4560
- "Update existing record": {
4561
- "description": "For updating an existing record, add a mapping of the table key field ID (defaults to '3') to the record ID, in the data array. In the following example, we update the first record.",
4562
- "value": {
4563
- "to": "bck7gp3q2",
4564
- "data": [
4565
- {
4566
- "3": {
4567
- "value": 1
4568
- },
4569
- "6": {
4570
- "value": "This is my new text"
4571
- },
4572
- "7": {
4573
- "value": 20
4574
- },
4575
- "9": {
4576
- "value": [
4577
- "c",
4578
- "d"
4579
- ]
4580
- },
4581
- "10": {
4582
- "value": false
4583
- },
4584
- "11": {
4585
- "value": "newuser@quickbase.com"
4586
- }
4587
- }
4588
- ],
4589
- "fieldsToReturn": [
4590
- 6,
4591
- 7,
4592
- 9,
4593
- 10,
4594
- 11
4595
- ]
4596
- }
4597
- }
4598
- },
4599
- "type": "object",
4600
- "additionalProperties": true,
4601
- "required": [
4602
- "to"
4603
- ],
4604
- "properties": {
4605
- "to": {
4606
- "description": "The table identifier.",
4607
- "example": "bck7gp3q2",
4608
- "type": "string",
4609
- "minLength": 1
4610
- },
4611
- "data": {
4612
- "description": "Record data array, where each record contains key-value mappings of fields to be defined/updated and their values.",
4613
- "type": "array",
4614
- "items": {
4615
- "$ref": "#/definitions/Record"
4616
- }
4617
- },
4618
- "mergeFieldId": {
4619
- "description": "The merge field id.",
4620
- "example": 7,
4621
- "type": "integer"
4622
- },
4623
- "fieldsToReturn": {
4624
- "description": "Specify an array of field ids that will return data for any updates or added record. Record ID (FID 3) is always returned if any field ID is requested.",
4625
- "type": "array",
4626
- "items": {
4627
- "type": "integer"
4628
- }
4629
- }
4630
- }
4051
+ "$ref": "#/definitions/UpsertRequest"
4631
4052
  }
4632
4053
  }
4633
4054
  ],
4634
4055
  "responses": {
4635
4056
  "200": {
4636
- "description": "",
4637
- "x-amf-mediaType": "application/json",
4057
+ "description": "Success - all records processed successfully",
4638
4058
  "schema": {
4639
- "description": "A successful response that includes details on the records added, updated or unchanged. In the example below, the table previously had ten records with IDs from 1 through 10. The user posts an upsert that updates the value of record 1 and adds two new records, all successfully.",
4640
- "example": {
4641
- "value": {
4642
- "data": [
4643
- {
4644
- "3": {
4645
- "value": 1
4646
- },
4647
- "6": {
4648
- "value": "Updating this record"
4649
- },
4650
- "7": {
4651
- "value": 10
4652
- },
4653
- "8": {
4654
- "value": "2019-12-18T08:00:00.000Z"
4655
- }
4656
- },
4657
- {
4658
- "3": {
4659
- "value": 11
4660
- },
4661
- "6": {
4662
- "value": "This is my text"
4663
- },
4664
- "7": {
4665
- "value": 15
4666
- },
4667
- "8": {
4668
- "value": "2019-12-19T08:00:00.000Z"
4669
- }
4670
- },
4671
- {
4672
- "3": {
4673
- "value": 12
4674
- },
4675
- "6": {
4676
- "value": "This is my other text"
4677
- },
4678
- "7": {
4679
- "value": 20
4680
- },
4681
- "8": {
4682
- "value": "2019-12-20T08:00:00.000Z"
4683
- }
4684
- }
4685
- ],
4686
- "metadata": {
4687
- "createdRecordIds": [
4688
- 11,
4689
- 12
4690
- ],
4691
- "totalNumberOfRecordsProcessed": 3,
4692
- "unchangedRecordIds": [],
4693
- "updatedRecordIds": [
4694
- 1
4695
- ]
4696
- }
4697
- }
4698
- },
4699
- "type": "object",
4700
- "additionalProperties": true,
4701
- "properties": {
4702
- "metadata": {
4703
- "description": "Information about created records, updated records, referenced but unchanged records, and records having any errors while being processed.",
4704
- "type": "object",
4705
- "additionalProperties": true,
4706
- "properties": {
4707
- "createdRecordIds": {
4708
- "description": "Array containing the created record ids.",
4709
- "type": "array",
4710
- "items": {
4711
- "type": "integer"
4712
- }
4713
- },
4714
- "lineErrors": {
4715
- "description": "This will only be returned in the case of failed records. It is a collection of errors that occurred when processing the incoming data that resulted in records not being processed. Each object has a key representing the sequence number of the record in the original payload (starting from 1). The value is a list of errors occurred.",
4716
- "type": "object",
4717
- "additionalProperties": true
4718
- },
4719
- "unchangedRecordIds": {
4720
- "description": "Array containing the unchanged record ids.",
4721
- "type": "array",
4722
- "items": {
4723
- "type": "integer"
4724
- }
4725
- },
4726
- "updatedRecordIds": {
4727
- "description": "Array containing the updated record ids.",
4728
- "type": "array",
4729
- "items": {
4730
- "type": "integer"
4731
- }
4732
- },
4733
- "totalNumberOfRecordsProcessed": {
4734
- "description": "Number of records processed. Includes successful and failed record updates.",
4735
- "type": "integer"
4736
- }
4737
- }
4738
- },
4739
- "data": {
4740
- "description": "The data that is expected to be returned.",
4741
- "type": "array",
4742
- "items": {
4743
- "$ref": "#/definitions/Upsert200Response"
4744
- }
4745
- }
4746
- }
4059
+ "$ref": "#/definitions/Upsert200Response"
4747
4060
  }
4748
4061
  },
4749
4062
  "207": {
4750
- "description": "",
4751
- "x-amf-mediaType": "application/json",
4752
- "schema": {
4753
- "description": "Receiving this status code indicates that some (or all) of the individual records being handled had problems and were not processed successfully. The response will be reported under the 'lineErrors' element and indicate the total number of records processed and the errors that occurred with each record. The record IDs of records created, updated, and referenced but unchanged, will be returned in the 'createdRecordIds', 'updatedRecordIds', and 'unchangedRecordIds' elements respectively. \nIn the example below, a user tries to add three records to a table that previously had ten records with IDs from 1 through 10. The first and third records of the request are valid and create the 11th and 12th records in the table; the second record has a problem that prevents it from being processed.",
4754
- "example": {
4755
- "value": {
4756
- "data": [],
4757
- "metadata": {
4758
- "createdRecordIds": [
4759
- 11,
4760
- 12
4761
- ],
4762
- "lineErrors": {
4763
- "2": [
4764
- "Incompatible value for field with ID \"6\"."
4765
- ]
4766
- },
4767
- "totalNumberOfRecordsProcessed": 3,
4768
- "unchangedRecordIds": [],
4769
- "updatedRecordIds": []
4770
- }
4771
- }
4772
- },
4773
- "type": "object",
4774
- "additionalProperties": true,
4775
- "properties": {
4776
- "metadata": {
4777
- "description": "Information about created records, updated records, referenced but unchanged records, and records having any errors while being processed.",
4778
- "type": "object",
4779
- "additionalProperties": true,
4780
- "properties": {
4781
- "createdRecordIds": {
4782
- "description": "Array containing the created record ids.",
4783
- "type": "array",
4784
- "items": {
4785
- "type": "integer"
4786
- }
4787
- },
4788
- "lineErrors": {
4789
- "description": "This will only be returned in the case of failed records. It is a collection of errors that occurred when processing the incoming data that resulted in records not being processed. Each object has a key representing the sequence number of the record in the original payload (starting from 1). The value is a list of errors occurred.",
4790
- "type": "object",
4791
- "additionalProperties": true
4792
- },
4793
- "unchangedRecordIds": {
4794
- "description": "Array containing the unchanged record ids.",
4795
- "type": "array",
4796
- "items": {
4797
- "type": "integer"
4798
- }
4799
- },
4800
- "updatedRecordIds": {
4801
- "description": "Array containing the updated record ids.",
4802
- "type": "array",
4803
- "items": {
4804
- "type": "integer"
4805
- }
4806
- },
4807
- "totalNumberOfRecordsProcessed": {
4808
- "description": "Number of records processed. Includes successful and failed record updates.",
4809
- "type": "integer"
4810
- }
4811
- }
4812
- },
4813
- "data": {
4814
- "description": "The data that is expected to be returned.",
4815
- "type": "array",
4816
- "items": {
4817
- "$ref": "#/definitions/Upsert200Response"
4818
- }
4819
- }
4820
- }
4821
- }
4822
- },
4823
- "400": {
4824
- "description": "",
4825
- "x-amf-mediaType": "application/json",
4063
+ "description": "Multi-Status - partial success with some errors",
4826
4064
  "schema": {
4827
- "description": "There was problem in the format of the request. This prevented the entire request from processing any records. The error response will be in the [standard format](../errors).",
4828
- "example": {
4829
- "message": "Bad request",
4830
- "description": "Data object cannot be empty."
4831
- },
4832
- "type": "object",
4833
- "additionalProperties": true,
4834
- "properties": {
4835
- "message": {
4836
- "description": "The type of error found.",
4837
- "type": "string"
4838
- },
4839
- "description": {
4840
- "description": "The description for the occurence of the error.",
4841
- "type": "string"
4842
- }
4843
- }
4065
+ "$ref": "#/definitions/Upsert207Response"
4844
4066
  }
4845
4067
  }
4846
- },
4847
- "tags": [
4848
- "Records"
4849
- ]
4068
+ }
4850
4069
  },
4851
4070
  "delete": {
4852
- "description": "Deletes record(s) in a table based on a query. Alternatively, all records in the table can be deleted.",
4853
- "summary": "Delete record(s)",
4854
4071
  "operationId": "deleteRecords",
4855
- "consumes": [
4856
- "application/json"
4857
- ],
4858
- "produces": [
4859
- "application/json"
4072
+ "summary": "Delete records in a table",
4073
+ "tags": [
4074
+ "Records"
4860
4075
  ],
4861
4076
  "parameters": [
4862
4077
  {
4863
- "x-amf-mediaType": "application/json",
4078
+ "name": "body",
4864
4079
  "in": "body",
4865
- "name": "generated",
4080
+ "required": true,
4866
4081
  "schema": {
4867
- "example": {
4868
- "from": "bck7gp3q2",
4869
- "where": "{6.EX.'hello'}"
4870
- },
4871
- "type": "object",
4872
- "additionalProperties": true,
4873
- "required": [
4874
- "from",
4875
- "where"
4876
- ],
4877
- "properties": {
4878
- "from": {
4879
- "description": "The unique identifier of the table.",
4880
- "example": "bck7gp3q2",
4881
- "type": "string",
4882
- "minLength": 1
4883
- },
4884
- "where": {
4885
- "description": "The filter to delete records. To delete all records specify a filter that will include all records, for example {3.GT.0} where 3 is the ID of the Record ID field.",
4886
- "example": "{6.EX.'hello'}",
4887
- "type": "string",
4888
- "minLength": 1
4889
- }
4890
- }
4082
+ "$ref": "#/definitions/DeleteRecordsRequest"
4891
4083
  }
4892
4084
  }
4893
4085
  ],
4894
4086
  "responses": {
4895
4087
  "200": {
4896
- "description": "Successful delete records response.",
4897
- "x-amf-mediaType": "application/json",
4088
+ "description": "Success - records deleted",
4898
4089
  "schema": {
4899
- "example": {
4900
- "numberDeleted": 1
4901
- },
4902
- "type": "object",
4903
- "additionalProperties": true,
4904
- "properties": {
4905
- "numberDeleted": {
4906
- "description": "The number of records deleted.",
4907
- "example": 1,
4908
- "type": "integer"
4909
- }
4910
- }
4090
+ "$ref": "#/definitions/DeleteRecords200Response"
4911
4091
  }
4912
4092
  }
4913
- },
4914
- "tags": [
4915
- "Records"
4916
- ]
4093
+ }
4917
4094
  }
4918
4095
  },
4919
4096
  "/records/query": {
4920
4097
  "post": {
4921
4098
  "operationId": "upsertRecords",
4922
- "summary": "Upsert records",
4099
+ "summary": "Upsert records (alternative endpoint)",
4923
4100
  "tags": [
4924
4101
  "Records"
4925
4102
  ],
@@ -4970,7 +4147,8 @@
4970
4147
  "name": "dbid",
4971
4148
  "in": "path",
4972
4149
  "required": true,
4973
- "type": "string"
4150
+ "type": "string",
4151
+ "description": "The database identifier (dbid)."
4974
4152
  }
4975
4153
  ],
4976
4154
  "responses": {
@@ -8145,6 +7323,10 @@
8145
7323
  "definitions": {
8146
7324
  "App": {
8147
7325
  "type": "object",
7326
+ "required": [
7327
+ "id",
7328
+ "name"
7329
+ ],
8148
7330
  "properties": {
8149
7331
  "id": {
8150
7332
  "type": "string"
@@ -8173,238 +7355,552 @@
8173
7355
  "type": "boolean"
8174
7356
  },
8175
7357
  "memoryInfo": {
8176
- "type": "object",
8177
- "properties": {
8178
- "estMemory": {
8179
- "type": "number"
8180
- },
8181
- "estMemoryInclDependentApps": {
8182
- "type": "number"
8183
- }
8184
- }
7358
+ "$ref": "#/definitions/AppMemoryInfo"
8185
7359
  },
8186
7360
  "securityProperties": {
8187
- "type": "object",
8188
- "properties": {
8189
- "allowClone": {
8190
- "type": "boolean"
8191
- },
8192
- "allowExport": {
8193
- "type": "boolean"
8194
- },
8195
- "enableAppTokens": {
8196
- "type": "boolean"
8197
- },
8198
- "hideFromPublic": {
8199
- "type": "boolean"
8200
- },
8201
- "mustBeRealmApproved": {
8202
- "type": "boolean"
8203
- },
8204
- "useIPFilter": {
8205
- "type": "boolean"
8206
- }
8207
- }
7361
+ "$ref": "#/definitions/AppSecurityProperties"
8208
7362
  }
8209
- },
8210
- "required": [
8211
- "id",
8212
- "name"
8213
- ]
7363
+ }
8214
7364
  },
8215
- "Field": {
7365
+ "AppMemoryInfo": {
8216
7366
  "type": "object",
8217
7367
  "properties": {
8218
- "id": {
7368
+ "estMemory": {
8219
7369
  "type": "number"
8220
7370
  },
8221
- "label": {
8222
- "type": "string"
8223
- },
8224
- "fieldType": {
8225
- "type": "string"
8226
- },
8227
- "noWrap": {
8228
- "type": "boolean"
8229
- },
8230
- "bold": {
7371
+ "estMemoryInclDependentApps": {
7372
+ "type": "number"
7373
+ }
7374
+ }
7375
+ },
7376
+ "AppSecurityProperties": {
7377
+ "type": "object",
7378
+ "properties": {
7379
+ "allowClone": {
8231
7380
  "type": "boolean"
8232
7381
  },
8233
- "required": {
7382
+ "allowExport": {
8234
7383
  "type": "boolean"
8235
7384
  },
8236
- "appearsByDefault": {
7385
+ "enableAppTokens": {
8237
7386
  "type": "boolean"
8238
7387
  },
8239
- "findEnabled": {
7388
+ "hideFromPublic": {
8240
7389
  "type": "boolean"
8241
7390
  },
8242
- "unique": {
7391
+ "mustBeRealmApproved": {
8243
7392
  "type": "boolean"
8244
7393
  },
8245
- "doesDataCopy": {
7394
+ "useIPFilter": {
8246
7395
  "type": "boolean"
7396
+ }
7397
+ }
7398
+ },
7399
+ "CreateAppRequest": {
7400
+ "type": "object",
7401
+ "required": [
7402
+ "name"
7403
+ ],
7404
+ "properties": {
7405
+ "name": {
7406
+ "type": "string",
7407
+ "description": "The app name. Multiple apps with the same name are allowed in the same realm."
8247
7408
  },
8248
- "fieldHelp": {
8249
- "type": "string"
7409
+ "assignToken": {
7410
+ "type": "boolean",
7411
+ "description": "Set to true to assign the app to the user token used to create it. Default is false."
8250
7412
  },
8251
- "audited": {
8252
- "type": "boolean"
7413
+ "description": {
7414
+ "type": "string",
7415
+ "description": "The description for the app. Defaults to blank if omitted."
8253
7416
  },
8254
- "properties": {
8255
- "type": "object",
8256
- "properties": {
8257
- "primaryKey": {
8258
- "type": "boolean"
8259
- },
8260
- "foreignKey": {
8261
- "type": "boolean"
8262
- },
8263
- "numLines": {
8264
- "type": "number"
8265
- },
8266
- "maxLength": {
8267
- "type": "number"
8268
- },
8269
- "appendOnly": {
8270
- "type": "boolean"
8271
- },
8272
- "allowHTML": {
8273
- "type": "boolean"
8274
- },
8275
- "allowMentions": {
8276
- "type": "boolean"
8277
- },
8278
- "sortAsGiven": {
8279
- "type": "boolean"
8280
- },
8281
- "carryChoices": {
8282
- "type": "boolean"
8283
- },
8284
- "allowNewChoices": {
8285
- "type": "boolean"
8286
- },
8287
- "formula": {
8288
- "type": "string"
8289
- },
8290
- "defaultValue": {
8291
- "type": "string"
8292
- }
8293
- }
7417
+ "securityProperties": {
7418
+ "$ref": "#/definitions/AppSecurityProperties",
7419
+ "description": "Application security properties."
8294
7420
  },
8295
- "permissions": {
7421
+ "variables": {
8296
7422
  "type": "array",
8297
7423
  "items": {
8298
7424
  "type": "object",
8299
7425
  "properties": {
8300
- "permissionType": {
7426
+ "name": {
8301
7427
  "type": "string"
8302
7428
  },
8303
- "role": {
7429
+ "value": {
8304
7430
  "type": "string"
8305
- },
8306
- "roleId": {
8307
- "type": "number"
8308
7431
  }
8309
- }
8310
- }
7432
+ },
7433
+ "required": [
7434
+ "name",
7435
+ "value"
7436
+ ]
7437
+ },
7438
+ "description": "App variables (max 10, optional). See About Application Variables."
8311
7439
  }
8312
- },
8313
- "required": [
8314
- "id",
8315
- "label",
8316
- "fieldType"
8317
- ]
7440
+ }
8318
7441
  },
8319
- "Table": {
7442
+ "CreateApp200Response": {
8320
7443
  "type": "object",
8321
7444
  "properties": {
8322
7445
  "id": {
8323
- "type": "string"
7446
+ "type": "string",
7447
+ "description": "The unique identifier for this application."
8324
7448
  },
8325
7449
  "name": {
8326
- "type": "string"
8327
- },
8328
- "alias": {
8329
- "type": "string"
7450
+ "type": "string",
7451
+ "description": "The app name."
7452
+ },
7453
+ "description": {
7454
+ "type": "string",
7455
+ "description": "The description for the app."
8330
7456
  },
8331
7457
  "created": {
8332
7458
  "type": "string",
8333
- "format": "date-time"
7459
+ "format": "date-time",
7460
+ "description": "The time and date the app was created (ISO 8601, UTC)."
8334
7461
  },
8335
- "defaultSortFieldId": {
8336
- "type": "number"
7462
+ "updated": {
7463
+ "type": "string",
7464
+ "format": "date-time",
7465
+ "description": "The time and date the app was last updated (ISO 8601, UTC)."
8337
7466
  },
8338
- "defaultSortOrder": {
7467
+ "dateFormat": {
7468
+ "type": "string",
7469
+ "description": "The format used for displaying dates in the app (e.g., MM-DD-YYYY)."
7470
+ },
7471
+ "timeZone": {
7472
+ "type": "string",
7473
+ "description": "The time zone used for displaying time values (e.g., (UTC-08:00) Pacific Time)."
7474
+ },
7475
+ "memoryInfo": {
7476
+ "$ref": "#/definitions/AppMemoryInfo",
7477
+ "description": "Application memory information."
7478
+ },
7479
+ "hasEveryoneOnTheInternet": {
7480
+ "type": "boolean",
7481
+ "description": "Indicates if the app includes Everyone On The Internet access."
7482
+ },
7483
+ "variables": {
7484
+ "type": "array",
7485
+ "items": {
7486
+ "type": "object",
7487
+ "properties": {
7488
+ "name": {
7489
+ "type": "string"
7490
+ },
7491
+ "value": {
7492
+ "type": "string"
7493
+ }
7494
+ },
7495
+ "required": [
7496
+ "name",
7497
+ "value"
7498
+ ]
7499
+ },
7500
+ "description": "The app variables."
7501
+ },
7502
+ "dataClassification": {
7503
+ "type": "string",
7504
+ "description": "The Data Classification label assigned to the app (optional, may be 'None')."
7505
+ },
7506
+ "securityProperties": {
7507
+ "$ref": "#/definitions/AppSecurityProperties",
7508
+ "description": "Security properties of the application."
7509
+ }
7510
+ },
7511
+ "required": [
7512
+ "id",
7513
+ "name"
7514
+ ]
7515
+ },
7516
+ "Field": {
7517
+ "type": "object",
7518
+ "required": [
7519
+ "id",
7520
+ "label",
7521
+ "fieldType"
7522
+ ],
7523
+ "properties": {
7524
+ "id": {
7525
+ "type": "integer"
7526
+ },
7527
+ "label": {
8339
7528
  "type": "string"
8340
7529
  },
8341
- "description": {
7530
+ "fieldType": {
8342
7531
  "type": "string"
8343
7532
  },
8344
- "keyFieldId": {
8345
- "type": "number"
7533
+ "noWrap": {
7534
+ "type": "boolean"
8346
7535
  },
8347
- "nextFieldId": {
8348
- "type": "number"
7536
+ "bold": {
7537
+ "type": "boolean"
8349
7538
  },
8350
- "nextRecordId": {
8351
- "type": "number"
7539
+ "required": {
7540
+ "type": "boolean"
8352
7541
  },
8353
- "pluralRecordName": {
8354
- "type": "string"
7542
+ "appearsByDefault": {
7543
+ "type": "boolean"
8355
7544
  },
8356
- "singleRecordName": {
7545
+ "findEnabled": {
7546
+ "type": "boolean"
7547
+ },
7548
+ "unique": {
7549
+ "type": "boolean"
7550
+ },
7551
+ "doesDataCopy": {
7552
+ "type": "boolean"
7553
+ },
7554
+ "fieldHelp": {
8357
7555
  "type": "string"
8358
7556
  },
8359
- "sizeLimit": {
7557
+ "audited": {
7558
+ "type": "boolean"
7559
+ },
7560
+ "properties": {
7561
+ "$ref": "#/definitions/FieldProperties"
7562
+ },
7563
+ "permissions": {
7564
+ "type": "array",
7565
+ "items": {
7566
+ "$ref": "#/definitions/FieldPermissionsInner"
7567
+ }
7568
+ }
7569
+ }
7570
+ },
7571
+ "FieldProperties": {
7572
+ "type": "object",
7573
+ "properties": {
7574
+ "primaryKey": {
7575
+ "type": "boolean"
7576
+ },
7577
+ "foreignKey": {
7578
+ "type": "boolean"
7579
+ },
7580
+ "numLines": {
7581
+ "type": "integer"
7582
+ },
7583
+ "maxLength": {
7584
+ "type": "integer"
7585
+ },
7586
+ "appendOnly": {
7587
+ "type": "boolean"
7588
+ },
7589
+ "allowHTML": {
7590
+ "type": "boolean"
7591
+ },
7592
+ "allowMentions": {
7593
+ "type": "boolean"
7594
+ },
7595
+ "sortAsGiven": {
7596
+ "type": "boolean"
7597
+ },
7598
+ "carryChoices": {
7599
+ "type": "boolean"
7600
+ },
7601
+ "allowNewChoices": {
7602
+ "type": "boolean"
7603
+ },
7604
+ "formula": {
8360
7605
  "type": "string"
8361
7606
  },
8362
- "spaceRemaining": {
7607
+ "defaultValue": {
7608
+ "type": "string"
7609
+ }
7610
+ }
7611
+ },
7612
+ "FieldPermissionsInner": {
7613
+ "type": "object",
7614
+ "properties": {
7615
+ "permissionType": {
8363
7616
  "type": "string"
8364
7617
  },
8365
- "spaceUsed": {
7618
+ "role": {
8366
7619
  "type": "string"
8367
7620
  },
8368
- "updated": {
8369
- "type": "string",
8370
- "format": "date-time"
7621
+ "roleId": {
7622
+ "type": "integer"
8371
7623
  }
8372
- },
7624
+ }
7625
+ },
7626
+ "Table": {
7627
+ "type": "object",
8373
7628
  "required": [
8374
7629
  "id",
8375
7630
  "name"
8376
- ]
7631
+ ],
7632
+ "properties": {
7633
+ "id": {
7634
+ "type": "string",
7635
+ "description": "The unique identifier (dbid) of the table."
7636
+ },
7637
+ "name": {
7638
+ "type": "string",
7639
+ "description": "The name of the table."
7640
+ },
7641
+ "alias": {
7642
+ "type": "string",
7643
+ "description": "The automatically-created table alias for the table."
7644
+ },
7645
+ "description": {
7646
+ "type": "string",
7647
+ "description": "The description of the table, as configured by an application administrator."
7648
+ },
7649
+ "created": {
7650
+ "type": "string",
7651
+ "format": "date-time",
7652
+ "description": "The time and date when the table was created, in ISO 8601 format (UTC)."
7653
+ },
7654
+ "updated": {
7655
+ "type": "string",
7656
+ "format": "date-time",
7657
+ "description": "The time and date when the table schema or data was last updated, in ISO 8601 format (UTC)."
7658
+ },
7659
+ "nextRecordId": {
7660
+ "type": "integer",
7661
+ "description": "The incremental Record ID that will be used when the next record is created."
7662
+ },
7663
+ "nextFieldId": {
7664
+ "type": "integer",
7665
+ "description": "The incremental Field ID that will be used when the next field is created."
7666
+ },
7667
+ "defaultSortFieldId": {
7668
+ "type": "integer",
7669
+ "description": "The id of the field that is configured for default sorting."
7670
+ },
7671
+ "defaultSortOrder": {
7672
+ "type": "string",
7673
+ "enum": [
7674
+ "ASC",
7675
+ "DESC"
7676
+ ],
7677
+ "description": "The default sort order for the table, either ascending (ASC) or descending (DESC)."
7678
+ },
7679
+ "keyFieldId": {
7680
+ "type": "integer",
7681
+ "description": "The id of the field that is configured to be the key on this table, usually the Quickbase Record ID."
7682
+ },
7683
+ "singleRecordName": {
7684
+ "type": "string",
7685
+ "description": "The builder-configured singular noun of the table."
7686
+ },
7687
+ "pluralRecordName": {
7688
+ "type": "string",
7689
+ "description": "The builder-configured plural noun of the table."
7690
+ },
7691
+ "sizeLimit": {
7692
+ "type": "string",
7693
+ "description": "The size limit for the table (e.g., '150 MB')."
7694
+ },
7695
+ "spaceUsed": {
7696
+ "type": "string",
7697
+ "description": "The amount of space currently being used by the table (e.g., '17 MB')."
7698
+ },
7699
+ "spaceRemaining": {
7700
+ "type": "string",
7701
+ "description": "The amount of space remaining for use by the table (e.g., '133 MB')."
7702
+ }
7703
+ }
8377
7704
  },
8378
- "Record": {
7705
+ "UpdateTableRequest": {
8379
7706
  "type": "object",
8380
7707
  "properties": {
8381
- "id": {
8382
- "type": "number"
7708
+ "name": {
7709
+ "type": "string",
7710
+ "description": "The new name for the table."
8383
7711
  },
8384
- "fields": {
8385
- "type": "object",
8386
- "additionalProperties": {
8387
- "type": "string"
8388
- }
7712
+ "singleRecordName": {
7713
+ "type": "string",
7714
+ "description": "The new singular noun for records in the table. Defaults to 'Record' if not provided."
7715
+ },
7716
+ "pluralRecordName": {
7717
+ "type": "string",
7718
+ "description": "The new plural noun for records in the table. Defaults to 'Records' if not provided."
7719
+ },
7720
+ "description": {
7721
+ "type": "string",
7722
+ "description": "The new description for the table. Defaults to blank if not provided."
7723
+ }
7724
+ },
7725
+ "description": "Request body for updating table properties. At least one property must be provided."
7726
+ },
7727
+ "DeleteTableResponse": {
7728
+ "type": "object",
7729
+ "properties": {
7730
+ "deletedTableId": {
7731
+ "type": "string",
7732
+ "description": "The deleted table id."
7733
+ }
7734
+ }
7735
+ },
7736
+ "Record": {
7737
+ "type": "object",
7738
+ "properties": {
7739
+ "_dummy": {
7740
+ "type": "string",
7741
+ "description": "Unused dummy property to force model generation.",
7742
+ "nullable": true
8389
7743
  }
8390
7744
  },
7745
+ "additionalProperties": {
7746
+ "type": "object",
7747
+ "properties": {
7748
+ "value": {
7749
+ "type": [
7750
+ "string",
7751
+ "number",
7752
+ "boolean",
7753
+ "object",
7754
+ "array",
7755
+ "null"
7756
+ ]
7757
+ }
7758
+ },
7759
+ "description": "The value object for a field ID key."
7760
+ },
7761
+ "description": "A record with field ID keys (e.g., '6') and value objects (e.g., { value: 'data' })."
7762
+ },
7763
+ "UpsertRequest": {
7764
+ "type": "object",
8391
7765
  "required": [
8392
- "id"
8393
- ]
7766
+ "to"
7767
+ ],
7768
+ "properties": {
7769
+ "to": {
7770
+ "type": "string",
7771
+ "description": "The table identifier (dbid)."
7772
+ },
7773
+ "data": {
7774
+ "type": "array",
7775
+ "items": {
7776
+ "$ref": "#/definitions/Record"
7777
+ },
7778
+ "description": "Array of records to upsert."
7779
+ },
7780
+ "mergeFieldId": {
7781
+ "type": "integer",
7782
+ "description": "The field ID to merge on (optional)."
7783
+ },
7784
+ "fieldsToReturn": {
7785
+ "type": "array",
7786
+ "items": {
7787
+ "type": "integer"
7788
+ },
7789
+ "description": "Field IDs to return in the response (optional)."
7790
+ }
7791
+ }
8394
7792
  },
8395
7793
  "Upsert200Response": {
8396
7794
  "type": "object",
8397
7795
  "properties": {
8398
- "id": {
8399
- "type": "number"
7796
+ "data": {
7797
+ "type": "array",
7798
+ "items": {
7799
+ "type": "object",
7800
+ "additionalProperties": {
7801
+ "type": "object",
7802
+ "properties": {
7803
+ "value": {
7804
+ "type": "any"
7805
+ }
7806
+ }
7807
+ }
7808
+ },
7809
+ "description": "Array of upserted records with field IDs and values."
8400
7810
  },
8401
- "status": {
8402
- "type": "string"
7811
+ "metadata": {
7812
+ "type": "object",
7813
+ "properties": {
7814
+ "createdRecordIds": {
7815
+ "type": "array",
7816
+ "items": {
7817
+ "type": "integer"
7818
+ },
7819
+ "description": "IDs of newly created records."
7820
+ },
7821
+ "updatedRecordIds": {
7822
+ "type": "array",
7823
+ "items": {
7824
+ "type": "integer"
7825
+ },
7826
+ "description": "IDs of updated records."
7827
+ },
7828
+ "unchangedRecordIds": {
7829
+ "type": "array",
7830
+ "items": {
7831
+ "type": "integer"
7832
+ },
7833
+ "description": "IDs of unchanged records."
7834
+ },
7835
+ "totalNumberOfRecordsProcessed": {
7836
+ "type": "integer",
7837
+ "description": "Total records processed."
7838
+ }
7839
+ },
7840
+ "required": [
7841
+ "totalNumberOfRecordsProcessed"
7842
+ ]
8403
7843
  }
8404
- },
8405
- "required": [
8406
- "id"
8407
- ]
7844
+ }
7845
+ },
7846
+ "Upsert207Response": {
7847
+ "type": "object",
7848
+ "properties": {
7849
+ "data": {
7850
+ "type": "array",
7851
+ "items": {
7852
+ "type": "object",
7853
+ "additionalProperties": {
7854
+ "type": "object",
7855
+ "properties": {
7856
+ "value": {
7857
+ "type": "any"
7858
+ }
7859
+ }
7860
+ }
7861
+ },
7862
+ "description": "Array of successfully upserted records (may be empty)."
7863
+ },
7864
+ "metadata": {
7865
+ "type": "object",
7866
+ "properties": {
7867
+ "createdRecordIds": {
7868
+ "type": "array",
7869
+ "items": {
7870
+ "type": "integer"
7871
+ }
7872
+ },
7873
+ "updatedRecordIds": {
7874
+ "type": "array",
7875
+ "items": {
7876
+ "type": "integer"
7877
+ }
7878
+ },
7879
+ "unchangedRecordIds": {
7880
+ "type": "array",
7881
+ "items": {
7882
+ "type": "integer"
7883
+ }
7884
+ },
7885
+ "lineErrors": {
7886
+ "type": "object",
7887
+ "additionalProperties": {
7888
+ "type": "array",
7889
+ "items": {
7890
+ "type": "string"
7891
+ }
7892
+ },
7893
+ "description": "Errors by line number (1-based index)."
7894
+ },
7895
+ "totalNumberOfRecordsProcessed": {
7896
+ "type": "integer"
7897
+ }
7898
+ },
7899
+ "required": [
7900
+ "totalNumberOfRecordsProcessed"
7901
+ ]
7902
+ }
7903
+ }
8408
7904
  },
8409
7905
  "ReportRunResponse": {
8410
7906
  "type": "object",
@@ -8415,21 +7911,49 @@
8415
7911
  "data": {
8416
7912
  "type": "object"
8417
7913
  }
8418
- },
8419
- "required": [
8420
- "id"
8421
- ]
7914
+ }
8422
7915
  },
8423
7916
  "GetTempTokenDBID200Response": {
8424
7917
  "type": "object",
7918
+ "required": [
7919
+ "temporaryAuthorization"
7920
+ ],
8425
7921
  "properties": {
8426
7922
  "temporaryAuthorization": {
8427
7923
  "type": "string"
8428
7924
  }
7925
+ }
7926
+ },
7927
+ "DeleteRecordsRequest": {
7928
+ "type": "object",
7929
+ "required": [
7930
+ "from",
7931
+ "where"
7932
+ ],
7933
+ "properties": {
7934
+ "from": {
7935
+ "type": "string",
7936
+ "description": "The table identifier (dbid) from which to delete records."
7937
+ },
7938
+ "where": {
7939
+ "type": "string",
7940
+ "description": "A QuickBase query string specifying which records to delete."
7941
+ }
7942
+ },
7943
+ "description": "Request body for deleting records from a table using a query."
7944
+ },
7945
+ "DeleteRecords200Response": {
7946
+ "type": "object",
7947
+ "properties": {
7948
+ "numberDeleted": {
7949
+ "type": "integer",
7950
+ "description": "The number of records successfully deleted."
7951
+ }
8429
7952
  },
8430
7953
  "required": [
8431
- "temporaryAuthorization"
8432
- ]
7954
+ "numberDeleted"
7955
+ ],
7956
+ "description": "Response body for successful deletion of records."
8433
7957
  }
8434
7958
  }
8435
7959
  }