Optilogic storage : custom columns API

Manage database custom columns

Operations 9

GET /storage/{storageName}/customizations Get database schema (tables and views) for a SQL storage item #
GET /storages/db-column-types Get supported column data types #
POST /storage/{storageName}/custom-column Create a new custom column in a database table #
GET /storage/{storageName}/custom-column Get details of a single custom column in a database table #
PUT /storage/{storageName}/custom-column Update a custom column #
DELETE /storage/{storageName}/custom-column Delete a custom column #
GET /storage/{storageName}/custom-columns Get all custom columns for a table #
GET /storage/{storageName}/custom-columns/validate Validate custom columns #
POST /storage/{storageName}/custom-columns/repair Repair custom columns #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/optilogic-storage-custom-columns-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

optilogic-storage-custom-columns-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: All Optilogic users can view the endpoint documentation below, upgrade to a paid account to gain access.
  version: 1.0.0
  title: 'Optilogic REST storage : custom columns API'
  contact:
    name: Optilogic Support
    email: support@optilogic.com
servers:
- url: https://api.optilogic.app/v0
tags:
- name: 'storage : custom columns'
  description: Manage database custom columns
paths:
  /storage/{storageName}/customizations:
    get:
      tags:
      - 'storage : custom columns'
      summary: Get database schema (tables and views) for a SQL storage item
      description: ''
      parameters:
      - name: storageName
        in: path
        description: Name of the target storage device
        required: true
        schema:
          type: string
      - name: table
        in: query
        description: Name of the database table. (Blank or missing for all tables)
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCustomizations'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Resource Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - APIKeyHeader: []
      operationId: getStorageByStorageNameCustomizations
      x-operation-id-source: derived
  /storages/db-column-types:
    get:
      tags:
      - 'storage : custom columns'
      summary: Get supported column data types
      description: Retrieve a list of all supported column data types for the database.
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetColumnDataTypes'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Resource Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - APIKeyHeader: []
      operationId: getStoragesDbColumnTypes
      x-operation-id-source: derived
  /storage/{storageName}/custom-column:
    post:
      tags:
      - 'storage : custom columns'
      summary: Create a new custom column in a database table
      description: ''
      parameters:
      - name: storageName
        in: path
        description: Name of the target storage device
        required: true
        schema:
          type: string
      - name: tableName
        in: query
        description: Name of the database table
        required: true
        schema:
          type: string
      - name: columnName
        in: query
        description: Name of the column to be created
        required: true
        schema:
          type: string
      - name: dataType
        in: query
        description: Data type of the new column (numeric,integer,text,etc.)
        required: true
        schema:
          type: string
      - name: characterMaximumLength
        in: query
        description: Maximum length of characters for the new column. (Only required if actual data type is character based and not 'text')
        required: false
        schema:
          type: integer
      - name: isNullable
        in: query
        description: Whether the new column can be NULL
        required: false
        schema:
          type: boolean
      - name: defaultValue
        in: query
        description: Default value for the new column
        required: false
        schema:
          type: string
      - name: isTableKeyColumn
        in: query
        description: Whether the column is a key column for the table
        required: false
        schema:
          type: boolean
      - name: trueDataType
        in: query
        description: 'The actual(physical) storage type of the table in postgres. (Valid values: bit, bool, bytea, char, cidr, date, float4, float8, inet, integer, int2, int2vector, int4, int8, interval, json, jsonb, jsonpath, line, money, numeric, point, text, time, timestamp, timestamptz, timetz, uuid, varbit, varchar, xml)'
        required: false
        schema:
          type: string
      - name: isRequired
        in: query
        description: Whether the column is required
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCustomColumn'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomColumnsResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
        '404':
          description: Resource Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - APIKeyHeader: []
      operationId: postStorageByStorageNameCustomColumn
      x-operation-id-source: derived
    get:
      tags:
      - 'storage : custom columns'
      summary: Get details of a single custom column in a database table
      description: ''
      parameters:
      - name: storageName
        in: path
        description: Name of the target storage device
        required: true
        schema:
          type: string
      - name: tableName
        in: query
        description: Name of the database table
        required: true
        schema:
          type: string
      - name: columnName
        in: query
        description: Name of the database column
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCustomColumn'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomColumnsResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
        '404':
          description: Resource Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - APIKeyHeader: []
      operationId: getStorageByStorageNameCustomColumn
      x-operation-id-source: derived
    put:
      tags:
      - 'storage : custom columns'
      summary: Update a custom column
      description: ''
      parameters:
      - name: storageName
        in: path
        description: Name of the target storage device
        required: true
        schema:
          type: string
      - name: tableName
        in: query
        description: Name of the database table
        required: true
        schema:
          type: string
      - name: columnName
        in: query
        description: Name of the column to be updated
        required: true
        schema:
          type: string
      - name: newColumnName
        in: query
        description: New name for the column (if being renamed)
        required: false
        schema:
          type: string
      - name: dataType
        in: query
        description: 'Data type of the column. (Valid values: bit, bool, bytea, char, cidr, date, float4, float8, inet, integer, int2, int2vector, int4, int8, interval, json, jsonb, jsonpath, line, money, numeric, point, text, time, timestamp, timestamptz, timetz, uuid, varbit, varchar, xml)'
        required: false
        schema:
          type: string
      - name: characterMaximumLength
        in: query
        description: Maximum length of characters for the column
        required: false
        schema:
          type: integer
      - name: isNullable
        in: query
        description: Whether the column can be NULL
        required: false
        schema:
          type: boolean
      - name: defaultValue
        in: query
        description: Default value for the column
        required: false
        schema:
          type: string
      - name: isTableKeyColumn
        in: query
        description: Whether the column is a key column for the table
        required: false
        schema:
          type: boolean
      - name: trueDataType
        in: query
        description: The true data type of the column
        required: false
        schema:
          type: string
      - name: isRequired
        in: query
        description: Whether the column is required
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCustomColumn'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomColumnsResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
        '404':
          description: Resource Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - APIKeyHeader: []
      operationId: putStorageByStorageNameCustomColumn
      x-operation-id-source: derived
    delete:
      tags:
      - 'storage : custom columns'
      summary: Delete a custom column
      description: ''
      parameters:
      - name: storageName
        in: path
        description: Name of the target storage device
        required: true
        schema:
          type: string
      - name: tableName
        in: query
        description: Name of the database table
        required: true
        schema:
          type: string
      - name: columnName
        in: query
        description: Name of the database column
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteCustomColumn'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomColumnsResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
        '404':
          description: Resource Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - APIKeyHeader: []
      operationId: deleteStorageByStorageNameCustomColumn
      x-operation-id-source: derived
  /storage/{storageName}/custom-columns:
    get:
      tags:
      - 'storage : custom columns'
      summary: Get all custom columns for a table
      description: ''
      parameters:
      - name: storageName
        in: path
        description: Name of the target storage device
        required: true
        schema:
          type: string
      - name: tableName
        in: query
        description: Name of the database table
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAllCustomColumns'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomColumnsResponseError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
        '404':
          description: Resource Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - APIKeyHeader: []
      operationId: getStorageByStorageNameCustomColumns
      x-operation-id-source: derived
  /storage/{storageName}/custom-columns/validate:
    get:
      tags:
      - 'storage : custom columns'
      summary: Validate custom columns
      description: ''
      parameters:
      - name: storageName
        in: path
        description: Name of the target storage device
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateCustomColumns'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
        '404':
          description: Resource Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - APIKeyHeader: []
      operationId: getStorageByStorageNameCustomColumnsValidate
      x-operation-id-source: derived
  /storage/{storageName}/custom-columns/repair:
    post:
      tags:
      - 'storage : custom columns'
      summary: Repair custom columns
      description: ''
      parameters:
      - name: storageName
        in: path
        description: Name of the target storage device
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RepairCustomColumns'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
        '404':
          description: Resource Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - APIKeyHeader: []
      operationId: postStorageByStorageNameCustomColumnsRepair
      x-operation-id-source: derived
