{
  "opencollection": "1.0.0",
  "info": {
    "name": "Ninox Public Fields Records API",
    "version": "1.0.0"
  },
  "items": [
    {
      "info": {
        "name": "Records",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "Get records from a table",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/api/v1/workspace/:workspaceId/modules/:moduleName/tables/:tableName/records",
            "params": [
              {
                "name": "moduleName",
                "value": "",
                "type": "path",
                "description": "Module name"
              },
              {
                "name": "tableName",
                "value": "",
                "type": "path",
                "description": "Table name"
              },
              {
                "name": "workspaceId",
                "value": "",
                "type": "path",
                "description": "Workspace ID"
              },
              {
                "name": "fields",
                "value": "",
                "type": "query",
                "description": "Comma-separated list of field names to include"
              },
              {
                "name": "filter",
                "value": "",
                "type": "query",
                "description": "Filter conditions as a JSON string (e.g., {\"email\": \"test@example.com\"})"
              },
              {
                "name": "limit",
                "value": "",
                "type": "query",
                "description": "Maximum number of rows to return (1-100)"
              },
              {
                "name": "offset",
                "value": "",
                "type": "query",
                "description": "Number of rows to skip (starts with 0)"
              },
              {
                "name": "sort",
                "value": "",
                "type": "query",
                "description": "Field name to sort by"
              }
            ],
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Retrieves paginated rows from a table with optional filtering and sorting"
        },
        {
          "info": {
            "name": "Create records in a table",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "{{baseUrl}}/api/v1/workspace/:workspaceId/modules/:moduleName/tables/:tableName/records",
            "params": [
              {
                "name": "moduleName",
                "value": "",
                "type": "path",
                "description": "Module name"
              },
              {
                "name": "tableName",
                "value": "",
                "type": "path",
                "description": "Table name"
              },
              {
                "name": "workspaceId",
                "value": "",
                "type": "path",
                "description": "Workspace ID"
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Creates new records in an existing table (max. 6MB payload size)"
        },
        {
          "info": {
            "name": "Update records in a table",
            "type": "http"
          },
          "http": {
            "method": "PATCH",
            "url": "{{baseUrl}}/api/v1/workspace/:workspaceId/modules/:moduleName/tables/:tableName/records",
            "params": [
              {
                "name": "moduleName",
                "value": "",
                "type": "path",
                "description": "Module name"
              },
              {
                "name": "tableName",
                "value": "",
                "type": "path",
                "description": "Table name"
              },
              {
                "name": "workspaceId",
                "value": "",
                "type": "path",
                "description": "Workspace ID"
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Updates existing records in a table (max. 6MB payload size). Each record must include an `id` field referencing an existing record. The update is transactional — if any record fails validation or does not exist, all changes are rolled back.\n\n**Field type rules:**\n- `multi` — must be an **array of strings** (e.g. `[\"Gold\", \"Silver\"]`). A plain string is not accepted.\n- `choice` — a single string (e.g. `\"Gold\"`) or an array of strings.\n- `boolean` — `true` or `false` only; numeric `1`/`0` are not "
        },
        {
          "info": {
            "name": "Delete records from a table",
            "type": "http"
          },
          "http": {
            "method": "DELETE",
            "url": "{{baseUrl}}/api/v1/workspace/:workspaceId/modules/:moduleName/tables/:tableName/records",
            "params": [
              {
                "name": "moduleName",
                "value": "",
                "type": "path",
                "description": "Module name"
              },
              {
                "name": "tableName",
                "value": "",
                "type": "path",
                "description": "Table name"
              },
              {
                "name": "workspaceId",
                "value": "",
                "type": "path",
                "description": "Workspace ID"
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Deletes existing records from a table in a single transaction. If any record id is invalid, does not exist, or deletion fails, all changes are rolled back."
        },
        {
          "info": {
            "name": "Import records from CSV file",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "{{baseUrl}}/api/v1/workspace/:workspaceId/modules/:moduleName/tables/:tableName/records/import/csv",
            "params": [
              {
                "name": "moduleName",
                "value": "",
                "type": "path",
                "description": "Module name"
              },
              {
                "name": "tableName",
                "value": "",
                "type": "path",
                "description": "Table name"
              },
              {
                "name": "workspaceId",
                "value": "",
                "type": "path",
                "description": "Workspace ID"
              }
            ],
            "body": {
              "type": "multipart-form",
              "data": [
                {
                  "name": "file",
                  "type": "text",
                  "value": ""
                },
                {
                  "name": "hasHeader",
                  "type": "text",
                  "value": ""
                },
                {
                  "name": "delimiter",
                  "type": "text",
                  "value": ""
                },
                {
                  "name": "quoteChar",
                  "type": "text",
                  "value": ""
                },
                {
                  "name": "encoding",
                  "type": "text",
                  "value": ""
                },
                {
                  "name": "importMode",
                  "type": "text",
                  "value": ""
                },
                {
                  "name": "numberFormat",
                  "type": "text",
                  "value": ""
                },
                {
                  "name": "batchSize",
                  "type": "text",
                  "value": ""
                },
                {
                  "name": "mappings",
                  "type": "text",
                  "value": ""
                }
              ]
            },
            "auth": {
              "type": "bearer",
              "token": "{{bearerToken}}"
            }
          },
          "docs": "Import records from a CSV file into an existing table.\n        \nThe endpoint accepts multipart/form-data with:\n- A CSV file (max 50 MB)\n- Optional parsing and import options\n\n**Auto-mapping**: By default, CSV columns are automatically mapped to table fields by matching column header names to field names (case-insensitive).\n\n**Import Modes**:\n- `append`: Always create new records (default)\n- `update`: Only update existing records (requires key field mappings)\n- `upsert`: Update existing records o"
        }
      ]
    }
  ],
  "bundled": true
}