Structify dataset API

Dataset management endpoints

Operations 25

POST /dataset/add_property Add a property descriptor to a table in the dataset schema #
GET /dataset/count_missing_embeddings #
POST /dataset/create Create a Dataset #
DELETE /dataset/delete Permanently delete a dataset and all its contents #
GET /dataset/enrichment_progress Get the enrichment progress for a dataset #
GET /dataset/entity_ws #
DELETE /dataset/evaluate/delete Delete a dataset evaluation result by ID #
GET /dataset/evaluate/get Get a dataset evaluation result by ID #
GET /dataset/evaluate/list List all dataset evaluation results with pagination #
POST /dataset/evaluate/run Evaluate two datasets #
GET /dataset/evaluate/status Get the status of a dataset evaluation #
GET /dataset/export_to_csv Export entities from a table in your dataset as CSV. #
GET /dataset/export_to_excel Export all tables and relationships from your dataset as an Excel file. #
GET /dataset/info Grab a dataset by its name. #
GET /dataset/job_ws WebSocket endpoint for job updates #
GET /dataset/list List datasets #
POST /dataset/match Given a query subgraph, find the most similar subgraph in the existing dataset. #
POST /dataset/remove_property Remove a property descriptor from a table in the dataset schema #
POST /dataset/reorder_properties #
POST /dataset/set_primary_column #
POST /dataset/update_property Update a property descriptor in a table in the dataset schema #
POST /dataset/update_relationship Update a relationship descriptor in the dataset schema #
GET /dataset/view_relationships View relationships in your dataset. #
GET /dataset/view_table View entities from a table in your dataset. #
GET /dataset/view_tables_with_relationships Paginates through the entities. As its paginating through the entities, it gets #

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/structify-dataset-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 email required.

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

OpenAPI Specification

structify-dataset-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: team@structify.ai
    name: Structify Team
  description: Every enterprise's data team.
  license:
    name: Discuss directly with founders for license.
    url: https://structify.ai
  title: Structify account Dataset API
  version: 0.1.0
servers:
- description: Production server
  url: https://api.structify.ai
- description: Local server
  url: http://localhost:8080
security:
- api_key: []
- session_token: []
tags:
- description: Dataset management endpoints
  name: dataset
