---
components:
  schemas:
    api.CustomPropertyMapping:
      properties:
        source_node_property:
          description: "SourceNodeProperty is a property of the source node that will be compared to TargetNodeProperty."
          type: string
        target_node_property:
          description: "TargetNodeProperty is a property of the target node that will be compared to SourceNodeProperty."
          type: string
      required:
        - source_node_property
        - target_node_property
      type: object
    api.ReadEntityMatchingPipelineStatusResponse:
      properties:
        entity_matching_status:
          description: "EntityMatchingStatus is the status assigned to the pipeline's step that matches node entities."
          type: string
        id:
          description: "ID is the Entity Matching Pipeline globally unique identifier."
          type: string
        property_mapping_status:
          description: "PropertyMappingStatus is the status assigned to the pipeline's step that maps node types' properties."
          type: string
      type: object
    api.ReadSuggestedPropertyMappingResponse:
      properties:
        id:
          description: "ID is the Entity Matching Pipeline globally unique identifier."
          type: string
        suggested_property_mappings:
          description: "SuggestedPropertyMappings contains the rules the pipeline will use to match source nodes with target nodes\nThese values can be used when running a pipeline (after adjusting the payload)."
          items:
            "$ref": "#/components/schemas/api.SuggestedPropertyMapping"
          type: array
      type: object
    api.RunEntityMatchingPipelineResponse:
      properties:
        etag:
          description: "Etag is the multiversion concurrency control version."
          type: string
        id:
          description: "ID is the Entity Matching Pipeline globally unique identifier."
          type: string
        last_run_time:
          description: "LastRunTime indicates the last time the pipeline was started."
          type: string
      type: object
    api.RunEntityMatchingRequest:
      properties:
        custom_property_mappings:
          description: "CustomPropertyMappings contains the rules to match nodes properties.\nIf empty, the default rules will be used (stored as part of the pipeline configuration).\nIf present, it will overwrite the stored configuration."
          items:
            "$ref": "#/components/schemas/api.CustomPropertyMapping"
          type: array
        similarity_score_cutoff:
          description: "SimilarityScoreCutoff defines the required threshold (in range [0,1]),\nabove which entities will be automatically matched."
          format: float
          maximum: 1
          minimum: 0
          type: number
      required:
        - similarity_score_cutoff
      type: object
    api.SuggestedPropertyMapping:
      properties:
        similarity_score_cutoff:
          description: "SimilarityScoreCutoff defines the percentage (in range [0,1])\nof how similar SourceNodeProperty and TargetNodeProperty are.\nMeaning, any property that has a similarity score above this percentage will be automatically matched.\nTherefore, this value can (and should) be taken into consideration when\nsetting a cutoff threshold for running a pipeline."
          format: float
          type: number
        source_node_property:
          description: "SourceNodeProperty is a property of the source node that has been compared to TargetNodeProperty."
          type: string
        source_node_type:
          description: "SourceNodeType is the type of the node that will be compared to nodes of TargetNodeType."
          type: string
        target_node_property:
          description: "TargetNodeProperty is a property of the target node that  has been compared to SourceNodeProperty."
          type: string
        target_node_type:
          description: "TargetNodeType is the type of the node that  has been compared to nodes of SourceNodeType."
          type: string
      type: object
    restapi.DetailedError:
      properties:
        errors:
          items:
            type: string
          type: array
        message:
          type: string
      type: object
    restapi.DetailedMessageResponse:
      properties:
        details:
          items:
            type: string
          type: array
        message:
          examples:
            - Accepted
          type: string
      type: object
    restapi.ErrorResponse:
      properties:
        message:
          examples:
            - "Internal Server Error"
          type: string
      type: object
  securitySchemes:
    APIKey:
      description: "The value of the App Agent credential header must be passed as is, without any prefix."
      in: header
      name: X-IK-ClientKey
      type: apiKey
info:
  description: "Entity Matching Pipelines API, used to trigger and monitor pipeline runs."
  license:
    name: "Apache 2.0"
    url: "https://www.apache.org/licenses/LICENSE-2.0"
  title: "Entity Matching Pipeline REST API"
  version: "1"
openapi: "3.2.0"
paths:
  "/pipelines/{id}/property-mappings":
    get:
      description: "Retrieves a list of system-suggested property mappings to use when running the pipeline"
      operationId: ReadSuggestedPropertyMapping
      parameters:
        - description: "Entity Matching Pipeline ID"
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/api.ReadSuggestedPropertyMappingResponse"
          description: OK
        "202":
          content:
            application/json:
              schema:
                properties:
                  details:
                    items:
                      type: string
                    type: array
                  message:
                    type: string
                type: object
          description: Accepted
        "400":
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      type: string
                    type: array
                  message:
                    type: string
                type: object
          description: "Bad request"
        "404":
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      type: string
                    type: array
                  message:
                    type: string
                type: object
          description: "Not found"
        "409":
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      type: string
                    type: array
                  message:
                    type: string
                type: object
          description: Conflict
        "422":
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      type: string
                    type: array
                  message:
                    type: string
                type: object
          description: "Unprocessable entity"
        "500":
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                type: object
          description: "Internal error"
      summary: "EntityMatching read suggested property mapping endpoint"
      tags:
        - EntityMatching
  "/pipelines/{id}/runs":
    post:
      description: "Creates a new entity matching pipeline execution and returns confirmation"
      operationId: RunEntityMatchingPipeline
      parameters:
        - description: "Entity Matching Pipeline ID"
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/api.RunEntityMatchingRequest"
        description: "Run Entity Matching Pipeline request"
        required: true
      responses:
        "202":
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/api.RunEntityMatchingPipelineResponse"
          description: Accepted
        "400":
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      type: string
                    type: array
                  message:
                    type: string
                type: object
          description: "Bad request"
        "404":
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      type: string
                    type: array
                  message:
                    type: string
                type: object
          description: "Not found"
        "422":
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      type: string
                    type: array
                  message:
                    type: string
                type: object
          description: "Unprocessable entity"
        "500":
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                type: object
          description: "Internal error"
      summary: "EntityMatching run endpoint"
      tags:
        - EntityMatching
  "/pipelines/{id}/status":
    get:
      description: "Retrieves the entity matching pipeline status (PENDING,IN_PROGRESS,SUCCESS or ERROR)"
      operationId: ReadEntityMatchingPipelineStatus
      parameters:
        - description: "Entity Matching Pipeline ID"
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/api.ReadEntityMatchingPipelineStatusResponse"
          description: OK
        "400":
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      type: string
                    type: array
                  message:
                    type: string
                type: object
          description: "Bad request"
        "404":
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      type: string
                    type: array
                  message:
                    type: string
                type: object
          description: "Not found"
        "409":
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      type: string
                    type: array
                  message:
                    type: string
                type: object
          description: Conflict
        "422":
          content:
            application/json:
              schema:
                properties:
                  errors:
                    items:
                      type: string
                    type: array
                  message:
                    type: string
                type: object
          description: "Unprocessable entity"
        "500":
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                type: object
          description: "Internal error"
      summary: "EntityMatching read pipeline status endpoint"
      tags:
        - EntityMatching
security:
  - APIKey: []
servers:
  - url: "https://eu.api.indykite.com/entity-matching/v1"
  - url: "https://us.api.indykite.com/entity-matching/v1"
tags:
  - description: "EntityMatchingAPI represents the service interface for the EntityMatching API."
    name: EntityMatching
