Scispot ELN API

Electronic Lab Notebook protocols and experimental records

OpenAPI Specification

scispot-eln-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Scispot ELN API
  description: The Scispot REST API provides programmatic access to all features of the Scispot laboratory data platform. Scispot is an API-first Electronic Lab Notebook (ELN) and Laboratory Information Management System (LIMS) designed for modern life science and biotech labs. The API enables programmatic management of Labsheets (structured LIMS data), ELN protocols and experiments, Manifests (plates, boxes, racks), and biological Sequences. Every GUI action in Scispot is available through the API, supporting automation, computational biology workflows, instrument integration, and data pipeline development. Authenticated via personal API tokens with role-based access control (RBAC).
  version: 1.0.0
  contact:
    name: Scispot Developer Support
    url: https://docs.scispot.com/
  termsOfService: https://www.scispot.com/terms
servers:
- url: https://api.scispot.com/v1
  description: Scispot Production API
security:
- ApiKeyAuth: []
tags:
- name: ELN
  description: Electronic Lab Notebook protocols and experimental records
paths:
  /eln/notebooks:
    get:
      operationId: listNotebooks
      summary: List ELN Notebooks
      description: Retrieve a list of all Electronic Lab Notebook notebooks in the workspace. Notebooks contain protocols, experiments, and observations.
      tags:
      - ELN
      parameters:
      - name: page
        in: query
        description: Page number for pagination
        required: false
        schema:
          type: integer
          default: 1
      - name: limit
        in: query
        description: Number of notebooks per page
        required: false
        schema:
          type: integer
          maximum: 50
          default: 20
      responses:
        '200':
          description: List of notebooks
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotebookListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /eln/notebooks/{notebookId}/entries:
    get:
      operationId: listNotebookEntries
      summary: List Notebook Entries
      description: Retrieve all entries (experiments, observations, protocols) within a specific notebook.
      tags:
      - ELN
      parameters:
      - name: notebookId
        in: path
        description: Unique identifier of the notebook
        required: true
        schema:
          type: string
      - name: page
        in: query
        description: Page number for pagination
        required: false
        schema:
          type: integer
          default: 1
      - name: limit
        in: query
        description: Number of entries per page
        required: false
        schema:
          type: integer
          maximum: 50
          default: 20
      responses:
        '200':
          description: List of notebook entries
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotebookEntriesResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      operationId: createNotebookEntry
      summary: Create Notebook Entry
      description: Create a new entry in an ELN notebook. Entries can represent experiments, protocol executions, observations, or general notes.
      tags:
      - ELN
      parameters:
      - name: notebookId
        in: path
        description: Unique identifier of the notebook
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotebookEntryInput'
      responses:
        '201':
          description: Notebook entry created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotebookEntry'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  responses:
    Unauthorized:
      description: API key missing or invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: Requested resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  schemas:
    NotebookEntriesResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/NotebookEntry'
        total:
          type: integer
        page:
          type: integer
        limit:
          type: integer
    NotebookEntryInput:
      type: object
      properties:
        title:
          type: string
          description: Entry title
        type:
          type: string
          enum:
          - experiment
          - protocol
          - observation
          - note
        content:
          type: object
          description: Structured entry content
          additionalProperties: true
      required:
      - title
      - type
    NotebookEntry:
      type: object
      properties:
        id:
          type: string
          description: Unique entry identifier
        notebookId:
          type: string
        title:
          type: string
          description: Entry title
        type:
          type: string
          enum:
          - experiment
          - protocol
          - observation
          - note
        content:
          type: object
          description: Structured entry content
          additionalProperties: true
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    NotebookListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Notebook'
        total:
          type: integer
        page:
          type: integer
        limit:
          type: integer
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Error type
        message:
          type: string
          description: Human-readable error message
        code:
          type: integer
          description: Error code
    Notebook:
      type: object
      properties:
        id:
          type: string
          description: Unique notebook identifier
        name:
          type: string
          description: Notebook name
        description:
          type: string
        entryCount:
          type: integer
          description: Number of entries in the notebook
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: apiKey
      description: Personal API token generated from Scispot Account Settings > Personal Tokens. All API requests require this header.