{
  "openapi": "3.0.1",
  "info": {
    "title": "Multipass Flow Management API",
    "description": "The Multipass Service provides flow-based data processing capabilities for address validation and geocoding operations.\n\n<details>\n    <summary>Error Codes</summary>\n\nAPIs will return the following error codes in case of any error:\n\n\n| Error Code                 | Description\n|----------------------------|-------------------------------------------------------\n| DIS-1001                   | Unauthorized, Invalid token\n| DIS-1002                   | Not Authorized to access this API\n| DIS-1003                   | Issue with internal services\n| DIS-1004                   | Workspace Id is missing from Bearer Token\n| DIS-1005                   | Rate limit exceeded\n| DIS-1006                   | Unauthorized, Invalid key/secret\n| DIS-1007                   | API quota has been permanently exhausted. No further requests are allowed for trial user\n| DIS-1008                   | Invalid request ID, maximum allowed length is 38 characters\n| DIS-1009                   | Access blocked due to too many failed attempts. Please try again after sometime\n| DIS-1010                   | Workspace has been expired\n| DIS-MP-1000                | Flow execution failed\n| DIS-MP-1001                | Invalid flow definition format\n| DIS-MP-1002                | Flow ID cannot be null or empty\n| DIS-MP-1003                | Flow Not Found for the given flow Id\n| DIS-MP-1004                | Flow already exists\n| DIS-MP-1005                | Required Body not satisfied\n| DIS-MP-1006                | Invalid input data format\n| DIS-MP-1007                | Multiple flows exist for the given flow Id\n| DIS-MP-1008                | Invalid data found at persistence layer\n| DIS-MP-1009                | MongoDB connection error\n</details>\n",
    "termsOfService": "https://www.precisely.com/legal/terms-of-use",
    "license": {
      "name": "Precisely Software License",
      "url": "https://www.precisely.com/legal/software-license"
    },
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://api.cloud.precisely.com"
    },
    {
      "url": "https://api.eu1.cloud.precisely.com"
    }
  ],
  "tags": [
    {
      "name": "Multipass API",
      "description": "API for managing and executing Multipass flows"
    }
  ],
  "paths": {
    "/v1/multipass/flows": {
      "get": {
        "tags": [
          "Multipass API"
        ],
        "summary": "Retrieve flowIds of all available flows",
        "description": "Retrieves a list of all available Multipass flow IDs.\nThis API lets the user know what flows are available for any flow specific operation.\n",
        "operationId": "getAllFlowIds",
        "parameters": [
          {
            "name": "X-Request-Id",
            "in": "header",
            "description": "The X-Request-Id header is optional but incredibly useful for developers. It serves as a unique identifier for requests within our system. When you encounter any problems with your requests, providing us with the X-Request-Id will enable us to pinpoint the specific request in question without the need for extensive manual searching. This means faster and more efficient troubleshooting. The maximum allowed length is 38 characters.",
            "schema": {
              "type": "string"
            },
            "example": "e8a838ca-14bf-4f0b-b29e-1ed2515b0772"
          }
        ],
        "responses": {
          "200": {
            "description": "Flow definition retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowDefinitionApiResponse.ListFlowsResult"
                },
                "examples": {
                  "example": {
                    "value": {
                      "status": "SUCCESS",
                      "availableFlowIds": [
                        "default_flow",
                        "customer_validation_flow",
                        "address_standardization_flow"
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized: Invalid or missing authentication token",
            "content": {
              "application/json": {
                "examples": {
                  "example": {
                    "value": {
                      "id": "0049c2dbb58b8393e8bced346fd8d660",
                      "errors": [
                        {
                          "code": "DIS-1001",
                          "detail": "Unauthorized"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded - too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "f287c3b95d11f9ff28472ccc9ff38929",
                      "errors": [
                        {
                          "code": "DIS-1005",
                          "detail": "Rate limit exceeded"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error occurred",
            "content": {
              "application/json": {
                "examples": {
                  "example": {
                    "value": {
                      "id": "f287c3b95d11f9ff28472ccc9ff38929",
                      "errors": [
                        {
                          "code": "DIS-1003",
                          "detail": "Issue with internal services. Please try again after sometime"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "29839eb5a3d5be926bcd789fb3d71585",
                      "errors": [
                        {
                          "code": "DIS-1003",
                          "detail": "Issue with internal services. Please try again after sometime"
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          },
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/multipass/flows/{flowId}": {
      "get": {
        "tags": [
          "Multipass API"
        ],
        "summary": "Retrieve flow definition by flow ID",
        "description": "Retrieves the Multipass flow definition for the specified flow ID.\nThe flow definition contains the complete configuration and processing steps for the flow.\n\nPath Parameter:\n- `flowId` : Unique identifier for the Multipass flow\n",
        "operationId": "getFlow",
        "parameters": [
          {
            "name": "flowId",
            "in": "path",
            "description": "Unique identifier for the Multipass flow",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "default_flow"
          },
          {
            "name": "X-Request-Id",
            "in": "header",
            "description": "The X-Request-Id header is optional but incredibly useful for developers. It serves as a unique identifier for requests within our system. When you encounter any problems with your requests, providing us with the X-Request-Id will enable us to pinpoint the specific request in question without the need for extensive manual searching. This means faster and more efficient troubleshooting. The maximum allowed length is 38 characters.",
            "schema": {
              "type": "string"
            },
            "example": "e8a838ca-14bf-4f0b-b29e-1ed2515b0772"
          }
        ],
        "responses": {
          "200": {
            "description": "Flow definition retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowDefinitionApiResponse.ReadFlowResult"
                },
                "examples": {
                  "example": {
                    "value": {
                      "operation": "READ",
                      "status": "SUCCESS",
                      "flowId": "simple_flow",
                      "flowDefinition": {
                        "flowId": "simple_flow",
                        "startOperatorId": "transform_data",
                        "inputDataKey": "input",
                        "operators": [
                          {
                            "id": "transform_data",
                            "type": "Transform",
                            "key": "result",
                            "operation": "$uppercase(input.value)",
                            "nextNode": "return_result"
                          },
                          {
                            "id": "return_result",
                            "type": "Return",
                            "resultExpression": "result"
                          }
                        ],
                        "_uiState": {
                          "nodePositions": {
                            "transform_data": {
                              "x": 120,
                              "y": 80
                            },
                            "return_result": {
                              "x": 360,
                              "y": 80
                            }
                          },
                          "edgeWaypoints": {
                            "transform_data->return_result": [
                              {
                                "x": 240,
                                "y": 100
                              }
                            ]
                          },
                          "ktData": {}
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized: Invalid or missing authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "0049c2dbb58b8393e8bced346fd8d660",
                      "errors": [
                        {
                          "code": "DIS-1001",
                          "detail": "Unauthorized"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: Insufficient permissions to access this flow",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "b17e82b13b6b7d88eaf886636fae8b4d",
                      "errors": [
                        {
                          "code": "DIS-1002",
                          "detail": "You do not have permission to access this API"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded - too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "f287c3b95d11f9ff28472ccc9ff38929",
                      "errors": [
                        {
                          "code": "DIS-1005",
                          "detail": "Rate limit exceeded"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request - check flow definition format or input data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "6900b63d72d75452c6c982afef49dc70",
                      "errors": [
                        {
                          "code": "DIS-MP-1002",
                          "detail": "Invalid Flow Id. Flow ID cannot be null or empty."
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error occurred",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "f287c3b95d11f9ff28472ccc9ff38929",
                      "errors": [
                        {
                          "code": "DIS-1003",
                          "detail": "Issue with internal services. Please try again after sometime"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "29839eb5a3d5be926bcd789fb3d71585",
                      "errors": [
                        {
                          "code": "DIS-1003",
                          "detail": "Issue with internal services. Please try again after sometime"
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          },
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Multipass API"
        ],
        "summary": "Update an existing flow definition",
        "description": "Updates an existing Multipass flow definition.\nThe flow definition must be valid JSON containing the updated flow configuration.\n",
        "operationId": "updateFlow",
        "parameters": [
          {
            "name": "flowId",
            "in": "path",
            "description": "Unique identifier for the Multipass flow",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "default_flow"
          },
          {
            "name": "X-Request-Id",
            "in": "header",
            "description": "The X-Request-Id header is optional but incredibly useful for developers. It serves as a unique identifier for requests within our system. When you encounter any problems with your requests, providing us with the X-Request-Id will enable us to pinpoint the specific request in question without the need for extensive manual searching. This means faster and more efficient troubleshooting. The maximum allowed length is 38 characters.",
            "schema": {
              "type": "string"
            },
            "example": "e8a838ca-14bf-4f0b-b29e-1ed2515b0772"
          }
        ],
        "requestBody": {
          "description": "The flow definition in JSON format containing the flow configuration and processing steps.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Flow"
              },
              "examples": {
                "example": {
                  "description": "Complete flow definition in JSON format.",
                  "value": {
                    "startOperatorId": "transform_data",
                    "inputDataKey": "input",
                    "operators": [
                      {
                        "id": "transform_data",
                        "type": "Transform",
                        "key": "result",
                        "operation": "$uppercase(input.value)",
                        "nextNode": "return_result"
                      },
                      {
                        "id": "return_result",
                        "type": "Return",
                        "resultExpression": "result"
                      }
                    ],
                    "_uiState": {
                      "nodePositions": {
                        "transform_data": {
                          "x": 120,
                          "y": 80
                        },
                        "return_result": {
                          "x": 360,
                          "y": 80
                        }
                      },
                      "edgeWaypoints": {
                        "transform_data->return_result": [
                          {
                            "x": 240,
                            "y": 100
                          }
                        ]
                      },
                      "ktData": {}
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Flow definition updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowDefinitionApiResponse.WriteFlowResult"
                },
                "examples": {
                  "example": {
                    "value": {
                      "result": {
                        "operation": "UPDATE",
                        "status": "SUCCESS",
                        "flowId": "updated_flow_id"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized: Invalid or missing authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "0049c2dbb58b8393e8bced346fd8d660",
                      "errors": [
                        {
                          "code": "DIS-1001",
                          "detail": "Unauthorized"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: Insufficient permissions to access this flow",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "b17e82b13b6b7d88eaf886636fae8b4d",
                      "errors": [
                        {
                          "code": "DIS-1002",
                          "detail": "You do not have permission to access this API"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded - too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "f287c3b95d11f9ff28472ccc9ff38929",
                      "errors": [
                        {
                          "code": "DIS-1005",
                          "detail": "Rate limit exceeded"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request - check flow definition format or input data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "6900b63d72d75452c6c982afef49dc70",
                      "errors": [
                        {
                          "code": "DIS-MP-1003",
                          "detail": "Flow Not Found for the given flow Id."
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error occurred",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "f287c3b95d11f9ff28472ccc9ff38929",
                      "errors": [
                        {
                          "code": "DIS-1003",
                          "detail": "Issue with internal services. Please try again after sometime"
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          },
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Multipass API"
        ],
        "summary": "Create and persist a new flow definition",
        "description": "Validates and creates a new Multipass flow definition with the specified flow ID.\nThe flow definition must be valid JSON containing the flow configuration.\n",
        "operationId": "validateAndPersistFlow",
        "parameters": [
          {
            "name": "flowId",
            "in": "path",
            "description": "Unique identifier for the Multipass flow",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "my_custom_flow"
          },
          {
            "name": "X-Request-Id",
            "in": "header",
            "description": "The X-Request-Id header is optional but incredibly useful for developers. It serves as a unique identifier for requests within our system. When you encounter any problems with your requests, providing us with the X-Request-Id will enable us to pinpoint the specific request in question without the need for extensive manual searching. This means faster and more efficient troubleshooting. The maximum allowed length is 38 characters.",
            "schema": {
              "type": "string"
            },
            "example": "e8a838ca-14bf-4f0b-b29e-1ed2515b0772"
          }
        ],
        "requestBody": {
          "description": "The flow definition in JSON format containing the flow configuration and processing steps.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Flow"
              },
              "examples": {
                "example": {
                  "description": "Complete flow definition in JSON format.",
                  "value": {
                    "startOperatorId": "transform_data",
                    "inputDataKey": "input",
                    "operators": [
                      {
                        "id": "transform_data",
                        "type": "Transform",
                        "key": "result",
                        "operation": "$uppercase(input.value)",
                        "nextNode": "return_result"
                      },
                      {
                        "id": "return_result",
                        "type": "Return",
                        "resultExpression": "result"
                      }
                    ],
                    "_uiState": {
                      "nodePositions": {
                        "transform_data": {
                          "x": 120,
                          "y": 80
                        },
                        "return_result": {
                          "x": 360,
                          "y": 80
                        }
                      },
                      "edgeWaypoints": {
                        "transform_data->return_result": [
                          {
                            "x": 240,
                            "y": 100
                          }
                        ]
                      },
                      "ktData": {}
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Flow definition created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowDefinitionApiResponse.WriteFlowResult"
                },
                "examples": {
                  "example": {
                    "value": {
                      "result": {
                        "operation": "SAVE",
                        "status": "SUCCESS",
                        "flowId": "saved_flow_id"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized: Invalid or missing authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "0049c2dbb58b8393e8bced346fd8d660",
                      "errors": [
                        {
                          "code": "DIS-1001",
                          "detail": "Unauthorized"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: Insufficient permissions to access this flow",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "b17e82b13b6b7d88eaf886636fae8b4d",
                      "errors": [
                        {
                          "code": "DIS-1002",
                          "detail": "You do not have permission to access this API"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded - too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "f287c3b95d11f9ff28472ccc9ff38929",
                      "errors": [
                        {
                          "code": "DIS-1005",
                          "detail": "Rate limit exceeded"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request - check flow definition format or input data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "6900b63d72d75452c6c982afef49dc70",
                      "errors": [
                        {
                          "code": "DIS-MP-1004",
                          "detail": "Flow already exists for the given flow Id."
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error occurred",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "f287c3b95d11f9ff28472ccc9ff38929",
                      "errors": [
                        {
                          "code": "DIS-1003",
                          "detail": "Issue with internal services. Please try again after sometime"
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          },
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Multipass API"
        ],
        "summary": "Delete a flow definition",
        "description": "Deletes the Multipass flow definition for the specified flow ID.\nThis operation cannot be undone.\n",
        "operationId": "deleteFlow",
        "parameters": [
          {
            "name": "flowId",
            "in": "path",
            "description": "Unique identifier for the Multipass flow",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "my_custom_flow"
          },
          {
            "name": "X-Request-Id",
            "in": "header",
            "description": "The X-Request-Id header is optional but incredibly useful for developers. It serves as a unique identifier for requests within our system. When you encounter any problems with your requests, providing us with the X-Request-Id will enable us to pinpoint the specific request in question without the need for extensive manual searching. This means faster and more efficient troubleshooting. The maximum allowed length is 38 characters.",
            "schema": {
              "type": "string"
            },
            "example": "e8a838ca-14bf-4f0b-b29e-1ed2515b0772"
          }
        ],
        "responses": {
          "200": {
            "description": "Flow definition deleted successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowDefinitionApiResponse.WriteFlowResult"
                },
                "examples": {
                  "example": {
                    "value": {
                      "result": {
                        "operation": "DELETE",
                        "status": "SUCCESS",
                        "flowId": "deleted_flow_id"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized: Invalid or missing authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "0049c2dbb58b8393e8bced346fd8d660",
                      "errors": [
                        {
                          "code": "DIS-1001",
                          "detail": "Unauthorized"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: Insufficient permissions to access this flow",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "b17e82b13b6b7d88eaf886636fae8b4d",
                      "errors": [
                        {
                          "code": "DIS-1002",
                          "detail": "You do not have permission to access this API"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded - too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "f287c3b95d11f9ff28472ccc9ff38929",
                      "errors": [
                        {
                          "code": "DIS-1005",
                          "detail": "Rate limit exceeded"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request - check flow definition format or input data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "6900b63d72d75452c6c982afef49dc70",
                      "errors": [
                        {
                          "code": "DIS-MP-1002",
                          "detail": "Invalid Flow Id. Flow ID cannot be null or empty."
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error occurred",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "f287c3b95d11f9ff28472ccc9ff38929",
                      "errors": [
                        {
                          "code": "DIS-1003",
                          "detail": "Issue with internal services. Please try again after sometime"
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          },
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v1/multipass/flows/{flowId}/execute": {
      "post": {
        "tags": [
          "Multipass API"
        ],
        "summary": "Execute a flow with input data",
        "description": "Executes the specified Multipass flow with the provided input data.\nReturns the processed results based on the flow's configuration.\n",
        "operationId": "execute",
        "parameters": [
          {
            "name": "flowId",
            "in": "path",
            "description": "Unique identifier for the Multipass flow",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "default_flow"
          },
          {
            "name": "X-Request-Id",
            "in": "header",
            "description": "The X-Request-Id header is optional but incredibly useful for developers. It serves as a unique identifier for requests within our system. When you encounter any problems with your requests, providing us with the X-Request-Id will enable us to pinpoint the specific request in question without the need for extensive manual searching. This means faster and more efficient troubleshooting. The maximum allowed length is 38 characters.",
            "schema": {
              "type": "string"
            },
            "example": "e8a838ca-14bf-4f0b-b29e-1ed2515b0772"
          }
        ],
        "requestBody": {
          "description": "Request object for flow execution containing optional metadata and input data.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FlowExecutionRequest"
              },
              "examples": {
                "example": {
                  "value": {
                    "metadata": {
                      "geocodeUrl": "https://example.geocode"
                    },
                    "input": [
                      {
                        "value": "data_value1"
                      },
                      {
                        "value": "data_value2"
                      }
                    ]
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Flow executed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowExecutionApiResponse.FlowBatchExecutionResults"
                },
                "examples": {
                  "example": {
                    "value": {
                      "results": [
                        {
                          "processedData": "value123"
                        },
                        {
                          "processedData": "value456"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "206": {
            "description": "Partial Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowExecutionApiResponse.FlowBatchExecutionResults"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "6900b63d72d75452c6c982afef49dc70",
                      "results": [
                        {
                          "processedData": "value"
                        },
                        {
                          "code": "INVALID_INPUT",
                          "detail": "Flow execution failed: Missing required field 'address'"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request - check flow definition format or input data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowExecutionApiResponse.FlowBatchExecutionErrors"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "6900b63d72d75452c6c982afef49dc70",
                      "errors": [
                        {
                          "code": "DIS-MP-1002",
                          "detail": "Invalid Flow Id. Flow ID cannot be null or empty."
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized: Invalid or missing authentication token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowExecutionApiResponse.FlowBatchExecutionErrors"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "0049c2dbb58b8393e8bced346fd8d660",
                      "errors": [
                        {
                          "code": "DIS-1001",
                          "detail": "Unauthorized"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: Insufficient permissions to access this flow",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowExecutionApiResponse.FlowBatchExecutionErrors"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "b17e82b13b6b7d88eaf886636fae8b4d",
                      "errors": [
                        {
                          "code": "DIS-1002",
                          "detail": "You do not have permission to access this API"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded - too many requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowExecutionApiResponse.FlowBatchExecutionErrors"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "f287c3b95d11f9ff28472ccc9ff38929",
                      "errors": [
                        {
                          "code": "DIS-1005",
                          "detail": "Rate limit exceeded"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error occurred",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowExecutionApiResponse.FlowBatchExecutionErrors"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "f287c3b95d11f9ff28472ccc9ff38929",
                      "errors": [
                        {
                          "code": "DIS-1003",
                          "detail": "Issue with internal services. Please try again after sometime"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FlowExecutionApiResponse.FlowBatchExecutionErrors"
                },
                "examples": {
                  "example": {
                    "value": {
                      "id": "29839eb5a3d5be926bcd789fb3d71585",
                      "errors": [
                        {
                          "code": "DIS-1003",
                          "detail": "Issue with internal services. Please try again after sometime"
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          },
          {
            "ApiKeyAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "ErrorDetail": {
        "required": [
          "detail"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "A unique code representing the specific error.",
            "example": "DIS-1001"
          },
          "detail": {
            "type": "string",
            "description": "A detailed message describing the error.",
            "example": "Unauthorized"
          }
        },
        "description": "Error details."
      },
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the error.",
            "example": "ad45c1aded938181a05f256e5a1b594d"
          },
          "errors": {
            "type": "array",
            "description": "List of errors ",
            "items": {
              "$ref": "#/components/schemas/ErrorDetail"
            }
          }
        },
        "description": "Error response."
      },
      "Flow": {
        "required": [
          "flowId",
          "inputDataKey",
          "operators",
          "startOperatorId"
        ],
        "type": "object",
        "properties": {
          "flowId": {
            "type": "string"
          },
          "startOperatorId": {
            "type": "string"
          },
          "inputDataKey": {
            "type": "string"
          },
          "inputDataKeyOrDefault": {
            "type": "string"
          },
          "operators": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Operator"
            }
          }
        }
      },
      "FlowData": {
        "$ref": "#/components/schemas/Flow"
      },
      "FlowDefinitionApiResponse.ListFlowsResult": {
        "required": [
          "availableFlowIds",
          "status"
        ],
        "type": "object",
        "properties": {
          "status": {
            "type": "string"
          },
          "availableFlowIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "description": "Response object containing the operation, status, and available flow IDs"
      },
      "FlowDefinitionApiResponse.ReadFlowResult": {
        "required": [
          "flowId",
          "operation",
          "status"
        ],
        "type": "object",
        "properties": {
          "operation": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "flowId": {
            "type": "string"
          },
          "flowDefinition": {
            "$ref": "#/components/schemas/FlowData"
          }
        },
        "description": "Response object containing the operation, status, flow ID, and flow definition after a read operation"
      },
      "FlowDefinitionApiResponse.WriteFlowResult": {
        "required": [
          "flowId",
          "operation",
          "status"
        ],
        "type": "object",
        "properties": {
          "operation": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "flowId": {
            "type": "string"
          }
        },
        "description": "Response object containing the operation, status, and flow ID after a save/update/delete operation"
      },
      "FlowExecutionApiResponse.FlowBatchExecutionErrors": {
        "type": "object",
        "properties": {
          "errors": {
            "type": "array",
            "description": "List of execution error details",
            "items": {
              "$ref": "#/components/schemas/ErrorDetail"
            }
          }
        },
        "description": "Represents an error response containing a list of execution error details"
      },
      "FlowExecutionApiResponse.FlowBatchExecutionResults": {
        "required": [
          "results"
        ],
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/JsonNode"
              }
            }
          }
        },
        "description": "Represents a successful response containing a list of execution results"
      },
      "FlowExecutionRequest": {
        "required": [
          "input"
        ],
        "type": "object",
        "properties": {
          "metadata": {
            "type": "array",
            "description": "Optional metadata for the flow execution",
            "nullable": true,
            "items": {
              "type": "object"
            }
          },
          "input": {
            "type": "array",
            "description": "Array of input JSON data objects to be processed by the flow",
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/JsonNode"
              }
            }
          }
        },
        "description": "Request object for flow execution containing optional metadata and input data."
      },
      "JsonNode": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/JsonSerializable.Base"
          },
          {
            "type": "object",
            "properties": {
              "empty": {
                "type": "boolean"
              },
              "valueNode": {
                "type": "boolean"
              },
              "containerNode": {
                "type": "boolean"
              },
              "missingNode": {
                "type": "boolean"
              },
              "array": {
                "type": "boolean"
              },
              "object": {
                "type": "boolean"
              },
              "nodeType": {
                "$ref": "#/components/schemas/JsonNodeType"
              },
              "pojo": {
                "type": "boolean"
              },
              "number": {
                "type": "boolean"
              },
              "integralNumber": {
                "type": "boolean"
              },
              "floatingPointNumber": {
                "type": "boolean"
              },
              "short": {
                "type": "boolean"
              },
              "int": {
                "type": "boolean"
              },
              "long": {
                "type": "boolean"
              },
              "float": {
                "type": "boolean"
              },
              "double": {
                "type": "boolean"
              },
              "bigDecimal": {
                "type": "boolean"
              },
              "bigInteger": {
                "type": "boolean"
              },
              "textual": {
                "type": "boolean"
              },
              "boolean": {
                "type": "boolean"
              },
              "null": {
                "type": "boolean"
              },
              "binary": {
                "type": "boolean"
              },
              "_this": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              }
            }
          }
        ]
      },
      "JsonNodeType": {
        "type": "string",
        "enum": [
          "ARRAY",
          "BINARY",
          "BOOLEAN",
          "MISSING",
          "NULL",
          "NUMBER",
          "OBJECT",
          "POJO",
          "STRING"
        ]
      },
      "JsonSerializable.Base": {
        "type": "object"
      },
      "Operator": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        }
      }
    },
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "description": "API Key authentication. Pass the value in the following format: Apikey <base64(api_key:api_secret)>.",
        "name": "Authorization",
        "in": "header"
      },
      "bearerAuth": {
        "type": "http",
        "description": "JWT Bearer Token authentication. Pass the token in the Authorization header with 'Bearer ' prefix.",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  }
}
