openapi: 3.0.0
paths:
  /:
    get:
      operationId: AppController_root
      parameters: []
      responses:
        '200':
          description: ''
  /api/v1/settings:
    get:
      operationId: AppSettingsController_settings
      parameters: []
      responses:
        '200':
          description: ''
  /api/v1/sdk/settings:
    get:
      operationId: AppSettingsController_sdkSettings
      parameters: []
      responses:
        '200':
          description: ''
      security:
        - bearer: []
  /api/v1/records/{entityId}:
    get:
      operationId: EntityController_getById
      parameters:
        - name: entityId
          required: true
          in: path
          description: entity identifier (UUIDv7)
          schema:
            type: string
      responses:
        '200':
          description: ''
      tags: &ref_0
        - Records
      security:
        - bearer: []
    patch:
      operationId: EntityController_update
      parameters:
        - name: entityId
          required: true
          in: path
          description: entity identifier (UUIDv7)
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EditEntityDto'
      responses:
        '201':
          description: ''
      tags: *ref_0
      security:
        - bearer: []
    put:
      operationId: EntityController_set
      parameters:
        - name: entityId
          required: true
          in: path
          description: entity identifier (UUIDv7)
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EditEntityDto'
      responses:
        '201':
          description: ''
      tags: *ref_0
      security:
        - bearer: []
    delete:
      operationId: EntityController_deleteById
      parameters:
        - name: entityId
          required: true
          in: path
          description: entity identifier (UUIDv7)
          schema:
            type: string
      responses:
        '200':
          description: ''
      tags: *ref_0
      security:
        - bearer: []
  /api/v1/records:
    post:
      operationId: EntityController_create
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEntityDto'
      responses:
        '201':
          description: ''
      tags: *ref_0
      security:
        - bearer: []
  /api/v1/records/delete:
    post:
      operationId: EntityController_delete
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchDto'
      responses:
        '201':
          description: ''
      tags: *ref_0
      security:
        - bearer: []
  /api/v1/records/search:
    post:
      operationId: EntityController_find
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchDto'
      responses:
        '200':
          description: ''
      tags: *ref_0
      security:
        - bearer: []
  /api/v1/records/{entityId}/search:
    post:
      operationId: EntityController_findFromId
      parameters:
        - name: entityId
          required: true
          in: path
          description: entity identifier (UUIDv7)
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchDto'
      responses:
        '200':
          description: ''
      tags: *ref_0
      security:
        - bearer: []
  /api/v1/labels/search:
    post:
      operationId: LabelsController_labelsSearch
      parameters: []
      responses:
        '200':
          description: ''
      tags:
        - Labels
      security:
        - bearer: []
  /api/v1/relationships/{entityId}:
    post:
      operationId: RelationshipsController_attach
      parameters:
        - name: entityId
          required: true
          in: path
          description: entity identifier (UUIDv7)
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttachDto'
      responses:
        '201':
          description: ''
      tags: &ref_1
        - Relationships
      security:
        - bearer: []
    put:
      operationId: RelationshipsController_detach
      parameters:
        - name: entityId
          required: true
          in: path
          description: entity identifier (UUIDv7)
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DetachDto'
      responses:
        '200':
          description: ''
      tags: *ref_1
      security:
        - bearer: []
  /api/v1/relationships/create-many:
    post:
      operationId: RelationshipsController_createMany
      parameters: []
      responses:
        '201':
          description: ''
      tags: *ref_1
      security:
        - bearer: []
  /api/v1/relationships/search:
    post:
      operationId: RelationshipsController_findRelations
      parameters:
        - name: skip
          required: true
          in: query
          schema:
            type: number
        - name: limit
          required: true
          in: query
          schema:
            type: number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchDto'
      responses:
        '200':
          description: ''
      tags: *ref_1
      security:
        - bearer: []
  /api/v1/relationships/delete-many:
    post:
      operationId: RelationshipsController_deleteMany
      parameters: []
      responses:
        '200':
          description: ''
      tags: *ref_1
      security:
        - bearer: []
  /api/v1/properties/search:
    post:
      operationId: PropertyController_listProperties
      parameters: []
      responses:
        '200':
          description: ''
      tags: &ref_2
        - Properties
      security:
        - bearer: []
  /api/v1/properties/{propertyId}/values:
    post:
      operationId: PropertyController_getPropertyValues
      parameters:
        - name: propertyId
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
      tags: *ref_2
      security:
        - bearer: []
  /api/v1/properties/{propertyId}:
    get:
      operationId: PropertyController_findById
      parameters:
        - name: propertyId
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
      tags: *ref_2
      security:
        - bearer: []
    delete:
      operationId: PropertyController_deleteField
      parameters:
        - name: propertyId
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
      tags: *ref_2
      security:
        - bearer: []
  /api/v1/tx:
    post:
      operationId: TransactionController_create
      parameters: []
      responses:
        '200':
          description: ''
      tags: &ref_3
        - Transactions
      security:
        - bearer: []
  /api/v1/tx/{txId}:
    get:
      operationId: TransactionController_read
      parameters:
        - name: txId
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
      tags: *ref_3
      security:
        - bearer: []
  /api/v1/tx/{txId}/rollback:
    post:
      operationId: TransactionController_rollback
      parameters:
        - name: txId
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
      tags: *ref_3
      security:
        - bearer: []
  /api/v1/tx/{txId}/commit:
    post:
      operationId: TransactionController_commit
      parameters:
        - name: txId
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
      tags: *ref_3
      security:
        - bearer: []
  /api/v1/records/import/json:
    post:
      operationId: ImportController_collectJson
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportJsonDto'
      responses:
        '201':
          description: ''
      tags: &ref_4
        - Records
      security:
        - bearer: []
  /api/v1/records/import/csv:
    post:
      operationId: ImportController_collectCsv
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportCsvDto'
      responses:
        '201':
          description: ''
      tags: *ref_4
      security:
        - bearer: []
  /api/v1/records/export/csv:
    post:
      operationId: ExportController_exportCsv
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchDto'
      responses:
        '200':
          description: ''
      tags:
        - Records
      security:
        - bearer: []
  /api/v1/query/records/find:
    post:
      operationId: QueryController_find
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchDto'
      responses:
        '200':
          description: ''
      tags: &ref_5
        - Query
      security:
        - bearer: []
  /api/v1/query/raw:
    post:
      operationId: QueryController_runCypher
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CypherDto'
      responses:
        '200':
          description: ''
      tags: *ref_5
      security:
        - bearer: []
