Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Manage NetPad forms, submissions, users, and RBAC. Use when: (1) Creating forms with custom fields, (2) Submitting data to forms, (3) Querying form submissions, (4) Managing users/groups/roles (RBAC), (5) Installing NetPad apps from marketplace. Requires NETPAD_API_KEY for API, or `netpad login` for CLI.
Manage NetPad forms, submissions, users, and RBAC. Use when: (1) Creating forms with custom fields, (2) Submitting data to forms, (3) Querying form submissions, (4) Managing users/groups/roles (RBAC), (5) Installing NetPad apps from marketplace. Requires NETPAD_API_KEY for API, or `netpad login` for CLI.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Manage forms, submissions, users, and RBAC via CLI and REST API.
ToolInstallPurposenetpad CLInpm i -g @netpad/cliRBAC, marketplace, packagesREST APIcurl + API keyForms, submissions, data
export NETPAD_API_KEY="np_live_xxx" # Production export NETPAD_API_KEY="np_test_xxx" # Test (can submit to drafts) All requests use Bearer token: curl -H "Authorization: Bearer $NETPAD_API_KEY" \ "https://www.netpad.io/api/v1/..."
TaskEndpointMethodList projects/projectsGETList forms/formsGETCreate form/formsPOSTGet form/forms/{formId}GETUpdate/publish form/forms/{formId}PATCHDelete form/forms/{formId}DELETEList submissions/forms/{formId}/submissionsGETCreate submission/forms/{formId}/submissionsPOSTGet submission/forms/{formId}/submissions/{id}GETDelete submission/forms/{formId}/submissions/{id}DELETE
Forms belong to projects. Get project ID before creating forms. # List projects curl -H "Authorization: Bearer $NETPAD_API_KEY" \ "https://www.netpad.io/api/v1/projects" | jq '.data[] | {projectId, name}'
curl -H "Authorization: Bearer $NETPAD_API_KEY" \ "https://www.netpad.io/api/v1/forms?status=published&pageSize=50"
curl -X POST -H "Authorization: Bearer $NETPAD_API_KEY" \ -H "Content-Type: application/json" \ "https://www.netpad.io/api/v1/forms" \ -d '{ "name": "Contact Form", "description": "Simple contact form", "projectId": "proj_xxx", "fields": [ {"path": "name", "label": "Name", "type": "text", "required": true}, {"path": "email", "label": "Email", "type": "email", "required": true}, {"path": "phone", "label": "Phone", "type": "phone"}, {"path": "message", "label": "Message", "type": "textarea"} ] }'
curl -H "Authorization: Bearer $NETPAD_API_KEY" \ "https://www.netpad.io/api/v1/forms/{formId}"
curl -X PATCH -H "Authorization: Bearer $NETPAD_API_KEY" \ -H "Content-Type: application/json" \ "https://www.netpad.io/api/v1/forms/{formId}" \ -d '{"status": "published"}'
curl -X PATCH -H "Authorization: Bearer $NETPAD_API_KEY" \ -H "Content-Type: application/json" \ "https://www.netpad.io/api/v1/forms/{formId}" \ -d '{ "fields": [ {"path": "name", "label": "Full Name", "type": "text", "required": true}, {"path": "email", "label": "Email Address", "type": "email", "required": true}, {"path": "company", "label": "Company", "type": "text"}, {"path": "role", "label": "Role", "type": "select", "options": [ {"value": "dev", "label": "Developer"}, {"value": "pm", "label": "Product Manager"}, {"value": "exec", "label": "Executive"} ]} ] }'
curl -X DELETE -H "Authorization: Bearer $NETPAD_API_KEY" \ "https://www.netpad.io/api/v1/forms/{formId}"
curl -X POST -H "Authorization: Bearer $NETPAD_API_KEY" \ -H "Content-Type: application/json" \ "https://www.netpad.io/api/v1/forms/{formId}/submissions" \ -d '{ "data": { "name": "John Doe", "email": "john@example.com", "message": "Hello from the API!" } }'
# Recent submissions curl -H "Authorization: Bearer $NETPAD_API_KEY" \ "https://www.netpad.io/api/v1/forms/{formId}/submissions?pageSize=50" # With date filter curl -H "Authorization: Bearer $NETPAD_API_KEY" \ "https://www.netpad.io/api/v1/forms/{formId}/submissions?startDate=2026-01-01T00:00:00Z" # Sorted ascending curl -H "Authorization: Bearer $NETPAD_API_KEY" \ "https://www.netpad.io/api/v1/forms/{formId}/submissions?sortOrder=asc"
curl -H "Authorization: Bearer $NETPAD_API_KEY" \ "https://www.netpad.io/api/v1/forms/{formId}/submissions/{submissionId}"
curl -X DELETE -H "Authorization: Bearer $NETPAD_API_KEY" \ "https://www.netpad.io/api/v1/forms/{formId}/submissions/{submissionId}"
TypeDescriptionValidationtextSingle line textminLength, maxLength, patternemailEmail addressBuilt-in validationphonePhone numberBuilt-in validationnumberNumeric inputmin, maxdateDate picker-selectDropdownoptions: [{value, label}]checkboxBoolean-textareaMulti-line textminLength, maxLengthfileFile upload-
{ "path": "fieldName", "label": "Display Label", "type": "text", "required": true, "placeholder": "Hint text", "helpText": "Additional guidance", "options": [{"value": "a", "label": "Option A"}], "validation": { "minLength": 1, "maxLength": 500, "pattern": "^[A-Z].*", "min": 0, "max": 100 } }
# 1. Create draft RESULT=$(curl -s -X POST -H "Authorization: Bearer $NETPAD_API_KEY" \ -H "Content-Type: application/json" \ "https://www.netpad.io/api/v1/forms" \ -d '{"name":"Survey","projectId":"proj_xxx","fields":[...]}') FORM_ID=$(echo $RESULT | jq -r '.data.id') # 2. Publish curl -X PATCH -H "Authorization: Bearer $NETPAD_API_KEY" \ -H "Content-Type: application/json" \ "https://www.netpad.io/api/v1/forms/$FORM_ID" \ -d '{"status":"published"}'
curl -H "Authorization: Bearer $NETPAD_API_KEY" \ "https://www.netpad.io/api/v1/forms/{formId}/submissions?pageSize=1000" \ | jq '.data[].data'
for row in $(cat data.json | jq -c '.[]'); do curl -s -X POST -H "Authorization: Bearer $NETPAD_API_KEY" \ -H "Content-Type: application/json" \ "https://www.netpad.io/api/v1/forms/{formId}/submissions" \ -d "{\"data\":$row}" done
curl -H "Authorization: Bearer $NETPAD_API_KEY" \ "https://www.netpad.io/api/v1/forms?search=contact&status=published"
Use scripts/netpad.sh for common operations: # Make executable chmod +x scripts/netpad.sh # Usage ./scripts/netpad.sh projects list ./scripts/netpad.sh forms list published ./scripts/netpad.sh forms create "Contact Form" proj_xxx ./scripts/netpad.sh forms publish frm_xxx ./scripts/netpad.sh submissions list frm_xxx ./scripts/netpad.sh submissions create frm_xxx '{"name":"John","email":"john@example.com"}' ./scripts/netpad.sh submissions export frm_xxx > data.jsonl ./scripts/netpad.sh submissions count frm_xxx
LimitValueRequests/hour1,000Requests/day10,000 Headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
{ "success": true, "data": { ... }, "pagination": {"total": 100, "page": 1, "pageSize": 20, "hasMore": true}, "requestId": "uuid" }
{ "success": false, "error": { "code": "VALIDATION_ERROR", "message": "Description", "details": {} }, "requestId": "uuid" }
# Required for REST API export NETPAD_API_KEY="np_live_xxx" # Optional (for local/staging) export NETPAD_BASE_URL="https://staging.netpad.io/api/v1"
Install: npm i -g @netpad/cli
netpad login # Opens browser netpad whoami # Check auth status netpad logout # Clear credentials
# Search for apps netpad search "helpdesk" # Install an app netpad install @netpad/helpdesk-app # List installed netpad list # Create new app scaffold netpad create-app my-app # Submit to marketplace netpad submit ./my-app
# List org members netpad users list -o org_xxx # Add user netpad users add user@example.com -o org_xxx --role member # Change role netpad users update user@example.com -o org_xxx --role admin # Remove user netpad users remove user@example.com -o org_xxx
# List groups netpad groups list -o org_xxx # Create group netpad groups create "Engineering" -o org_xxx # Add user to group netpad groups add-member grp_xxx user@example.com -o org_xxx # Delete group netpad groups delete grp_xxx -o org_xxx
# List roles (builtin + custom) netpad roles list -o org_xxx # Create custom role netpad roles create "Reviewer" -o org_xxx --base viewer --description "Can review submissions" # View role details netpad roles get role_xxx -o org_xxx # Delete custom role netpad roles delete role_xxx -o org_xxx
# Assign role to user netpad assign user user@example.com role_xxx -o org_xxx # Assign role to group netpad assign group grp_xxx role_xxx -o org_xxx # Remove assignment netpad unassign user user@example.com role_xxx -o org_xxx
# List all permissions netpad permissions list -o org_xxx # Check user's effective permissions netpad permissions check user@example.com -o org_xxx
references/api-endpoints.md โ Complete REST API endpoint docs references/cli-commands.md โ Full CLI command reference
Michael Lynn โ Principal Staff Developer Advocate at MongoDB ๐ Website: mlynn.org ๐ GitHub: @mrlynn ๐ผ LinkedIn: linkedin.com/in/mlynn
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.