paths:
  /dataset/add_property:
    post:
      operationId: dataset_add_property
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddPropertyRequest'
        required: true
      responses:
        '200':
          description: Property added successfully
      security:
      - api_key: []
      - session_token: []
      summary: Add a property descriptor to a table in the dataset schema
      tags:
      - dataset
  /dataset/count_missing_embeddings:
    get:
      operationId: dataset_count_missing_embeddings
      parameters:
      - in: query
        name: name
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MissingEmbeddingsCount'
          description: Count of entities with missing embeddings retrieved successfully.
        '404':
          description: Dataset not found
        '500':
          description: Internal server error
      security:
      - api_key: []
      - session_token: []
      tags:
      - dataset
  /dataset/create:
    post:
      description: Creates a dataset.
      operationId: dataset_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DatasetDescWithFlags'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatasetId'
          description: Dataset created successfully
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request - dataset already exists or invalid input
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Forbidden - user does not have write access in any team
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal server error
      security:
      - api_key: []
      - session_token: []
      summary: Create a Dataset
      tags:
      - dataset
  /dataset/delete:
    delete:
      operationId: dataset_delete
      parameters:
      - description: The name of the dataset
        in: query
        name: name
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Dataset deleted successfully
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Forbidden - user does not have write access in any team
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Dataset not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal server error
      security:
      - api_key: []
      summary: Permanently delete a dataset and all its contents
      tags:
      - dataset
  /dataset/enrichment_progress:
    get:
      operationId: dataset_enrichment_progress
      parameters:
      - description: Enrichment progress for the dataset
        in: query
        name: name
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobCount'
          description: Enrichment progress for dataset retrieved successfully.
      security:
      - api_key: []
      - session_token: []
      summary: Get the enrichment progress for a dataset
      tags:
      - dataset
  /dataset/entity_ws:
    get:
      operationId: dataset_entity_ws
      parameters:
      - description: The name of the dataset to monitor
        in: query
        name: name
        required: true
        schema:
          type: string
      - description: API key for authentication
        in: query
        name: api_key
        required: false
        schema:
          type:
          - string
          - 'null'
      - description: Session token for authentication
        in: query
        name: session_token
        required: false
        schema:
          type:
          - string
          - 'null'
      responses:
        '101':
          description: WebSocket connection established
      security:
      - api_key: []
      - session_token: []
      tags:
      - dataset
  /dataset/evaluate/delete:
    delete:
      operationId: dataset_evaluate_delete
      parameters:
      - in: query
        name: id
        required: true
        schema:
          $ref: '#/components/schemas/ComparisonNodeId'
      responses:
        '200':
          description: Dataset evaluation deleted successfully
      security:
      - api_key: []
      summary: Delete a dataset evaluation result by ID
      tags:
      - dataset
  /dataset/evaluate/get:
    get:
      operationId: dataset_evaluate_get
      parameters:
      - in: query
        name: id
        required: true
        schema:
          $ref: '#/components/schemas/ComparisonNodeId'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EvaluateComparisonResult'
          description: Dataset evaluated successfully
      security:
      - api_key: []
      summary: Get a dataset evaluation result by ID
      tags:
      - dataset
  /dataset/evaluate/list:
    get:
      operationId: dataset_evaluate_list
      parameters:
      - in: query
        name: offset
        required: true
        schema:
          minimum: 0
          type: integer
      - in: query
        name: limit
        required: true
        schema:
          maximum: 100
          minimum: 1
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/EvaluateListItem'
                type: array
          description: Dataset evaluations listed successfully
      security:
      - api_key: []
      summary: List all dataset evaluation results with pagination
      tags:
      - dataset
  /dataset/evaluate/run:
    post:
      operationId: dataset_evaluate_run
      parameters:
      - in: query
        name: dataset_1
        required: true
        schema:
          $ref: '#/components/schemas/DatasetId'
      - in: query
        name: dataset_2
        required: true
        schema:
          $ref: '#/components/schemas/DatasetId'
      - in: query
        name: dataset_2_is_ground_truth
        required: true
        schema:
          default: false
          type: boolean
      - in: query
        name: merge_threshold_override
        required: false
        schema:
          format: double
          type:
          - number
          - 'null'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComparisonNodeId'
          description: Dataset evaluation started
      security:
      - api_key: []
      summary: Evaluate two datasets
      tags:
      - dataset
  /dataset/evaluate/status:
    get:
      operationId: dataset_evaluate_status
      parameters:
      - in: query
        name: id
        required: true
        schema:
          $ref: '#/components/schemas/ComparisonNodeId'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusResponse'
          description: Dataset evaluation status retrieved successfully
      security:
      - api_key: []
      summary: Get the status of a dataset evaluation
      tags:
      - dataset
  /dataset/export_to_csv:
    get:
      description: You need to specify a dataset and a table_name
      operationId: dataset_export_csv
      parameters:
      - in: query
        name: dataset
        required: true
        schema:
          type: string
      - in: query
        name: name
        required: true
        schema:
          type: string
      responses:
        '200':
          description: CSV file containing table data
      security:
      - api_key: []
      - session_token: []
      summary: Export entities from a table in your dataset as CSV.
      tags:
      - dataset
  /dataset/export_to_excel:
    get:
      description: Each table and relationship type will be in its own sheet
      operationId: dataset_export_excel
      parameters:
      - in: query
        name: dataset
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Excel file containing all tables and relationships
      security:
      - api_key: []
      - session_token: []
      summary: Export all tables and relationships from your dataset as an Excel file.
      tags:
      - dataset
  /dataset/info:
    get:
      operationId: dataset_info
      parameters:
      - description: Information about the dataset
        in: query
        name: name
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatasetReturn'
          description: Dataset retrieved successfully or not found.
      security:
      - api_key: []
      summary: Grab a dataset by its name.
      tags:
      - dataset
  /dataset/job_ws:
    get:
      operationId: dataset_job_ws
      parameters:
      - description: The name of the dataset to monitor
        in: query
        name: name
        required: true
        schema:
          type: string
      - description: API key for authentication
        in: query
        name: api_key
        required: false
        schema:
          type:
          - string
          - 'null'
      - description: Session token for authentication
        in: query
        name: session_token
        required: false
        schema:
          type:
          - string
          - 'null'
      responses:
        '101':
          description: WebSocket connection established
      security:
      - api_key: []
      - session_token: []
      summary: WebSocket endpoint for job updates
      tags:
      - dataset
  /dataset/list:
    get:
      description: Gets all datasets owned by the current user
      operationId: dataset_list
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Dataset'
                type: array
          description: ''
      security:
      - api_key: []
      - session_token: []
      summary: List datasets
      tags:
      - dataset
  /dataset/match:
    post:
      description: 'Returns: The matched subgraph and a score for the match.'
      operationId: dataset_match
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubgraphQuery'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties:
                  $ref: '#/components/schemas/MatchResponse'
                type: object
          description: Match correspondences
      summary: Given a query subgraph, find the most similar subgraph in the existing dataset.
      tags:
      - dataset
  /dataset/remove_property:
    post:
      operationId: dataset_remove_property
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemovePropertyRequest'
        required: true
      responses:
        '200':
          description: Property removed successfully
      security:
      - api_key: []
      - session_token: []
      summary: Remove a property descriptor from a table in the dataset schema
      tags:
      - dataset
  /dataset/reorder_properties:
    post:
      operationId: dataset_reorder_properties
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReorderPropertiesRequest'
        required: true
      responses:
        '200':
          description: Properties reordered successfully
      security:
      - api_key: []
      - session_token: []
      tags:
      - dataset
  /dataset/set_primary_column:
    post:
      operationId: dataset_set_primary_column
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetPrimaryColumnRequest'
        required: true
      responses:
        '200':
          description: Primary column set successfully
      security:
      - api_key: []
      - session_token: []
      tags:
      - dataset
  /dataset/update_property:
    post:
      operationId: dataset_update_property
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePropertyRequest'
        required: true
      responses:
        '200':
          description: Property updated successfully
      security:
      - api_key: []
      - session_token: []
      summary: Update a property descriptor in a table in the dataset schema
      tags:
      - dataset
  /dataset/update_relationship:
    post:
      operationId: dataset_update_relationship
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateRelationshipRequest'
        required: true
      responses:
        '200':
          description: Relationship updated successfully
      security:
      - api_key: []
      - session_token: []
      summary: Update a relationship descriptor in the dataset schema
      tags:
      - dataset
  /dataset/view_relationships:
    get:
      description: You need to specify a dataset and the name of the relationship
      operationId: dataset_view_relationships
      parameters:
      - in: query
        name: offset
        required: false
        schema:
          minimum: 0
          type: integer
      - in: query
        name: limit
        required: false
        schema:
          minimum: 0
          type: integer
      - in: query
        name: dataset
        required: true
        schema:
          type: string
      - in: query
        name: name
        required: true
        schema:
          type: string
      - in: query
        name: job_id
        required: false
        schema:
          allOf:
          - $ref: '#/components/schemas/JobId'
      - in: query
        name: last_updated
        required: false
        schema:
          format: date-time
          type:
          - string
          - 'null'
      - in: query
        name: sort_by
        required: false
        schema:
          $ref: '#/components/schemas/SortBy'
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/KgRelationship'
                type: array
          description: ''
      security:
      - api_key: []
      - session_token: []
      summary: View relationships in your dataset.
      tags:
      - dataset
  /dataset/view_table:
    get:
      description: You need to specify a dataset and a table_name
      operationId: dataset_view
      parameters:
      - in: query
        name: offset
        required: false
        schema:
          minimum: 0
          type: integer
      - in: query
        name: limit
        required: false
        schema:
          minimum: 0
          type: integer
      - in: query
        name: dataset
        required: true
        schema:
          type: string
      - in: query
        name: name
        required: true
        schema:
          type: string
      - in: query
        name: job_id
        required: false
        schema:
          allOf:
          - $ref: '#/components/schemas/JobId'
      - in: query
        name: last_updated
        required: false
        schema:
          format: date-time
          type:
          - string
          - 'null'
      - in: query
        name: sort_by
        required: false
        schema:
          $ref: '#/components/schemas/SortBy'
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/KgEntity'
                type: array
          description: ''
      security:
      - api_key: []
      - session_token: []
      summary: View entities from a table in your dataset.
      tags:
      - dataset
  /dataset/view_tables_with_relationships:
    get:
      description: the relationships for each entity and the targets for each relationship.
      operationId: dataset_view_tables_with_relationships
      parameters:
      - in: query
        name: offset
        required: false
        schema:
          minimum: 0
          type: integer
      - in: query
        name: limit
        required: false
        schema:
          minimum: 0
          type: integer
      - in: query
        name: dataset
        required: true
        schema:
          type: string
      - in: query
        name: name
        required: true
        schema:
          type: string
      - in: query
        name: job_id
        required: false
        schema:
          allOf:
          - $ref: '#/components/schemas/JobId'
      - in: query
        name: last_updated
        required: false
        schema:
          format: date-time
          type:
          - string
          - 'null'
      - in: query
        name: sort_by
        required: false
        schema:
          $ref: '#/components/schemas/SortBy'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedJointResponse'
          description: ''
      security:
      - api_key: []
      - session_token: []
      summary: Paginates through the entities. As its paginating through the entities, it gets
      tags:
      - dataset
