@jinshuju/mcp 0.4.0 → 0.5.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.
- package/README.md +8 -3
- package/dist/generated/meta.json +25 -19
- package/dist/generated/operations.json +1679 -79
- package/dist/generated/schemas.json +29021 -15203
- package/dist/generated/tools.json +298 -100
- package/dist/server.js +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"properties": {
|
|
83
83
|
"field": {
|
|
84
84
|
"type": "string",
|
|
85
|
-
"description": "What to filter on; a field api_code for entries, or a form attribute such as `created_at` for form lists. Required unless the deprecated `api_code` or `trigger` is given instead."
|
|
85
|
+
"description": "What to filter on; a field api_code for entries, where `creator_id` (`eq` with a user id, at most once) and `serial_number` (`eq` / `any_in` / `none_in`, several intersected) also work, or a form attribute such as `created_at` for form lists. Required unless the deprecated `api_code` or `trigger` is given instead."
|
|
86
86
|
},
|
|
87
87
|
"api_code": {
|
|
88
88
|
"type": "string",
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"description": "Comparison; `equal` / `not_equal` / `start` / `end` are aliases of `eq` / `ne` / `gte` / `lte`. Each field type accepts only some operators, and an unsupported one returns 400 listing the available ones."
|
|
121
121
|
},
|
|
122
122
|
"value": {
|
|
123
|
-
"description": "Condition value; its type depends on the field and the operator: a two-element array `[min, max]` for `between` / `not_between
|
|
123
|
+
"description": "Condition value; its type depends on the field and the operator: a two-element array `[min, max]` for `between` / `not_between` (`{\"<column api_code>\": [min, max]}` on a matrix or table field), `{\"unit\": \"day\", \"n\": 30}` for `within_last` (unit minute / day / week / month), no value for `null` / `not_null`, a choice api_code or label on a choice field (a cascading drop-down also takes a `level1-level2` path), and serial numbers of the related table for `any_in` / `none_in` on a relation field."
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
},
|
|
@@ -209,7 +209,7 @@
|
|
|
209
209
|
{
|
|
210
210
|
"operationId": "getForm",
|
|
211
211
|
"summary": "Show a form's structure",
|
|
212
|
-
"description": "Show a form's structure\nReturns the form's name, `kind`, `scene`, public URL (`url`), description, field definitions and settings. Each element of `fields` is a single-key object `{ \"<api_code>\": {...} }`, in field order.\nAlso answers for a table or a quick payment form token; `kind` says which it is.\
|
|
212
|
+
"description": "Show a form's structure\nReturns the form's name, `kind`, `scene`, public URL (`url`), description, field definitions and settings. Each element of `fields` is a single-key object `{ \"<api_code>\": {...} }`, in field order.\nAlso answers for a table or a quick payment form token; `kind` says which it is.\nReturns schema \"FormDetail\" (see get_schema).\nThe api_code of each field in the returned fields is its key when reading and writing entries.",
|
|
213
213
|
"tag": "Forms",
|
|
214
214
|
"method": "get",
|
|
215
215
|
"path": "/forms/{form_token}",
|
|
@@ -308,7 +308,7 @@
|
|
|
308
308
|
{
|
|
309
309
|
"operationId": "createForm",
|
|
310
310
|
"summary": "Create a form",
|
|
311
|
-
"description": "Create a form\nCreates a form from a list of field definitions and returns the full form structure
|
|
311
|
+
"description": "Create a form\nCreates a form from a list of field definitions and returns the full form structure.\nReturns schema \"Form\" (see get_schema).\nEach item of fields branches on type: get_schema(\"FieldInput\") maps each type to its schema in x-variants (TextField → \"TextFieldInput\", RadioButton → \"RadioButtonInput\"), and get_schema on that name shows the properties that type accepts; do not guess field properties or schema names. For an exam or evaluation form use create_exam_form / create_evaluation_form.",
|
|
312
312
|
"tag": "Forms",
|
|
313
313
|
"method": "post",
|
|
314
314
|
"path": "/forms",
|
|
@@ -360,10 +360,8 @@
|
|
|
360
360
|
"survey",
|
|
361
361
|
"registry",
|
|
362
362
|
"vote",
|
|
363
|
-
"exam",
|
|
364
363
|
"reservation",
|
|
365
364
|
"customer_acquisition",
|
|
366
|
-
"evaluation",
|
|
367
365
|
"online_payment",
|
|
368
366
|
"quickpay"
|
|
369
367
|
],
|
|
@@ -375,7 +373,7 @@
|
|
|
375
373
|
"classic",
|
|
376
374
|
"card"
|
|
377
375
|
],
|
|
378
|
-
"description": "Layout; applies only when scene is survey / form / exam / evaluation; card is the paged layout"
|
|
376
|
+
"description": "Layout; applies only when scene is survey / form / exam / evaluation; card is the paged layout and cannot hold PageBreak / MultipleBlanksField / WidgetContact / WidgetVideo / WidgetButton"
|
|
379
377
|
}
|
|
380
378
|
},
|
|
381
379
|
"additionalProperties": false,
|
|
@@ -455,7 +453,7 @@
|
|
|
455
453
|
},
|
|
456
454
|
{
|
|
457
455
|
"type": "object",
|
|
458
|
-
"description": "A table column definition; type is limited to the column types a table supports\nBranches on type; get_schema shows each branch's own properties: TextAreaInput, RadioButtonInput, CheckBoxInput, BooleanFieldInput, MobileFieldInput, NumberFieldInput, DateTimeFieldInput, EmailFieldInput,
|
|
456
|
+
"description": "A table column definition; type is limited to the column types a table supports\nBranches on type; get_schema shows each branch's own properties: TextAreaInput, RadioButtonInput, CheckBoxInput, BooleanFieldInput, MobileFieldInput, NumberFieldInput, DateTimeFieldInput, EmailFieldInput, 13 in all.",
|
|
459
457
|
"required": [
|
|
460
458
|
"type",
|
|
461
459
|
"label"
|
|
@@ -475,7 +473,8 @@
|
|
|
475
473
|
"LinkField",
|
|
476
474
|
"AttachmentField",
|
|
477
475
|
"FormulaField",
|
|
478
|
-
"RelationField"
|
|
476
|
+
"RelationField",
|
|
477
|
+
"SequenceField"
|
|
479
478
|
]
|
|
480
479
|
},
|
|
481
480
|
"label": {
|
|
@@ -1082,7 +1081,7 @@
|
|
|
1082
1081
|
{
|
|
1083
1082
|
"operationId": "checkFormFieldData",
|
|
1084
1083
|
"summary": "Check whether fields already hold data",
|
|
1085
|
-
"description": "Check whether fields already hold data\nUse before deleting a field or choice: checks in batch whether fields (or single choices of a field) already have submitted entries. Deleting a field or choice that still has entries deletes those entries with it, and they cannot be recovered.\nMatches the check the web editor runs before deleting.\n- Put every deletion target of one edit in the `checks` of a single call (at most 100, may span several fields); `results` matches `checks` one to one, in order.\n- When a target cannot be checked (
|
|
1084
|
+
"description": "Check whether fields already hold data\nUse before deleting a field or choice: checks in batch whether fields (or single choices of a field) already have submitted entries. Deleting a field or choice that still has entries deletes those entries with it, and they cannot be recovered.\nMatches the check the web editor runs before deleting.\n- Put every deletion target of one edit in the `checks` of a single call (at most 100, may span several fields); `results` matches `checks` one to one, in order.\n- When a target cannot be checked (the field or the `parent_field` column does not exist, or `choice_value` matches nothing of the kind `choice_type` names, or names more than one), its row returns `unavailable` with the reason; the other targets return as usual.\n- Returns 400 when `checks` is missing, empty, over 100, not a JSON array, or has an item that is not an object.\nReturns schema \"FieldDataCheckResponse\" (see get_schema).",
|
|
1086
1085
|
"tag": "Forms",
|
|
1087
1086
|
"method": "get",
|
|
1088
1087
|
"path": "/forms/{form_token}/fields/check",
|
|
@@ -1130,14 +1129,15 @@
|
|
|
1130
1129
|
"properties": {
|
|
1131
1130
|
"field_api_code": {
|
|
1132
1131
|
"type": "string",
|
|
1133
|
-
"description": "api_code of the field to check;
|
|
1132
|
+
"description": "api_code of the field to check; for a column of a table / matrix field, the table / matrix field's api_code"
|
|
1134
1133
|
},
|
|
1135
1134
|
"choice_value": {
|
|
1136
1135
|
"type": "string",
|
|
1137
|
-
"description": "
|
|
1136
|
+
"description": "The choice to check, by its value or its name as GET /forms/{form_token} shows them; omitted, checks whether the whole field has any data"
|
|
1138
1137
|
},
|
|
1139
1138
|
"choice_type": {
|
|
1140
1139
|
"type": "string",
|
|
1140
|
+
"default": "choice",
|
|
1141
1141
|
"enum": [
|
|
1142
1142
|
"choice",
|
|
1143
1143
|
"statement",
|
|
@@ -1147,11 +1147,11 @@
|
|
|
1147
1147
|
"level_3",
|
|
1148
1148
|
"level_4"
|
|
1149
1149
|
],
|
|
1150
|
-
"description": "What `choice_value` names
|
|
1150
|
+
"description": "What `choice_value` names; `statement` for a matrix row, `dimension` for a matrix, table or multiple-blank column, `level_1` to `level_4` for a cascading drop-down level"
|
|
1151
1151
|
},
|
|
1152
1152
|
"parent_field": {
|
|
1153
1153
|
"type": "string",
|
|
1154
|
-
"description": "api_code of the
|
|
1154
|
+
"description": "api_code of the column, when checking a choice inside one column of a table / matrix field"
|
|
1155
1155
|
},
|
|
1156
1156
|
"check_extended_text": {
|
|
1157
1157
|
"type": "boolean",
|
|
@@ -1193,7 +1193,7 @@
|
|
|
1193
1193
|
{
|
|
1194
1194
|
"operationId": "previewFormFieldTypeChange",
|
|
1195
1195
|
"summary": "Preview a field type change",
|
|
1196
|
-
"description": "Preview a field type change\nUse before changing a field's type (the field's `type` in PATCH /forms/{form_token}): changes no data, and counts, from the field's current entries, how many would be kept and how many cleared after the conversion
|
|
1196
|
+
"description": "Preview a field type change\nUse before changing a field's type (the field's `type` in PATCH /forms/{form_token}): changes no data, and counts, from the field's current entries, how many would be kept and how many cleared after the conversion; matches the preview the web editor shows before converting.\n- Put every conversion of one edit in the `checks` of a single call.\n- `supported: false`, or `choice_limit_exceeded: true` when multi-line text becomes a choice field, means the edit itself would be refused.\nReturns schema \"FieldTypeChangePreviewResponse\" (see get_schema).",
|
|
1197
1197
|
"tag": "Forms",
|
|
1198
1198
|
"method": "get",
|
|
1199
1199
|
"path": "/forms/{form_token}/fields/preview_convert",
|
|
@@ -1287,7 +1287,7 @@
|
|
|
1287
1287
|
{
|
|
1288
1288
|
"operationId": "updateFormTheme",
|
|
1289
1289
|
"summary": "Update a form's theme",
|
|
1290
|
-
"description": "Update a form's theme\nPartially updates the form's theme
|
|
1290
|
+
"description": "Update a form's theme\nPartially updates the form's theme: colors, background, header image, typography, form container and submit button.",
|
|
1291
1291
|
"tag": "Form Settings",
|
|
1292
1292
|
"method": "patch",
|
|
1293
1293
|
"path": "/forms/{form_token}/theme",
|
|
@@ -1455,7 +1455,7 @@
|
|
|
1455
1455
|
"properties": {
|
|
1456
1456
|
"field": {
|
|
1457
1457
|
"type": "string",
|
|
1458
|
-
"description": "What to filter on; a field api_code for entries, or a form attribute such as `created_at` for form lists. Required unless the deprecated `api_code` or `trigger` is given instead."
|
|
1458
|
+
"description": "What to filter on; a field api_code for entries, where `creator_id` (`eq` with a user id, at most once) and `serial_number` (`eq` / `any_in` / `none_in`, several intersected) also work, or a form attribute such as `created_at` for form lists. Required unless the deprecated `api_code` or `trigger` is given instead."
|
|
1459
1459
|
},
|
|
1460
1460
|
"api_code": {
|
|
1461
1461
|
"type": "string",
|
|
@@ -1493,7 +1493,7 @@
|
|
|
1493
1493
|
"description": "Comparison; `equal` / `not_equal` / `start` / `end` are aliases of `eq` / `ne` / `gte` / `lte`. Each field type accepts only some operators, and an unsupported one returns 400 listing the available ones."
|
|
1494
1494
|
},
|
|
1495
1495
|
"value": {
|
|
1496
|
-
"description": "Condition value; its type depends on the field and the operator: a two-element array `[min, max]` for `between` / `not_between
|
|
1496
|
+
"description": "Condition value; its type depends on the field and the operator: a two-element array `[min, max]` for `between` / `not_between` (`{\"<column api_code>\": [min, max]}` on a matrix or table field), `{\"unit\": \"day\", \"n\": 30}` for `within_last` (unit minute / day / week / month), no value for `null` / `not_null`, a choice api_code or label on a choice field (a cascading drop-down also takes a `level1-level2` path), and serial numbers of the related table for `any_in` / `none_in` on a relation field."
|
|
1497
1497
|
}
|
|
1498
1498
|
}
|
|
1499
1499
|
},
|
|
@@ -1509,7 +1509,7 @@
|
|
|
1509
1509
|
}
|
|
1510
1510
|
]
|
|
1511
1511
|
],
|
|
1512
|
-
"description": "Filters, an array of ScopeCondition objects; conditions are combined with AND
|
|
1512
|
+
"description": "Filters, an array of ScopeCondition objects; conditions are combined with AND. Besides field api_codes, `creator_id` and `serial_number` can be filtered on.\n- To find entries whose multiple-choice field contains a choice, use `any_in` (`none_in` to exclude); `eq` is not \"contains\": it matches only entries with exactly the same set of choices."
|
|
1513
1513
|
},
|
|
1514
1514
|
"keyword": {
|
|
1515
1515
|
"type": "string",
|
|
@@ -1550,7 +1550,7 @@
|
|
|
1550
1550
|
}
|
|
1551
1551
|
]
|
|
1552
1552
|
],
|
|
1553
|
-
"description": "Sort rules, an array of SortRule objects, applied in order, with ascending serial number appended automatically at the end.\nOnly sortable fields are allowed; otherwise returns 400 listing the sortable fields. With `sort`, `next` becomes a row offset.\n"
|
|
1553
|
+
"description": "Sort rules, an array of SortRule objects, applied in order, with ascending serial number appended automatically at the end.\nOnly sortable fields are allowed; otherwise returns 400 listing the sortable fields. With `sort`, `next` becomes a row offset. Without it, entries come by serial number, or by creation time when `filters` has a `created_at` condition.\n"
|
|
1554
1554
|
},
|
|
1555
1555
|
"created_at": {
|
|
1556
1556
|
"type": "string",
|
|
@@ -1747,7 +1747,7 @@
|
|
|
1747
1747
|
},
|
|
1748
1748
|
"entry": {
|
|
1749
1749
|
"type": "object",
|
|
1750
|
-
"description": "Field values for writing an entry, keyed by field api_code or api_code_alias. Unknown keys and non-writable fields (signature, formula) are ignored.\nChoice fields take the choice api_code or the choice label; see the table below for cascading drop-downs and choice extra text. Number fields accept a number or a numeric string.\n\n| Field | How to write |\n|---|---|\n| Single-line / multi-line text, name, mobile, email, phone, website, ID card | String |\n| Single choice, drop-down | `\"choice api_code\"` or `\"choice label\"`; extra text via `\"<api_code>_extended_text\": {\"<choice>\": \"extra text\"}`, \"Other\" text via `\"<api_code>_other\": \"...\"` |\n| Multiple choice | Array, items as above |\n| Image single choice / image multiple choice | Choice api_code (string / array) |\n| Cascading drop-down | `{\"level_1\": \"...\", \"level_2\": \"...\"}` (api_code or label) |\n| Number, rating, NPS | Number |\n| Yes/No | Boolean |\n| Date | `\"2012-12-25\"` or `\"2012-12-25 12:13:15\"` (Beijing time, UTC+8) |\n| Time | `{\"hour\": \"12\", \"minute\": \"15\"}` |\n| Address | `{\"province\",\"city\",\"district\",\"street\"}` |\n| Geolocation | `{\"longitude\",\"latitude\",\"address\"}` |\n| File upload (multiple allowed) | Array; each item is one of: the id of an uploaded attachment; the download URL of an attachment already on this form (to keep it); `{\"base64\": \"...\", \"file_name\": \"a.png\", \"content_type\": \"image/png\"}` (≤ 5MB; `base64` may also be a data URI)
|
|
1750
|
+
"description": "Field values for writing an entry, keyed by field api_code or api_code_alias. Unknown keys and non-writable fields (signature, formula) are ignored.\nChoice fields take the choice api_code or the choice label; see the table below for cascading drop-downs and choice extra text. Number fields accept a number or a numeric string.\n\n| Field | How to write |\n|---|---|\n| Single-line / multi-line text, name, mobile, email, phone, website, ID card | String |\n| Single choice, drop-down | `\"choice api_code\"` or `\"choice label\"`; extra text via `\"<api_code>_extended_text\": {\"<choice>\": \"extra text\"}`, \"Other\" text via `\"<api_code>_other\": \"...\"` |\n| Multiple choice | Array, items as above |\n| Image single choice / image multiple choice | Choice api_code (string / array) |\n| Cascading drop-down | `{\"level_1\": \"...\", \"level_2\": \"...\"}` (api_code or label) |\n| Number, rating, NPS | Number |\n| Yes/No | Boolean |\n| Date | `\"2012-12-25\"` or `\"2012-12-25 12:13:15\"` (Beijing time, UTC+8) |\n| Time | `{\"hour\": \"12\", \"minute\": \"15\"}` |\n| Address | `{\"province\",\"city\",\"district\",\"street\"}` |\n| Geolocation | `{\"longitude\",\"latitude\",\"address\"}` |\n| File upload (multiple allowed) | Array; each item is one of: the id of an uploaded attachment; the download URL of an attachment already on this form (to keep it); `{\"base64\": \"...\", \"file_name\": \"a.png\", \"content_type\": \"image/png\"}` (≤ 5MB; `base64` may also be a data URI) |\n| Goods | `[{\"value\": \"goods item api_code\", \"number\": 2, \"specification\": {\"spec dimension\": \"option\"}?}]` |\n| Matrix fill-in / matrix scale | `{\"<statement api_code>\": {\"<column api_code>\": value}}` |\n| Matrix single choice | `{\"<statement api_code>\": \"choice api_code\"}` |\n| Table | `[{\"<column api_code>\": value}, ...]`; attachment columns are written like file upload |\n| Inline blanks | `{\"<sub-field api_code>\": \"...\"}` |\n| Ranking | Ordered array `[\"choice api_code\", ...]` |\n| Form association | token / id of the associated entry, or a display value matched by the association key (an array for multiple association keys) |\n| Reservation | `[{\"api_code\": \"item\", \"scheduled_at\": \"2021-04-26\", \"end_at\"?: \"...\", \"number\": 1}]` |\n| Color mark | `\"color_mark\": \"<color api_code or name>\"` |\n| International mobile number | Also pass `\"<api_code>_country_id\"` / `\"<api_code>_country_code\"` |\n",
|
|
1751
1751
|
"additionalProperties": true,
|
|
1752
1752
|
"examples": [
|
|
1753
1753
|
{
|
|
@@ -1832,7 +1832,7 @@
|
|
|
1832
1832
|
},
|
|
1833
1833
|
"entry": {
|
|
1834
1834
|
"type": "object",
|
|
1835
|
-
"description": "Field values for writing an entry, keyed by field api_code or api_code_alias. Unknown keys and non-writable fields (signature, formula) are ignored.\nChoice fields take the choice api_code or the choice label; see the table below for cascading drop-downs and choice extra text. Number fields accept a number or a numeric string.\n\n| Field | How to write |\n|---|---|\n| Single-line / multi-line text, name, mobile, email, phone, website, ID card | String |\n| Single choice, drop-down | `\"choice api_code\"` or `\"choice label\"`; extra text via `\"<api_code>_extended_text\": {\"<choice>\": \"extra text\"}`, \"Other\" text via `\"<api_code>_other\": \"...\"` |\n| Multiple choice | Array, items as above |\n| Image single choice / image multiple choice | Choice api_code (string / array) |\n| Cascading drop-down | `{\"level_1\": \"...\", \"level_2\": \"...\"}` (api_code or label) |\n| Number, rating, NPS | Number |\n| Yes/No | Boolean |\n| Date | `\"2012-12-25\"` or `\"2012-12-25 12:13:15\"` (Beijing time, UTC+8) |\n| Time | `{\"hour\": \"12\", \"minute\": \"15\"}` |\n| Address | `{\"province\",\"city\",\"district\",\"street\"}` |\n| Geolocation | `{\"longitude\",\"latitude\",\"address\"}` |\n| File upload (multiple allowed) | Array; each item is one of: the id of an uploaded attachment; the download URL of an attachment already on this form (to keep it); `{\"base64\": \"...\", \"file_name\": \"a.png\", \"content_type\": \"image/png\"}` (≤ 5MB; `base64` may also be a data URI)
|
|
1835
|
+
"description": "Field values for writing an entry, keyed by field api_code or api_code_alias. Unknown keys and non-writable fields (signature, formula) are ignored.\nChoice fields take the choice api_code or the choice label; see the table below for cascading drop-downs and choice extra text. Number fields accept a number or a numeric string.\n\n| Field | How to write |\n|---|---|\n| Single-line / multi-line text, name, mobile, email, phone, website, ID card | String |\n| Single choice, drop-down | `\"choice api_code\"` or `\"choice label\"`; extra text via `\"<api_code>_extended_text\": {\"<choice>\": \"extra text\"}`, \"Other\" text via `\"<api_code>_other\": \"...\"` |\n| Multiple choice | Array, items as above |\n| Image single choice / image multiple choice | Choice api_code (string / array) |\n| Cascading drop-down | `{\"level_1\": \"...\", \"level_2\": \"...\"}` (api_code or label) |\n| Number, rating, NPS | Number |\n| Yes/No | Boolean |\n| Date | `\"2012-12-25\"` or `\"2012-12-25 12:13:15\"` (Beijing time, UTC+8) |\n| Time | `{\"hour\": \"12\", \"minute\": \"15\"}` |\n| Address | `{\"province\",\"city\",\"district\",\"street\"}` |\n| Geolocation | `{\"longitude\",\"latitude\",\"address\"}` |\n| File upload (multiple allowed) | Array; each item is one of: the id of an uploaded attachment; the download URL of an attachment already on this form (to keep it); `{\"base64\": \"...\", \"file_name\": \"a.png\", \"content_type\": \"image/png\"}` (≤ 5MB; `base64` may also be a data URI) |\n| Goods | `[{\"value\": \"goods item api_code\", \"number\": 2, \"specification\": {\"spec dimension\": \"option\"}?}]` |\n| Matrix fill-in / matrix scale | `{\"<statement api_code>\": {\"<column api_code>\": value}}` |\n| Matrix single choice | `{\"<statement api_code>\": \"choice api_code\"}` |\n| Table | `[{\"<column api_code>\": value}, ...]`; attachment columns are written like file upload |\n| Inline blanks | `{\"<sub-field api_code>\": \"...\"}` |\n| Ranking | Ordered array `[\"choice api_code\", ...]` |\n| Form association | token / id of the associated entry, or a display value matched by the association key (an array for multiple association keys) |\n| Reservation | `[{\"api_code\": \"item\", \"scheduled_at\": \"2021-04-26\", \"end_at\"?: \"...\", \"number\": 1}]` |\n| Color mark | `\"color_mark\": \"<color api_code or name>\"` |\n| International mobile number | Also pass `\"<api_code>_country_id\"` / `\"<api_code>_country_code\"` |\n",
|
|
1836
1836
|
"additionalProperties": true,
|
|
1837
1837
|
"examples": [
|
|
1838
1838
|
{
|
|
@@ -1976,7 +1976,7 @@
|
|
|
1976
1976
|
"maxItems": 200,
|
|
1977
1977
|
"items": {
|
|
1978
1978
|
"type": "object",
|
|
1979
|
-
"description": "Field values for writing an entry, keyed by field api_code or api_code_alias. Unknown keys and non-writable fields (signature, formula) are ignored.\nChoice fields take the choice api_code or the choice label; see the table below for cascading drop-downs and choice extra text. Number fields accept a number or a numeric string.\n\n| Field | How to write |\n|---|---|\n| Single-line / multi-line text, name, mobile, email, phone, website, ID card | String |\n| Single choice, drop-down | `\"choice api_code\"` or `\"choice label\"`; extra text via `\"<api_code>_extended_text\": {\"<choice>\": \"extra text\"}`, \"Other\" text via `\"<api_code>_other\": \"...\"` |\n| Multiple choice | Array, items as above |\n| Image single choice / image multiple choice | Choice api_code (string / array) |\n| Cascading drop-down | `{\"level_1\": \"...\", \"level_2\": \"...\"}` (api_code or label) |\n| Number, rating, NPS | Number |\n| Yes/No | Boolean |\n| Date | `\"2012-12-25\"` or `\"2012-12-25 12:13:15\"` (Beijing time, UTC+8) |\n| Time | `{\"hour\": \"12\", \"minute\": \"15\"}` |\n| Address | `{\"province\",\"city\",\"district\",\"street\"}` |\n| Geolocation | `{\"longitude\",\"latitude\",\"address\"}` |\n| File upload (multiple allowed) | Array; each item is one of: the id of an uploaded attachment; the download URL of an attachment already on this form (to keep it); `{\"base64\": \"...\", \"file_name\": \"a.png\", \"content_type\": \"image/png\"}` (≤ 5MB; `base64` may also be a data URI)
|
|
1979
|
+
"description": "Field values for writing an entry, keyed by field api_code or api_code_alias. Unknown keys and non-writable fields (signature, formula) are ignored.\nChoice fields take the choice api_code or the choice label; see the table below for cascading drop-downs and choice extra text. Number fields accept a number or a numeric string.\n\n| Field | How to write |\n|---|---|\n| Single-line / multi-line text, name, mobile, email, phone, website, ID card | String |\n| Single choice, drop-down | `\"choice api_code\"` or `\"choice label\"`; extra text via `\"<api_code>_extended_text\": {\"<choice>\": \"extra text\"}`, \"Other\" text via `\"<api_code>_other\": \"...\"` |\n| Multiple choice | Array, items as above |\n| Image single choice / image multiple choice | Choice api_code (string / array) |\n| Cascading drop-down | `{\"level_1\": \"...\", \"level_2\": \"...\"}` (api_code or label) |\n| Number, rating, NPS | Number |\n| Yes/No | Boolean |\n| Date | `\"2012-12-25\"` or `\"2012-12-25 12:13:15\"` (Beijing time, UTC+8) |\n| Time | `{\"hour\": \"12\", \"minute\": \"15\"}` |\n| Address | `{\"province\",\"city\",\"district\",\"street\"}` |\n| Geolocation | `{\"longitude\",\"latitude\",\"address\"}` |\n| File upload (multiple allowed) | Array; each item is one of: the id of an uploaded attachment; the download URL of an attachment already on this form (to keep it); `{\"base64\": \"...\", \"file_name\": \"a.png\", \"content_type\": \"image/png\"}` (≤ 5MB; `base64` may also be a data URI) |\n| Goods | `[{\"value\": \"goods item api_code\", \"number\": 2, \"specification\": {\"spec dimension\": \"option\"}?}]` |\n| Matrix fill-in / matrix scale | `{\"<statement api_code>\": {\"<column api_code>\": value}}` |\n| Matrix single choice | `{\"<statement api_code>\": \"choice api_code\"}` |\n| Table | `[{\"<column api_code>\": value}, ...]`; attachment columns are written like file upload |\n| Inline blanks | `{\"<sub-field api_code>\": \"...\"}` |\n| Ranking | Ordered array `[\"choice api_code\", ...]` |\n| Form association | token / id of the associated entry, or a display value matched by the association key (an array for multiple association keys) |\n| Reservation | `[{\"api_code\": \"item\", \"scheduled_at\": \"2021-04-26\", \"end_at\"?: \"...\", \"number\": 1}]` |\n| Color mark | `\"color_mark\": \"<color api_code or name>\"` |\n| International mobile number | Also pass `\"<api_code>_country_id\"` / `\"<api_code>_country_code\"` |\n",
|
|
1980
1980
|
"additionalProperties": true,
|
|
1981
1981
|
"examples": [
|
|
1982
1982
|
{
|
|
@@ -2097,7 +2097,7 @@
|
|
|
2097
2097
|
},
|
|
2098
2098
|
"entry": {
|
|
2099
2099
|
"type": "object",
|
|
2100
|
-
"description": "Field values for writing an entry, keyed by field api_code or api_code_alias. Unknown keys and non-writable fields (signature, formula) are ignored.\nChoice fields take the choice api_code or the choice label; see the table below for cascading drop-downs and choice extra text. Number fields accept a number or a numeric string.\n\n| Field | How to write |\n|---|---|\n| Single-line / multi-line text, name, mobile, email, phone, website, ID card | String |\n| Single choice, drop-down | `\"choice api_code\"` or `\"choice label\"`; extra text via `\"<api_code>_extended_text\": {\"<choice>\": \"extra text\"}`, \"Other\" text via `\"<api_code>_other\": \"...\"` |\n| Multiple choice | Array, items as above |\n| Image single choice / image multiple choice | Choice api_code (string / array) |\n| Cascading drop-down | `{\"level_1\": \"...\", \"level_2\": \"...\"}` (api_code or label) |\n| Number, rating, NPS | Number |\n| Yes/No | Boolean |\n| Date | `\"2012-12-25\"` or `\"2012-12-25 12:13:15\"` (Beijing time, UTC+8) |\n| Time | `{\"hour\": \"12\", \"minute\": \"15\"}` |\n| Address | `{\"province\",\"city\",\"district\",\"street\"}` |\n| Geolocation | `{\"longitude\",\"latitude\",\"address\"}` |\n| File upload (multiple allowed) | Array; each item is one of: the id of an uploaded attachment; the download URL of an attachment already on this form (to keep it); `{\"base64\": \"...\", \"file_name\": \"a.png\", \"content_type\": \"image/png\"}` (≤ 5MB; `base64` may also be a data URI)
|
|
2100
|
+
"description": "Field values for writing an entry, keyed by field api_code or api_code_alias. Unknown keys and non-writable fields (signature, formula) are ignored.\nChoice fields take the choice api_code or the choice label; see the table below for cascading drop-downs and choice extra text. Number fields accept a number or a numeric string.\n\n| Field | How to write |\n|---|---|\n| Single-line / multi-line text, name, mobile, email, phone, website, ID card | String |\n| Single choice, drop-down | `\"choice api_code\"` or `\"choice label\"`; extra text via `\"<api_code>_extended_text\": {\"<choice>\": \"extra text\"}`, \"Other\" text via `\"<api_code>_other\": \"...\"` |\n| Multiple choice | Array, items as above |\n| Image single choice / image multiple choice | Choice api_code (string / array) |\n| Cascading drop-down | `{\"level_1\": \"...\", \"level_2\": \"...\"}` (api_code or label) |\n| Number, rating, NPS | Number |\n| Yes/No | Boolean |\n| Date | `\"2012-12-25\"` or `\"2012-12-25 12:13:15\"` (Beijing time, UTC+8) |\n| Time | `{\"hour\": \"12\", \"minute\": \"15\"}` |\n| Address | `{\"province\",\"city\",\"district\",\"street\"}` |\n| Geolocation | `{\"longitude\",\"latitude\",\"address\"}` |\n| File upload (multiple allowed) | Array; each item is one of: the id of an uploaded attachment; the download URL of an attachment already on this form (to keep it); `{\"base64\": \"...\", \"file_name\": \"a.png\", \"content_type\": \"image/png\"}` (≤ 5MB; `base64` may also be a data URI) |\n| Goods | `[{\"value\": \"goods item api_code\", \"number\": 2, \"specification\": {\"spec dimension\": \"option\"}?}]` |\n| Matrix fill-in / matrix scale | `{\"<statement api_code>\": {\"<column api_code>\": value}}` |\n| Matrix single choice | `{\"<statement api_code>\": \"choice api_code\"}` |\n| Table | `[{\"<column api_code>\": value}, ...]`; attachment columns are written like file upload |\n| Inline blanks | `{\"<sub-field api_code>\": \"...\"}` |\n| Ranking | Ordered array `[\"choice api_code\", ...]` |\n| Form association | token / id of the associated entry, or a display value matched by the association key (an array for multiple association keys) |\n| Reservation | `[{\"api_code\": \"item\", \"scheduled_at\": \"2021-04-26\", \"end_at\"?: \"...\", \"number\": 1}]` |\n| Color mark | `\"color_mark\": \"<color api_code or name>\"` |\n| International mobile number | Also pass `\"<api_code>_country_id\"` / `\"<api_code>_country_code\"` |\n",
|
|
2101
2101
|
"additionalProperties": true,
|
|
2102
2102
|
"examples": [
|
|
2103
2103
|
{
|
|
@@ -2176,7 +2176,7 @@
|
|
|
2176
2176
|
{
|
|
2177
2177
|
"operationId": "aggregateEntries",
|
|
2178
2178
|
"summary": "Aggregate entries",
|
|
2179
|
-
"description": "Aggregate entries\nAggregates whole columns on the server over the entries matching the filters (sum, average, count, percentiles, etc.), optionally grouped by 1 to 2 fields. The response size depends only on the number of metrics and groups, not on the amount of data.\n- `
|
|
2179
|
+
"description": "Aggregate entries\nAggregates whole columns on the server over the entries matching the filters (sum, average, count, percentiles, etc.), optionally grouped by 1 to 2 fields. The response size depends only on the number of metrics and groups, not on the amount of data.\n- `filters` / `keyword` work as in the entry list, except that `creator_id`, `serial_number` and association field conditions are not supported.\nReturns schema \"EntryAggregateResponse\" (see get_schema).",
|
|
2180
2180
|
"tag": "Entries",
|
|
2181
2181
|
"method": "get",
|
|
2182
2182
|
"path": "/forms/{form_token}/entries/aggregate",
|
|
@@ -2286,7 +2286,7 @@
|
|
|
2286
2286
|
}
|
|
2287
2287
|
]
|
|
2288
2288
|
],
|
|
2289
|
-
"description": "Required. Metrics to compute, an array of 1 to 20 AggregateMetric objects; returns 400 when missing or empty.\
|
|
2289
|
+
"description": "Required. Metrics to compute, an array of 1 to 20 AggregateMetric objects; returns 400 when missing or empty.\n`count` / `count_non_empty` / `count_empty` work on every field; the rest depend on its type (`sum`, `avg` and the percentiles on numbers), and a field's `analytics.agg_funcs` from `GET /forms/{form_token}?include_analytics=true` lists exactly what it takes.\n"
|
|
2290
2290
|
},
|
|
2291
2291
|
"dimensions": {
|
|
2292
2292
|
"type": [
|
|
@@ -2325,7 +2325,7 @@
|
|
|
2325
2325
|
}
|
|
2326
2326
|
]
|
|
2327
2327
|
],
|
|
2328
|
-
"description": "Fields to group by, an array of at most 2 AggregateDimension objects.\nOnly fields whose `analytics.groupable` is true can be grouped by; a date field
|
|
2328
|
+
"description": "Fields to group by, an array of at most 2 AggregateDimension objects.\nOnly fields whose `analytics.groupable` is true can be grouped by, such as single choice, multiple choice and date fields; a date field needs a `bucket`, in Beijing time (UTC+8).\n"
|
|
2329
2329
|
},
|
|
2330
2330
|
"limit": {
|
|
2331
2331
|
"type": "integer",
|
|
@@ -2346,7 +2346,7 @@
|
|
|
2346
2346
|
"properties": {
|
|
2347
2347
|
"field": {
|
|
2348
2348
|
"type": "string",
|
|
2349
|
-
"description": "What to filter on; a field api_code for entries, or a form attribute such as `created_at` for form lists. Required unless the deprecated `api_code` or `trigger` is given instead."
|
|
2349
|
+
"description": "What to filter on; a field api_code for entries, where `creator_id` (`eq` with a user id, at most once) and `serial_number` (`eq` / `any_in` / `none_in`, several intersected) also work, or a form attribute such as `created_at` for form lists. Required unless the deprecated `api_code` or `trigger` is given instead."
|
|
2350
2350
|
},
|
|
2351
2351
|
"api_code": {
|
|
2352
2352
|
"type": "string",
|
|
@@ -2384,7 +2384,7 @@
|
|
|
2384
2384
|
"description": "Comparison; `equal` / `not_equal` / `start` / `end` are aliases of `eq` / `ne` / `gte` / `lte`. Each field type accepts only some operators, and an unsupported one returns 400 listing the available ones."
|
|
2385
2385
|
},
|
|
2386
2386
|
"value": {
|
|
2387
|
-
"description": "Condition value; its type depends on the field and the operator: a two-element array `[min, max]` for `between` / `not_between
|
|
2387
|
+
"description": "Condition value; its type depends on the field and the operator: a two-element array `[min, max]` for `between` / `not_between` (`{\"<column api_code>\": [min, max]}` on a matrix or table field), `{\"unit\": \"day\", \"n\": 30}` for `within_last` (unit minute / day / week / month), no value for `null` / `not_null`, a choice api_code or label on a choice field (a cascading drop-down also takes a `level1-level2` path), and serial numbers of the related table for `any_in` / `none_in` on a relation field."
|
|
2388
2388
|
}
|
|
2389
2389
|
}
|
|
2390
2390
|
},
|
|
@@ -2400,7 +2400,7 @@
|
|
|
2400
2400
|
}
|
|
2401
2401
|
]
|
|
2402
2402
|
],
|
|
2403
|
-
"description": "Filters, an array of ScopeCondition objects; conditions are combined with AND
|
|
2403
|
+
"description": "Filters, an array of ScopeCondition objects; conditions are combined with AND. Besides field api_codes, `creator_id` and `serial_number` can be filtered on.\n- To find entries whose multiple-choice field contains a choice, use `any_in` (`none_in` to exclude); `eq` is not \"contains\": it matches only entries with exactly the same set of choices."
|
|
2404
2404
|
},
|
|
2405
2405
|
"keyword": {
|
|
2406
2406
|
"type": "string",
|
|
@@ -2506,7 +2506,7 @@
|
|
|
2506
2506
|
"properties": {
|
|
2507
2507
|
"field": {
|
|
2508
2508
|
"type": "string",
|
|
2509
|
-
"description": "What to filter on; a field api_code for entries, or a form attribute such as `created_at` for form lists. Required unless the deprecated `api_code` or `trigger` is given instead."
|
|
2509
|
+
"description": "What to filter on; a field api_code for entries, where `creator_id` (`eq` with a user id, at most once) and `serial_number` (`eq` / `any_in` / `none_in`, several intersected) also work, or a form attribute such as `created_at` for form lists. Required unless the deprecated `api_code` or `trigger` is given instead."
|
|
2510
2510
|
},
|
|
2511
2511
|
"api_code": {
|
|
2512
2512
|
"type": "string",
|
|
@@ -2544,7 +2544,7 @@
|
|
|
2544
2544
|
"description": "Comparison; `equal` / `not_equal` / `start` / `end` are aliases of `eq` / `ne` / `gte` / `lte`. Each field type accepts only some operators, and an unsupported one returns 400 listing the available ones."
|
|
2545
2545
|
},
|
|
2546
2546
|
"value": {
|
|
2547
|
-
"description": "Condition value; its type depends on the field and the operator: a two-element array `[min, max]` for `between` / `not_between
|
|
2547
|
+
"description": "Condition value; its type depends on the field and the operator: a two-element array `[min, max]` for `between` / `not_between` (`{\"<column api_code>\": [min, max]}` on a matrix or table field), `{\"unit\": \"day\", \"n\": 30}` for `within_last` (unit minute / day / week / month), no value for `null` / `not_null`, a choice api_code or label on a choice field (a cascading drop-down also takes a `level1-level2` path), and serial numbers of the related table for `any_in` / `none_in` on a relation field."
|
|
2548
2548
|
}
|
|
2549
2549
|
}
|
|
2550
2550
|
},
|
|
@@ -2560,7 +2560,7 @@
|
|
|
2560
2560
|
}
|
|
2561
2561
|
]
|
|
2562
2562
|
],
|
|
2563
|
-
"description": "Filters, an array of ScopeCondition objects; conditions are combined with AND
|
|
2563
|
+
"description": "Filters, an array of ScopeCondition objects; conditions are combined with AND. Besides field api_codes, `creator_id` and `serial_number` can be filtered on.\n- To find entries whose multiple-choice field contains a choice, use `any_in` (`none_in` to exclude); `eq` is not \"contains\": it matches only entries with exactly the same set of choices."
|
|
2564
2564
|
},
|
|
2565
2565
|
"keyword": {
|
|
2566
2566
|
"type": "string",
|
|
@@ -2650,7 +2650,7 @@
|
|
|
2650
2650
|
"properties": {
|
|
2651
2651
|
"field": {
|
|
2652
2652
|
"type": "string",
|
|
2653
|
-
"description": "What to filter on; a field api_code for entries, or a form attribute such as `created_at` for form lists. Required unless the deprecated `api_code` or `trigger` is given instead."
|
|
2653
|
+
"description": "What to filter on; a field api_code for entries, where `creator_id` (`eq` with a user id, at most once) and `serial_number` (`eq` / `any_in` / `none_in`, several intersected) also work, or a form attribute such as `created_at` for form lists. Required unless the deprecated `api_code` or `trigger` is given instead."
|
|
2654
2654
|
},
|
|
2655
2655
|
"api_code": {
|
|
2656
2656
|
"type": "string",
|
|
@@ -2688,7 +2688,7 @@
|
|
|
2688
2688
|
"description": "Comparison; `equal` / `not_equal` / `start` / `end` are aliases of `eq` / `ne` / `gte` / `lte`. Each field type accepts only some operators, and an unsupported one returns 400 listing the available ones."
|
|
2689
2689
|
},
|
|
2690
2690
|
"value": {
|
|
2691
|
-
"description": "Condition value; its type depends on the field and the operator: a two-element array `[min, max]` for `between` / `not_between
|
|
2691
|
+
"description": "Condition value; its type depends on the field and the operator: a two-element array `[min, max]` for `between` / `not_between` (`{\"<column api_code>\": [min, max]}` on a matrix or table field), `{\"unit\": \"day\", \"n\": 30}` for `within_last` (unit minute / day / week / month), no value for `null` / `not_null`, a choice api_code or label on a choice field (a cascading drop-down also takes a `level1-level2` path), and serial numbers of the related table for `any_in` / `none_in` on a relation field."
|
|
2692
2692
|
}
|
|
2693
2693
|
}
|
|
2694
2694
|
},
|
|
@@ -2880,7 +2880,7 @@
|
|
|
2880
2880
|
{
|
|
2881
2881
|
"operationId": "listMySubmittedEntries",
|
|
2882
2882
|
"summary": "List my entries in a form",
|
|
2883
|
-
"description": "List my entries in a form\nReturns the entries the current user submitted to the given form, newest first. The form need not be created by or shared with the current user: only the user's own entries are returned,\nwith only the fields the form makes public to submitters (hidden fields are neither returned nor usable for filtering or searching)
|
|
2883
|
+
"description": "List my entries in a form\nReturns the entries the current user submitted to the given form, newest first. The form need not be created by or shared with the current user: only the user's own entries are returned,\nwith only the fields the form makes public to submitters (hidden fields are neither returned nor usable for filtering or searching).\n- `filters` works as in the entry list, but cannot use `creator_id`, since results are already the user's own.\n- `keyword` is not subject to the form's entry-count limit.\n- An account access token has no \"current user\"; calling with one returns 400.",
|
|
2884
2884
|
"tag": "Entries",
|
|
2885
2885
|
"method": "get",
|
|
2886
2886
|
"path": "/my/forms/{form_token}/entries",
|
|
@@ -2976,7 +2976,7 @@
|
|
|
2976
2976
|
"properties": {
|
|
2977
2977
|
"field": {
|
|
2978
2978
|
"type": "string",
|
|
2979
|
-
"description": "What to filter on; a field api_code for entries, or a form attribute such as `created_at` for form lists. Required unless the deprecated `api_code` or `trigger` is given instead."
|
|
2979
|
+
"description": "What to filter on; a field api_code for entries, where `creator_id` (`eq` with a user id, at most once) and `serial_number` (`eq` / `any_in` / `none_in`, several intersected) also work, or a form attribute such as `created_at` for form lists. Required unless the deprecated `api_code` or `trigger` is given instead."
|
|
2980
2980
|
},
|
|
2981
2981
|
"api_code": {
|
|
2982
2982
|
"type": "string",
|
|
@@ -3014,7 +3014,7 @@
|
|
|
3014
3014
|
"description": "Comparison; `equal` / `not_equal` / `start` / `end` are aliases of `eq` / `ne` / `gte` / `lte`. Each field type accepts only some operators, and an unsupported one returns 400 listing the available ones."
|
|
3015
3015
|
},
|
|
3016
3016
|
"value": {
|
|
3017
|
-
"description": "Condition value; its type depends on the field and the operator: a two-element array `[min, max]` for `between` / `not_between
|
|
3017
|
+
"description": "Condition value; its type depends on the field and the operator: a two-element array `[min, max]` for `between` / `not_between` (`{\"<column api_code>\": [min, max]}` on a matrix or table field), `{\"unit\": \"day\", \"n\": 30}` for `within_last` (unit minute / day / week / month), no value for `null` / `not_null`, a choice api_code or label on a choice field (a cascading drop-down also takes a `level1-level2` path), and serial numbers of the related table for `any_in` / `none_in` on a relation field."
|
|
3018
3018
|
}
|
|
3019
3019
|
}
|
|
3020
3020
|
},
|
|
@@ -3030,7 +3030,7 @@
|
|
|
3030
3030
|
}
|
|
3031
3031
|
]
|
|
3032
3032
|
],
|
|
3033
|
-
"description": "Filters, an array of ScopeCondition objects; conditions are combined with AND
|
|
3033
|
+
"description": "Filters, an array of ScopeCondition objects; conditions are combined with AND. Besides field api_codes, `creator_id` and `serial_number` can be filtered on.\n- To find entries whose multiple-choice field contains a choice, use `any_in` (`none_in` to exclude); `eq` is not \"contains\": it matches only entries with exactly the same set of choices."
|
|
3034
3034
|
},
|
|
3035
3035
|
"keyword": {
|
|
3036
3036
|
"type": "string",
|
|
@@ -3108,7 +3108,7 @@
|
|
|
3108
3108
|
{
|
|
3109
3109
|
"operationId": "searchMySubmittedEntries",
|
|
3110
3110
|
"summary": "Search my entries",
|
|
3111
|
-
"description": "Search my entries\nSearches the current user's own entries
|
|
3111
|
+
"description": "Search my entries\nSearches the current user's own entries in every form they submitted to (quick payment forms excluded) with one keyword, over the fields each form makes public to submitters, and returns the match count and serial numbers for each matching form.\n- One call searches at most 20 forms; past that, name the ones to search in `form_tokens`.\n- An account access token has no \"current user\"; calling with one returns 400.\nReturns schema \"MySearchResponse\" (see get_schema).",
|
|
3112
3112
|
"tag": "Entries",
|
|
3113
3113
|
"method": "get",
|
|
3114
3114
|
"path": "/my/search",
|
|
@@ -3152,7 +3152,7 @@
|
|
|
3152
3152
|
"items": {
|
|
3153
3153
|
"type": "string"
|
|
3154
3154
|
},
|
|
3155
|
-
"description": "Search only these forms. Comma-separated form tokens, or an array parameter (`form_tokens[]=`)."
|
|
3155
|
+
"description": "Search only these of the forms the user submitted to; other tokens are not searched. Comma-separated form tokens, or an array parameter (`form_tokens[]=`)."
|
|
3156
3156
|
}
|
|
3157
3157
|
},
|
|
3158
3158
|
"additionalProperties": false,
|
|
@@ -3170,7 +3170,7 @@
|
|
|
3170
3170
|
{
|
|
3171
3171
|
"operationId": "createEntryImport",
|
|
3172
3172
|
"summary": "Import entries from an uploaded spreadsheet",
|
|
3173
|
-
"description": "Import entries from an uploaded spreadsheet\nAppends each row of a spreadsheet uploaded with \"Upload an import file\" as an entry of this form. Upload the file first to get the import attachment ID (`attachment_id`), then say here which column goes into which field.\
|
|
3173
|
+
"description": "Import entries from an uploaded spreadsheet\nAppends each row of a spreadsheet uploaded with \"Upload an import file\" as an entry of this form. Upload the file first to get the import attachment ID (`attachment_id`), then say here which column goes into which field.\nOnce validation passes, returns `201` and the entries are written in the background: `201` means the job has started, not finished; poll \"Show an entry import job\" for the result.\n- Every required field of the form needs a column, and a field takes at most one column.\n- A refused import writes no entries, and its error shows the row and column range and the header of the spreadsheet, so fix the mapping from it and retry.\nOnly for a file the client actually holds and has uploaded with prepare_import_file_upload (or upload_import_file). Table / CSV text pasted into the conversation goes straight to create_entries (at most 200 per batch); do not turn it into a file to import.",
|
|
3174
3174
|
"tag": "Entries",
|
|
3175
3175
|
"method": "post",
|
|
3176
3176
|
"path": "/forms/{form_token}/entry_imports",
|
|
@@ -3205,7 +3205,7 @@
|
|
|
3205
3205
|
},
|
|
3206
3206
|
"attachment_id": {
|
|
3207
3207
|
"type": "string",
|
|
3208
|
-
"description": "The import attachment `id` returned by \"Upload an import file\""
|
|
3208
|
+
"description": "The import attachment `id` returned by \"Upload an import file\" for this form"
|
|
3209
3209
|
},
|
|
3210
3210
|
"columns": {
|
|
3211
3211
|
"type": "array",
|
|
@@ -4097,7 +4097,7 @@
|
|
|
4097
4097
|
"properties": {
|
|
4098
4098
|
"field": {
|
|
4099
4099
|
"type": "string",
|
|
4100
|
-
"description": "What to filter on; a field api_code for entries, or a form attribute such as `created_at` for form lists. Required unless the deprecated `api_code` or `trigger` is given instead."
|
|
4100
|
+
"description": "What to filter on; a field api_code for entries, where `creator_id` (`eq` with a user id, at most once) and `serial_number` (`eq` / `any_in` / `none_in`, several intersected) also work, or a form attribute such as `created_at` for form lists. Required unless the deprecated `api_code` or `trigger` is given instead."
|
|
4101
4101
|
},
|
|
4102
4102
|
"api_code": {
|
|
4103
4103
|
"type": "string",
|
|
@@ -4135,7 +4135,7 @@
|
|
|
4135
4135
|
"description": "Comparison; `equal` / `not_equal` / `start` / `end` are aliases of `eq` / `ne` / `gte` / `lte`. Each field type accepts only some operators, and an unsupported one returns 400 listing the available ones."
|
|
4136
4136
|
},
|
|
4137
4137
|
"value": {
|
|
4138
|
-
"description": "Condition value; its type depends on the field and the operator: a two-element array `[min, max]` for `between` / `not_between
|
|
4138
|
+
"description": "Condition value; its type depends on the field and the operator: a two-element array `[min, max]` for `between` / `not_between` (`{\"<column api_code>\": [min, max]}` on a matrix or table field), `{\"unit\": \"day\", \"n\": 30}` for `within_last` (unit minute / day / week / month), no value for `null` / `not_null`, a choice api_code or label on a choice field (a cascading drop-down also takes a `level1-level2` path), and serial numbers of the related table for `any_in` / `none_in` on a relation field."
|
|
4139
4139
|
}
|
|
4140
4140
|
}
|
|
4141
4141
|
},
|
|
@@ -4274,7 +4274,7 @@
|
|
|
4274
4274
|
{
|
|
4275
4275
|
"operationId": "createTable",
|
|
4276
4276
|
"summary": "Create a table",
|
|
4277
|
-
"description": "Create a table\nCreates a table. Same as creating a form, except:\n- field types can only be the column types tables support: `TextArea`, `RadioButton`, `CheckBox`, `BooleanField`, `MobileField`, `NumberField`, `DateTimeField`, `EmailField`, `LinkField`, `AttachmentField`, `FormulaField`, `RelationField`;\n- attachment columns do not accept limit properties such as count / size limits, and number / formula columns have limited precision; a violation returns 400 listing the offending columns;\n- choice columns do not get an \"Other\" choice; `folder_token` must be a table folder; `layout` is not supported.\n- with `with_default_entries: true`, 3 blank entries are added after creation (as when creating a table in the product); by default none are added.\nReturns the table structure, including fields and views.\nReturns schema \"Table\" (see get_schema).",
|
|
4277
|
+
"description": "Create a table\nCreates a table. Same as creating a form, except:\n- field types can only be the column types tables support: `TextArea`, `RadioButton`, `CheckBox`, `BooleanField`, `MobileField`, `NumberField`, `DateTimeField`, `EmailField`, `LinkField`, `AttachmentField`, `FormulaField`, `RelationField`, `SequenceField`;\n- attachment columns do not accept limit properties such as count / size limits, and number / formula columns have limited precision; a violation returns 400 listing the offending columns;\n- choice columns do not get an \"Other\" choice; `folder_token` must be a table folder; `layout` is not supported.\n- with `with_default_entries: true`, 3 blank entries are added after creation (as when creating a table in the product); by default none are added.\nReturns the table structure, including fields and views.\nReturns schema \"Table\" (see get_schema).",
|
|
4278
4278
|
"tag": "Tables",
|
|
4279
4279
|
"method": "post",
|
|
4280
4280
|
"path": "/tables",
|
|
@@ -4308,7 +4308,7 @@
|
|
|
4308
4308
|
"minItems": 1,
|
|
4309
4309
|
"items": {
|
|
4310
4310
|
"type": "object",
|
|
4311
|
-
"description": "A table column definition; type is limited to the column types a table supports\nBranches on type; get_schema shows each branch's own properties: TextAreaInput, RadioButtonInput, CheckBoxInput, BooleanFieldInput, MobileFieldInput, NumberFieldInput, DateTimeFieldInput, EmailFieldInput,
|
|
4311
|
+
"description": "A table column definition; type is limited to the column types a table supports\nBranches on type; get_schema shows each branch's own properties: TextAreaInput, RadioButtonInput, CheckBoxInput, BooleanFieldInput, MobileFieldInput, NumberFieldInput, DateTimeFieldInput, EmailFieldInput, 13 in all.",
|
|
4312
4312
|
"required": [
|
|
4313
4313
|
"type",
|
|
4314
4314
|
"label"
|
|
@@ -4328,7 +4328,8 @@
|
|
|
4328
4328
|
"LinkField",
|
|
4329
4329
|
"AttachmentField",
|
|
4330
4330
|
"FormulaField",
|
|
4331
|
-
"RelationField"
|
|
4331
|
+
"RelationField",
|
|
4332
|
+
"SequenceField"
|
|
4332
4333
|
]
|
|
4333
4334
|
},
|
|
4334
4335
|
"label": {
|
|
@@ -4446,7 +4447,7 @@
|
|
|
4446
4447
|
},
|
|
4447
4448
|
{
|
|
4448
4449
|
"type": "object",
|
|
4449
|
-
"description": "A table column definition; type is limited to the column types a table supports\nBranches on type; get_schema shows each branch's own properties: TextAreaInput, RadioButtonInput, CheckBoxInput, BooleanFieldInput, MobileFieldInput, NumberFieldInput, DateTimeFieldInput, EmailFieldInput,
|
|
4450
|
+
"description": "A table column definition; type is limited to the column types a table supports\nBranches on type; get_schema shows each branch's own properties: TextAreaInput, RadioButtonInput, CheckBoxInput, BooleanFieldInput, MobileFieldInput, NumberFieldInput, DateTimeFieldInput, EmailFieldInput, 13 in all.",
|
|
4450
4451
|
"required": [
|
|
4451
4452
|
"type",
|
|
4452
4453
|
"label"
|
|
@@ -4466,7 +4467,8 @@
|
|
|
4466
4467
|
"LinkField",
|
|
4467
4468
|
"AttachmentField",
|
|
4468
4469
|
"FormulaField",
|
|
4469
|
-
"RelationField"
|
|
4470
|
+
"RelationField",
|
|
4471
|
+
"SequenceField"
|
|
4470
4472
|
]
|
|
4471
4473
|
},
|
|
4472
4474
|
"label": {
|
|
@@ -5248,7 +5250,7 @@
|
|
|
5248
5250
|
{
|
|
5249
5251
|
"operationId": "getBillingAccount",
|
|
5250
5252
|
"summary": "Show the current account",
|
|
5251
|
-
"description": "Show the current account\nReturns the account the current credential belongs to: plan, this month's usage and quota, feature trial status, and the bound payment merchant / WeChat Pay / Alipay accounts.\n`usage` is null when the account has no usage record for this month yet
|
|
5253
|
+
"description": "Show the current account\nReturns the account the current credential belongs to: plan, this month's usage and quota, feature trial status, and the bound payment merchant / WeChat Pay / Alipay accounts.\n`usage` is null when the account has no usage record for this month yet.",
|
|
5252
5254
|
"tag": "Account",
|
|
5253
5255
|
"method": "get",
|
|
5254
5256
|
"path": "/billing_account",
|
|
@@ -5320,10 +5322,221 @@
|
|
|
5320
5322
|
"openWorldHint": false
|
|
5321
5323
|
}
|
|
5322
5324
|
},
|
|
5325
|
+
{
|
|
5326
|
+
"operationId": "prepareEntryAttachmentUpload",
|
|
5327
|
+
"summary": "Prepare an entry attachment upload",
|
|
5328
|
+
"description": "Prepare an entry attachment upload\nIssues a one-time link for uploading a local file to an attachment field, or to an attachment column of a table field, without sending its bytes in a request body.\n- With a shell that can read the file and reach the network, run `curl -F file=@<path> <upload_url>`, then put the returned `attachment_id` in the field when creating or updating an entry.\n- Without one, or when curl fails (for example under a sandbox's network limits), send small content as Base64 to \"Upload an entry attachment\".",
|
|
5329
|
+
"tag": "Uploads",
|
|
5330
|
+
"method": "post",
|
|
5331
|
+
"path": "/forms/{form_token}/entry_attachment_upload_urls",
|
|
5332
|
+
"params": [
|
|
5333
|
+
{
|
|
5334
|
+
"name": "form_token",
|
|
5335
|
+
"in": "path",
|
|
5336
|
+
"required": true
|
|
5337
|
+
}
|
|
5338
|
+
],
|
|
5339
|
+
"paramNames": [
|
|
5340
|
+
"form_token"
|
|
5341
|
+
],
|
|
5342
|
+
"body": {
|
|
5343
|
+
"contentType": "application/json",
|
|
5344
|
+
"required": true,
|
|
5345
|
+
"flatten": true
|
|
5346
|
+
},
|
|
5347
|
+
"successStatus": 201,
|
|
5348
|
+
"scopes": [
|
|
5349
|
+
"write_entries"
|
|
5350
|
+
],
|
|
5351
|
+
"responseSchema": "PreparedUpload",
|
|
5352
|
+
"name": "prepare_entry_attachment_upload",
|
|
5353
|
+
"title": "Prepare an entry attachment upload",
|
|
5354
|
+
"inputSchema": {
|
|
5355
|
+
"type": "object",
|
|
5356
|
+
"properties": {
|
|
5357
|
+
"form_token": {
|
|
5358
|
+
"type": "string",
|
|
5359
|
+
"description": "Form token (`token` from `GET /forms`); a 24-character hexadecimal form id is also accepted."
|
|
5360
|
+
},
|
|
5361
|
+
"field_api_code": {
|
|
5362
|
+
"type": "string",
|
|
5363
|
+
"description": "api_code of the attachment field; for an attachment column in a table field, pass the table field's api_code"
|
|
5364
|
+
},
|
|
5365
|
+
"dimension_api_code": {
|
|
5366
|
+
"type": "string",
|
|
5367
|
+
"description": "api_code of the attachment column in a table field; required when `field_api_code` is a table field"
|
|
5368
|
+
}
|
|
5369
|
+
},
|
|
5370
|
+
"additionalProperties": false,
|
|
5371
|
+
"required": [
|
|
5372
|
+
"form_token",
|
|
5373
|
+
"field_api_code"
|
|
5374
|
+
]
|
|
5375
|
+
},
|
|
5376
|
+
"outputSchema": {
|
|
5377
|
+
"type": "object",
|
|
5378
|
+
"required": [
|
|
5379
|
+
"upload_url",
|
|
5380
|
+
"expires_at"
|
|
5381
|
+
],
|
|
5382
|
+
"properties": {
|
|
5383
|
+
"upload_url": {
|
|
5384
|
+
"type": "string",
|
|
5385
|
+
"format": "uri",
|
|
5386
|
+
"description": "One-time upload link: POST the file to it as the `file` part of `multipart/form-data`, without credentials; it answers `{ \"attachment_id\" }` (plus `url` for a `description` image), or 400 once used or expired or when the file breaks the size or type limits"
|
|
5387
|
+
},
|
|
5388
|
+
"expires_at": {
|
|
5389
|
+
"type": "string",
|
|
5390
|
+
"format": "date-time",
|
|
5391
|
+
"description": "When the link expires (UTC)"
|
|
5392
|
+
}
|
|
5393
|
+
}
|
|
5394
|
+
},
|
|
5395
|
+
"annotations": {
|
|
5396
|
+
"readOnlyHint": false,
|
|
5397
|
+
"destructiveHint": false,
|
|
5398
|
+
"idempotentHint": false,
|
|
5399
|
+
"openWorldHint": false
|
|
5400
|
+
}
|
|
5401
|
+
},
|
|
5402
|
+
{
|
|
5403
|
+
"operationId": "prepareFormImageUpload",
|
|
5404
|
+
"summary": "Prepare a form image upload",
|
|
5405
|
+
"description": "Prepare a form image upload\nIssues a one-time link for uploading a local image for a form, without sending its bytes in a request body.\n- With a shell that can read the file and reach the network, run `curl -F file=@<path> <upload_url>`, then use the returned `attachment_id` (or `url`) where its `image_type` goes.\n- Without one, or when curl fails (for example under a sandbox's network limits), give a public image URL or a small Base64 image where the image goes.",
|
|
5406
|
+
"tag": "Uploads",
|
|
5407
|
+
"method": "post",
|
|
5408
|
+
"path": "/form_image_upload_urls",
|
|
5409
|
+
"params": [],
|
|
5410
|
+
"paramNames": [],
|
|
5411
|
+
"body": {
|
|
5412
|
+
"contentType": "application/json",
|
|
5413
|
+
"required": true,
|
|
5414
|
+
"flatten": true
|
|
5415
|
+
},
|
|
5416
|
+
"successStatus": 201,
|
|
5417
|
+
"scopes": [
|
|
5418
|
+
"forms",
|
|
5419
|
+
"form_setting"
|
|
5420
|
+
],
|
|
5421
|
+
"responseSchema": "PreparedUpload",
|
|
5422
|
+
"name": "prepare_form_image_upload",
|
|
5423
|
+
"title": "Prepare a form image upload",
|
|
5424
|
+
"inputSchema": {
|
|
5425
|
+
"type": "object",
|
|
5426
|
+
"properties": {
|
|
5427
|
+
"image_type": {
|
|
5428
|
+
"type": "string",
|
|
5429
|
+
"enum": [
|
|
5430
|
+
"field_choice",
|
|
5431
|
+
"header",
|
|
5432
|
+
"wallpaper",
|
|
5433
|
+
"carousel",
|
|
5434
|
+
"opensearch_header",
|
|
5435
|
+
"description",
|
|
5436
|
+
"goods_item",
|
|
5437
|
+
"contact_widget"
|
|
5438
|
+
],
|
|
5439
|
+
"description": "What the image is for"
|
|
5440
|
+
}
|
|
5441
|
+
},
|
|
5442
|
+
"additionalProperties": false,
|
|
5443
|
+
"required": [
|
|
5444
|
+
"image_type"
|
|
5445
|
+
]
|
|
5446
|
+
},
|
|
5447
|
+
"outputSchema": {
|
|
5448
|
+
"type": "object",
|
|
5449
|
+
"required": [
|
|
5450
|
+
"upload_url",
|
|
5451
|
+
"expires_at"
|
|
5452
|
+
],
|
|
5453
|
+
"properties": {
|
|
5454
|
+
"upload_url": {
|
|
5455
|
+
"type": "string",
|
|
5456
|
+
"format": "uri",
|
|
5457
|
+
"description": "One-time upload link: POST the file to it as the `file` part of `multipart/form-data`, without credentials; it answers `{ \"attachment_id\" }` (plus `url` for a `description` image), or 400 once used or expired or when the file breaks the size or type limits"
|
|
5458
|
+
},
|
|
5459
|
+
"expires_at": {
|
|
5460
|
+
"type": "string",
|
|
5461
|
+
"format": "date-time",
|
|
5462
|
+
"description": "When the link expires (UTC)"
|
|
5463
|
+
}
|
|
5464
|
+
}
|
|
5465
|
+
},
|
|
5466
|
+
"annotations": {
|
|
5467
|
+
"readOnlyHint": false,
|
|
5468
|
+
"destructiveHint": false,
|
|
5469
|
+
"idempotentHint": false,
|
|
5470
|
+
"openWorldHint": false
|
|
5471
|
+
}
|
|
5472
|
+
},
|
|
5473
|
+
{
|
|
5474
|
+
"operationId": "prepareImportFileUpload",
|
|
5475
|
+
"summary": "Prepare an import file upload",
|
|
5476
|
+
"description": "Prepare an import file upload\nIssues a one-time link for uploading a local spreadsheet (`.xlsx` / `.xls` / `.csv`) to import into the form, without sending its bytes in a request body.\n- With a shell that can read the file and reach the network, run `curl -F file=@<path> <upload_url>`, then pass the returned `attachment_id` to \"Import entries from an uploaded spreadsheet\"; read the header row from your local copy.\n- Without one, or when curl fails, the file cannot be uploaded: spreadsheets have no Base64 route.",
|
|
5477
|
+
"tag": "Uploads",
|
|
5478
|
+
"method": "post",
|
|
5479
|
+
"path": "/forms/{form_token}/import_file_upload_urls",
|
|
5480
|
+
"params": [
|
|
5481
|
+
{
|
|
5482
|
+
"name": "form_token",
|
|
5483
|
+
"in": "path",
|
|
5484
|
+
"required": true
|
|
5485
|
+
}
|
|
5486
|
+
],
|
|
5487
|
+
"paramNames": [
|
|
5488
|
+
"form_token"
|
|
5489
|
+
],
|
|
5490
|
+
"successStatus": 201,
|
|
5491
|
+
"scopes": [
|
|
5492
|
+
"write_entries"
|
|
5493
|
+
],
|
|
5494
|
+
"responseSchema": "PreparedUpload",
|
|
5495
|
+
"name": "prepare_import_file_upload",
|
|
5496
|
+
"title": "Prepare an import file upload",
|
|
5497
|
+
"inputSchema": {
|
|
5498
|
+
"type": "object",
|
|
5499
|
+
"properties": {
|
|
5500
|
+
"form_token": {
|
|
5501
|
+
"type": "string",
|
|
5502
|
+
"description": "Form token (`token` from `GET /forms`); a 24-character hexadecimal form id is also accepted."
|
|
5503
|
+
}
|
|
5504
|
+
},
|
|
5505
|
+
"additionalProperties": false,
|
|
5506
|
+
"required": [
|
|
5507
|
+
"form_token"
|
|
5508
|
+
]
|
|
5509
|
+
},
|
|
5510
|
+
"outputSchema": {
|
|
5511
|
+
"type": "object",
|
|
5512
|
+
"required": [
|
|
5513
|
+
"upload_url",
|
|
5514
|
+
"expires_at"
|
|
5515
|
+
],
|
|
5516
|
+
"properties": {
|
|
5517
|
+
"upload_url": {
|
|
5518
|
+
"type": "string",
|
|
5519
|
+
"format": "uri",
|
|
5520
|
+
"description": "One-time upload link: POST the file to it as the `file` part of `multipart/form-data`, without credentials; it answers `{ \"attachment_id\" }` (plus `url` for a `description` image), or 400 once used or expired or when the file breaks the size or type limits"
|
|
5521
|
+
},
|
|
5522
|
+
"expires_at": {
|
|
5523
|
+
"type": "string",
|
|
5524
|
+
"format": "date-time",
|
|
5525
|
+
"description": "When the link expires (UTC)"
|
|
5526
|
+
}
|
|
5527
|
+
}
|
|
5528
|
+
},
|
|
5529
|
+
"annotations": {
|
|
5530
|
+
"readOnlyHint": false,
|
|
5531
|
+
"destructiveHint": false,
|
|
5532
|
+
"idempotentHint": false,
|
|
5533
|
+
"openWorldHint": false
|
|
5534
|
+
}
|
|
5535
|
+
},
|
|
5323
5536
|
{
|
|
5324
5537
|
"operationId": "uploadEntryAttachment",
|
|
5325
5538
|
"summary": "Upload an entry attachment",
|
|
5326
|
-
"description": "Upload an entry attachment\nUploads a file
|
|
5539
|
+
"description": "Upload an entry attachment\nUploads a file for an attachment field of the form, or for an attachment column of a table field.",
|
|
5327
5540
|
"tag": "Uploads",
|
|
5328
5541
|
"method": "post",
|
|
5329
5542
|
"path": "/forms/{form_token}/entry_attachments",
|
|
@@ -5364,25 +5577,13 @@
|
|
|
5364
5577
|
"type": "string",
|
|
5365
5578
|
"description": "api_code of the attachment column in a table field; required when `field_api_code` is a table field"
|
|
5366
5579
|
},
|
|
5367
|
-
"attachment_token": {
|
|
5368
|
-
"type": "string",
|
|
5369
|
-
"description": "One-time upload token, starting with `entry_att_tok_`; when passed, it replaces the regular credentials"
|
|
5370
|
-
},
|
|
5371
5580
|
"base64": {
|
|
5372
5581
|
"type": "string",
|
|
5373
|
-
"description": "File content as a Base64 string, optionally with a `data:<mime>;base64,` prefix, at most 5 MB once decoded
|
|
5374
|
-
},
|
|
5375
|
-
"data": {
|
|
5376
|
-
"type": "string",
|
|
5377
|
-
"description": "Alias of `base64`"
|
|
5582
|
+
"description": "File content as a Base64 string, optionally with a `data:<mime>;base64,` prefix, at most 5 MB once decoded"
|
|
5378
5583
|
},
|
|
5379
5584
|
"file_name": {
|
|
5380
5585
|
"type": "string",
|
|
5381
|
-
"description": "File name, defaults to `attachment
|
|
5382
|
-
},
|
|
5383
|
-
"filename": {
|
|
5384
|
-
"type": "string",
|
|
5385
|
-
"description": "Alias of `file_name`"
|
|
5586
|
+
"description": "File name, defaults to `attachment`"
|
|
5386
5587
|
},
|
|
5387
5588
|
"content_type": {
|
|
5388
5589
|
"type": "string",
|
|
@@ -5442,7 +5643,7 @@
|
|
|
5442
5643
|
{
|
|
5443
5644
|
"operationId": "uploadFormImage",
|
|
5444
5645
|
"summary": "Upload a form image",
|
|
5445
|
-
"description": "Upload a form image\nUploads an image
|
|
5646
|
+
"description": "Upload a form image\nUploads an image for a form; it takes effect once a form, theme or public query references it.\n- `description` returns a `url` for an `<img src>` in the form `description` or a field's `notes`, at most 30 per form; every other type returns an `attachment_id` for the property that names that `image_type`.\n- An `attachment_id` is taken only where its `image_type` goes, and only while the image is unused or already that form's; an image nothing uses within 7 days is deleted.",
|
|
5446
5647
|
"tag": "Uploads",
|
|
5447
5648
|
"method": "post",
|
|
5448
5649
|
"path": "/form_image_attachments",
|
|
@@ -5472,17 +5673,15 @@
|
|
|
5472
5673
|
"wallpaper",
|
|
5473
5674
|
"carousel",
|
|
5474
5675
|
"opensearch_header",
|
|
5475
|
-
"description"
|
|
5676
|
+
"description",
|
|
5677
|
+
"goods_item",
|
|
5678
|
+
"contact_widget"
|
|
5476
5679
|
],
|
|
5477
|
-
"description": "What the image is for
|
|
5478
|
-
},
|
|
5479
|
-
"form_image_token": {
|
|
5480
|
-
"type": "string",
|
|
5481
|
-
"description": "One-time upload token, starting with `form_img_tok_`; when passed, it replaces the regular credentials"
|
|
5680
|
+
"description": "What the image is for"
|
|
5482
5681
|
},
|
|
5483
5682
|
"file_base64": {
|
|
5484
5683
|
"type": "string",
|
|
5485
|
-
"description": "The image file
|
|
5684
|
+
"description": "The image file. The file content as Base64 (a data URI prefix is fine)."
|
|
5486
5685
|
},
|
|
5487
5686
|
"file_name": {
|
|
5488
5687
|
"type": "string",
|
|
@@ -5495,6 +5694,7 @@
|
|
|
5495
5694
|
},
|
|
5496
5695
|
"additionalProperties": false,
|
|
5497
5696
|
"required": [
|
|
5697
|
+
"image_type",
|
|
5498
5698
|
"file_base64",
|
|
5499
5699
|
"file_name",
|
|
5500
5700
|
"content_type"
|
|
@@ -5508,7 +5708,7 @@
|
|
|
5508
5708
|
"properties": {
|
|
5509
5709
|
"attachment_id": {
|
|
5510
5710
|
"type": "string",
|
|
5511
|
-
"description": "Image attachment ID
|
|
5711
|
+
"description": "Image attachment ID; pass it where its `image_type` goes"
|
|
5512
5712
|
},
|
|
5513
5713
|
"url": {
|
|
5514
5714
|
"type": "string",
|
|
@@ -5526,7 +5726,7 @@
|
|
|
5526
5726
|
{
|
|
5527
5727
|
"operationId": "uploadImportFile",
|
|
5528
5728
|
"summary": "Upload an import file",
|
|
5529
|
-
"description": "Upload an import file\nUploads a spreadsheet
|
|
5729
|
+
"description": "Upload an import file\nUploads a spreadsheet (`.xlsx` / `.xls` / `.csv`) for importing entries into the form.\nThe file goes through the tool call as Base64; a file on disk goes through prepare_import_file_upload instead. Table / CSV text pasted into the conversation does not go through here (do not encode it as base64 and upload it as a file); write it with create_entries (at most 200 per batch).",
|
|
5530
5730
|
"tag": "Uploads",
|
|
5531
5731
|
"method": "post",
|
|
5532
5732
|
"path": "/forms/{form_token}/import_files",
|
|
@@ -5559,13 +5759,9 @@
|
|
|
5559
5759
|
"type": "string",
|
|
5560
5760
|
"description": "Form token (`token` from `GET /forms`); a 24-character hexadecimal form id is also accepted."
|
|
5561
5761
|
},
|
|
5562
|
-
"import_file_token": {
|
|
5563
|
-
"type": "string",
|
|
5564
|
-
"description": "One-time upload token, starting with `import_file_tok_`; when passed, it replaces the regular credentials"
|
|
5565
|
-
},
|
|
5566
5762
|
"file_base64": {
|
|
5567
5763
|
"type": "string",
|
|
5568
|
-
"description": "The xlsx / xls / csv file to import
|
|
5764
|
+
"description": "The xlsx / xls / csv file to import. The file content as Base64 (a data URI prefix is fine)."
|
|
5569
5765
|
},
|
|
5570
5766
|
"file_name": {
|
|
5571
5767
|
"type": "string",
|
|
@@ -5798,7 +5994,7 @@
|
|
|
5798
5994
|
{
|
|
5799
5995
|
"operationId": "createForm",
|
|
5800
5996
|
"summary": "Create a form",
|
|
5801
|
-
"description": "Creates an online exam form (scene=exam, scored automatically). Use it, not create_form, when the user wants an exam, test or quiz; an evaluation such as a psychological test, ability assessment, self-assessment questionnaire or training feedback uses create_evaluation_form. Questions must use exam question types (SingleSelect / MultiSelect / TrueOrFalse / DropDownSelect / FillInBlank / ShortAnswer / FillInNumber), each with answers (the correct answer and its score; the default absolute mode has one correct answer and scores only a fully correct response). A question type's schema is the one
|
|
5997
|
+
"description": "Creates an online exam form (scene=exam, scored automatically). Use it, not create_form, when the user wants an exam, test or quiz; an evaluation such as a psychological test, ability assessment, self-assessment questionnaire or training feedback uses create_evaluation_form. Questions must use exam question types (SingleSelect / MultiSelect / TrueOrFalse / DropDownSelect / FillInBlank / ShortAnswer / FillInNumber), each with answers (the correct answer and its score; the default absolute mode has one correct answer and scores only a fully correct response). A question type's schema is the one ExamFieldInput's x-variants names (SingleSelect → \"SingleSelectInput\"; see get_schema). Creates the form first, then applies exam_setting; if the settings are rejected, the form already exists and the result says so.\nCreates a form from a list of field definitions and returns the full form structure.",
|
|
5802
5998
|
"tag": "Forms",
|
|
5803
5999
|
"method": "post",
|
|
5804
6000
|
"path": "/forms",
|
|
@@ -5832,7 +6028,7 @@
|
|
|
5832
6028
|
"minItems": 1,
|
|
5833
6029
|
"items": {
|
|
5834
6030
|
"type": "object",
|
|
5835
|
-
"description": "Shape: schema \"
|
|
6031
|
+
"description": "Shape: schema \"ExamFieldInput\"; call get_schema (name=\"ExamFieldInput\") or read the resource jinshuju://schemas/ExamFieldInput."
|
|
5836
6032
|
}
|
|
5837
6033
|
},
|
|
5838
6034
|
"setting": {
|
|
@@ -5849,7 +6045,7 @@
|
|
|
5849
6045
|
"classic",
|
|
5850
6046
|
"card"
|
|
5851
6047
|
],
|
|
5852
|
-
"description": "Layout; applies only when scene is survey / form / exam / evaluation; card is the paged layout"
|
|
6048
|
+
"description": "Layout; applies only when scene is survey / form / exam / evaluation; card is the paged layout and cannot hold PageBreak / MultipleBlanksField / WidgetContact / WidgetVideo / WidgetButton"
|
|
5853
6049
|
},
|
|
5854
6050
|
"scene": {
|
|
5855
6051
|
"type": "string",
|
|
@@ -5910,7 +6106,7 @@
|
|
|
5910
6106
|
}
|
|
5911
6107
|
}
|
|
5912
6108
|
},
|
|
5913
|
-
"description": "Exam settings (updateExamSetting): Partially updates an exam form's settings
|
|
6109
|
+
"description": "Exam settings (updateExamSetting): Partially updates an exam form's settings."
|
|
5914
6110
|
}
|
|
5915
6111
|
},
|
|
5916
6112
|
"additionalProperties": false,
|
|
@@ -5992,11 +6188,11 @@
|
|
|
5992
6188
|
"anyOf": [
|
|
5993
6189
|
{
|
|
5994
6190
|
"type": "object",
|
|
5995
|
-
"description": "Shape: schema \"
|
|
6191
|
+
"description": "Shape: schema \"ExamFieldInput\"; call get_schema (name=\"ExamFieldInput\") or read the resource jinshuju://schemas/ExamFieldInput."
|
|
5996
6192
|
},
|
|
5997
6193
|
{
|
|
5998
6194
|
"type": "object",
|
|
5999
|
-
"description": "A table column definition; type is limited to the column types a table supports\nBranches on type; get_schema shows each branch's own properties: TextAreaInput, RadioButtonInput, CheckBoxInput, BooleanFieldInput, MobileFieldInput, NumberFieldInput, DateTimeFieldInput, EmailFieldInput,
|
|
6195
|
+
"description": "A table column definition; type is limited to the column types a table supports\nBranches on type; get_schema shows each branch's own properties: TextAreaInput, RadioButtonInput, CheckBoxInput, BooleanFieldInput, MobileFieldInput, NumberFieldInput, DateTimeFieldInput, EmailFieldInput, 13 in all.",
|
|
6000
6196
|
"required": [
|
|
6001
6197
|
"type",
|
|
6002
6198
|
"label"
|
|
@@ -6016,7 +6212,8 @@
|
|
|
6016
6212
|
"LinkField",
|
|
6017
6213
|
"AttachmentField",
|
|
6018
6214
|
"FormulaField",
|
|
6019
|
-
"RelationField"
|
|
6215
|
+
"RelationField",
|
|
6216
|
+
"SequenceField"
|
|
6020
6217
|
]
|
|
6021
6218
|
},
|
|
6022
6219
|
"label": {
|
|
@@ -6343,7 +6540,7 @@
|
|
|
6343
6540
|
}
|
|
6344
6541
|
}
|
|
6345
6542
|
},
|
|
6346
|
-
"description": "Exam settings (updateExamSetting): Partially updates an exam form's settings
|
|
6543
|
+
"description": "Exam settings (updateExamSetting): Partially updates an exam form's settings."
|
|
6347
6544
|
}
|
|
6348
6545
|
},
|
|
6349
6546
|
"additionalProperties": false,
|
|
@@ -6367,7 +6564,7 @@
|
|
|
6367
6564
|
{
|
|
6368
6565
|
"operationId": "createForm",
|
|
6369
6566
|
"summary": "Create a form",
|
|
6370
|
-
"description": "Creates an evaluation form (scene=evaluation). Use it when the user wants an evaluation, psychological test, ability assessment, self-assessment questionnaire or training feedback; not create_form, and not create_exam_form (an exam with correct answers). A scored evaluation uses SingleSelect / MultiSelect / DropDownSelect / Rating / Nps: each question lists every choice with its score in answers and sets answer_setting_mode=relative (every choice scores, none is right or wrong; the default absolute accepts one correct answer and scores any other choice 0). A question type's schema is the one
|
|
6567
|
+
"description": "Creates an evaluation form (scene=evaluation). Use it when the user wants an evaluation, psychological test, ability assessment, self-assessment questionnaire or training feedback; not create_form, and not create_exam_form (an exam with correct answers). A scored evaluation uses SingleSelect / MultiSelect / DropDownSelect / Rating / Nps: each question lists every choice with its score in answers and sets answer_setting_mode=relative (every choice scores, none is right or wrong; the default absolute accepts one correct answer and scores any other choice 0). A question type's schema is the one EvaluationFieldInput's x-variants names (SingleSelect → \"SingleSelectInput\"; see get_schema). Do not score with a regular choice field's calculable / operand_value. A feedback questionnaire uses regular fields (RatingField / MatrixScaleField / TextArea, etc.) without scores. Creates the form first, then applies evaluation_setting (the report after submission, comments by total score range, dimensions).\nCreates a form from a list of field definitions and returns the full form structure.",
|
|
6371
6568
|
"tag": "Forms",
|
|
6372
6569
|
"method": "post",
|
|
6373
6570
|
"path": "/forms",
|
|
@@ -6401,7 +6598,7 @@
|
|
|
6401
6598
|
"minItems": 1,
|
|
6402
6599
|
"items": {
|
|
6403
6600
|
"type": "object",
|
|
6404
|
-
"description": "Shape: schema \"
|
|
6601
|
+
"description": "Shape: schema \"EvaluationFieldInput\"; call get_schema (name=\"EvaluationFieldInput\") or read the resource jinshuju://schemas/EvaluationFieldInput."
|
|
6405
6602
|
}
|
|
6406
6603
|
},
|
|
6407
6604
|
"setting": {
|
|
@@ -6418,7 +6615,7 @@
|
|
|
6418
6615
|
"classic",
|
|
6419
6616
|
"card"
|
|
6420
6617
|
],
|
|
6421
|
-
"description": "Layout; applies only when scene is survey / form / exam / evaluation; card is the paged layout"
|
|
6618
|
+
"description": "Layout; applies only when scene is survey / form / exam / evaluation; card is the paged layout and cannot hold PageBreak / MultipleBlanksField / WidgetContact / WidgetVideo / WidgetButton"
|
|
6422
6619
|
},
|
|
6423
6620
|
"scene": {
|
|
6424
6621
|
"type": "string",
|
|
@@ -6427,7 +6624,7 @@
|
|
|
6427
6624
|
},
|
|
6428
6625
|
"evaluation_setting": {
|
|
6429
6626
|
"type": "object",
|
|
6430
|
-
"description": "Evaluation settings (updateEvaluationSetting): Partially updates an evaluation form's settings
|
|
6627
|
+
"description": "Evaluation settings (updateEvaluationSetting): Partially updates an evaluation form's settings (schema `EvaluationSettingInput`).\n- `evaluation_comments` replaces the total score range comments as a whole (an empty array turns them off) and takes effect only when `notice_after_filling_mode`, passed or already saved, is reports / customize. A comment written with conditions in the form editor reads back as `id` + `conditions`; pass it back under that id, where only `comment` / `retry` can change.\n- `indicator_setting.indicators` replaces the dimensions as a whole; pass `api_code` back to keep a dimension. A dimension binds visible scorable questions by `field_api_codes` or `field_cids`."
|
|
6431
6628
|
}
|
|
6432
6629
|
},
|
|
6433
6630
|
"additionalProperties": false,
|
|
@@ -6509,11 +6706,11 @@
|
|
|
6509
6706
|
"anyOf": [
|
|
6510
6707
|
{
|
|
6511
6708
|
"type": "object",
|
|
6512
|
-
"description": "Shape: schema \"
|
|
6709
|
+
"description": "Shape: schema \"EvaluationFieldInput\"; call get_schema (name=\"EvaluationFieldInput\") or read the resource jinshuju://schemas/EvaluationFieldInput."
|
|
6513
6710
|
},
|
|
6514
6711
|
{
|
|
6515
6712
|
"type": "object",
|
|
6516
|
-
"description": "A table column definition; type is limited to the column types a table supports\nBranches on type; get_schema shows each branch's own properties: TextAreaInput, RadioButtonInput, CheckBoxInput, BooleanFieldInput, MobileFieldInput, NumberFieldInput, DateTimeFieldInput, EmailFieldInput,
|
|
6713
|
+
"description": "A table column definition; type is limited to the column types a table supports\nBranches on type; get_schema shows each branch's own properties: TextAreaInput, RadioButtonInput, CheckBoxInput, BooleanFieldInput, MobileFieldInput, NumberFieldInput, DateTimeFieldInput, EmailFieldInput, 13 in all.",
|
|
6517
6714
|
"required": [
|
|
6518
6715
|
"type",
|
|
6519
6716
|
"label"
|
|
@@ -6533,7 +6730,8 @@
|
|
|
6533
6730
|
"LinkField",
|
|
6534
6731
|
"AttachmentField",
|
|
6535
6732
|
"FormulaField",
|
|
6536
|
-
"RelationField"
|
|
6733
|
+
"RelationField",
|
|
6734
|
+
"SequenceField"
|
|
6537
6735
|
]
|
|
6538
6736
|
},
|
|
6539
6737
|
"label": {
|
|
@@ -6808,7 +7006,7 @@
|
|
|
6808
7006
|
},
|
|
6809
7007
|
"evaluation_setting": {
|
|
6810
7008
|
"type": "object",
|
|
6811
|
-
"description": "Evaluation settings (updateEvaluationSetting): Partially updates an evaluation form's settings
|
|
7009
|
+
"description": "Evaluation settings (updateEvaluationSetting): Partially updates an evaluation form's settings (schema `EvaluationSettingInput`).\n- `evaluation_comments` replaces the total score range comments as a whole (an empty array turns them off) and takes effect only when `notice_after_filling_mode`, passed or already saved, is reports / customize. A comment written with conditions in the form editor reads back as `id` + `conditions`; pass it back under that id, where only `comment` / `retry` can change.\n- `indicator_setting.indicators` replaces the dimensions as a whole; pass `api_code` back to keep a dimension. A dimension binds visible scorable questions by `field_api_codes` or `field_cids`."
|
|
6812
7010
|
}
|
|
6813
7011
|
},
|
|
6814
7012
|
"additionalProperties": false,
|
|
@@ -6894,7 +7092,7 @@
|
|
|
6894
7092
|
"properties": {
|
|
6895
7093
|
"field": {
|
|
6896
7094
|
"type": "string",
|
|
6897
|
-
"description": "What to filter on; a field api_code for entries, or a form attribute such as `created_at` for form lists. Required unless the deprecated `api_code` or `trigger` is given instead."
|
|
7095
|
+
"description": "What to filter on; a field api_code for entries, where `creator_id` (`eq` with a user id, at most once) and `serial_number` (`eq` / `any_in` / `none_in`, several intersected) also work, or a form attribute such as `created_at` for form lists. Required unless the deprecated `api_code` or `trigger` is given instead."
|
|
6898
7096
|
},
|
|
6899
7097
|
"api_code": {
|
|
6900
7098
|
"type": "string",
|
|
@@ -6932,7 +7130,7 @@
|
|
|
6932
7130
|
"description": "Comparison; `equal` / `not_equal` / `start` / `end` are aliases of `eq` / `ne` / `gte` / `lte`. Each field type accepts only some operators, and an unsupported one returns 400 listing the available ones."
|
|
6933
7131
|
},
|
|
6934
7132
|
"value": {
|
|
6935
|
-
"description": "Condition value; its type depends on the field and the operator: a two-element array `[min, max]` for `between` / `not_between
|
|
7133
|
+
"description": "Condition value; its type depends on the field and the operator: a two-element array `[min, max]` for `between` / `not_between` (`{\"<column api_code>\": [min, max]}` on a matrix or table field), `{\"unit\": \"day\", \"n\": 30}` for `within_last` (unit minute / day / week / month), no value for `null` / `not_null`, a choice api_code or label on a choice field (a cascading drop-down also takes a `level1-level2` path), and serial numbers of the related table for `any_in` / `none_in` on a relation field."
|
|
6936
7134
|
}
|
|
6937
7135
|
}
|
|
6938
7136
|
},
|
|
@@ -6948,7 +7146,7 @@
|
|
|
6948
7146
|
}
|
|
6949
7147
|
]
|
|
6950
7148
|
],
|
|
6951
|
-
"description": "Filters, an array of ScopeCondition objects; conditions are combined with AND
|
|
7149
|
+
"description": "Filters, an array of ScopeCondition objects; conditions are combined with AND. Besides field api_codes, `creator_id` and `serial_number` can be filtered on.\n- To find entries whose multiple-choice field contains a choice, use `any_in` (`none_in` to exclude); `eq` is not \"contains\": it matches only entries with exactly the same set of choices."
|
|
6952
7150
|
},
|
|
6953
7151
|
"keyword": {
|
|
6954
7152
|
"type": "string",
|