info:
  title: RushDB API
  description: RushDB API specs
  version: '1.0'
  contact: {}
tags: []
servers: []
components:
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http
  schemas:
    PropertyDto:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        type:
          type: string
        value:
          type: object
        valueSeparator:
          type: string
        metadata:
          type: string
      required:
        - name
        - type
    CreateEntityDto:
      type: object
      properties:
        label:
          type: string
          default: ''
        properties:
          type: array
          items:
            $ref: '#/components/schemas/PropertyDto'
        options:
          type: object
      required:
        - label
    EditEntityDto:
      type: object
      properties:
        label:
          type: string
          default: ''
        properties:
          type: array
          items:
            $ref: '#/components/schemas/PropertyDto'
    SearchDto:
      type: object
      properties:
        limit:
          type: number
          default: 100
        skip:
          type: number
          default: 0
        orderBy:
          type: object
        where:
          type: object
          default: {}
        aggregate:
          type: object
          default: {}
        labels:
          default: []
          type: array
          items:
            type: string
        groupBy:
          default: []
          type: array
          items:
            type: string
    AttachDto:
      type: object
      properties:
        targetIds:
          type: object
        type:
          type: string
        direction:
          type: string
      required:
        - targetIds
    DetachDto:
      type: object
      properties:
        targetIds:
          type: object
        typeOrTypes:
          type: object
        direction:
          type: string
      required:
        - targetIds
    ImportJsonDto:
      type: object
      properties:
        parentId:
          type: string
        data:
          type: object
          default: {}
        label:
          type: string
          default: ''
        options:
          type: object
          default: {}
    ImportCsvDto:
      type: object
      properties:
        parentId:
          type: string
        data:
          type: string
          default: ''
        label:
          type: string
          default: ''
        options:
          type: object
          default: {}
        parseConfig:
          type: object
          description: CSV parse config (allowed subset)
          default:
            delimiter: ','
            header: true
            skipEmptyLines: true
      required:
        - data
    CypherDto:
      type: object
      properties: {}
