Ninox Modules API
The Modules API from Ninox — 2 operation(s) for modules.
The Modules API from Ninox — 2 operation(s) for modules.
openapi: 3.0.0
info:
title: Ninox Public Fields Modules API
description: 'The Ninox Public API provides programmatic access to workspace resources, enabling seamless integration for managing modules, tables, fields and records.
### Authentication
All requests require a Workspace API Key passed in the HTTP header as follows:
**<code>Authorization: Bearer {apiKey}</code>**
API keys can be generated and managed within the **Workspace Integration** settings in the Ninox app.'
version: 1.0.0
contact: {}
servers: []
tags:
- name: Modules
paths:
/api/v1/workspace/{workspaceId}/modules:
post:
operationId: ModulesV1Controller_createModule
summary: Create a module
description: Creates a new module in a workspace
parameters:
- name: workspaceId
required: true
in: path
description: Workspace ID
schema:
minLength: 12
maxLength: 12
pattern: ^[a-z0-9]+$
example: 5rdco4s18swu
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateModuleBody'
examples:
Example 1:
value:
icon:
color: '#bada55'
filling: 0
icon: favorite
labels:
? ''
: The events module
name: the_events_module
Example 2 (all properties):
value:
hideNavigation: false
icon:
color: coral
filling: 1
icon: school
isHidden: false
labels:
? ''
: The sales module
name: sales_module
openRoles:
- admin
- editor
responses:
'201':
description: Module created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleResponse'
'400':
description: Bad request (e.g., module already exists)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Workspace not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- bearer: []
tags:
- Modules
get:
operationId: ModulesV1Controller_getModules
summary: List all modules in a workspace
description: Retrieves all modules available in a workspace
parameters:
- name: workspaceId
required: true
in: path
description: Workspace ID
schema:
minLength: 12
maxLength: 12
pattern: ^[a-z0-9]+$
example: 5rdco4s18swu
type: string
responses:
'200':
description: Modules retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModulesResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Workspace not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- bearer: []
tags:
- Modules
/api/v1/workspace/{workspaceId}/modules/{moduleName}:
delete:
operationId: ModulesV1Controller_deleteModule
summary: Delete a module
description: Deletes a module in a workspace
parameters:
- name: moduleName
required: true
in: path
description: Module name
schema:
minLength: 1
maxLength: 100
pattern: ^[a-z0-9_]+$
example: crm
type: string
- name: workspaceId
required: true
in: path
description: Workspace ID
schema:
minLength: 12
maxLength: 12
pattern: ^[a-z0-9]+$
example: 5rdco4s18swu
type: string
responses:
'200':
description: Module deleted successfully
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteModuleResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Module not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- bearer: []
tags:
- Modules
get:
operationId: ModulesV1Controller_getModule
summary: Get a specific module
description: Retrieves detailed information about a specific module, including its tables
parameters:
- name: moduleName
required: true
in: path
description: Module name
schema:
minLength: 1
maxLength: 100
pattern: ^[a-z0-9_]+$
example: crm
type: string
- name: workspaceId
required: true
in: path
description: Workspace ID
schema:
minLength: 12
maxLength: 12
pattern: ^[a-z0-9]+$
example: 5rdco4s18swu
type: string
responses:
'200':
description: Module details retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Module not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- bearer: []
tags:
- Modules
patch:
operationId: ModulesV1Controller_updateModule
summary: Update a module
description: Updates an existing module in a workspace
parameters:
- name: moduleName
required: true
in: path
description: Module name
schema:
minLength: 1
maxLength: 100
pattern: ^[a-z0-9_]+$
example: crm
type: string
- name: workspaceId
required: true
in: path
description: Workspace ID
schema:
minLength: 12
maxLength: 12
pattern: ^[a-z0-9]+$
example: 5rdco4s18swu
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateModuleBody'
examples:
Example 1:
value:
hideNavigation: false
icon:
icon: database
isHidden: false
labels:
? ''
: A new app
name: a_new_application
openRoles:
- editor
- admin
responses:
'200':
description: Module updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleResponse'
'400':
description: Bad request (e.g., module already exists)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Module not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- bearer: []
tags:
- Modules
components:
schemas:
ErrorResponse:
type: object
properties:
error:
type: object
properties:
message:
type: string
description: Error message
required:
- error
DeleteModuleResponse:
type: object
properties:
data:
type: object
properties:
id:
type: string
description: Deleted module id
required:
- data
UpdateModuleBody:
type: object
properties:
name:
description: Module name
type: string
minLength: 1
maxLength: 100
pattern: ^[a-z0-9_]+$
hideNavigation:
description: Hide module from navigation
type: boolean
icon:
description: Module icon
type: object
properties:
color:
type: string
filling:
anyOf:
- type: number
enum:
- 0
- type: number
enum:
- 1
icon:
type: string
minLength: 1
isHidden:
description: Hide module
type: boolean
labels:
description: Module labels (localized)
type: object
additionalProperties:
type: string
minLength: 1
maxLength: 100
openRoles:
description: Module open roles
minItems: 1
maxItems: 2
type: array
items:
type: string
enum:
- admin
- editor
description: Update Module request body
CreateModuleBody:
type: object
properties:
name:
type: string
minLength: 1
maxLength: 100
pattern: ^[a-z0-9_]+$
description: Module name
hideNavigation:
description: Hide module from navigation
type: boolean
icon:
description: Module icon
type: object
properties:
color:
type: string
filling:
anyOf:
- type: number
enum:
- 0
- type: number
enum:
- 1
icon:
type: string
minLength: 1
isHidden:
description: Hide module
type: boolean
labels:
description: Module labels (localized)
type: object
additionalProperties:
type: string
minLength: 1
maxLength: 100
openRoles:
description: Module open roles
minItems: 1
maxItems: 2
type: array
items:
type: string
enum:
- admin
- editor
required:
- name
description: Create Module request body
ModuleResponse:
type: object
properties:
data:
type: object
properties:
hideNavigation:
description: Hide module from navigation
type: boolean
icon:
description: Module icon
type: object
properties:
color:
description: Icon color (hex string)
type: string
filling:
description: Icon filling
anyOf:
- type: number
enum:
- 0
- type: number
enum:
- 1
icon:
type: string
description: Icon name
required:
- icon
isHidden:
description: Hide module
type: boolean
labels:
description: Module labels (localized)
type: object
additionalProperties:
type: string
name:
type: string
openRoles:
description: Module open roles
type: array
items:
type: string
tables:
type: array
items:
type: object
properties:
createRoles:
description: Roles allowed to create records
type: array
items:
type: string
deleteRoles:
description: Roles allowed to delete records
type: array
items:
type: string
fields:
type: array
items:
type: object
properties:
expression:
description: Expression (for function type)
type: string
expressionErrors:
description: Expression validation errors (for function type)
type: array
items:
type: object
properties:
column:
type: number
description: Column number where the error occurred
line:
type: number
description: Line number where the error occurred
message:
type: string
description: Error message
required:
- column
- line
- message
index:
description: Field is indexed
type: boolean
labels:
description: Field labels (localized)
type: object
additionalProperties:
type: string
name:
type: string
description: Field name
optionColor:
description: Color expression for dchoice/dmulti fields
type: string
optionIcon:
description: Icon expression for dchoice/dmulti fields
type: string
optionName:
description: Display name expression for dchoice/dmulti fields
type: string
options:
description: Options array for choice/multi fields, or selection expression for dchoice/dmulti fields
anyOf:
- type: array
items:
type: object
properties:
color:
description: Option color (hex string)
type: string
icon:
description: Option icon name
type: string
id:
type: string
description: Stable option id
labels:
description: Localized option labels
type: object
additionalProperties:
type: string
name:
type: string
description: Option name
order:
type: number
description: Option display order
textColor:
description: Option text color (hex string)
type: string
required:
- id
- name
- order
- type: string
readRoles:
description: Roles allowed to read the field
type: array
items:
type: string
refTableId:
description: Reference table id
type: string
required:
description: Field is required
type: boolean
search:
description: Field is searchable
type: boolean
type:
type: string
enum:
- any
- appointment
- boolean
- choice
- color
- date
- dchoice
- dmulti
- file
- function
- html
- icon
- lambda
- multi
- number
- react
- reference
- reverse
- rowId
- string
- styled
- time
- timeinterval
- timestamp
- unknown
- user
- void
description: Field type
unique:
description: Field is unique
type: boolean
variant:
description: Field variant (for string type)
type: string
writeRoles:
description: Roles allowed to write to the field
type: array
items:
type: string
required:
- name
- type
hasFiles:
description: Enable files for the table
type: boolean
hasGlobalSearch:
description: Enable global search for the table
type: boolean
hasHistory:
description: Enable history for the table
type: boolean
icon:
description: Table icon
type: object
properties:
color:
description: Icon color (hex string)
type: string
filling:
description: Icon filling
anyOf:
- type: number
enum:
- 0
- type: number
enum:
- 1
icon:
type: string
description: Icon name
required:
- icon
isEmailLinkingEnabled:
description: Enable email linking for the table
type: boolean
isHidden:
description: Hide the table
type: boolean
labels:
description: Table labels (localized)
type: object
additionalProperties:
type: string
name:
type: string
readRoles:
description: Roles allowed to read records
type: array
items:
type: string
writeRoles:
description: Roles allowed to update records
type: array
items:
type: string
required:
- name
description: Module details
required:
- data
ModulesResponse:
type: object
properties:
data:
type: array
items:
type: object
properties:
hideNavigation:
description: Hide module from navigation
type: boolean
icon:
description: Module icon
type: object
properties:
color:
description: Icon color (hex string)
type: string
filling:
description: Icon filling
anyOf:
- type: number
enum:
- 0
- type: number
enum:
- 1
icon:
type: string
description: Icon name
required:
- icon
isHidden:
description: Hide module
type: boolean
labels:
description: Module labels (localized)
type: object
additionalProperties:
type: string
name:
type: string
openRoles:
description: Module open roles
type: array
items:
type: string
tables:
type: array
items:
type: object
properties:
createRoles:
description: Roles allowed to create records
type: array
items:
type: string
deleteRoles:
description: Roles allowed to delete records
type: array
items:
type: string
fields:
type: array
items:
type: object
properties:
expression:
description: Expression (for function type)
type: string
expressionErrors:
description: Expression validation errors (for function type)
type: array
items:
type: object
properties:
column:
type: number
description: Column number where the error occurred
line:
type: number
description: Line number where the error occurred
message:
type: string
description: Error message
required:
- column
- line
- message
index:
description: Field is indexed
type: boolean
labels:
description: Field labels (localized)
type: object
additionalProperties:
type: string
name:
type: string
description: Field name
optionColor:
description: Color expression for dchoice/dmulti fields
type: string
optionIcon:
description: Icon expression for dchoice/dmulti fields
type: string
optionName:
description: Display name expression for dchoice/dmulti fields
type: string
options:
description: Options array for choice/multi fields, or selection expression for dchoice/dmulti fields
anyOf:
- type: array
items:
type: object
properties:
color:
description: Option color (hex string)
type: string
icon:
description: Option icon name
type: string
id:
type: string
description: Stable option id
labels:
description: Localized option labels
type: object
additionalProperties:
type: string
name:
type: string
description: Option name
order:
type: number
description: Option display order
textColor:
description: Option text color (hex string)
type: string
required:
- id
- name
- order
- type: string
readRoles:
description: Roles allowed to read the field
type: array
items:
type: string
refTableId:
description: Reference table id
type: string
required:
description: Field is required
type: boolean
search:
description: Field is searchable
type: boolean
type:
type: string
enum:
- any
- appointment
- boolean
- choice
- color
- date
- dchoice
- dmulti
- file
- function
- html
- icon
- lambda
- multi
- number
- react
- reference
- reverse
- rowId
- string
- styled
- time
- timeinterval
- timestamp
- unknown
- user
- void
description: Field type
unique:
description: Field is unique
type: boolean
variant:
description: Field variant (for string type)
type: string
writeRoles:
description: Roles allowed to write to the field
type: array
items:
type: string
required:
- name
- type
hasFiles:
description: Enable files for the table
type: boolean
hasGlobalSearch:
description: Enable global search for the table
type: boolean
hasHistory:
description: Enable history for the table
type: boolean
icon:
description: Table icon
type: object
properties:
color:
description: Icon color (hex string)
type: string
filling:
description: Icon filling
anyOf:
- type: number
enum:
- 0
- type: number
enum:
- 1
icon:
type: string
description: Icon name
required:
- icon
isEmailLinkingEnabled:
description: Enable email linking for the table
type: boolean
isHidden:
description: Hide the table
type: boolean
labels:
description: Table labels (localized)
# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ninox/refs/heads/main/openapi/ninox-modules-api-openapi.yml