components:
  schemas:
    ReorderPropertiesRequest:
      properties:
        dataset_name:
          type: string
        property_names:
          items:
            type: string
          type: array
        table_name:
          type: string
      required:
      - dataset_name
      - table_name
      - property_names
      type: object
    RelationshipMatches:
      properties:
        relationship_matches:
          items:
            $ref: '#/components/schemas/RelationshipMatch'
          type: array
        unmatched_a:
          items:
            $ref: '#/components/schemas/KgRelationship'
          type: array
        unmatched_b:
          items:
            $ref: '#/components/schemas/KgRelationship'
          type: array
      required:
      - relationship_matches
      - unmatched_a
      - unmatched_b
      type: object
    EvaluateListItem:
      properties:
        dataset_1:
          type: string
        dataset_2:
          type: string
        id:
          type: string
        iou:
          format: float
          type: number
        matched:
          format: int32
          type: integer
        run_message:
          type:
          - string
          - 'null'
        started_at:
          format: date-time
          type: string
        status:
          $ref: '#/components/schemas/EvaluationStatus'
        unmatched:
          format: int32
          type: integer
      required:
      - id
      - dataset_1
      - dataset_2
      - started_at
      - status
      - iou
      - matched
      - unmatched
      type: object
    DatasetDescriptor:
      additionalProperties: false
      description: 'A dataset is where you put multiple referential schemas.


        A dataset is a complete namespace where all references between schemas

        are held within the dataset.'
      properties:
        description:
          type: string
        llm_override_field:
          type:
          - string
          - 'null'
        name:
          type: string
        relationships:
          items:
            $ref: '#/components/schemas/RelationshipDescriptor'
          type: array
        tables:
          items:
            $ref: '#/components/schemas/TableDescriptor'
          type: array
      required:
      - name
      - description
      - tables
      - relationships
      type: object
    EntityWithBestMatch:
      properties:
        best_match:
          allOf:
          - $ref: '#/components/schemas/EntityMatch'
        entity:
          $ref: '#/components/schemas/KgEntity'
      required:
      - entity
      type: object
    KgRelationship:
      properties:
        created_at:
          format: date-time
          type: string
        dataset_id:
          $ref: '#/components/schemas/DatasetId'
        from_id:
          $ref: '#/components/schemas/EntityId'
        id:
          $ref: '#/components/schemas/RelationshipId'
        label:
          type: string
        properties:
          additionalProperties:
            $ref: '#/components/schemas/ComplexPropValue'
          type: object
        to_id:
          $ref: '#/components/schemas/EntityId'
        updated_at:
          format: date-time
          type: string
      required:
      - id
      - from_id
      - to_id
      - label
      - properties
      - created_at
      - updated_at
      - dataset_id
      title: Relationship
      type: object
    TableMatches:
      properties:
        entity_matches:
          items:
            $ref: '#/components/schemas/EntityMatch'
          type: array
        unmatched_a:
          items:
            $ref: '#/components/schemas/EntityWithBestMatch'
          type: array
        unmatched_b:
          items:
            $ref: '#/components/schemas/EntityWithBestMatch'
          type: array
      required:
      - entity_matches
      - unmatched_a
      - unmatched_b
      type: object
    PartialDate:
      oneOf:
      - properties:
          day:
            type:
            - integer
            - 'null'
          month:
            type:
            - integer
            - 'null'
          original_string:
            type: string
          year:
            type: integer
        required:
        - year
        - original_string
        title: PartialDateObject
        type: object
      - description: 'Date string in formats: ''YYYY'', ''YYYY-MM'', ''YYYY-MM-DD'', ''DD-MM-YYYY'', ''MM-DD-YYYY'', ''Jan 3, 2023'', ''3 Jan 2023'', ''2023 Apr 3'', etc.'
        title: PartialDateString
        type: string
      title: PartialDateProperty
    RemovePropertyRequest:
      properties:
        dataset_name:
          type: string
        property_name:
          type: string
        table_name:
          type: string
      required:
      - dataset_name
      - table_name
      - property_name
      type: object
    ConfusionMatrix:
      properties:
        false_negatives:
          format: float
          type: number
        false_positives:
          format: float
          type: number
        true_positives:
          format: float
          type: number
      required:
      - true_positives
      - false_positives
      - false_negatives
      type: object
    Money:
      oneOf:
      - description: 'Money string that includes currency and amount: $10k, £100.00, 1 million CAD, ¥1e8 etc.'
        title: MoneyString
        type: string
      - properties:
          amount:
            type: number
          currency_code:
            enum:
            - USD
            - EUR
            - GBP
            - JPY
            - CNY
            - INR
            - RUB
            - CAD
            - AUD
            - CHF
            - ILS
            - NZD
            - SGD
            - HKD
            - NOK
            - SEK
            - PLN
            - TRY
            - DKK
            - MXN
            - ZAR
            - PHP
            - VND
            - THB
            - BRL
            - KRW
            type: string
          original_string:
            type: string
        required:
        - currency_code
        - amount
        - original_string
        title: MoneyObject
        type: object
      title: MoneyProperty
    SetPrimaryColumnRequest:
      properties:
        dataset_name:
          type: string
        property_name:
          type: string
        table_name:
          type: string
      required:
      - dataset_name
      - table_name
      - property_name
      type: object
    DatasetReturn:
      allOf:
      - $ref: '#/components/schemas/DatasetDescriptor'
      - properties:
          created_timestamp:
            format: date-time
            type: string
          id:
            $ref: '#/components/schemas/DatasetId'
        required:
        - id
        - created_timestamp
        type: object
    EntityMatch:
      properties:
        baseline_cardinality:
          format: int64
          minimum: 0
          type: integer
        cardinality_override:
          allOf:
          - $ref: '#/components/schemas/CardinalityOverride'
        entity_a:
          $ref: '#/components/schemas/KgEntity'
        entity_b:
          $ref: '#/components/schemas/KgEntity'
        matched_properties:
          items:
            $ref: '#/components/schemas/PropertyMatch'
          type: array
        p_match:
          format: double
          type: number
        p_match_threshold:
          format: double
          type: number
      required:
      - baseline_cardinality
      - p_match
      - p_match_threshold
      - matched_properties
      - entity_a
      - entity_b
      type: object
    DatasetDescWithFlags:
      allOf:
      - $ref: '#/components/schemas/DatasetDescriptor'
      - properties:
          ephemeral:
            type: boolean
        type: object
    RelationshipMergeProbability:
      properties:
        source_cardinality_given_target_match:
          description: 'Describes the expected cardinality of the source table when a match is found in the target table


            For example, if we have a source company and a target funding round, we expect the source company

            to appear in multiple funding rounds, but not *too* many.

            So if we have a funding round match, the expected number of unique companies is relatively small.

            This is an estimate of that number.'
          format: int64
          minimum: 0
          type:
          - integer
          - 'null'
        target_cardinality_given_source_match:
          description: 'Describes the expected cardinality of the target table when a match is found in the source table


            For example, if we have a source company and a target funding round, we usually expect

            some number of funding rounds to be associated with a single company but not *too* many.

            So if we have a company match, the expected number of unique funding rounds is relatively small.

            This is an estimate of that number.'
          format: int64
          minimum: 0
          type:
          - integer
          - 'null'
      type: object
    TableDescriptor:
      additionalProperties: false
      description: The full definition of what a schema is - without duplicate information.
      properties:
        description:
          type: string
        expected_cardinality:
          description: 'Expected number of unique values in the complete dataset.


            This is used for our probabilistic merge strategy.'
          format: int64
          minimum: 0
          type:
          - integer
          - 'null'
        name:
          description: Organized in a name, description format.
          type: string
        primary_column:
          type:
          - string
          - 'null'
        properties:
          description: Organized in a name, description format.
          items:
            $ref: '#/components/schemas/PropertyDescriptor'
          type: array
      required:
      - name
      - description
      - properties
      type: object
    LLMRelationship:
      additionalProperties: false
      properties:
        properties:
          additionalProperties:
            $ref: '#/components/schemas/BasicPropValue'
          type: object
        source:
          minimum: 0
          type: integer
        target:
          minimum: 0
          type: integer
        type:
          type: string
      required:
      - type
      - source
      - target
      type: object
    DatasetMatches:
      properties:
        relationship_matches:
          additionalProperties:
            $ref: '#/components/schemas/RelationshipMatches'
          type: object
        table_matches:
          additionalProperties:
            $ref: '#/components/schemas/TableMatches'
          type: object
      required:
      - table_matches
      - relationship_matches
      type: object
    PropertyType:
      oneOf:
      - enum:
        - String
        type: string
      - enum:
        - Boolean
        type: string
      - properties:
          Enum:
            items:
              type: string
            type: array
        required:
        - Enum
        type: object
      - enum:
        - Integer
        type: string
      - enum:
        - Float
        type: string
      - enum:
        - Date
        type: string
      - enum:
        - URL
        type: string
      - enum:
        - Money
        type: string
      - enum:
        - Image
        type: string
      - enum:
        - PersonName
        type: string
      - enum:
        - Address
        type: string
    LLMEntity:
      additionalProperties: false
      properties:
        id:
          minimum: 0
          type: integer
        properties:
          additionalProperties:
            $ref: '#/components/schemas/BasicPropValue'
          type: object
        type:
          type: string
      required:
      - id
      - type
      - properties
      type: object
    DatasetStats:
      properties:
        per_relationship:
          additionalProperties:
            $ref: '#/components/schemas/RelationshipStats'
          type: object
        per_table:
          additionalProperties:
            $ref: '#/components/schemas/TableStats'
          type: object
      required:
      - per_table
      - per_relationship
      type: object
    ComparisonNodeId:
      format: uuid
      type: string
    RelationshipMatch:
      properties:
        matched_properties:
          items:
            $ref: '#/components/schemas/PropertyMatch'
          type: array
        relationship_a:
          $ref: '#/components/schemas/KgRelationship'
        relationship_b:
          $ref: '#/components/schemas/KgRelationship'
      required:
      - matched_properties
      - relationship_a
      - relationship_b
      type: object
    SortableTableColumn:
      oneOf:
      - properties:
          user_defined_column:
            type: string
        required:
        - user_defined_column
        type: object
      - enum:
        - creation_time
        type: string
    UpdatePropertyRequest:
      properties:
        dataset_name:
          type: string
        new_property_description:
          type:
          - string
          - 'null'
        new_property_merge_strategy:
     

# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/structify/refs/heads/main/openapi/structify-dataset-api-openapi.yml