components:
  schemas:
    GetColumnDataTypes:
      type: object
      properties:
        result:
          type: string
          format: string
          example: success
        count:
          type: integer
          example: 31
        dataTypes:
          type: array
          items:
            type: string
          example:
            result: success
            count: 33
            dataTypes:
            - name: bit
              supportsMaxLength: true
            - name: bool
              supportsMaxLength: false
            - name: bytea
              supportsMaxLength: false
            - name: character
              supportsMaxLength: true
    Error:
      type: object
      properties:
        result:
          type: string
          format: string
        error:
          type: string
          format: string
        correlationId:
          type: string
          format: uuid
    Forbidden:
      type: object
      properties:
        result:
          type: string
          format: string
        error:
          type: string
          format: string
        message:
          type: string
          format: string
        correlationId:
          type: string
          format: uuid
    GetAllCustomColumns:
      type: object
      properties:
        result:
          type: string
          format: string
          example: success
        count:
          type: integer
          example: 3
        customColumns:
          type: array
          items:
            $ref: '#/components/schemas/CustomColumn'
    GetCustomColumn:
      type: object
      properties:
        result:
          type: string
          format: string
          example: success
        customColumn:
          type: object
          properties:
            id:
              type: integer
              example: 106
            tableName:
              type: string
              example: your_table
            columnName:
              type: string
              example: your_column
            dataType:
              type: string
              example: integer
            characterMaximumLength:
              type: integer
              example: 255
            isNullable:
              type: boolean
              example: false
            defaultValue:
              type: string
              example: null
            isTableKeyColumn:
              type: boolean
              example: false
            trueDataType:
              type: string
              example: text
            isRequired:
              type: boolean
              example: true
    CustomColumnIssue:
      type: object
      properties:
        type:
          type: string
          example: UnspecifiedError,TableWithNoColumns,MissingTable,MissingColumn,ExtraColumn,TypeMismatch,MissingMetadata,MetadataDiscrepancy,IsNullableMismatch,UpdateTypedView,MissingTypedView,DefaultValueMismatch,MaxLengthMismatch
          enum:
          - UnspecifiedError
          - TableWithNoColumns
          - MissingTable
          - MissingColumn
          - ExtraColumn
          - TypeMismatch
          - MissingMetadata
          - MetadataDiscrepancy
          - IsNullableMismatch
          - UpdateTypedView
          - MissingTypedView
          - DefaultValueMismatch
          - MaxLengthMismatch
        tableName:
          type: string
        columnName:
          type: string
        expected:
          example: types:string, number, bool, null etc.
        actual:
          example: types:string, number, bool, null etc.
        description:
          type: string
    DeleteCustomColumn:
      type: object
      properties:
        result:
          type: string
          format: string
          example: success
        message:
          type: string
    GetCustomizations:
      type: object
      properties:
        result:
          type: string
          format: string
        schemas:
          type: array
          items:
            properties:
              tables:
                type: array
                items:
                  properties:
                    name:
                      description: the name of the table
                      type: string
                    columns:
                      type: array
                      items:
                        properties:
                          name:
                            description: the name of the column
                            type: string
                          dataType:
                            description: the sql data type of the column
                            type: string
                    isCustom:
                      description: whether the table is custom or not
                      type: boolean
                      default: false
              views:
                type: array
                items:
                  properties:
                    name:
                      description: the name of the table
                      type: string
                    columns:
                      type: array
                      items:
                        properties:
                          name:
                            description: the name of the column
                            type: string
                          dataType:
                            description: the sql data type of the column
                            type: string
                    isCustom:
                      description: whether the table is custom or not
                      type: boolean
                      default: false
    UpdateCustomColumn:
      type: object
      properties:
        result:
          type: string
          format: string
          example: success
        id:
          type: integer
          example: 106
        tableName:
          type: string
          example: your_table
        columnName:
          type: string
          example: your_column
        dataType:
          type: string
          example: integer
        characterMaximumLength:
          type: integer
          example: 255
        isNullable:
          type: boolean
          example: false
        defaultValue:
          type: string
          example: null
        isTableKeyColumn:
          type: boolean
          example: false
        trueDataType:
          type: string
          example: text
        isRequired:
          type: boolean
          example: true
        message:
          type: string
    CustomColumnsResponseError:
      type: object
      properties:
        result:
          type: string
        message:
          type: string
        errorDetails:
          type: array
          items:
            type: object
            properties:
              type:
                example: UnspecifiedError,TableWithNoColumns,MissingTable,MissingColumn,ExtraColumn,TypeMismatch,MissingMetadata,MetadataDiscrepancy,IsNullableMismatch,UpdateTypedView,MissingTypedView,DefaultValueMismatch,MaxLengthMismatch
                type: string
              tableName:
                type: string
              columnName:
                type: string
              expected:
                example: types:string, number, bool, null etc.
              actual:
                example: types:string, number, bool, null etc.
              description:
                type: expected value
      required:
      - result
      - message
      - errorDetails
    CreateCustomColumn:
      type: object
      properties:
        result:
          type: string
          format: string
          example: success
    ValidateCustomColumns:
      type: object
      properties:
        result:
          type: string
          format: string
          example: success
        count:
          type: integer
          example: 4
        issues:
          type: array
          items:
            $ref: '#/components/schemas/CustomColumnIssue'
    RepairCustomColumns:
      type: object
      properties:
        result:
          type: string
          format: string
          example: success
        repairedCount:
          type: integer
          example: 3
        errorsCount:
          type: integer
          example: 3
        repaired:
          type: array
          items:
            $ref: '#/components/schemas/CustomColumnIssue'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/CustomColumnIssue'
    CustomColumn:
      type: object
      properties:
        id:
          type: integer
          example: 106
        tableName:
          type: string
          example: your_table
        columnName:
          type: string
          example: your_column
        dataType:
          type: string
          example: integer
        characterMaximumLength:
          type: integer
          example: 255
        isNullable:
          type: boolean
          example: false
        defaultValue:
          type: string
          example: null
        isTableKeyColumn:
          type: boolean
          example: false
        trueDataType:
          type: string
          example: text
        isRequired:
          type: boolean
          example: true
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-KEY
externalDocs:
  description: Find out more about Optilogic
  url: https://optilogic.com