{
  "openapi": "3.0.0",
  "paths": {
    "/v1/prospects/import": {
      "post": {
        "operationId": "ProspectController_importProspects",
        "summary": "To import new prospects",
        "x-title": "Import Prospects",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProspectImportDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "<b><i> Prospect Import Status Codes : </i></b><br><br>\n>* <b>Status:</b> 10000 &nbsp;&nbsp;<b>Description:</b> Success\n\n>* <b>Status:</b> 10100 &nbsp;&nbsp;<b>Description:</b> Invalid Email\n\n>* <b>Status:</b> 10200 &nbsp;&nbsp;<b>Description:</b> Prospect already present in another step of same sequence\n\n>* <b>Status:</b> 10300 &nbsp;&nbsp;<b>Description:</b> Mismatch in custom field type\n\n>* <b>Status:</b> 10400 &nbsp;&nbsp;<b>Description:</b> Nothing to update\n\n>* <b>Status:</b> 10500 &nbsp;&nbsp;<b>Description:</b> Nothing to overwrite\n\n>* <b>Status:</b> 10600 &nbsp;&nbsp;<b>Description:</b> Duplicate prospect\n\n>* <b>Status:</b> 10700 &nbsp;&nbsp;<b>Description:</b> Bounced prospect\n\n>* <b>Status:</b> 10800 &nbsp;&nbsp;<b>Description:</b> Unsubscribed prospect\n\n>* <b>Status:</b> 10900 &nbsp;&nbsp;<b>Description:</b> More then One Separator\n\n>* <b>Status:</b> 11000 &nbsp;&nbsp;<b>Description:</b> Prospect already present with different owner\n\n>* <b>Status:</b> 12000 &nbsp;&nbsp;<b>Description:</b> Prospect is active in another sequence\n",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Prospects have been imported",
                    "payload": [
                      {
                        "email": "vishwash1245@gmail.com",
                        "status": 10200
                      },
                      {
                        "email": "saleshandyUser123@gmail.com",
                        "status": 10200
                      }
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to import prospects<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "error": true,
                    "type": "general",
                    "code": 4000,
                    "message": "Failed to import prospects"
                  }
                }
              }
            }
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "prospects"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/prospects/verification-status": {
      "post": {
        "operationId": "ProspectController_getProspectsVerificationStatus",
        "summary": "To find the verification status of given emails",
        "x-title": "Get Prospect Verification Status",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProspectsVerificationStatusDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Retrieve the verification status of given emails",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "payload": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "email": {
                            "type": "string"
                          },
                          "verificationStatus": {
                            "type": "string",
                            "description": "The verification status of the email. Possible values: valid, pending, skip, inProgress, risky, bad.",
                            "enum": [
                              "valid",
                              "pending",
                              "skip",
                              "inProgress",
                              "risky",
                              "bad"
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to fetch the prospect verification status<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "prospects"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/prospects/import-with-field-name": {
      "post": {
        "operationId": "ProspectController_importProspectsV2",
        "summary": "Import prospect with field name.",
        "x-title": "Import Prospects with Field Name",
        "description": "<p>Ensure that the field names exist in the system. You can import up to <strong>100,000</strong> prospects at a time, with a maximum content size of <strong>90 MB</strong>.</p>\n    <p>\n    This can be a large request and may take some time to complete. But you will get response immediately after the request is submitted.\n    </p>\n    <p>On request of this API, you will receive a <strong>requestId</strong> that can be used to check the status of the import process.</p>\n    <p>To check the status of the import process, you can use the <code>v1/sequences/prospects/import-with-field-name/status</code> API.</p>\n    <p>If there is any error during the import process, you will receive a <strong>CSV file link</strong> containing the error details.</p>",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProspectImportV2Dto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Prospect import has started successfully. Please wait while we import your prospects. You may check the status using this API `v1/prospects/import-status/{{requestId}}`.",
                    "payload": {
                      "requestId": "129a184"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to import prospects<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "error": true,
                    "type": "general",
                    "code": 4000,
                    "message": "Failed to import prospects"
                  }
                }
              }
            }
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "prospects"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/prospects/import-status/{requestId}": {
      "get": {
        "operationId": "ProspectController_getProspectImportStatus",
        "summary": "While importing prospect you will receive the requestId. Using that requestId you can check the status of the import process.",
        "description": "<p>\n                    While importing prospect using\n                    <code>v1/prospects/import-with-field-name</code> and\n                    <code>v1/sequences/prospects/import-with-field-name</code>,\n                    you will receive the <strong>requestId</strong>.\n                  </p>\n                  <p>\n                    Using that <strong>requestId</strong>, you can check the status of the import process.\n                    If there is any error during the import process, you will receive a\n                    <strong>CSV file link</strong> containing the error details.\n                  </p>\n    ",
        "x-title": "Get Prospect Import Status",
        "parameters": [
          {
            "name": "requestId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieve the prospect import status of requestId",
            "schema": {
              "example": {
                "payload": {
                  "isCompleted": true,
                  "failedProspectsURL": "https://example.com/import-prospect/file?fileName=import+error+report.csv&key=failedProspect%2F95689%2F158b2ab10e4%2Fimport_err.csv"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportStatus"
                }
              }
            }
          },
          "400": {
            "description": "40000: Prospect import request not found<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "prospects"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/prospects/attribute": {
      "get": {
        "operationId": "ProspectController_getProspectAttributeById",
        "summary": "Get Prospect Long text attribute value by id",
        "x-title": "Get Prospect Attribute Value",
        "parameters": [
          {
            "name": "attributeId",
            "required": true,
            "in": "query",
            "description": "Enter prospect attribute ID",
            "example": "as5ax",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "prospectId",
            "required": false,
            "in": "query",
            "description": "Enter prospect ID",
            "example": "as5ax",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched prospect attrubute value<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "payload": {
                      "message": "Successfully fetched prospect attrubute value",
                      "payload": {
                        "payload": {
                          "attributeId": "ZXdPd4PVoy",
                          "prospectId": "bwbJo2xMwE",
                          "fieldRefId": "MAwgK09lwN",
                          "attributeValue": "Prospect attribute value"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "50001: Failed to fetch prospect attribute<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "prospects"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/prospects/{prospectId}/attribute": {
      "post": {
        "operationId": "ProspectController_upsertAttribute",
        "summary": "Update prospect field values",
        "x-title": "Update Prospect Attribute",
        "description": "Sets or updates the value of one or more fields on a prospect profile. To update a single field, provide <code>fieldId</code> and <code>attributeValue</code>. To update multiple fields in one request, provide an <code>attributes</code> array where each item contains a <code>fieldId</code> and the new value. Use the field IDs returned by the GET /fields endpoint.",
        "parameters": [
          {
            "name": "prospectId",
            "required": true,
            "in": "path",
            "description": "Public prospect ID returned by prospect read/list APIs.",
            "example": "8PvBmrB7P7",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "To update a <strong>single field</strong>, provide <code>fieldId</code> and <code>attributeValue</code>. To update <strong>multiple fields in one request</strong>, provide an <code>attributes</code> array — each item must contain a <code>fieldId</code> and <code>attributeValue</code>. Use the field IDs returned by the GET /fields endpoint.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertProspectAttributeDto"
              },
              "examples": {
                "singleField": {
                  "summary": "Update a single field",
                  "value": {
                    "fieldId": "1qPB1GBBwD",
                    "attributeValue": "Smith"
                  }
                },
                "multipleFields": {
                  "summary": "Update multiple fields at once",
                  "value": {
                    "attributes": [
                      {
                        "fieldId": "BVaD1mKgzo",
                        "attributeValue": "John"
                      },
                      {
                        "fieldId": "1qPB1GBBwD",
                        "attributeValue": "Smith"
                      },
                      {
                        "fieldId": "xPmNkLqR3w",
                        "attributeValue": "Acme Corp"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Prospect attribute updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Prospect attribute updated successfully",
                    "payload": {
                      "results": [
                        {
                          "fieldId": "Vj9kLp2Q",
                          "success": true
                        },
                        {
                          "fieldId": "r8PqN2xA",
                          "success": true
                        },
                        {
                          "fieldId": "INVALIDxx",
                          "success": false
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "50001: Failed to prospect attribute<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "prospects"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/prospects/{prospectId}/notes": {
      "get": {
        "operationId": "ProspectController_getProspectNotes",
        "summary": "List notes for a prospect",
        "x-title": "Get Prospect Notes",
        "description": "Returns a paginated list of notes attached to the specified prospect, along with any draft note and pagination metadata. Use the <code>skip</code> and <code>take</code> query parameters to page through results.",
        "parameters": [
          {
            "name": "prospectId",
            "required": true,
            "in": "path",
            "description": "Public prospect ID returned by prospect read/list APIs.",
            "example": "8PvBmrB7P7",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skip",
            "required": false,
            "in": "query",
            "description": "Number of notes to skip (offset).",
            "example": 0,
            "schema": {
              "minimum": 0,
              "default": 0,
              "type": "number"
            }
          },
          {
            "name": "take",
            "required": false,
            "in": "query",
            "description": "Number of notes to return per page (max 100).",
            "example": 20,
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 20,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Notes fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Notes fetched successfully",
                    "payload": {
                      "notes": [
                        {
                          "id": "Nt7Yp4Za",
                          "prospectId": "Pr9xQ2Lm",
                          "visibility": "1",
                          "status": "1",
                          "pinnedAt": "2026-04-21T10:59:21.000Z",
                          "createdAt": "2026-04-21T10:57:07.000Z",
                          "updatedAt": "2026-04-21T10:59:21.000Z",
                          "editedAt": "2026-04-21T10:58:29.000Z",
                          "author": {
                            "firstName": "Avery",
                            "lastName": "Stone",
                            "email": "avery.stone@example.org"
                          },
                          "editedBy": {
                            "firstName": "Avery",
                            "lastName": "Stone",
                            "email": "avery.stone@example.org"
                          },
                          "content": "<p>Discussed annual plan and renewal timeline.</p>"
                        }
                      ],
                      "draftNote": null,
                      "pagination": {
                        "skip": 0,
                        "take": 20,
                        "hasMore": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "prospects"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences": {
      "get": {
        "operationId": "SequenceController_getSequencesWithSteps",
        "summary": "To get the sequences and steps of a user",
        "x-title": "Get Sequences and Steps",
        "parameters": [
          {
            "name": "sequenceName",
            "required": false,
            "in": "query",
            "description": "Search by Sequence title",
            "example": "sequence",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "description": "The number of items per page in the result. Maximum pageSize is 1000",
            "example": 5,
            "schema": {
              "default": 100,
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "The page number for pagination.",
            "example": 1,
            "schema": {
              "default": 1,
              "type": "number"
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "description": "The sorting order for the result.",
            "example": "ASC",
            "schema": {
              "enum": [
                "ASC",
                "DESC"
              ],
              "type": "string"
            }
          },
          {
            "name": "sortBy",
            "required": false,
            "in": "query",
            "description": "The field by which the result should be sorted.",
            "example": "sequence.createdAt",
            "schema": {
              "enum": [
                "sequence.createdAt",
                "sequence.title"
              ],
              "type": "string"
            }
          },
          {
            "name": "clientIds",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched all sequences and their associated steps",
            "schema": {
              "example": {
                "message": "Successfully fetched all sequences and their associated steps",
                "payload": [
                  {
                    "id": "JA5YdAr9wy",
                    "title": "Sample Sequence",
                    "active": true,
                    "steps": [
                      {
                        "id": "bwOLEx4l8G",
                        "name": "Step 1"
                      },
                      {
                        "id": "zDkLwJJlVG",
                        "name": "Step 2"
                      },
                      {
                        "id": "yeZY7V6LA8",
                        "name": "Step 3"
                      }
                    ],
                    "client": {
                      "id": "g9bzZq4aMd",
                      "companyName": "Demo",
                      "firstName": "John",
                      "lastName": "Doe"
                    }
                  },
                  {
                    "id": "NODlW30l0J",
                    "title": "Marketing Sequence",
                    "active": false,
                    "steps": [
                      {
                        "id": "PBDLQaPLJR",
                        "name": "Step 1"
                      }
                    ],
                    "client": null
                  }
                ]
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSequenceDto"
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to fetch sequences and their steps<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "error": true,
                    "type": "general",
                    "code": 3001,
                    "message": "Failed to fetch sequences and their steps"
                  }
                }
              }
            }
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      },
      "post": {
        "operationId": "SequenceController_createSequence",
        "summary": "Create a new sequence",
        "x-title": "Create Sequence",
        "description": "Create a new sequence with a <code>title</code>. Optionally attach one or more sending email accounts via <code>emailAccountIds</code> and/or assign a schedule in the same call.\n\n<strong>Upfront validation (all-or-nothing)</strong> — every <code>emailAccountIds</code> entry and <code>scheduleId</code> are validated before the sequence is created. If <em>any</em> hashed ID fails to decode, does not belong to the caller, refers to an inactive email account, or if the array would exceed the per-sequence email account limit or plan quota, the request is rejected with the corresponding error and <strong>no sequence is created</strong>. If <code>emailAccountIds</code> is omitted, the caller's default email account is attached automatically.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSequenceDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Sequence created successfully",
            "schema": {
              "example": {
                "message": "Sequence created successfully",
                "payload": {
                  "id": "JA5YdAr9wy",
                  "title": "My new sequence",
                  "active": true,
                  "steps": [],
                  "client": null
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateSequenceResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to create sequence<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "error": true,
                    "type": "general",
                    "code": 4000,
                    "message": "Failed to create sequence"
                  }
                }
              }
            }
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/update-prospect-outcome": {
      "patch": {
        "operationId": "SequenceController_updateProspectOutcome",
        "summary": "To update the prospect outcome",
        "x-title": "Update Prospect Outcome",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProspectOutcomeDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated prospect outcome",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Prospect outcome updated successfully",
                    "payload": {}
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/{sequenceId}/email-accounts": {
      "get": {
        "operationId": "SequenceController_sequenceEmailAccountList",
        "summary": "List of sending email account of sequence",
        "x-title": "List Sequence Email Accounts",
        "parameters": [
          {
            "name": "sequenceId",
            "required": true,
            "in": "path",
            "description": "The ID of the sequence to which the email accounts will be attached",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Email account(s) listed successfully",
            "schema": {
              "example": {
                "message": "Email account(s) attached successfully",
                "payload": [
                  {
                    "id": "8Jwomvq5a5",
                    "sequenceId": "k4PerXkXan",
                    "createdAt": "2024-09-23T01:18:04.826Z",
                    "deletedAt": null,
                    "emailAccount": [
                      {
                        "id": "WjzR8xpPAq",
                        "userId": "2AwrlZ3aQn",
                        "shAccountId": "Y8aL11LzNn",
                        "fromName": "John Paul",
                        "fromEmail": "example@gmail.com",
                        "fromFirstName": "John",
                        "fromLastName": "Paul",
                        "type": 1,
                        "status": 1,
                        "isDefault": true,
                        "lastConnectedAt": "2024-09-23T02:34:51.000Z",
                        "createdAt": "2024-08-22T23:00:23.379Z",
                        "modifiedAt": "2024-09-23T02:34:51.000Z",
                        "deletedAt": null,
                        "emailServiceProvider": "gsuite",
                        "healthScore": 71,
                        "settings": [
                          {
                            "id": "Z6zxo5O7aA",
                            "emailAccountId": "WjzR8xpPAq",
                            "code": "available-quota",
                            "value": "11",
                            "modifiedAt": "2024-09-24T13:00:00.712Z"
                          },
                          {
                            "id": "k4PevYd2an",
                            "emailAccountId": "WjzR8xpPAq",
                            "code": "bcc",
                            "value": "",
                            "modifiedAt": "2024-08-22T23:00:23.489Z"
                          },
                          {
                            "id": "9pa83nN7Py",
                            "emailAccountId": "WjzR8xpPAq",
                            "code": "daily-sending-limit",
                            "value": "11",
                            "modifiedAt": "2024-09-24T13:00:00.712Z"
                          },
                          {
                            "id": "lXwAoeQ4a8",
                            "emailAccountId": "WjzR8xpPAq",
                            "code": "email-created-timestamp",
                            "value": "2024-05-29T10:43:10.000Z",
                            "modifiedAt": "2024-09-23T02:34:51.000Z"
                          },
                          {
                            "id": "8JwobX9LzO",
                            "emailAccountId": "WjzR8xpPAq",
                            "code": "max-interval",
                            "value": "191",
                            "modifiedAt": "2024-09-19T08:36:29.000Z"
                          },
                          {
                            "id": "VvP7Y1N1z5",
                            "emailAccountId": "WjzR8xpPAq",
                            "code": "max-sending-limit",
                            "value": "50",
                            "modifiedAt": "2024-08-23T00:38:29.000Z"
                          },
                          {
                            "id": "KZajkY1ez1",
                            "emailAccountId": "WjzR8xpPAq",
                            "code": "min-interval",
                            "value": "61",
                            "modifiedAt": "2024-09-19T08:36:29.000Z"
                          },
                          {
                            "id": "klw69gNjz1",
                            "emailAccountId": "WjzR8xpPAq",
                            "code": "ramp-up-initial-sending-limit",
                            "value": "5",
                            "modifiedAt": "2024-09-19T08:36:39.000Z"
                          },
                          {
                            "id": "9bzZ1gRmaM",
                            "emailAccountId": "WjzR8xpPAq",
                            "code": "ramp-up-limit",
                            "value": "11",
                            "modifiedAt": "2024-09-24T13:00:00.712Z"
                          },
                          {
                            "id": "gOwElX4xzb",
                            "emailAccountId": "WjzR8xpPAq",
                            "code": "ramp-up-percent",
                            "value": "10",
                            "modifiedAt": "2024-09-19T08:36:39.000Z"
                          },
                          {
                            "id": "EeaNLOg2wg",
                            "emailAccountId": "WjzR8xpPAq",
                            "code": "ramp-up-status",
                            "value": "1",
                            "modifiedAt": "2024-09-19T08:36:39.000Z"
                          },
                          {
                            "id": "WjzRZGVmzA",
                            "emailAccountId": "WjzR8xpPAq",
                            "code": "signature",
                            "value": "<div><span style=\"font-size: 18px; color: #b96ad9;\">John</span></div>\n<div><strong><span style=\"font-size: 18px;\">Software Engineer</span></strong></div>\n<div><a href=\"http://www.google.com\" target=\"_blank\" rel=\"noopener\">Instagram</a></div>\n<div><img src=\"https://v3-editor-images.s3.us-west-2.amazonaws.com/45562/51076/1724418818979-jira-logo-scaled.png\" alt=\"\" width=\"236\" height=\"36\" /></div>\n<div> </div>",
                            "modifiedAt": "2024-08-26T00:16:37.000Z"
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SequenceAllEmailResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/{sequenceId}/email-accounts/add": {
      "post": {
        "operationId": "SequenceController_addEmailAccountToSequence",
        "summary": "Add sending email account to sequence",
        "x-title": "Add Email Account to Sequence",
        "parameters": [
          {
            "name": "sequenceId",
            "required": true,
            "in": "path",
            "description": "The ID of the sequence to which the email accounts will be attached",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddEmailAccountToSequenceDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Email account(s) attached successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Email account(s) attached successfully"
                  }
                }
              }
            }
          },
          "400": {
            "description": "<b><i> Error Codes : </i></b><br><br>\n>* <b>Status:</b> 40100 &nbsp;&nbsp;<b>Description:</b> Sequence is not found\n\n>* <b>Status:</b> 40105 &nbsp;&nbsp;<b>Description:</b> Email account is already attached\n\n>* <b>Status:</b> 40200 &nbsp;&nbsp;<b>Description:</b> Email account is not found\n\n>* <b>Status:</b> 40201 &nbsp;&nbsp;<b>Description:</b> Email account is not active\n"
          },
          "413": {
            "description": "40003: The maximum email account limit has been exceeded. You can add up to 50 email accounts at a time<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/{sequenceId}/email-accounts/remove": {
      "post": {
        "operationId": "SequenceController_removeEmailAccountFromSequence",
        "summary": "Remove sending email account from sequence",
        "x-title": "Remove Email Account from Sequence",
        "parameters": [
          {
            "name": "sequenceId",
            "required": true,
            "in": "path",
            "description": "The ID of the sequence from which the email accounts will be removed",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemoveEmailAccountFromSequenceDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Email account has been removed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Email account has been removed successfully",
                    "payload": {}
                  }
                }
              }
            }
          },
          "400": {
            "description": "<b><i> Error Codes : </i></b><br><br>\n>* <b>Status:</b> 40100 &nbsp;&nbsp;<b>Description:</b> Sequence is not found\n\n>* <b>Status:</b> 40200 &nbsp;&nbsp;<b>Description:</b> Email account is not found\n"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/prospects/import-with-field-name": {
      "post": {
        "operationId": "SequenceController_importProspectsV2",
        "summary": "Import prospect with field name in to sequence",
        "x-title": "Import Prospects into Sequence",
        "description": "<p>Ensure that the field names exist in the system. You can import up to <strong>100,000</strong> prospects at a time, with a maximum content size of <strong>90 MB</strong>.</p>\n<p>This can be a large request and may take some time to complete. But you will get response immediately after the request is submitted.</p>\n<p>On request of this API, you will receive a <strong>requestId</strong> that can be used to check the status of the import process.</p>\n<p>To check the status of the import process, you can use the <code>v1/sequences/prospects/import-with-field-name/status</code> API.</p>\n<p>If there is any error during the import process, you will receive a <strong>CSV file link</strong> containing the error details.</p>",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SequenceProspectImportV2Dto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Prospect import has started successfully. Please wait while we import your prospects. You may check the status using this API `v1/prospects/import-status/{{requestId}}`.",
                    "payload": {
                      "requestId": "129a184"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to import prospects<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "error": true,
                    "type": "general",
                    "code": 4000,
                    "message": "Failed to import prospects"
                  }
                }
              }
            }
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/status": {
      "post": {
        "operationId": "SequenceController_updateSequenceStatus",
        "summary": "Activate or Pause sequence for selected sequences",
        "x-title": "Update Sequence Status (Activate/Pause)",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSequenceStatusDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successfully updated sequences",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "payload": {
                      "success": 2,
                      "failed": 0
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "<b><i> Error Codes : </i></b><br><br>\n>* <b>Status:</b> 40100 &nbsp;&nbsp;<b>Description:</b> Sequence is not found\n\n>* <b>Status:</b> 40101 &nbsp;&nbsp;<b>Description:</b> Sequence is already pause\n\n>* <b>Status:</b> 40102 &nbsp;&nbsp;<b>Description:</b> Sequence is already active\n\n>* <b>Status:</b> 40103 &nbsp;&nbsp;<b>Description:</b>  No active email is attached to the sequence\n"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/{sequenceId}/steps": {
      "post": {
        "operationId": "SequenceController_createStep",
        "summary": "Create a new step for a sequence",
        "x-title": "Create Sequence Step",
        "description": "Add a step to the sequence. A step belongs to a <code>channel</code> (Email, LinkedIn, Task, Call, Whatsapp) and has at least one variant (up to 26 for A/B testing on Email).\n\n<strong>Required</strong> — <code>channel</code>, <code>absoluteDays</code> (1–999; each day can hold at most one Email step), and <code>variants[]</code> with a <code>payload</code> shape that depends on the channel.\n\n<strong>Optional</strong> — <code>priority</code> (1=Urgent … 4=Low) and <code>assigneeId</code> for task-generating steps; <code>attachmentIds</code> and <code>taskNote</code> per variant. See OpenAPI.md.",
        "parameters": [
          {
            "name": "sequenceId",
            "required": true,
            "in": "path",
            "description": "The ID of the sequence to which the step will be added",
            "example": "JA5YdAr9wy",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSequenceStepDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Sequence step created successfully",
            "schema": {
              "example": {
                "message": "Sequence step created successfully",
                "payload": {
                  "id": "bwOLEx4l8G",
                  "name": "Step 1",
                  "number": 1,
                  "type": 1,
                  "absoluteDays": 3
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SequenceStep"
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to create sequence step<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "error": true,
                    "type": "general",
                    "code": 4000,
                    "message": "Failed to create sequence step"
                  }
                }
              }
            }
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      },
      "get": {
        "operationId": "SequenceController_getSequenceSteps",
        "summary": "List all steps and variants for a sequence",
        "x-title": "Get Sequence Steps",
        "description": "Return every step in the sequence, in execution order, each with its variants and their payloads. Useful for exporting a sequence or for inspecting what will be sent.",
        "parameters": [
          {
            "name": "sequenceId",
            "required": true,
            "in": "path",
            "description": "The ID of the sequence",
            "example": "JA5YdAr9wy",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched all sequences and their associated steps"
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/{sequenceId}/steps/{stepId}/variants/{variantId}": {
      "patch": {
        "operationId": "SequenceController_updateVariant",
        "summary": "Update a step variant for a sequence",
        "x-title": "Update Sequence Step Variant",
        "description": "Update the <code>payload</code>, <code>status</code>, <code>taskNote</code>, <code>priority</code>, <code>assigneeId</code>, or <code>attachmentIds</code> of an existing variant. The <code>payload</code> shape must match the step's channel (see OpenAPI.md).",
        "parameters": [
          {
            "name": "sequenceId",
            "required": true,
            "in": "path",
            "description": "The ID of the sequence",
            "example": "k4PeeMxkPn",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "stepId",
            "required": true,
            "in": "path",
            "description": "The ID of the step",
            "example": "lXwAoMl4a8",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "variantId",
            "required": true,
            "in": "path",
            "description": "The ID of the variant",
            "example": "1qPBgAB4aD",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSequenceStepVariantDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Sequence step variant updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Sequence step variant updated successfully",
                    "payload": 1
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to update sequence step variant<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "error": true,
                    "type": "general",
                    "code": 4000,
                    "message": "Failed to update sequence step variant"
                  }
                }
              }
            }
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/{sequenceId}/settings": {
      "get": {
        "operationId": "SequenceController_getSequenceSettings",
        "summary": "Get sequence settings (optionally filter by code)",
        "x-title": "Get Sequence Settings",
        "description": "Return all 13 public settings for the sequence along with the <strong>full</strong> assigned schedule (<code>id</code>, <code>name</code>, <code>timezone</code>, <code>isDefault</code>), all four <code>priorityDistribution</code> options with the active one flagged (<code>active: true</code>), and the associated <code>client</code> (or <code>null</code>).\n\nPass the optional <code>code</code> query parameter (1–13) to return just that single setting as a one-element array — useful when you only need to read one flag. See OpenAPI.md.",
        "parameters": [
          {
            "name": "sequenceId",
            "required": true,
            "in": "path",
            "description": "The ID of the sequence",
            "example": "JA5YdAr9wy",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "code",
            "required": false,
            "in": "query",
            "description": "Filter to a single setting code (1–13). Omit to return all settings.",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Sequence settings fetched"
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      },
      "patch": {
        "operationId": "SequenceController_updateSequenceSettings",
        "summary": "Update sequence settings and/or schedule",
        "x-title": "Update Sequence Settings",
        "description": "Send a partial update — only the codes in <code>settings[]</code> are changed, the rest are preserved.\n\n<strong>Unsubscribe link (code 1)</strong><br/>The value must contain the <code>{{link}}</code> placeholder (the server swaps in the recipient-specific unsubscribe URL when the email is sent). A non-empty value without <code>{{link}}</code> is rejected.\n\n<strong>Accepted preset snippets</strong> (use these verbatim, or provide any custom HTML that includes <code>{{link}}</code>):\n<ol><li><code>If you'd prefer not to receive email from me, &lt;a href=\"{{link}}\" target=\"_blank\"&gt;Unsubscribe here&lt;/a&gt;.</code></li><li><code>If you don't want to receive such emails in future, &lt;a href=\"{{link}}\" target=\"_blank\"&gt;Unsubscribe here&lt;/a&gt;.</code></li><li><code>Not up for all these emails? No Sweat! you can, &lt;a href=\"{{link}}\" target=\"_blank\"&gt;Unsubscribe here&lt;/a&gt;.</code></li></ol>Pass an empty string (<code>\"\"</code>) to disable the unsubscribe link entirely.\n\n<strong>Mutually exclusive with unsubscribe-text (code 2).</strong> Setting one to a non-empty value automatically clears the other.",
        "parameters": [
          {
            "name": "sequenceId",
            "required": true,
            "in": "path",
            "description": "The ID of the sequence",
            "example": "JA5YdAr9wy",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSequenceSettingsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Sequence settings updated"
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/{sequenceId}/priority-distribution": {
      "patch": {
        "operationId": "SequenceController_updatePriorityDistribution",
        "summary": "Update priority distribution for a sequence",
        "x-title": "Update Sequence Priority Distribution",
        "description": "Sets how outreach emails are prioritised across the sequence steps. Pass the preset id in the request body as <code>priorityDistributionId</code>.\n\n<strong>Preset reference:</strong>\n<ul><li><code>1</code> — <strong>Prioritise Follow-Ups</strong>: more emails will be sent from follow-up steps.</li><li><code>2</code> — <strong>Prioritise New Prospects</strong>: more emails will be sent from the first step.</li><li><code>3</code> — <strong>Balanced Sending</strong>: equal number of emails from each step.</li><li><code>4</code> — <strong>Aggressively Prioritise New Prospects</strong>: up to 80% of emails from the first step.</li></ul>\nExample body: <code>{ \"priorityDistributionId\": 3 }</code>",
        "parameters": [
          {
            "name": "sequenceId",
            "required": true,
            "in": "path",
            "description": "The ID of the sequence",
            "example": "JA5YdAr9wy",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePriorityDistributionDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Priority distribution updated"
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/{sequenceId}/schedule": {
      "patch": {
        "operationId": "SequenceController_updateSequenceSchedule",
        "summary": "Update the schedule assigned to a sequence",
        "x-title": "Update Sequence Schedule",
        "description": "Assign a different schedule to the sequence. The schedule controls which days and time windows emails in this sequence are sent.\n\nPass <code>scheduleId</code> (hashed) in the body. The response returns the full assigned schedule (<code>id</code>, <code>name</code>, <code>timezone</code>, <code>isDefault</code>). Use Get Schedules to list the caller's available schedule IDs.",
        "parameters": [
          {
            "name": "sequenceId",
            "required": true,
            "in": "path",
            "description": "The ID of the sequence",
            "example": "JA5YdAr9wy",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSequenceScheduleDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Sequence schedule updated"
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/{sequenceId}/steps/{stepId}/variants": {
      "post": {
        "operationId": "SequenceController_createVariant",
        "summary": "Add a new variant to an existing step",
        "x-title": "Create Sequence Step Variant",
        "description": "Append a variant to an existing step. Email steps support up to 26 variants (A/B…Z); other channels support a single active variant at a time.\n\nThe <code>payload</code> shape must match the step's channel — Email variants take <code>{ subject, content, preheader? }</code>; LinkedIn Connection Request takes <code>{ connectionNote }</code>; LinkedIn Message/InMail takes <code>{ message }</code> (+ <code>subject</code> for InMail); ViewProfile, PostInteraction, Call, Task and Whatsapp steps accept <code>{}</code>. See OpenAPI.md.",
        "parameters": [
          {
            "name": "sequenceId",
            "required": true,
            "in": "path",
            "description": "The ID of the sequence",
            "example": "k4PeeMxkPn",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "stepId",
            "required": true,
            "in": "path",
            "description": "The ID of the step",
            "example": "lXwAoMl4a8",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSequenceStepVariantDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Sequence step variant created"
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/{sequenceId}/steps/{stepId}": {
      "get": {
        "operationId": "SequenceController_getSequenceStepVariants",
        "summary": "Get sequence step variants",
        "x-title": "Get Sequence Step Variants",
        "parameters": [
          {
            "name": "sequenceId",
            "required": true,
            "in": "path",
            "description": "The ID of the sequence",
            "example": "k4PeeMxkPn",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "stepId",
            "required": true,
            "in": "path",
            "description": "The ID of the step",
            "example": "lXwAoMl4a8",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Sequence step variants fetched successfully",
            "schema": {
              "example": {
                "message": "Sequence step variants fetched successfully",
                "payload": [
                  {
                    "id": "MAwgmlAKaN",
                    "payload": {
                      "subject": "Quick Question, {{First name}}!",
                      "content": "<div><p>{spin} Hi|Hello|Hey {endspin} {{First Name | 'there'}},</p></div>",
                      "preheader": ""
                    },
                    "taskNote": null,
                    "status": 1,
                    "type": 1,
                    "executionType": 1,
                    "stepStatus": 1
                  },
                  {
                    "id": "EeaN4LNdwg",
                    "payload": {
                      "subject": "Follow-up on my last email",
                      "content": "<div><p>Just checking in, {{First Name}}!</p></div>",
                      "preheader": ""
                    },
                    "taskNote": null,
                    "status": 1,
                    "type": 1,
                    "executionType": 1,
                    "stepStatus": 1
                  }
                ]
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SequenceStepVariant"
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to fetch sequence step variants<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/{sequenceId}/contacts": {
      "post": {
        "operationId": "SequenceController_addContactsToSequence",
        "summary": "Attach contacts to a sequence step",
        "x-title": "Add Contacts to Sequence",
        "parameters": [
          {
            "name": "sequenceId",
            "required": true,
            "in": "path",
            "description": "Sequence ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddContactsToSequenceDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Contacts added to sequence successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Contacts added to sequence successfully",
                    "payload": {
                      "id": 1,
                      "email": "user@example.com",
                      "isSubscribed": true,
                      "createdAt": "2024-01-01T00:00:00.000Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to add contacts to sequence<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/{sequenceId}/test-email": {
      "post": {
        "operationId": "SequenceController_sendTestEmail",
        "summary": "Send a test email for a sequence step",
        "x-title": "Send Test Email",
        "parameters": [
          {
            "name": "sequenceId",
            "required": true,
            "in": "path",
            "description": "Public sequence ID.",
            "example": "JA5YdAr9wy",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Send a test email for a specific sequence step. The sender (<code>fromEmailAccountId</code>) must already be connected to the sequence. Use the <code>to</code> array to send the test to multiple recipients in a single request.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendTestEmailDto"
              },
              "examples": {
                "singleRecipient": {
                  "summary": "Single recipient",
                  "value": {
                    "to": [
                      "qa.recipient@example.org"
                    ],
                    "fromEmailAccountId": "Y8aL4J6jaN",
                    "subject": "OpenAPI test email",
                    "preheader": "OpenAPI preheader",
                    "content": "<p>Hello from OpenAPI validation.</p>"
                  }
                },
                "multipleRecipients": {
                  "summary": "Multiple recipients",
                  "value": {
                    "to": [
                      "qa.recipient@example.org",
                      "reviewer@example.org",
                      "manager@example.org"
                    ],
                    "fromEmailAccountId": "Y8aL4J6jaN",
                    "subject": "OpenAPI test email",
                    "preheader": "OpenAPI preheader",
                    "content": "<p>Hello from OpenAPI validation.</p>"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Test email sent successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Test email sent successfully"
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Please connect email account with this sequence<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/{sequenceId}/verify-prospects": {
      "post": {
        "operationId": "SequenceController_verifyProspects",
        "summary": "Start prospect email verification for a sequence",
        "x-title": "Verify Prospects",
        "parameters": [
          {
            "name": "sequenceId",
            "required": true,
            "in": "path",
            "description": "Public sequence ID.",
            "example": "JA5YdAr9wy",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Prospect verification started",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Prospect email verification has started",
                    "payload": {
                      "hasVerificationStarted": true
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: No email addresses that can be verified<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "sequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/fields": {
      "get": {
        "operationId": "FieldController_getFields",
        "summary": "List all fields",
        "x-title": "Get Fields",
        "description": "Returns a list of fields defined in your account. Pass <code>systemFields=true</code> to include built-in system fields (such as First Name, Last Name, Email) along with your custom fields. Pass <code>systemFields=false</code> or omit the parameter to return only custom fields.",
        "parameters": [
          {
            "name": "systemFields",
            "required": true,
            "in": "query",
            "description": "Pass <code>true</code> to include built-in system fields (such as First Name, Last Name, and Email) along with your custom fields. Pass <code>false</code> or omit this parameter to return only custom fields.",
            "schema": {
              "enum": [
                "true",
                "false"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched fields of the user",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Successfully fetched fields of the user",
                    "payload": [
                      {
                        "id": "0VOLRwYe82",
                        "label": "First Name",
                        "fieldType": "text"
                      },
                      {
                        "id": "pRjY60lBPa",
                        "label": "Last Name",
                        "fieldType": "text"
                      },
                      {
                        "id": "KNz9Zgl7R3",
                        "label": "Email",
                        "fieldType": "text"
                      }
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to fetch the fields<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "error": true,
                    "type": "general",
                    "code": 5001,
                    "message": "Failed to fetch the fields"
                  }
                }
              }
            }
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "fields"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      },
      "post": {
        "operationId": "FieldController_createField",
        "summary": "Create a custom field",
        "x-title": "Create Custom Field",
        "description": "Creates a new custom field that can be used to store additional information on prospect profiles. Supported field types are Text, Number, Long Text, Currency, Date, and Dropdown.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "description": "Provide <code>label</code> (required) and <code>fieldType</code> (required). <code>fieldType</code> accepted values: <code>\"text\"</code>, <code>\"number\"</code>, <code>\"date\"</code>, <code>\"long-text\"</code>, <code>\"dropdown\"</code>, <code>\"currency\"</code>. For Dropdown fields, pass <code>metadata.options</code> array. For Currency fields, pass <code>metadata.currencyCode</code> (ISO 4217). <code>fallbackText</code> is optional — shown when a prospect has no value for this field.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateFieldDto"
              },
              "examples": {
                "text": {
                  "summary": "Text field",
                  "value": {
                    "label": "LinkedIn Profile URL",
                    "fieldType": "text"
                  }
                },
                "number": {
                  "summary": "Number field with fallback",
                  "value": {
                    "label": "Employee Count",
                    "fieldType": "number",
                    "fallbackText": "0"
                  }
                },
                "dropdown": {
                  "summary": "Dropdown field",
                  "value": {
                    "label": "Customer Tier",
                    "fieldType": "dropdown",
                    "metadata": {
                      "options": [
                        "Free",
                        "Growth",
                        "Enterprise"
                      ]
                    }
                  }
                },
                "currency": {
                  "summary": "Currency field",
                  "value": {
                    "label": "Annual Contract Value",
                    "fieldType": "currency",
                    "fallbackText": "0",
                    "metadata": {
                      "currencyCode": "USD"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Custom field created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Custom field created successfully",
                    "payload": {
                      "id": "Vj9kLp2Q",
                      "label": "LinkedIn URL",
                      "isDefault": false,
                      "fieldType": "text"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Default fields cannot be added as custom fields<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "fields"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/fields/{fieldId}": {
      "patch": {
        "operationId": "FieldController_updateField",
        "summary": "Update a custom field",
        "x-title": "Update Custom Field",
        "description": "Updates the label or fallback text of an existing custom field. Only custom (non-system) fields can be updated. Use the field ID returned by the GET /fields endpoint.",
        "parameters": [
          {
            "name": "fieldId",
            "required": true,
            "in": "path",
            "description": "Public custom-field ID returned by field read/list APIs.",
            "example": "Vj9kLp2Q",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Provide one or both fields to update. <code>label</code> changes the display name of the custom field. <code>fallbackText</code> changes the placeholder shown when a prospect has no value for this field. At least one field must be provided.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateFieldDto"
              },
              "examples": {
                "updateLabel": {
                  "summary": "Update label only",
                  "value": {
                    "label": "LinkedIn URL"
                  }
                },
                "updateFallback": {
                  "summary": "Update fallback text only",
                  "value": {
                    "fallbackText": "Not available"
                  }
                },
                "updateBoth": {
                  "summary": "Update both label and fallback text",
                  "value": {
                    "label": "LinkedIn URL",
                    "fallbackText": "Not available"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Custom field updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Custom field updated successfully"
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Field not found<br><br>1001: Default field names cannot be edited<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "fields"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/prospects/tags": {
      "get": {
        "operationId": "SequenceContactController_findTags",
        "summary": "to find all tags",
        "x-title": "Find Tags",
        "parameters": [
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search by tag name",
            "example": "NewDeal",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved all tags successfully<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "payload": [
                      {
                        "id": "2dP27N0gZ3",
                        "name": "tag",
                        "createdAt": "2023-07-26T23:25:54.781Z"
                      }
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to fetch prospect tags<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "prospects"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/prospects": {
      "get": {
        "operationId": "SequenceContactController_findProspects",
        "summary": "Fetch all user prospects with pagination",
        "x-title": "List Prospects",
        "parameters": [
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search by First name, Last name and Email",
            "example": "John",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "required": true,
            "in": "query",
            "description": "Number of items per page. Values greater than 100 will be capped to 100. Default is 100 if not provided.",
            "example": 10,
            "schema": {
              "default": 100,
              "enum": [
                10,
                20,
                50,
                100
              ],
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination.",
            "example": 1,
            "schema": {
              "default": 1,
              "type": "number"
            }
          },
          {
            "name": "sort",
            "required": true,
            "in": "query",
            "description": "Sort order for the results.",
            "example": "ASC",
            "schema": {
              "enum": [
                "ASC",
                "DESC"
              ],
              "type": "string"
            }
          },
          {
            "name": "sortBy",
            "required": true,
            "in": "query",
            "description": "Field to sort the results by. If not selected, default sorting is done by createdAt.",
            "example": "createdAt",
            "schema": {
              "enum": [
                "createdAt",
                "owner"
              ],
              "type": "string"
            }
          },
          {
            "name": "includeCustomFields",
            "required": false,
            "in": "query",
            "description": "Whether to include custom fields in the response. Use \"true\" or \"false\".",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved all prospects successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "payload": [
                      {
                        "id": "jzRkmgMdwA",
                        "createdAt": "2022-01-13T09:48:35.824Z",
                        "email": "testing.sapna+Tarun@gmail.com",
                        "verificationStatus": "valid",
                        "attributes": [
                          {
                            "id": "lPYGOLkyzV",
                            "key": "First Name",
                            "value": "John"
                          },
                          {
                            "id": "lPYGOLkyzV",
                            "key": "Last Name",
                            "value": "Doe"
                          },
                          {
                            "id": "lPYGOLkyzV",
                            "key": "Email",
                            "value": "john@saleshandy.com"
                          },
                          {
                            "id": "lPYGOLkyzV",
                            "key": "Company",
                            "value": "Company"
                          },
                          {
                            "id": "lPYGOLkyzV",
                            "key": "Phone Number",
                            "value": ""
                          },
                          {
                            "id": "lPYGOLkyzV",
                            "key": "City",
                            "value": "City"
                          },
                          {
                            "id": "lPYGOLkyzV",
                            "key": "Country",
                            "value": "Country"
                          },
                          {
                            "id": "lPYGOLkyzV",
                            "key": "LinkedIn",
                            "value": ""
                          },
                          {
                            "id": "lPYGOLkyzV",
                            "key": "Job Title",
                            "value": ""
                          },
                          {
                            "id": "lPYGOLkyzV",
                            "key": "State",
                            "value": "state"
                          },
                          {
                            "id": "lPYGOLkyzV",
                            "key": "Industry",
                            "value": "Information Technology"
                          },
                          {
                            "id": "lPYGOLkyzV",
                            "key": "Company Domain",
                            "value": "example.com"
                          }
                        ],
                        "tags": [
                          {
                            "id": "bZwpeqMPQL",
                            "name": "tag 1",
                            "userId": "9KwOp8YP6k"
                          },
                          {
                            "id": "M2zJX4lP3W",
                            "name": "tag 2",
                            "userId": "9KwOp8YP6k"
                          },
                          {
                            "id": "4bwbkJbPEA",
                            "name": "tag 3",
                            "userId": "9KwOp8YP6k"
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to fetch prospects<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "prospects"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/prospects/{contactId}/minimal/sequences": {
      "get": {
        "operationId": "SequenceContactController_getContactMinimalSequences",
        "summary": "Get minimal sequence histories for a contact",
        "x-title": "Get Contact Sequence Histories",
        "parameters": [
          {
            "name": "contactId",
            "required": true,
            "in": "path",
            "description": "Contact ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched contact sequence histories<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "payload": {
                      "message": "Successfully fetched contact sequence histories",
                      "payload": [
                        {
                          "id": 1,
                          "contactId": 199154,
                          "stepId": 42,
                          "status": "active",
                          "createdAt": "2024-01-01T00:00:00.000Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to fetch contact sequence histories<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "prospects"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/prospects/status": {
      "patch": {
        "operationId": "SequenceContactController_updateProspects",
        "summary": "Change status of prospects (Mark prospect as replied, finished, paused, unsubscribed and active)",
        "x-title": "Update Prospect Status",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProspectsUpdateStatusDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Prospect(s) status updated successfully<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "payload": {
                      "success": 10,
                      "failed": 1
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Could not change prospects status<br><br>4001: Invalid sequence id or prospect id<br><br>"
          },
          "403": {
            "description": "4003: You don't have required permissions to perform this task<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "prospects"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/prospects/tags/assign": {
      "post": {
        "operationId": "SequenceContactController_assignTagsToProspects",
        "summary": "to assign tags to prospects",
        "x-title": "Assign Tags to Prospects (v2)",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignTagToProspectsDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Tags are assigned to prospects successfully<br><br>"
          },
          "400": {
            "description": "<b><i> Prospect Tag Status Codes : </i></b><br><br>\n>* <b>Status:</b> 40501 &nbsp;&nbsp;<b>Description:</b> The provided prospects are invalid\n\n>* <b>Status:</b> 40502 &nbsp;&nbsp;<b>Description:</b> The provided prospect emails are invalid\n\n>* <b>Status:</b> 40503 &nbsp;&nbsp;<b>Description:</b> At least one of prospects or prospects_emails must be provided\n"
          },
          "403": {
            "description": "4003: You don't have required permissions to perform this task<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "prospects"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/prospects/tags/un-assign": {
      "post": {
        "operationId": "SequenceContactController_unAssignTagsToProspects",
        "summary": "to unassign tags to prospects",
        "x-title": "Unassign Tags from Prospects",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/UnAssignTagToProspectsDto"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Tags are un-assigned to prospects successfully<br><br>"
          },
          "400": {
            "description": "<b><i> Prospect Tag Status Codes : </i></b><br><br>\n>* <b>Status:</b> 40501 &nbsp;&nbsp;<b>Description:</b> The provided prospects are invalid\n\n>* <b>Status:</b> 40502 &nbsp;&nbsp;<b>Description:</b> The provided prospect emails are invalid\n\n>* <b>Status:</b> 40503 &nbsp;&nbsp;<b>Description:</b> At least one of prospects or prospects_emails must be provided\n"
          },
          "403": {
            "description": "4003: You don't have required permissions to perform this task<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "prospects"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/blacklist-domains": {
      "post": {
        "operationId": "DomainBlacklistController_addBlacklistDomain",
        "summary": "Add a domain to the blacklist.",
        "deprecated": true,
        "x-title": "Add Domain to Blacklist",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddBlacklistDomainDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Domain added to blacklist<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "payload": [
                      "domain1.com",
                      "domain2.com"
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "description": "40001: Enter the valid domain name in the format domain.com that does not already exist in the blacklist<br><br>40002: Domain already exist<br><br>40003: The maximum domain limit has been exceeded. You can blacklist up to 50 domains at a time<br><br>40004: Could not add domains to blacklist<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "blacklist-domains"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/dnc": {
      "post": {
        "operationId": "DncController_addItemsToDncList",
        "summary": "Add a domain/email(s) to the dnc list.",
        "x-title": "Add Items to DNC List",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddDncListDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "do-not-contact"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      },
      "get": {
        "operationId": "DncController_getDncLists",
        "summary": "Get Dnc Lists",
        "x-title": "Get DNC Lists",
        "parameters": [
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search by list name",
            "example": "Example List",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "description": "Number of items per page. Maximum pageSize is 100",
            "example": 25,
            "schema": {
              "default": 25,
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination.",
            "example": 1,
            "schema": {
              "default": 1,
              "type": "number"
            }
          },
          {
            "name": "sort",
            "required": true,
            "in": "query",
            "description": "Sort order for the results.",
            "example": "DESC",
            "schema": {
              "enum": [
                "ASC",
                "DESC"
              ],
              "type": "string"
            }
          },
          {
            "name": "sortBy",
            "required": true,
            "in": "query",
            "description": "Field to sort the results by. \n      Ex: lastUpdatedAt, total email and domain count",
            "example": "updatedAt",
            "schema": {
              "enum": [
                "total",
                "updatedAt"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched dnc list<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "payload": {
                      "message": "Successfully fetched dnc list",
                      "payload": [
                        {
                          "id": "vWjzRkZwAq",
                          "name": "Example List",
                          "numberOfItems": 2,
                          "createdAt": "2023-01-01T00:00:00.000Z",
                          "createdBy": "John Doe",
                          "clientId": 1,
                          "total": "15",
                          "updatedAt": "2024-06-26T03:23:13.573Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "40004: Failed to fetch dnc list<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "do-not-contact"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/dnc/item/search": {
      "get": {
        "operationId": "DncController_getDncListWithItem",
        "summary": "Search DNC item across all lists",
        "x-title": "Search DNC Item",
        "parameters": [
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search by item value",
            "example": "Example List",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "description": "Number of items per page. Maximum pageSize is 100",
            "example": 25,
            "schema": {
              "default": 25,
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination.",
            "example": 1,
            "schema": {
              "default": 1,
              "type": "number"
            }
          },
          {
            "name": "type",
            "required": true,
            "in": "query",
            "description": "type of item",
            "schema": {
              "$ref": "#/components/schemas/DncValueType"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched dnc list with items<br><br>",
            "schema": {
              "example": {
                "payload": {
                  "message": "Successfully fetched dnc list with items",
                  "payload": {
                    "data": [
                      {
                        "id": "9pa8lvQay2",
                        "name": "Global Do Not Contact List",
                        "numberOfItems": 2,
                        "createdAt": "2024-08-14T05:29:42.734Z",
                        "updatedAt": "2024-11-15T03:53:20.811Z",
                        "addedBy": "John Patel",
                        "ownerId": "9KwOp8YP6k",
                        "dncListDetails": [
                          {
                            "id": "9KwONr6Yz6",
                            "value": "abc@gmail.com",
                            "type": "email",
                            "createdAt": "2024-11-15T03:53:20.814Z"
                          },
                          {
                            "id": "mDPQKZdnzR",
                            "value": "xyz.com",
                            "type": "domain",
                            "createdAt": "2024-11-15T02:05:12.594Z"
                          }
                        ]
                      }
                    ],
                    "meta": {
                      "totalItems": 1,
                      "currentPage": 1,
                      "itemsPerPage": 25,
                      "totalPages": 1,
                      "itemCount": 1
                    }
                  }
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FetchDncListResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "40004: Failed to fetch dnc item<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "do-not-contact"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/dnc/{dncListId}": {
      "get": {
        "operationId": "DncController_getDncById",
        "summary": "Get Dnc items by id",
        "x-title": "Get DNC Items by ID",
        "parameters": [
          {
            "name": "dncListId",
            "required": true,
            "in": "path",
            "description": "Enter dnc list id",
            "example": "as5ax",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search by item value",
            "example": "Example List",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "description": "Number of items per page. Maximum pageSize is 100",
            "example": 25,
            "schema": {
              "default": 25,
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination.",
            "example": 1,
            "schema": {
              "default": 1,
              "type": "number"
            }
          },
          {
            "name": "type",
            "required": true,
            "in": "query",
            "description": "type of item",
            "schema": {
              "$ref": "#/components/schemas/DncValueType"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched dnc item<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "payload": {
                      "message": "Successfully fetched dnc item",
                      "dncDetails": [
                        {
                          "id": "bZwpbE09aQ",
                          "value": "test@gmail.com",
                          "type": "email",
                          "createdAt": "2024-09-19T07:44:00.100Z",
                          "addedBy": "John Doe"
                        }
                      ],
                      "meta": {
                        "totalItems": 1,
                        "currentPage": 1,
                        "itemsPerPage": 25,
                        "totalPages": 1,
                        "itemCount": 1
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "40004: Failed to fetch dnc item<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "do-not-contact"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/clients": {
      "get": {
        "operationId": "ClientController_getClientLists",
        "summary": "Fetch all clients",
        "x-title": "Get Client List",
        "parameters": [
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search by First name, Last name, Email and Company name",
            "example": "John",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "description": "Number of items per page. Maximum pageSize is 100",
            "example": 25,
            "schema": {
              "default": 25,
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination.",
            "example": 1,
            "schema": {
              "default": 1,
              "type": "number"
            }
          },
          {
            "name": "sort",
            "required": true,
            "in": "query",
            "description": "Sort order for the results.",
            "example": "DESC",
            "schema": {
              "enum": [
                "ASC",
                "DESC"
              ],
              "type": "string"
            }
          },
          {
            "name": "sortBy",
            "required": true,
            "in": "query",
            "description": "Field to sort the results by. If not selected, default sorting is done by createdAt.",
            "example": "createdDate",
            "schema": {
              "enum": [
                "createdDate",
                "firstName",
                "companyName",
                "activeSequence",
                "totalProspects",
                "emailSent",
                "activeEmailAccounts"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched client list<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "payload": {
                      "message": "Successfully fetched client list",
                      "payload": [
                        {
                          "id": "59pa8BRwy2",
                          "firstName": "John",
                          "lastName": "Doe",
                          "email": "johndoe+4@saleshandy.com",
                          "companyName": "Saleshandy",
                          "permission": "limited-access",
                          "createdDate": "2024-06-17T05:55:38.434Z",
                          "activeSequence": "0",
                          "totalProspects": "0",
                          "emailSent": "0",
                          "activeEmailAccounts": "0"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "40004: Failed to fetch clients<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "clients"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      },
      "post": {
        "operationId": "ClientController_createClient",
        "summary": "Create a new client",
        "x-title": "Create Client",
        "parameters": [],
        "requestBody": {
          "required": true,
          "description": "Provide all required fields to create an agency client. <code>permission</code> accepted values: <code>\"1\"</code> = Full access, <code>\"2\"</code> = Limited access. Email must be valid and on a non-blacklisted domain.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateClientDto"
              },
              "examples": {
                "fullAccessClient": {
                  "summary": "Full-access client",
                  "value": {
                    "firstName": "Maya",
                    "lastName": "Client",
                    "email": "maya.client@example.org",
                    "companyName": "Acme Growth",
                    "permission": "1"
                  }
                },
                "limitedAccessClient": {
                  "summary": "Limited-access client",
                  "value": {
                    "firstName": "Jordan",
                    "lastName": "Client",
                    "email": "jordan.client@example.org",
                    "companyName": "Northstar Labs",
                    "permission": "2"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Client created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Client created successfully",
                    "payload": null
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Same client user already exists<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "clients"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/clients/assign/{resourceType}": {
      "post": {
        "operationId": "ClientController_assignResource",
        "summary": "Assign resource (sequence or email account) to a client",
        "x-title": "Assign Resource to Client",
        "parameters": [
          {
            "name": "resourceType",
            "required": true,
            "in": "path",
            "description": "Type of resource to assign",
            "schema": {
              "type": "string",
              "enum": [
                "sequence",
                "emailAccount"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignClientResourceDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Resource assigned to client successfully<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "payload": {
                      "message": "Resource assigned to client successfully",
                      "payload": null
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to assign resource to client<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "clients"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/email-accounts/connect": {
      "post": {
        "operationId": "EmailAccountController_addEmailAccounts",
        "summary": "Connect new sending email accounts with SMTP and IMAP settings",
        "x-title": "Connect Email Accounts",
        "description": "<p>This can be a large request and may take some time to complete. But you will get response immediately after the request is submitted.</p>\n      <p>On request of this API, you will receive a <strong>requestId</strong> that can be used to check the status of the import process.</p>\n      <p>To check the status of the import process, you can use the <code>/v1/email-accounts/connect/status</code> API.</p>\n      <p>After completion you will receive a <strong>CSV file link</strong> containing the email account import details.</p>",
        "parameters": [],
        "requestBody": {
          "required": true,
          "description": "Array of email accounts to be added with SMTP and IMAP settings",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/EmailAccountAddDto"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The email accounts connection process has been initiated successfully. Please wait while we connect your email accounts. You may check the status using this API `/v1/email-accounts/connect/status/{{requestId}}`.",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "The email accounts connection process has been initiated successfully. Please wait while we connect your email accounts. You may check the status using this API `/v1/email-accounts/connect/status/{{requestId}}`.",
                    "payload": {
                      "requestId": "129a184"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "email-accounts"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/email-accounts/reconnect": {
      "post": {
        "operationId": "EmailAccountController_reconnectEmailAccounts",
        "summary": "Reconnect existing email accounts.",
        "x-title": "Reconnect Email Accounts",
        "description": "<p>This can be a large request and may take some time to complete. But you will get response immediately after the request is submitted.</p>\n    <p>On request of this API, you will receive a <strong>requestId</strong> that can be used to check the status of the import process.</p>\n    <p>To check the status of the import process, you can use the <code>/v1/email-accounts/connect/status</code> API.</p>\n    <p>After completion you will receive a <strong>CSV file link</strong> containing the email account import details.</p>",
        "parameters": [],
        "requestBody": {
          "required": true,
          "description": "Array of email account ids to be toggle on.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReconnectEmailAccountDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The email accounts connection process has been initiated successfully. Please wait while we connect your email accounts. You may check the status using this API `/v1/email-accounts/connect/status/{{requestId}}`.",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "The email accounts connection process has been initiated successfully. Please wait while we connect your email accounts. You may check the status using this API `/v1/email-accounts/connect/status/{{requestId}}`.",
                    "payload": {
                      "requestId": "129a184"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "email-accounts"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/email-accounts/connect/status/{requestId}": {
      "get": {
        "operationId": "EmailAccountController_getEmailAccountsConnectStatus",
        "summary": "While connecting email accounts you will receive the requestId. Using that requestId you can check the status of the email account connection process.",
        "description": "<p>\n                    While connecting email accounts using\n                    <code>/v1/email-accounts/connect</code> and\n                    <code>/v1/email-accounts/reconnect</code>,\n                    you will receive the <strong>requestId</strong>.\n                  </p>\n                  <p>\n                    Using that <strong>requestId</strong>, you can check the status of the email account connection process.\n                    You will receive a <strong>CSV file link</strong> containing the email account import details.\n                  </p>\n    ",
        "x-title": "Get Email Account Connection Status",
        "parameters": [
          {
            "name": "requestId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieve the email account connection status of requestId",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "payload": {
                      "isCompleted": true,
                      "reportURL": "https://example.com/v3-email-connect-fault-csv/Email-Account_Bulk_Report_c104293677_1733138572024.csv"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "40000: Email Account connect request not found<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "email-accounts"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/email-accounts/bulk-update": {
      "post": {
        "operationId": "EmailAccountController_updateEmailAccounts",
        "summary": "Bulk Updates Email accounts",
        "x-title": "Bulk Update Email Accounts",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateEmailAccountDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated email accounts"
          },
          "400": {
            "description": "<b><i> Error Codes : </i></b><br><br>\n>* <b>Status:</b> 40202 &nbsp;&nbsp;<b>Description:</b> The client input is invalid. Please check and try again.\n\n>* <b>Status:</b> 40204 &nbsp;&nbsp;<b>Description:</b> The email account input is invalid. Please check and try again.\n"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "email-accounts"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/email-accounts": {
      "post": {
        "operationId": "EmailAccountController_getEmailAccounts",
        "summary": "Fetch all Email accounts",
        "x-title": "Get All Email Accounts",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetAllEmailAccountDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully fetched all email account list",
            "schema": {
              "example": {
                "message": "Successfully fetched all email account list",
                "payload": {
                  "emails": [
                    {
                      "id": "XdPd8p1PVo",
                      "fromName": "John Doe",
                      "fromEmail": "johndoe+4@saleshandy.com",
                      "type": 3,
                      "status": 0,
                      "isDefault": false,
                      "createdAt": "2024-08-28T04:42:10.131Z",
                      "healthScore": 55,
                      "user": {
                        "firstName": "John",
                        "lastName": "Doe"
                      },
                      "sequences": [
                        {
                          "id": "glwGVN20z6",
                          "title": "New Sequence - Thu 26th Sep"
                        }
                      ],
                      "settings": [
                        {
                          "id": "OqwmgYpLaj",
                          "emailAccountId": "XdPd8p1PVo",
                          "code": "available-quota",
                          "value": "6",
                          "modifiedAt": "2024-10-01T13:00:01.187Z"
                        },
                        {
                          "id": "mDPQj488aR",
                          "emailAccountId": "XdPd8p1PVo",
                          "code": "bcc",
                          "value": "johndoe+5@saleshandy.com",
                          "modifiedAt": "2024-10-01T19:59:40.000Z"
                        },
                        {
                          "id": "4bwbNYpQwE",
                          "emailAccountId": "XdPd8p1PVo",
                          "code": "daily-sending-limit",
                          "value": "6",
                          "modifiedAt": "2024-10-01T13:00:01.187Z"
                        },
                        {
                          "id": "6vaKrAqoPW",
                          "emailAccountId": "XdPd8p1PVo",
                          "code": "email-created-timestamp",
                          "value": "2024-07-13T08:27:03.000Z",
                          "modifiedAt": "2024-08-28T05:41:03.000Z"
                        },
                        {
                          "id": "M2zJvjnOz3",
                          "emailAccountId": "XdPd8p1PVo",
                          "code": "max-interval",
                          "value": "200",
                          "modifiedAt": "2024-10-01T19:59:40.000Z"
                        },
                        {
                          "id": "Y8aL7jVoPN",
                          "emailAccountId": "XdPd8p1PVo",
                          "code": "max-sending-limit",
                          "value": "100",
                          "modifiedAt": "2024-10-01T09:50:44.000Z"
                        },
                        {
                          "id": "bZwpyYpGPQ",
                          "emailAccountId": "XdPd8p1PVo",
                          "code": "min-interval",
                          "value": "20",
                          "modifiedAt": "2024-10-01T19:59:40.000Z"
                        },
                        {
                          "id": "BVaDXjd9ao",
                          "emailAccountId": "XdPd8p1PVo",
                          "code": "ramp-up-initial-sending-limit",
                          "value": "5",
                          "modifiedAt": "2024-10-01T19:59:40.000Z"
                        },
                        {
                          "id": "glwGRj36z6",
                          "emailAccountId": "XdPd8p1PVo",
                          "code": "ramp-up-limit",
                          "value": "6",
                          "modifiedAt": "2024-10-02T13:00:00.856Z"
                        },
                        {
                          "id": "1qPBrjKJPD",
                          "emailAccountId": "XdPd8p1PVo",
                          "code": "ramp-up-percent",
                          "value": "10",
                          "modifiedAt": "2024-10-01T19:59:40.000Z"
                        },
                        {
                          "id": "Mgw4j2ZXaA",
                          "emailAccountId": "XdPd8p1PVo",
                          "code": "ramp-up-status",
                          "value": "1",
                          "modifiedAt": "2024-10-01T19:59:40.000Z"
                        },
                        {
                          "id": "9KwOADj4a6",
                          "emailAccountId": "XdPd8p1PVo",
                          "code": "signature",
                          "value": "<div>Best Regards</div>",
                          "modifiedAt": "2024-10-01T19:59:40.000Z"
                        }
                      ],
                      "client": {
                        "id": "g9bzZq4aMd",
                        "firstName": "john",
                        "lastName": "doe",
                        "email": "johndoe+5@saleshandy.com",
                        "status": "active",
                        "companyName": "Demo"
                      },
                      "hashId": "XdPd8p1PVo"
                    }
                  ],
                  "meta": {
                    "totalItems": 1,
                    "currentPage": 1,
                    "itemsPerPage": 25,
                    "totalPages": 1,
                    "itemCount": 1
                  },
                  "connectedEmailsCount": 1,
                  "disconnectedEmailsCount": 0
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FetchAllEmailAccountResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "<b><i> Error Codes : </i></b><br><br>\n>* <b>Status:</b> 40107 &nbsp;&nbsp;<b>Description:</b> The sequence input is invalid. Please check and try again.\n\n>* <b>Status:</b> 40202 &nbsp;&nbsp;<b>Description:</b> The client input is invalid. Please check and try again.\n\n>* <b>Status:</b> 40203 &nbsp;&nbsp;<b>Description:</b> The addedBy input is invalid. Please check and try again.\n\n>* <b>Status:</b> 40204 &nbsp;&nbsp;<b>Description:</b> The emailServiceProvider input is invalid. Please check and try again\n"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "email-accounts"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/email-accounts/smtp-imap/connect": {
      "post": {
        "operationId": "EmailAccountController_connectEmailAccount",
        "summary": "Connect an SMTP/IMAP email account",
        "x-title": "Connect Email Account",
        "description": "<p>Connects a new SMTP/IMAP email account for use as a sending mailbox in sequences.</p><p>The account is <strong>always saved</strong> to the database, even if the connection test fails — inspect the <code>smtpConnection</code> and <code>imapConnection</code> fields in the response.</p><ul><li><code>status: 0</code> — created but connection unverified (check <code>smtpConnection.error</code>/<code>imapConnection.error</code>).</li><li><code>status: 1</code> — connected and verified.</li></ul><p><code>emailServiceProvider</code> must be <strong>lowercase</strong> (e.g. <code>\"zoho\"</code>). Valid values: <code>zoho</code>, <code>gmail</code>, <code>yahoo</code>, <code>sendgrid</code>, <code>mailgun</code>, <code>ses</code>, <code>outlook</code>.</p><p><code>fromName</code> is the full display name shown in the From header; it is independent of <code>fromFirstName</code>/<code>fromLastName</code> — all three must be supplied.</p>",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConnectEmailAccountDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Email account connected successfully"
          },
          "400": {
            "description": "4000: Failed to connect email account<br><br>"
          },
          "409": {
            "description": "1001: Email account already exists<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "email-accounts"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/analytics/consolidated-stats": {
      "post": {
        "operationId": "AnalyticsController_getSequenceConsolidatedReport",
        "summary": "Get a comprehensive report of engagement statistics across all selected sequences for a specified time period.",
        "x-title": "Get Consolidated Sequence Stats",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SequenceConsolidatedReportsData"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Sequence prospects & emails stats fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Sequence prospects & emails stats fetched successfully",
                    "payload": {
                      "data": [
                        {
                          "Sequence Title": "Welcome Campaign",
                          "Sequence Owner": "John Doe",
                          "Step Id": "Xq7MkR2PdN",
                          "Step Number": 1,
                          "Sender Email": "sender1@example.com",
                          "Recipient Email": "recipient1@example.com",
                          "Recipient name": "Jane Smith",
                          "Email Sent At": "Thu Dec 18 2024 10:59:29 GMT+5:30 (Asia/Kolkata)",
                          "Open Count": 2,
                          "Last Opened At": "Thu Nov 18 2024 12:04:40 GMT+5:30 (Asia/Kolkata)",
                          "Replied": "Yes",
                          "Replied At": "",
                          "Conversation Id": "",
                          "Current Sentiment": "Positive",
                          "Click Count": 3,
                          "Last Clicked At": "Thu Nov 22 2024 08:24:40 GMT+5:30 (Asia/Kolkata)",
                          "Last Link Clicked": "https://example.com/offer",
                          "Bounced": "No",
                          "Bounced At": "",
                          "Unsubscribed": "No",
                          "Deleted": "No",
                          "Sequence Id": "8Jwomvq5aO",
                          "Variant": "A",
                          "Variant Id": "pLm5NkQ8aZ",
                          "Client": {
                            "id": "g9bzZq4aMd",
                            "firstName": "john",
                            "lastName": "doe",
                            "email": "johndoe+5@saleshandy.com",
                            "status": "active",
                            "companyName": "Demo"
                          }
                        },
                        {
                          "Sequence Title": "Follow-Up Sequence",
                          "Sequence Owner": "Alice Johnson",
                          "Step Id": "Yr8NlS3QeO",
                          "Step Number": 2,
                          "Sender Email": "alice.j@example.com",
                          "Recipient Email": "recipient2@example.com",
                          "Recipient name": "Michael Brown",
                          "Email Sent At": "Fri Dec 20 2024 09:45:00 GMT+5:30 (Asia/Kolkata)",
                          "Open Count": 5,
                          "Last Opened At": "Fri Dec 22 2024 10:15:00 GMT+5:30 (Asia/Kolkata)",
                          "Replied": "No",
                          "Replied At": "",
                          "Conversation Id": "",
                          "Current Sentiment": "Neutral",
                          "Click Count": 1,
                          "Last Clicked At": "Fri Dec 22 2024 11:30:00 GMT+5:30 (Asia/Kolkata)",
                          "Last Link Clicked": "https://example.com/product",
                          "Bounced": "No",
                          "Bounced At": "",
                          "Unsubscribed": "No",
                          "Deleted": "No",
                          "Sequence Id": "9XpRq4aYZ",
                          "Variant": "B",
                          "Variant Id": "qMn6OlR9bA",
                          "Client": {
                            "id": "h4mQkZ2nAf",
                            "firstName": "alice",
                            "lastName": "johnson",
                            "email": "alicejohnson+2@saleshandy.com",
                            "status": "active",
                            "companyName": "TechCorp"
                          }
                        },
                        {
                          "Sequence Title": "Closing Campaign",
                          "Sequence Owner": "Mark White",
                          "Step Id": "Zs9OmT4RfP",
                          "Step Number": 3,
                          "Sender Email": "mark.w@example.com",
                          "Recipient Email": "recipient3@example.com",
                          "Recipient name": "Sarah Lee",
                          "Email Sent At": "Sat Dec 21 2024 14:30:00 GMT+5:30 (Asia/Kolkata)",
                          "Open Count": 8,
                          "Last Opened At": "Sat Dec 23 2024 16:45:00 GMT+5:30 (Asia/Kolkata)",
                          "Replied": "Yes",
                          "Replied At": "Sat Dec 23 2024 17:00:00 GMT+5:30 (Asia/Kolkata)",
                          "Conversation Id": "8aJq9W4oBv",
                          "Current Sentiment": "Positive",
                          "Click Count": 4,
                          "Last Clicked At": "Sat Dec 23 2024 18:30:00 GMT+5:30 (Asia/Kolkata)",
                          "Last Link Clicked": "https://example.com/discount",
                          "Bounced": "No",
                          "Bounced At": "",
                          "Unsubscribed": "Yes",
                          "Deleted": "No",
                          "Sequence Id": "5QwoKv8aBn",
                          "Variant": "A",
                          "Variant Id": "rNo7PmS0cB",
                          "Client": {}
                        }
                      ],
                      "hasMore": false,
                      "nextPageNumber": 1
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "analytics"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/analytics/stats": {
      "post": {
        "operationId": "AnalyticsController_getSequenceStats",
        "summary": "Access high-level statistics, including detailed insights into prospects and emails, for a specific sequence.",
        "x-title": "Get Sequence Stats",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SequenceStatsReportData"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Sequence consolidated reports fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Sequence consolidated fetched successfully",
                    "payload": {
                      "prospects": [
                        {
                          "total": "25",
                          "open": "0",
                          "replied": "0",
                          "clicked": "0",
                          "unsubscribed": "0",
                          "contacted": "0",
                          "notContacted": "25",
                          "uncategorized": "0",
                          "interested": "0",
                          "notInterested": "0",
                          "meetingBooked": "0",
                          "outOfOffice": "0",
                          "closed": "0",
                          "notNow": "0",
                          "doNotContact": "0",
                          "interestedDealValue": "0",
                          "meetingBookedDealValue": "0",
                          "closedDealValue": "0",
                          "sentNoOpen": "0",
                          "openedNoReply": "0",
                          "openedNoClicked": "0",
                          "clickedNoReply": "0"
                        }
                      ],
                      "emails": {
                        "total": 0,
                        "status": {
                          "scheduled": 0,
                          "delivered": 0,
                          "opened": 0,
                          "clicked": 0,
                          "replied": 0,
                          "bounced": 0,
                          "failed": 0
                        }
                      },
                      "sequenceId": "8Jwomvq5aO",
                      "sequenceName": "Welcome Campaign",
                      "client": {
                        "id": "g9bzZq4aMd",
                        "firstName": "john",
                        "lastName": "doe",
                        "email": "johndoe+5@saleshandy.com",
                        "status": "active",
                        "companyName": "Demo"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "analytics"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/analytics/emailaccount/stats": {
      "post": {
        "operationId": "AnalyticsController_getEmailAccountStats",
        "summary": "Get comprehensive analytics and statistics for a specific email account including engagement metrics, sentiment analysis, and performance data.",
        "x-title": "Get Email Account Stats",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailAccountStatsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Email Account consolidated fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Email Account consolidated fetched successfully",
                    "payload": {
                      "Email Analytics": [
                        {
                          "Email Address": "",
                          "Name": "",
                          "ESP": "",
                          "Sequence Count": 0,
                          "Setup Score": 0,
                          "Inbox Score": 0,
                          "Total Contacted": 0,
                          "Total Sent": 0,
                          "Opens": 0,
                          "Clicked": 0,
                          "Replies": 0,
                          "Bounce Rate": 0,
                          "Unsubscribed": 0,
                          "Not Now": 0,
                          "Do Not Contact": 0,
                          "Uncategorized": 0,
                          "Positive Sentiments": 0,
                          "Negative Sentiments": 0,
                          "Neutral Sentiments": 0,
                          "Interested": 0,
                          "Meeting Booked": 0,
                          "Out of Office": 0,
                          "Not Interested": 0,
                          "Tags": [],
                          "Owner": ""
                        }
                      ],
                      "EmailAccountId": "2dP27N0gZ4",
                      "Email Address": "demo@user.com",
                      "client": {
                        "id": "g9bzZq4aMd",
                        "firstName": "john",
                        "lastName": "doe",
                        "status": "active",
                        "companyName": "Demo"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "analytics"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/analytics/email-sent-details": {
      "post": {
        "operationId": "AnalyticsController_exportEmailSentDetails",
        "summary": "Export email sent details as a CSV report delivered to your login email address.",
        "x-title": "Export Email Sent Details",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailSentDetailsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Your request has been initiated. We will deliver the data to your login email address in 30 to 40 minutes."
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          }
        },
        "tags": [
          "analytics"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/analytics/team/stats": {
      "post": {
        "operationId": "AnalyticsController_getAllTeamSummarizedStats",
        "summary": "Get Stats team(s) report",
        "x-title": "Get Team Stats Report",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportTeamStatsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "analytics"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/tasks": {
      "get": {
        "operationId": "TaskController_getTasks",
        "summary": "To get the tasks of a user",
        "x-title": "Get Tasks",
        "parameters": [
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination",
            "schema": {
              "minimum": 1,
              "type": "number"
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "description": "Number of records per page",
            "schema": {
              "minimum": 1,
              "type": "number"
            }
          },
          {
            "name": "sortOrder",
            "required": false,
            "in": "query",
            "description": "Sort order for the results",
            "schema": {
              "enum": [
                "ASC",
                "DESC"
              ],
              "type": "string"
            }
          },
          {
            "name": "sortBy",
            "required": false,
            "in": "query",
            "description": "Field to sort by",
            "schema": {
              "enum": [
                "priority",
                "completedAt",
                "skippedAt",
                "dueDate"
              ],
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "description": "Status of the task",
            "schema": {
              "enum": [
                "upcoming",
                "dueToday",
                "completed",
                "skipped",
                "overdue"
              ],
              "type": "string"
            }
          },
          {
            "name": "sequenceId",
            "required": false,
            "in": "query",
            "description": "Sequence id (hashed)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "taskAssignee",
            "required": false,
            "in": "query",
            "description": "Task Assignee account id (hashed)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "prospectOutcome",
            "required": false,
            "in": "query",
            "description": "Prospect outcome",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "taskType",
            "required": false,
            "in": "query",
            "description": "Open api task type",
            "schema": {
              "enum": [
                "linkedin",
                "call",
                "whatsapp",
                "custom"
              ],
              "type": "string"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Search term to filter tasks",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "callOutcome",
            "required": false,
            "in": "query",
            "description": "Call outcome for filtering tasks",
            "schema": {
              "enum": [
                "Interested",
                "Callback Later",
                "Followup",
                "Not Interested",
                "Wrong Number",
                "No Answer",
                "Left Voicemail",
                "Not In Service"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched tasks",
            "schema": {
              "example": {
                "message": "Successfully fetched tasks",
                "payload": []
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTaskDTO"
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to fetch tasks<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Successfully fetched tasks",
                    "payload": []
                  }
                }
              }
            }
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "tasks"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/tasks/create": {
      "post": {
        "operationId": "TaskController_createTask",
        "summary": "Create a task",
        "x-title": "Create Task",
        "description": "Creates a task and assigns it to one or more prospects. Supported task types are Email (1), LinkedIn (2), and General (13). To create a task for a single prospect, provide <code>prospectId</code>. To create the same task for multiple prospects at once, provide <code>prospectIds</code> as an array — the response will include a results array with the outcome per prospect, so a failure for one does not affect the others.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "description": "Provide <code>taskType</code> (required) and <code>prospectIds</code> (required) — pass a single-element array for one prospect, or multiple IDs to create the same task for several prospects in one request. <code>taskType</code> accepted values: <code>\"2\"</code> = LinkedIn connection request, <code>\"3\"</code> = LinkedIn message, <code>\"4\"</code> = LinkedIn InMail, <code>\"5\"</code> = LinkedIn view profile, <code>\"6\"</code> = LinkedIn post interaction, <code>\"9\"</code> = Custom, <code>\"11\"</code> = Call introduction, <code>\"12\"</code> = Call demo, <code>\"13\"</code> = Call follow-up, <code>\"14\"</code> = Call reminder, <code>\"15\"</code> = Call other, <code>\"16\"</code> = WhatsApp message, <code>\"17\"</code> = WhatsApp voice message, <code>\"18\"</code> = WhatsApp voice call. <code>priority</code> accepted values: <code>\"1\"</code> = Urgent, <code>\"2\"</code> = High, <code>\"3\"</code> = Medium, <code>\"4\"</code> = Low. <code>dueDate</code> should be in YYYY-MM-DD format (e.g. <code>\"2026-04-22\"</code>). Defaults to today if not provided.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTaskDto"
              },
              "examples": {
                "callFollowUpSingle": {
                  "summary": "Call follow-up task for a single prospect",
                  "value": {
                    "prospectIds": [
                      "8PvBmrB7P7"
                    ],
                    "taskType": "13",
                    "priority": "3",
                    "dueDate": "2026-04-22",
                    "taskNote": "Call to follow up on the proposal sent yesterday."
                  }
                },
                "linkedInBulk": {
                  "summary": "LinkedIn connection request for multiple prospects",
                  "value": {
                    "prospectIds": [
                      "8PvBmrB7P7",
                      "lPYmMkm2PV",
                      "VPXG0dGRwl"
                    ],
                    "taskType": "2",
                    "priority": "2",
                    "dueDate": "2026-04-22",
                    "taskNote": "Send connection request."
                  }
                },
                "whatsappTask": {
                  "summary": "WhatsApp message task",
                  "value": {
                    "prospectIds": [
                      "8PvBmrB7P7"
                    ],
                    "taskType": "16",
                    "priority": "1",
                    "taskNote": "Send pricing details over WhatsApp."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Task created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Task created successfully",
                    "payload": {
                      "results": [
                        {
                          "prospectId": "Pr9xQ2Lm",
                          "taskId": "7PWYDWW7zo",
                          "success": true
                        },
                        {
                          "prospectId": "Pr4Kb8Qw",
                          "taskId": "Mw5Mjoo1wb",
                          "success": true
                        },
                        {
                          "prospectId": "INVALIDxx",
                          "taskId": null,
                          "success": false
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "tasks"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/tasks/{taskId}/snooze": {
      "post": {
        "operationId": "TaskController_snoozeTask",
        "summary": "Snooze a single task until a specified time",
        "x-title": "Snooze Task",
        "parameters": [
          {
            "name": "taskId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnoozeTaskDTO"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Task snoozed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Task snoozed successfully",
                    "payload": {
                      "task": {
                        "taskId": "lP0Zg2keMz",
                        "status": "snoozed",
                        "snoozedUntil": "2024-06-17T05:55:38.434Z",
                        "callOutcome": "no-answer"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to snooze task<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "tasks"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/tasks/{taskId}/skip": {
      "post": {
        "operationId": "TaskController_skipTask",
        "summary": "Skip a single task",
        "x-title": "Skip Task",
        "parameters": [
          {
            "name": "taskId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Task skipped successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Task skipped successfully",
                    "payload": {
                      "task": {
                        "taskId": "lP0Zg2keMz",
                        "status": "skipped"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to skip task<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "tasks"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/tasks/{taskId}/complete": {
      "post": {
        "operationId": "TaskController_completeTask",
        "summary": "Complete a single task",
        "x-title": "Complete Task",
        "parameters": [
          {
            "name": "taskId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompleteTaskDTO"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Task marked as completed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Task marked as completed successfully",
                    "payload": {
                      "task": {
                        "taskId": "lP0Zg2keMz",
                        "status": "completed",
                        "callOutcome": "interested"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to complete task<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "tasks"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/tasks/{taskId}/note": {
      "patch": {
        "operationId": "TaskController_updateTaskNote",
        "summary": "Update task note",
        "x-title": "Update Task Note",
        "parameters": [
          {
            "name": "taskId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTaskNoteDTO"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Task note updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Task note updated successfully",
                    "payload": {
                      "task": {
                        "taskId": "lP0Zg2keMz",
                        "note": "Mention the new product updates in the call"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to update task note<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "tasks"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/tasks/counts": {
      "get": {
        "operationId": "TaskController_getTaskCounts",
        "summary": "Get task counts grouped by status",
        "x-title": "Get Task Counts",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Task counts fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Task counts fetched successfully",
                    "payload": {
                      "counts": [
                        {
                          "status": "upcoming",
                          "count": 12
                        },
                        {
                          "status": "dueToday",
                          "count": 5
                        },
                        {
                          "status": "skipped",
                          "count": 3
                        },
                        {
                          "status": "completed",
                          "count": 9
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "tasks"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/tasks/{taskId}": {
      "get": {
        "operationId": "TaskController_getTaskById",
        "summary": "Get task details by ID",
        "x-title": "Get Task by ID",
        "parameters": [
          {
            "name": "taskId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched task details",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Successfully fetched task details",
                    "payload": {
                      "task": {
                        "taskId": "lP0Zg2keMz",
                        "type": "custom",
                        "title": "Ask for Review",
                        "status": "upcoming",
                        "dueDate": "2024-06-17T05:55:38.434Z",
                        "taskAssignee": {
                          "firstName": "Alice",
                          "lastName": "Johnson",
                          "email": "alice.johnson@com"
                        },
                        "note": "Ask for testimonial or case study",
                        "priority": "high",
                        "sequence": {
                          "id": "s9Ik876",
                          "name": "Onboarding Series",
                          "stepId": "AYzMQl78zk",
                          "stepNumber": 1,
                          "prospectOutcome": "interested"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to fetch task by ID<br><br>"
          },
          "404": {
            "description": "The requested task could not be found"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "tasks"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/tasks/assignee/list": {
      "get": {
        "operationId": "TaskController_getAssigneeList",
        "summary": "Get assignee list",
        "x-title": "Get Assignee List",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successfully fetched assignee list",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Successfully fetched assignee list",
                    "payload": [
                      {
                        "id": "12345",
                        "firstName": "John",
                        "lastName": "Doe",
                        "email": "john.doe@example.com",
                        "status": 1
                      },
                      {
                        "id": "67890",
                        "firstName": "Jane",
                        "lastName": "Smith",
                        "email": "jane.smith@example.com",
                        "status": 4
                      }
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "tasks"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/tasks/bulk-snooze": {
      "post": {
        "operationId": "TaskController_bulkSnoozeTask",
        "summary": "Snooze multiple tasks with snooze duration or until a specific time",
        "x-title": "Bulk Snooze Tasks",
        "description": "<p>You can snooze up to <strong>10,000</strong> tasks at a time.</p>\n    <p>\n    This can be a large request and may take some time to complete. But you will get response immediately after the request is submitted.\n    </p>\n    <p>On request of this API, you will receive a <strong>bulkActionId</strong> that can be used to check the status of the snooze process.</p>\n    <p>To check the status of the snooze process, you can use the <code>v1/tasks/bulk-status/{bulkActionId}</code> API.</p>\n    <p>If there is any error during the snooze process, you will receive detailed error information in the status response.</p>",
        "parameters": [],
        "requestBody": {
          "required": true,
          "description": "Bulk snooze task request payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkSnoozeTaskDTO"
              },
              "examples": {
                "example1": {
                  "summary": "Snooze multiple tasks",
                  "value": {
                    "taskIds": [
                      "lP0Zg2keMz",
                      "MP0Cg1keMa",
                      "BS0Zg5keMq"
                    ],
                    "snoozeUntil": "2024-06-17T05:55:38.434Z"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Snooze request accepted. Use the bulk status API to track results.",
            "schema": {
              "example": {
                "message": "Snooze request accepted. Use the bulk status API to track results.",
                "payload": {
                  "bulkActionId": "bulk_789",
                  "message": "Snooze request accepted. Use the bulk status API to track results.",
                  "statusCheckUrl": "/v1/tasks/bulk-status/bulk_789"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkTaskActionResponseDTO"
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to bulk snooze tasks<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "tasks"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/tasks/bulk-skip": {
      "post": {
        "operationId": "TaskController_bulkSkipTask",
        "summary": "Skip multiple tasks at the same time",
        "x-title": "Bulk Skip Tasks",
        "description": "<p>You can skip up to <strong>100</strong> tasks at a time.</p>\n    <p>\n    This can be a large request and may take some time to complete. But you will get response immediately after the request is submitted.\n    </p>\n    <p>On request of this API, you will receive a <strong>bulkActionId</strong> that can be used to check the status of the skip process.</p>\n    <p>To check the status of the skip process, you can use the <code>v1/tasks/bulk-status/{bulkActionId}</code> API.</p>\n    <p>If there is any error during the skip process, you will receive detailed error information in the status response.</p>",
        "parameters": [],
        "requestBody": {
          "required": true,
          "description": "Bulk skip task request payload",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkSkipTaskDTO"
              },
              "examples": {
                "example1": {
                  "summary": "Skip multiple tasks",
                  "value": {
                    "taskIds": [
                      "lP0Zg2keMz",
                      "MP0Cg1keMa",
                      "BS0Zg5keMq"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Skip request accepted. Use the bulk status API to track results.",
            "schema": {
              "example": {
                "message": "Skip request accepted. Use the bulk status API to track results.",
                "payload": {
                  "bulkActionId": "bulk_789",
                  "message": "Skip request accepted. Use the bulk status API to track results.",
                  "statusCheckUrl": "/v1/tasks/bulk-status/bulk_789"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkTaskActionResponseDTO"
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to bulk skip tasks<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "tasks"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/tasks/bulk-status/{bulkActionId}": {
      "get": {
        "operationId": "TaskController_getBulkTaskStatus",
        "summary": "Retrieve the status of all tasks affected by a bulk action and download a CSV",
        "x-title": "Get Bulk Task Status",
        "description": "<p>\n                    While performing bulk operations using \n                    <code>v1/tasks/bulk-snooze</code> and \n                    <code>v1/tasks/bulk-skip</code>, \n                    you will receive the <strong>bulkActionId</strong>.\n                  </p>\n                  <p>\n                    Using that <strong>bulkActionId</strong>, you can check the status of the bulk operation process. \n                    If there is any error during the bulk operation process, you will receive a \n                    <strong>CSV file link</strong> containing the error details.\n                  </p>",
        "parameters": [
          {
            "name": "bulkActionId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Bulk task status fetched successfully",
            "schema": {
              "example": {
                "message": "Bulk task status fetched successfully",
                "payload": {
                  "bulkActionId": "bulk_789",
                  "action": "snooze",
                  "totalTasks": 3,
                  "completed": 3,
                  "failed": 0,
                  "status": "completed",
                  "createdAt": "2024-06-17T05:55:38.434Z",
                  "completedAt": "2024-06-19T05:55:38.434Z",
                  "csvDownloadLink": "https://app.saleshandy.com/downloads/bulk_789_status.csv"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkTaskStatusResponseDTO"
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "tasks"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/user/team-member-list": {
      "get": {
        "operationId": "UserController_getTeamAndMemberList",
        "summary": "Get Team and Member List",
        "x-title": "Get Team and Member List",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Successfully fetched team member list",
                    "payload": []
                  }
                }
              }
            }
          }
        },
        "tags": [
          "user"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/unified-inbox/outcome": {
      "get": {
        "operationId": "UnifiedInboxController_getFields",
        "summary": "To get the outcomes of a user",
        "x-title": "Get Outcomes",
        "parameters": [
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "description": "Number of items per page. Maximum pageSize is 100",
            "example": 25,
            "schema": {
              "default": 25,
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination.",
            "example": 1,
            "schema": {
              "default": 1,
              "type": "number"
            }
          },
          {
            "name": "category",
            "required": true,
            "in": "query",
            "description": "select outcome category",
            "example": "default",
            "schema": {
              "enum": [
                "custom",
                "default"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched outcome list",
            "schema": {
              "example": {
                "message": "Successfully fetched outcome list",
                "payload": {
                  "items": [
                    {
                      "id": "r1qPBRlPDv",
                      "name": "Uncategorized",
                      "isDefault": true,
                      "sentiment": "Neutral"
                    },
                    {
                      "id": "rBVaDlao1b",
                      "name": "Interested",
                      "isDefault": true,
                      "sentiment": "Positive"
                    },
                    {
                      "id": "rBVaDlao1b",
                      "name": "Not Interested",
                      "isDefault": true,
                      "sentiment": "Negative"
                    }
                  ],
                  "meta": {
                    "totalItems": 3,
                    "itemCount": 3,
                    "itemsPerPage": 25,
                    "totalPages": 1,
                    "currentPage": 1
                  }
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetOutcomeResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to fetch the outcome<br><br>",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "error": true,
                    "type": "general",
                    "code": 5001,
                    "message": "Failed to fetch the outcome"
                  }
                }
              }
            }
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "unified-inbox"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/unified-inbox/unread-email-threads-count": {
      "get": {
        "operationId": "UnifiedInboxController_getAll",
        "summary": "Get all unread count",
        "x-title": "Get Unread Email Thread Count",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successfully fetched unread count",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Successfully fetched unread count",
                    "payload": {
                      "count": 0
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "unified-inbox"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/unified-inbox/emails": {
      "post": {
        "operationId": "UnifiedInboxController_getEmailList",
        "summary": "Get all emails based on filters",
        "x-title": "Get Email List",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailsFilterDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully fetched email list"
          },
          "400": {
            "description": "5001: Internal server error, please try again later<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "unified-inbox"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/unified-inbox/emails/{emailThreadId}": {
      "get": {
        "operationId": "UnifiedInboxController_getAllEmails",
        "summary": "Get whole thread by thread ID",
        "x-title": "Get Email Thread",
        "parameters": [
          {
            "name": "emailThreadId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched thread"
          },
          "400": {
            "description": "5001: Internal server error, please try again later<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "unified-inbox"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/unified-inbox/emails/{emailThreadId}/{emailId}": {
      "get": {
        "operationId": "UnifiedInboxController_getEmailContentForSingleEmail",
        "summary": "Get specific email content by thread ID and email ID",
        "x-title": "Get Email Content",
        "parameters": [
          {
            "name": "emailThreadId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "emailId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched email content"
          },
          "400": {
            "description": "5001: Internal server error, please try again later<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "unified-inbox"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/unified-inbox/emails/reply": {
      "post": {
        "operationId": "UnifiedInboxController_replyOnEmail",
        "summary": "Reply to an email thread",
        "x-title": "Reply to Email Thread",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailReplyDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reply sent successfully"
          },
          "400": {
            "description": "5001: Internal server error, please try again later<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "unified-inbox"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/enrich/contact": {
      "post": {
        "operationId": "LeadFinderController_enrichLeads",
        "summary": "Enrich people by LinkedIn URL or full name + company or Lead Ids. Maximum 100 allowed",
        "x-title": "Enrich Contacts",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LeadEnrichmentDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Enrichment job created. Returns a requestId to track progress.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "payload": {
                      "type": "object",
                      "properties": {
                        "requestId": {
                          "type": "string",
                          "example": "64f1a2b3c4d5e6f7a8b9c0d1"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to enrich leads<br><br>"
          }
        },
        "tags": [
          "enrichment"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/enrich/company": {
      "post": {
        "operationId": "LeadFinderController_enrichCompanies",
        "summary": "Enrich companies by domain, website URL, company ID, or LinkedIn URL Maximum 100 allowed",
        "x-title": "Enrich Companies",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompaniesEnrichmentDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Enrichment job created. Returns a requestId to track progress.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "payload": {
                      "type": "object",
                      "properties": {
                        "requestId": {
                          "type": "string",
                          "example": "64f1a2b3c4d5e6f7a8b9c0d1"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to enrich companies<br><br>"
          }
        },
        "tags": [
          "enrichment"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/enrich/status/{requestId}": {
      "get": {
        "operationId": "LeadFinderController_getEnrichmentStatus",
        "summary": "Poll the status of an enrichment job (people or companies)",
        "x-title": "Get Enrichment Status",
        "parameters": [
          {
            "name": "requestId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Enrichment job status",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "payload": {
                      "type": "object",
                      "properties": {
                        "requestId": {
                          "type": "string",
                          "example": "64f1a2b3c4d5e6f7a8b9c0d1"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in-progress",
                            "completed",
                            "failed"
                          ]
                        },
                        "totalRecords": {
                          "type": "number"
                        },
                        "processed": {
                          "type": "number"
                        },
                        "succeeded": {
                          "type": "number"
                        },
                        "failed": {
                          "type": "number"
                        },
                        "creditsCharged": {
                          "type": "number"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "404": {
            "description": "40000: Enrichment job not found<br><br>"
          }
        },
        "tags": [
          "enrichment"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/enrich/status/result/{requestId}": {
      "get": {
        "operationId": "LeadFinderController_getEnrichmentResult",
        "summary": "Fetch full enrichment results once a job is completed",
        "x-title": "Get Enrichment Results",
        "parameters": [
          {
            "name": "requestId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Enrichment job results",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "payload": {
                      "type": "object",
                      "properties": {
                        "requestId": {
                          "type": "string",
                          "example": "64f1a2b3c4d5e6f7a8b9c0d1"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "in-progress",
                            "completed",
                            "failed"
                          ]
                        },
                        "totalRecords": {
                          "type": "number"
                        },
                        "processed": {
                          "type": "number"
                        },
                        "succeeded": {
                          "type": "number"
                        },
                        "failed": {
                          "type": "number"
                        },
                        "creditsCharged": {
                          "type": "number"
                        },
                        "results": {
                          "type": "array",
                          "items": {
                            "type": "object"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "404": {
            "description": "40000: Enrichment job not found<br><br>"
          }
        },
        "tags": [
          "enrichment"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/credits": {
      "get": {
        "operationId": "LeadFinderController_getCreditDetails",
        "summary": "Get the account's credit balance and usage summary",
        "x-title": "Get Credit Details",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Credit details fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "payload": {
                      "type": "object",
                      "properties": {
                        "totalCredits": {
                          "type": "number",
                          "example": 10000
                        },
                        "creditConsumedToday": {
                          "type": "number",
                          "example": 42.5
                        },
                        "creditConsumedThisMonth": {
                          "type": "number",
                          "example": 1234.8
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          }
        },
        "tags": [
          "enrichment"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/enrich/rate-limits": {
      "get": {
        "operationId": "LeadFinderController_getRateLimitStatus",
        "summary": "Get the current API rate limit status for the authenticated account",
        "x-title": "Get Rate Limit Status",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Rate limit status fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "Enrichment rate limit status fetched successfully"
                    },
                    "payload": {
                      "type": "object",
                      "properties": {
                        "perMinute": {
                          "type": "object",
                          "properties": {
                            "limit": {
                              "type": "number",
                              "example": 30
                            },
                            "remaining": {
                              "type": "number",
                              "example": 28
                            },
                            "resetAt": {
                              "type": "number",
                              "example": 2897868769
                            }
                          }
                        },
                        "perHour": {
                          "type": "object",
                          "properties": {
                            "limit": {
                              "type": "number",
                              "example": 1000
                            },
                            "remaining": {
                              "type": "number",
                              "example": 997
                            },
                            "resetAt": {
                              "type": "number",
                              "example": 2897868769
                            }
                          }
                        },
                        "perDay": {
                          "type": "object",
                          "properties": {
                            "limit": {
                              "type": "number",
                              "example": 10000
                            },
                            "remaining": {
                              "type": "number",
                              "example": 9994
                            },
                            "resetAt": {
                              "type": "number",
                              "example": 2897868769
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          }
        },
        "tags": [
          "enrichment"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/search/people": {
      "post": {
        "operationId": "LeadFinderController_searchLeads",
        "summary": "Search leads by filters",
        "x-title": "Search People",
        "parameters": [],
        "requestBody": {
          "required": true,
          "description": "All filters listed below follow AND logic between different filters - meaning every specified filter must match for a result to qualify. Within a single filter that accepts multiple values (e.g., multiple industries or locations), OR logic is applied - meaning any one of the provided values can match.\n\nFor a complete reference of each filter's predefined/accepted values, you can [download the filter values CSV here](https://docs.google.com/spreadsheets/d/1mlhqndigsJDJg2ZO-8LpkN6h6WJU5AO8Bxepa_QguGo/edit?gid=1098854083#gid=1098854083).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchLeadsOpenAPIDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Leads searched successfully"
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          }
        },
        "tags": [
          "enrichment"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/search/filters": {
      "get": {
        "operationId": "LeadFinderController_getLeadFinderFilters",
        "summary": "Get lead finder filters for current plan",
        "x-title": "Get Lead Finder Filters",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Filters fetched successfully"
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          }
        },
        "tags": [
          "enrichment"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/search/companies": {
      "post": {
        "operationId": "LeadFinderController_searchCompanies",
        "summary": "Search companies by filters",
        "x-title": "Search Companies",
        "parameters": [],
        "requestBody": {
          "required": true,
          "description": "All filters listed below follow AND logic between different filters - meaning every specified filter must match for a result to qualify. Within a single filter that accepts multiple values (e.g., multiple industries or locations), OR logic is applied - meaning any one of the provided values can match.\n\nFor a complete reference of each filter's predefined/accepted values, you can [download the filter values CSV here](https://docs.google.com/spreadsheets/d/1AeUnA27FWr8ljS6Zl8HxYRMLLKGbXboQCYF2d3A3R0U/edit?gid=0#gid=0).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchCompaniesOpenAPIDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Companies searched successfully"
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          }
        },
        "tags": [
          "enrichment"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/leads/bulk-actions/add-to-sequence": {
      "post": {
        "operationId": "LeadFinderController_bulkAddLeadsToSequence",
        "summary": "Add lead-finder leads to a sequence step (creates prospects for new leads, optionally tags them)",
        "x-title": "Bulk Add Leads to Sequence",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkAddToSequenceDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Leads queued to be added to the sequence",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "payload": {
                      "type": "object",
                      "properties": {
                        "message": {
                          "type": "string",
                          "example": "5 Lead(s) will be added to Sequence."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to add leads to sequence<br><br>"
          },
          "401": {
            "description": "1001: Invalid token<br><br>"
          }
        },
        "tags": [
          "enrichment"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/leads/ai-chat": {
      "post": {
        "operationId": "LeadFinderController_aiChat",
        "summary": "Run a natural-language AI search. Returns the assistant reply plus the first 25 matching leads or companies when a search was produced.",
        "x-title": "Search Lead with AI",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AiChatDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "AI chat processed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "Success"
                    },
                    "payload": {
                      "type": "object",
                      "properties": {
                        "conversationId": {
                          "type": "string",
                          "example": "69df4ac84b5e897427f09aba"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "people",
                            "company"
                          ],
                          "nullable": true
                        },
                        "agentMessage": {
                          "type": "string"
                        },
                        "resultUrl": {
                          "type": "string",
                          "nullable": true
                        },
                        "results": {
                          "type": "array",
                          "items": {
                            "type": "object"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "4000: Failed to process AI chat request<br><br>"
          }
        },
        "tags": [
          "enrichment"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/attachments": {
      "post": {
        "operationId": "AttachmentController_uploadAttachment",
        "summary": "Upload an attachment",
        "x-title": "Upload Attachment",
        "description": "Upload a file (PDF, DOCX, image, etc.) and receive a hashed <code>attachmentId</code>. Pass that <code>attachmentId</code> in the <code>attachmentIds[]</code> of an Email-step variant when creating or updating a step to attach the file to outgoing emails. For attachments referenced from a note, use <code>POST /v1/notes/attachments</code> instead.\n\n<strong>Content-Type</strong>: <code>multipart/form-data</code> with a single <code>file</code> field.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                },
                "required": [
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Attachment uploaded"
          },
          "400": {
            "description": "4000: Failed to upload attachment<br><br>"
          }
        },
        "tags": [
          "attachments"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/schedules": {
      "post": {
        "operationId": "ScheduleController_createSchedule",
        "summary": "Create a schedule",
        "x-title": "Create Schedule",
        "description": "Create a sending schedule that can be assigned to one or more sequences.\n\n<strong>Required fields</strong>: <code>name</code>, <code>timezone</code> (IANA Time Zone Database identifier, e.g. <code>Asia/Kolkata</code>), and <code>timeSlots</code> (per-day sending windows).\n\nSet <code>isDefault: true</code> to make this the caller's default schedule — it will be assigned automatically to new sequences that do not specify one.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateScheduleDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Schedule created successfully"
          },
          "400": {
            "description": "4000: Failed to create schedule<br><br>"
          }
        },
        "tags": [
          "schedules"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      },
      "get": {
        "operationId": "ScheduleController_getSchedules",
        "summary": "List all schedules",
        "x-title": "Get Schedules",
        "description": "Return every schedule the caller can assign to a sequence, including full <code>timeSlots</code> detail. Use the <code>id</code> from any schedule as <code>scheduleId</code> in Create Sequence or Update Sequence Schedule. The schedule with <code>isDefault: true</code> is what the system assigns to new sequences when no <code>scheduleId</code> is provided.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Schedules fetched successfully"
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          }
        },
        "tags": [
          "schedules"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/{sequenceId}/subsequences": {
      "get": {
        "operationId": "SubsequenceController_listSubsequences",
        "summary": "List all subsequences under a parent sequence",
        "x-title": "Get Subsequences",
        "description": "List every subsequence attached to a parent sequence, including progress (<code>1</code>=Active, <code>2</code>=Paused, <code>3</code>=Finished), total steps, and engagement metrics.\n\n<strong>Filters</strong> — <code>progress</code> (repeating enum, e.g. <code>?progress=1&progress=2</code>), <code>search</code> (partial title match), <code>owners</code> (repeating hashid-encoded user IDs). Omitting <code>owners</code> returns every subsequence scoped to the authenticated account.\n\nUse the returned <code>id</code> as <code>subsequenceId</code> in Get Subsequence Settings or Update Subsequence.",
        "parameters": [
          {
            "name": "sequenceId",
            "required": true,
            "in": "path",
            "description": "Hashid-encoded ID of the parent sequence.",
            "example": "JA5YdAr9wy",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "progress",
            "required": false,
            "in": "query",
            "description": "Filter by subsequence progress. Accepts repeating values (<code>?progress=1&progress=2</code>). <code>1</code>=Active, <code>2</code>=Paused, <code>3</code>=Finished.",
            "example": [
              1,
              2
            ],
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Active",
                  "Paused",
                  "Finished"
                ]
              }
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Filter by subsequence title (partial match).",
            "example": "re-engagement",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "owners",
            "required": false,
            "in": "query",
            "description": "Filter by owner user IDs (hashid-encoded strings). Accepts repeating values (<code>?owners=abc&owners=def</code>). Omit to return all subsequences scoped to the authenticated account.",
            "example": [
              "JA5YdAr9wy"
            ],
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Subsequences fetched successfully"
          },
          "400": {
            "description": "4000: Failed to fetch subsequences<br><br>1001: Invalid sequence id<br><br>"
          }
        },
        "tags": [
          "subsequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/{sequenceId}/subsequence": {
      "post": {
        "operationId": "SubsequenceController_createSubsequence",
        "summary": "Create a new subsequence under a parent sequence",
        "x-title": "Create Subsequence",
        "description": "Create a new subsequence under the specified parent sequence with trigger conditions, optional schedule, and optional entry delay in a single call.\n\n<strong>Required</strong> — <code>title</code> (1–200 chars) and <code>conditions</code> (min 1; all conditions use implicit AND). See the condition reference table in the Swagger schema — invalid <code>name</code>/<code>operation</code>/<code>value</code> combinations are rejected with a 400.\n\n<strong>Optional</strong> — <code>scheduleId</code> (server assigns the account default if omitted) and <code>firstStepRelativeDays</code> (entry delay, min 1; omitted = no delay).\n\nTo add steps to the subsequence after creation, call <code>POST /v1/sequences/{subsequenceId}/steps</code> using the returned <code>id</code>. To read conditions back, use Get Subsequence Settings. To update, use Update Subsequence.",
        "parameters": [
          {
            "name": "sequenceId",
            "required": true,
            "in": "path",
            "description": "Hashid-encoded ID of the parent sequence.",
            "example": "JA5YdAr9wy",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSubsequenceDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Subsequence created successfully"
          },
          "400": {
            "description": "4000: Failed to create subsequence<br><br>1001: Invalid sequence id<br><br>"
          }
        },
        "tags": [
          "subsequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/subsequence/{subsequenceId}/settings": {
      "get": {
        "operationId": "SubsequenceController_getSubsequenceSettings",
        "summary": "Get the schedule, entry delay, and trigger conditions of a subsequence",
        "x-title": "Get Subsequence Settings",
        "description": "Retrieve the current <code>scheduleId</code>, <code>firstStepRelativeDays</code>, and <code>conditions[]</code> configured on a subsequence. Use after Create Subsequence or Update Subsequence to read the live state.",
        "parameters": [
          {
            "name": "subsequenceId",
            "required": true,
            "in": "path",
            "description": "Hashid-encoded ID of the subsequence.",
            "example": "JA5YdAr9wy",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Subsequence fetched successfully"
          },
          "400": {
            "description": "4000: Failed to fetch subsequence settings<br><br>1001: Invalid subsequence id<br><br>"
          }
        },
        "tags": [
          "subsequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/sequences/{sequenceId}/subsequence/{subsequenceId}": {
      "patch": {
        "operationId": "SubsequenceController_updateSubsequence",
        "summary": "Update the schedule, entry delay, or conditions of a subsequence",
        "x-title": "Update Subsequence",
        "description": "Update the <code>scheduleId</code>, <code>firstStepRelativeDays</code>, and/or <code>conditions</code> on a subsequence. All fields optional — omit to leave unchanged.\n\n<strong>Conditions are full-replacement</strong> — supplying the field replaces the entire set, it does not append. Supplying <code>conditions: []</code> is silently ignored by the internal API and does NOT clear conditions.\n\nResponse is always <code>{\"message\": \"Subsequence updated successfully\"}</code> — call Get Subsequence Settings to read the updated state.",
        "parameters": [
          {
            "name": "sequenceId",
            "required": true,
            "in": "path",
            "description": "Hashid-encoded ID of the parent sequence.",
            "example": "JA5YdAr9wy",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subsequenceId",
            "required": true,
            "in": "path",
            "description": "Hashid-encoded ID of the subsequence to update.",
            "example": "k4PeeMxkPn",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSubsequenceDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Subsequence updated successfully"
          },
          "400": {
            "description": "4000: Failed to update subsequence<br><br>1001: Invalid sequence id<br><br>1001: Invalid subsequence id<br><br>"
          }
        },
        "tags": [
          "subsequences"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/domain/search": {
      "get": {
        "operationId": "DomainController_searchDomains",
        "summary": "Search available domain names",
        "x-title": "Search Domain",
        "description": "Search for available domain names to purchase for cold email sending infrastructure.\n\n<strong>Required:</strong> <code>domain</code> (3–254 chars, keyword only — no TLD) and <code>emailServiceProvider</code> (PascalCase enum: <code>Google</code>, <code>Microsoft</code>, <code>Azure</code>).\n\n<strong>Optional:</strong> <code>tld[]</code> (bracket notation: <code>tld[]=com&tld[]=net</code>), <code>page</code> (1–100).\n\nResults are suggested variations of the keyword. Use <code>payload[].name</code> as <code>domains[].name</code> in <code>POST /v1/domain</code>.",
        "parameters": [
          {
            "name": "domain",
            "required": true,
            "in": "query",
            "description": "The base keyword to search (e.g. \"outreachteam\"). Do not include the TLD.",
            "example": "outreachteam",
            "schema": {
              "minLength": 3,
              "maxLength": 254,
              "type": "string"
            }
          },
          {
            "name": "emailServiceProvider",
            "required": true,
            "in": "query",
            "description": "The ESP to provision domains for. Case-sensitive PascalCase.",
            "example": "Google",
            "schema": {
              "enum": [
                "Google",
                "Microsoft",
                "Azure"
              ],
              "type": "string"
            }
          },
          {
            "name": "tld",
            "required": false,
            "in": "query",
            "description": "TLD extensions to search (e.g. com, net, org). Uses bracket notation: tld[]=com&tld[]=net.",
            "example": [
              "com",
              "net"
            ],
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number. Min 1, max 100.",
            "example": 1,
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Domain search completed successfully"
          },
          "400": {
            "description": "4000: Failed to search domains<br><br>"
          }
        },
        "tags": [
          "domain"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/domain/plans": {
      "get": {
        "operationId": "DomainController_getDomainPlans",
        "summary": "Get domain pricing plans",
        "x-title": "Get Domain Plans",
        "description": "Retrieve per-ESP, per-TLD, per-planType pricing before placing a domain purchase order.\n\nReturns plans for the purchasable ESPs (<code>Google</code>, <code>Microsoft</code>, <code>Azure</code>). <code>annualFlexi</code> and <code>annualFixed</code> plans exist only for Google and Microsoft; Azure is quarterly only. <code>isRenewalPlan: true</code> entries are renewal pricing — significantly higher than initial purchase prices.\n\nCall this before <code>POST /v1/domain</code> to select the right <code>planType</code>.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Domain plans fetched successfully"
          },
          "400": {
            "description": "4000: Failed to fetch domain plans<br><br>"
          }
        },
        "tags": [
          "domain"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/domain/orders/{orderId}": {
      "get": {
        "operationId": "DomainController_getOrderStatus",
        "summary": "Get order status and provisioning state for all domains in an order",
        "x-title": "Get Order Status",
        "description": "Retrieve the domains and mailboxes in a purchase order, with per-domain provisioning status.\n\nThis endpoint composes two internal calls: <code>GET /domain/purchase-details/{orderId}</code> (domain names, mailbox emails) cross-referenced with <code>GET /domain</code> (per-domain status and expiry).\n\n<strong>Poll this endpoint until all <code>domains[].status</code> values are no longer <code>\"inProgress\"</code> to confirm provisioning complete.</strong>\n\nStatus values: <code>inProgress</code> (provisioning), <code>active</code> (live), <code>deleted</code> (removed), <code>failed</code> (provisioning failed), <code>expired</code> (subscription expired).\n\nUse <code>orderId</code> from <code>GET /v1/domain/orders</code> or from the <code>POST /v1/domain</code> response.",
        "parameters": [
          {
            "name": "orderId",
            "required": true,
            "in": "path",
            "description": "Hashid-encoded order ID.",
            "example": "4lXwANQP8q",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Order status fetched successfully"
          },
          "400": {
            "description": "4000: Failed to fetch order status<br><br>1001: Invalid order id<br><br>"
          }
        },
        "tags": [
          "domain"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/domain/orders": {
      "get": {
        "operationId": "DomainController_listDomainOrders",
        "summary": "List all domain purchase orders with billing details",
        "x-title": "List Orders",
        "description": "List all domain purchase orders on the account with billing and plan details.\n\nReturns billing plan data only — no domain names, mailbox emails, or provisioning status. For those, use <code>GET /v1/domain</code> or <code>GET /v1/domain/orders/{orderId}</code>.\n\n<code>hosts</code> is populated for InfraMail orders; <code>azureTenant</code> for Azure orders; both are null for other ESPs.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Domain orders fetched successfully"
          },
          "400": {
            "description": "4000: Failed to fetch domain orders<br><br>"
          }
        },
        "tags": [
          "domain"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/domain/generate-mailbox-names": {
      "post": {
        "operationId": "DomainController_generateMailboxNames",
        "summary": "Generate mailbox name suggestions for a sender",
        "x-title": "Generate Mailbox Names",
        "description": "Generate email address suggestions for a given sender name + domain.\n\nNot required for purchase but used in the domain setup flow before <code>POST /v1/domain</code>. Suggested addresses follow patterns like <code>john.smith@</code>, <code>smithjohn@</code>, <code>jsmith@</code>.\n\n<code>count</code>: min 1, max 100.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateMailboxNamesDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Mailbox names generated successfully"
          },
          "400": {
            "description": "4000: Failed to generate mailbox names<br><br>"
          }
        },
        "tags": [
          "domain"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/domain/profile-picture/upload": {
      "post": {
        "operationId": "DomainController_uploadProfilePicture",
        "summary": "Upload a profile picture for a sending domain mailbox",
        "x-title": "Upload Profile Picture",
        "description": "Upload a profile picture (company logo or sender avatar) for a sending domain, used in email warmup and inbox display.\n\n<strong>Content-Type:</strong> <code>multipart/form-data</code>. Supported formats: PNG, JPG, GIF. Maximum file size: 1 MB.\n\nThe returned <code>id</code> is used as <code>profilePicId</code> in the <code>mailboxes</code> array when calling <code>POST /v1/domain</code>. Pass <code>profilePicId: 0</code> to skip the profile picture.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                },
                "required": [
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Profile picture uploaded successfully"
          },
          "400": {
            "description": "4000: Failed to upload profile picture<br><br>"
          },
          "415": {
            "description": "Invalid file type (not PNG/JPG/GIF) or file exceeds 1 MB"
          }
        },
        "tags": [
          "domain"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/domain": {
      "get": {
        "operationId": "DomainController_listDomains",
        "summary": "List all purchased domains and mailboxes with provisioning status",
        "x-title": "List Domains",
        "description": "List all domains and mailboxes purchased for the account, with provisioning status.\n\nUse this to check whether async provisioning has completed after calling <code>POST /v1/domain</code>. Poll until <code>status</code> changes from <code>inProgress</code> to <code>active</code>.\n\nStatus values observed: <code>inProgress</code> (provisioning in progress), <code>active</code> (provisioned and live), <code>deleted</code> (domain removed), <code>failed</code>, <code>expired</code>.\n\nUse <code>domains[].id</code> as the <code>id</code> in <code>DELETE /v1/domain/{id}</code> or <code>POST /v1/domain/{id}/revoke</code>.",
        "parameters": [
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "Filter by domain name (partial match).",
            "example": "outreachteam",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "required": false,
            "in": "query",
            "description": "Sort order. \"Asc\" = ascending, \"Desc\" = descending. Default ascending.",
            "example": "Asc",
            "schema": {
              "enum": [
                "Asc",
                "Desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Domains fetched successfully"
          },
          "400": {
            "description": "4000: Failed to fetch domains<br><br>"
          }
        },
        "tags": [
          "domain"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      },
      "post": {
        "operationId": "DomainController_purchaseDomain",
        "summary": "Purchase domains and mailboxes as managed email-sending infrastructure",
        "x-title": "Purchase Email Infrastructure",
        "description": "Place an order to purchase domains and mailboxes as managed email-sending infrastructure. Each domain gets one or more mailboxes provisioned by the chosen ESP.\n\n<strong>Full purchase flow:</strong> <code>GET /v1/domain/search</code> → <code>GET /v1/domain/plans</code> → optional <code>POST /v1/domain/generate-mailbox-names</code> → <code>POST /v1/domain</code> → <code>GET /v1/domain</code>.\n\n<strong>Payment:</strong> Paid orders return a <code>checkoutUrl</code> (Paddle/Stripe). <code>isFreeOrder: true</code> skips payment — only <code>orderId</code> returned.\n\n<strong>Provisioning:</strong> Async — poll <code>GET /v1/domain</code> until <code>status</code> is no longer <code>inProgress</code>.\n\n<code>redirectUrl</code> is a bare domain — <code>\"acmecorp.com\"</code> valid, <code>\"https://acmecorp.com\"</code> rejected. <code>phoneNumber</code> must be E.164 format. <code>country</code> must be ISO alpha-2.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseDomainDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Domain purchased successfully"
          },
          "400": {
            "description": "4000: Failed to purchase domain<br><br>"
          }
        },
        "tags": [
          "domain"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/domain/{id}/revoke": {
      "post": {
        "operationId": "DomainController_revokeDomain",
        "summary": "Restore a previously deleted domain (undo delete)",
        "x-title": "Revoke Domain",
        "description": "Undo a prior <code>DELETE /v1/domain/{id}</code> call. Restores a domain whose <code>status</code> is <code>\"deleted\"</code> back to <code>\"active\"</code> and releases the reserved AnnualFlexi slot (if one was created at deletion time).\n\n<strong>Preconditions:</strong> The domain must currently be in <code>status: \"deleted\"</code>. Calling revoke on an <code>active</code>, <code>inProgress</code>, <code>failed</code>, or <code>expired</code> domain is rejected.\n\n<strong>Semantics — revoke vs. delete:</strong> <code>DELETE /v1/domain/{id}</code> moves an <code>active</code> domain into <code>deleted</code>; <code>POST /v1/domain/{id}/revoke</code> moves a <code>deleted</code> domain back to <code>active</code>. Revoke acts on a single domain — it does not affect sibling domains in the same order.\n\nUse <code>domains[].id</code> from <code>GET /v1/domain</code>.",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Hashid-encoded domain ID from GET /v1/domain.",
            "example": "VvP7oA9P5m",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Domain revoked successfully"
          },
          "400": {
            "description": "4000: Failed to revoke domain<br><br>1001: Invalid domain id<br><br>"
          }
        },
        "tags": [
          "domain"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/domain/{id}": {
      "delete": {
        "operationId": "DomainController_deleteDomain",
        "summary": "Delete an active domain (soft-delete, reversible via revoke)",
        "x-title": "Delete Domain",
        "description": "Mark an active domain as deleted. The domain's <code>status</code> is moved from <code>\"active\"</code> to <code>\"deleted\"</code> and its mailboxes are taken out of sending rotation.\n\n<strong>Preconditions:</strong> The domain must currently be in <code>status: \"active\"</code>. Calling delete on a domain that is <code>inProgress</code>, already <code>deleted</code>, <code>failed</code>, or <code>expired</code> is rejected.\n\n<strong>AnnualFlexi behaviour:</strong> When the parent order is on the <code>annualFlexi</code> plan, deleting the domain reserves a slot tied to the order so a replacement domain can be swapped in later for the remaining term. Other plan types do not create a reserved slot.\n\n<strong>Reversible:</strong> A deleted domain can be restored via <code>POST /v1/domain/{id}/revoke</code> as long as it is still in <code>status: \"deleted\"</code>. Final hard-removal from the registrar is performed asynchronously by an internal cron after deletion.\n\nThis endpoint operates on a single domain <code>id</code> at a time — use the domain's <code>id</code> from <code>GET /v1/domain</code>, not the <code>orderId</code>.",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Hashid-encoded domain ID from GET /v1/domain.",
            "example": "LZwlbKnal0",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Domain deleted successfully"
          },
          "400": {
            "description": "4000: Failed to delete domain<br><br>1001: Invalid domain id<br><br>"
          }
        },
        "tags": [
          "domain"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/notes": {
      "post": {
        "operationId": "NoteController_createNote",
        "summary": "Create a note",
        "x-title": "Create Note",
        "description": "Creates a note and attaches it to one or more prospects. To create a note for a single prospect, provide <code>prospectId</code>. To create the same note for multiple prospects in one request, provide <code>prospectIds</code> as an array — the response will include a results array with the outcome for each prospect, so a failure for one prospect does not affect the others.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "description": "Provide <code>content</code> (required), <code>visibility</code> (required), and <code>prospectIds</code> (required) — pass a single-element array for one prospect, or multiple IDs to attach the same note to several prospects in one request. <code>visibility</code> accepted values: <code>\"1\"</code> = Public (visible to all team members), <code>\"2\"</code> = Private (visible only to you). <code>status</code> accepted values: <code>\"0\"</code> = Draft, <code>\"1\"</code> = Published. Defaults to <code>\"1\"</code>. <code>attachmentIds</code> (optional) accepts attachment IDs returned by POST /v1/notes/attachments.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateNoteDto"
              },
              "examples": {
                "singleProspect": {
                  "summary": "Note for a single prospect",
                  "value": {
                    "content": "Follow up with this prospect next week regarding the demo.",
                    "visibility": "1",
                    "prospectIds": [
                      "8PvBmrB7P7"
                    ]
                  }
                },
                "multipleProspects": {
                  "summary": "Same note for multiple prospects",
                  "value": {
                    "content": "Interested in Enterprise plan. Schedule a call.",
                    "visibility": "1",
                    "prospectIds": [
                      "8PvBmrB7P7",
                      "lPYmMkm2PV",
                      "VPXG0dGRwl"
                    ]
                  }
                },
                "withAttachments": {
                  "summary": "Note with attachments",
                  "value": {
                    "content": "See attached pricing PDF.",
                    "visibility": "1",
                    "prospectIds": [
                      "8PvBmrB7P7"
                    ],
                    "attachmentIds": [
                      "Aw83gqRXvk"
                    ]
                  }
                },
                "privateNote": {
                  "summary": "Private note",
                  "value": {
                    "content": "Internal note — do not share with the prospect.",
                    "visibility": "2",
                    "prospectIds": [
                      "8PvBmrB7P7"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Note created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Notes created successfully",
                    "payload": {
                      "results": [
                        {
                          "prospectId": "Pr9xQ2Lm",
                          "noteId": "Nt7Yp4Za",
                          "success": true
                        },
                        {
                          "prospectId": "Pr4Kb8Qw",
                          "noteId": "Nt4Kb8Qw",
                          "success": true
                        },
                        {
                          "prospectId": "INVALIDxx",
                          "noteId": null,
                          "success": false
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid prospect Id<br><br>1001: Invalid token<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "notes"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/notes/{noteId}": {
      "patch": {
        "operationId": "NoteController_updateNote",
        "summary": "Update a note",
        "x-title": "Update Note",
        "description": "Updates the content or visibility of an existing note. Only the fields you provide will be changed — any field you omit will remain unchanged. Use the note ID returned when the note was created.",
        "parameters": [
          {
            "name": "noteId",
            "required": true,
            "in": "path",
            "description": "Public note ID returned by Create Note or Fetch Notes.",
            "example": "Nt7Yp4Za",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Provide one or more fields to update — only the fields you include will be changed. <code>content</code> replaces the note text. <code>visibility</code> accepted values: <code>\"1\"</code> = Public, <code>\"2\"</code> = Private. <code>status</code> accepted values: <code>\"0\"</code> = Draft, <code>\"1\"</code> = Published.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateNoteDto"
              },
              "examples": {
                "updateContent": {
                  "summary": "Update note content only",
                  "value": {
                    "content": "Prospect confirmed interest. Schedule a demo call for next Monday."
                  }
                },
                "updateVisibility": {
                  "summary": "Change visibility to private",
                  "value": {
                    "visibility": "2"
                  }
                },
                "updateMultiple": {
                  "summary": "Update content and visibility",
                  "value": {
                    "content": "Updated follow-up notes.",
                    "visibility": "1"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Note updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Note updated successfully",
                    "payload": {
                      "id": "Nt7Yp4Za",
                      "prospectId": "Pr9xQ2Lm",
                      "visibility": "1",
                      "status": "1",
                      "content": "<p>Updated renewal timeline.</p>",
                      "createdAt": "2026-04-21T10:57:07.000Z",
                      "updatedAt": "2026-04-21T10:58:28.000Z",
                      "editedAt": "2026-04-21T10:58:29.000Z",
                      "editedBy": {
                        "firstName": "Avery",
                        "lastName": "Stone",
                        "email": "avery.stone@example.org"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Note not found or access denied<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "notes"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/notes/attachments": {
      "post": {
        "operationId": "NoteController_uploadNoteAttachment",
        "summary": "Upload an attachment for a note",
        "x-title": "Upload Note Attachment",
        "description": "Upload a file (PDF, DOCX, image, etc.) to be referenced from a note. Returns a hashed <code>attachmentId</code> — pass it in <code>attachmentIds[]</code> on POST /v1/notes. Maximum file size is 20 MB.\n\n<strong>Content-Type</strong>: <code>multipart/form-data</code> with a single <code>file</code> field.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                },
                "required": [
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Attachment uploaded"
          },
          "400": {
            "description": "4001: The file type you are trying to add is not supported.<br><br>4002: File exceeds the 20 MB upload limit. Please upload a smaller file.<br><br>4000: Failed to upload attachment<br><br>"
          }
        },
        "tags": [
          "notes"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/unibox/categories": {
      "get": {
        "operationId": "UniboxController_getCategories",
        "summary": "List email reply categories",
        "x-title": "Get Unibox Categories",
        "description": "Returns the list of reply categories used to classify inbound emails in the unified inbox (Unibox). Each category has a unique key, a display name, a sentiment (Positive, Negative, or Neutral), and a flag indicating whether it is a system default category or a custom one.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Unibox categories fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Unibox categories fetched successfully",
                    "payload": [
                      {
                        "key": "uncategorized",
                        "name": "Uncategorized",
                        "isDefault": true,
                        "sentiment": "3"
                      },
                      {
                        "key": "interested",
                        "name": "Interested",
                        "isDefault": true,
                        "sentiment": "1"
                      },
                      {
                        "key": "not_interested",
                        "name": "Not Interested",
                        "isDefault": true,
                        "sentiment": "2"
                      },
                      {
                        "key": "meeting_booked",
                        "name": "Meeting Booked",
                        "isDefault": true,
                        "sentiment": "1"
                      },
                      {
                        "key": "out_of_office",
                        "name": "Out of Office",
                        "isDefault": true,
                        "sentiment": "3"
                      },
                      {
                        "key": "closed",
                        "name": "Closed",
                        "isDefault": true,
                        "sentiment": "1"
                      },
                      {
                        "key": "not_now",
                        "name": "Not Now",
                        "isDefault": true,
                        "sentiment": "2"
                      },
                      {
                        "key": "do_not_contact",
                        "name": "Do Not Contact",
                        "isDefault": true,
                        "sentiment": "2"
                      }
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "unibox"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/webhook/create": {
      "post": {
        "operationId": "WebhookController_createWebhook",
        "summary": "Create a webhook",
        "x-title": "Create Webhook",
        "parameters": [],
        "requestBody": {
          "required": true,
          "description": "Provide all required fields to register a webhook. <code>webhookEvent</code> accepts one or more of: <code>email-sent</code>, <code>email-opened</code>, <code>email-link-clicked</code>, <code>reply-received</code>, <code>email-bounced</code>, <code>prospect-unsubscribed</code>, <code>prospect-finished</code>, <code>prospect-outcome-updated</code>, <code>sequence-paused</code>, <code>email-account-disconnected</code>, <code>email-account-paused</code>, <code>inbox-analyser-test-completed</code>, <code>task-created</code>, <code>task-updated</code>, <code>bulk-task-updated</code>, <code>call-task-updated</code>, <code>linkedin-task-updated</code>, <code>custom-task-updated</code>, <code>whatsapp-task-updated</code>. <code>headers</code> is required — pass <code>{}</code> if no custom headers are needed.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebhookDto"
              },
              "examples": {
                "emailSent": {
                  "summary": "Subscribe to email-sent only",
                  "value": {
                    "name": "Email Sent Webhook",
                    "webhookUrl": "https://example.org/webhooks/email-sent",
                    "webhookEvent": [
                      "email-sent"
                    ],
                    "headers": {
                      "X-Webhook-Source": "saleshandy"
                    }
                  }
                },
                "multipleEvents": {
                  "summary": "Subscribe to multiple events",
                  "value": {
                    "name": "Multi-event Webhook",
                    "webhookUrl": "https://example.org/webhooks/all",
                    "webhookEvent": [
                      "email-sent",
                      "reply-received",
                      "email-bounced"
                    ],
                    "headers": {}
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Webhook created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Webhook created successfully",
                    "payload": {
                      "id": "69fb3ac1eda582171eb74826",
                      "name": "Email Sent Webhook",
                      "webhookUrl": "https://example.org/webhooks/email-sent",
                      "webhookEvent": [
                        "email-sent"
                      ],
                      "headers": {
                        "X-Webhook-Source": "saleshandy"
                      },
                      "status": "paused",
                      "testDelivery": {
                        "status": "failed"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "webhook"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/webhook": {
      "get": {
        "operationId": "WebhookController_listWebhooks",
        "summary": "List all webhooks",
        "x-title": "List Webhooks",
        "parameters": [
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "description": "Number of items per page. Maximum 100.",
            "example": 25,
            "schema": {
              "default": 25,
              "type": "number"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination.",
            "example": 1,
            "schema": {
              "default": 1,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Webhooks fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Webhooks fetched successfully",
                    "payload": {
                      "meta": {
                        "currentPage": 1,
                        "itemsPerPage": 25,
                        "itemsCount": 2,
                        "totalItems": 2
                      },
                      "webhooks": [
                        {
                          "id": "69fb3ac1eda582171eb74826",
                          "name": "Email Sent Webhook"
                        },
                        {
                          "id": "69fb3ac2eda5823de5b7482c",
                          "name": "Reply Received Webhook"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "webhook"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    },
    "/v1/webhook/{webhookId}": {
      "get": {
        "operationId": "WebhookController_getWebhook",
        "summary": "Get a webhook by ID",
        "x-title": "Get Webhook",
        "parameters": [
          {
            "name": "webhookId",
            "required": true,
            "in": "path",
            "description": "Public webhook ID returned by Create Webhook.",
            "example": "JA5YdAr9wy",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Webhook fetched successfully",
            "content": {
              "application/json": {
                "schema": {
                  "example": {
                    "message": "Webhook fetched successfully",
                    "payload": {
                      "id": "69fb3ac1eda582171eb74826",
                      "name": "Email Sent Webhook",
                      "webhookUrl": "https://example.org/webhooks/email-sent",
                      "webhookEvent": [
                        "email-sent"
                      ],
                      "headers": {
                        "X-Webhook-Source": "saleshandy"
                      },
                      "status": "paused",
                      "failed": true,
                      "lastFailure": {
                        "failedAt": "2026-04-21T11:04:57.090Z",
                        "statusCode": 404,
                        "message": "Delivery failed"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "1001: Invalid token<br><br>"
          },
          "500": {
            "description": "5001: Internal server error, please try again later<br><br>"
          }
        },
        "tags": [
          "webhook"
        ],
        "security": [
          {
            "x-api-key": []
          }
        ]
      }
    }
  },
  "info": {
    "title": "Develop with Saleshandy",
    "description": "Automate and interact with Saleshandy, and integrate with your internal applications.",
    "version": "1.0",
    "contact": {}
  },
  "tags": [],
  "servers": [],
  "components": {
    "securitySchemes": {
      "x-api-key": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key",
        "description": "API key for Open API authentication"
      }
    },
    "schemas": {
      "ProspectImportDto": {
        "type": "object",
        "properties": {
          "prospectList": {
            "type": "object",
            "example": [
              {
                "fields": [
                  {
                    "id": "0VOLRwYe82",
                    "value": "john"
                  },
                  {
                    "id": "pRjY60lBPa",
                    "value": "smith"
                  },
                  {
                    "id": "KNz9Zgl7R3",
                    "value": "johnsmith@gmail.com"
                  }
                ]
              }
            ],
            "description": "The array of prospect list. Each prospect is represented by an array of fields."
          },
          "stepId": {
            "type": "number",
            "description": "Optional. Set the step to which the prospect is to be added",
            "example": "0VOLRwYe82"
          },
          "verifyProspects": {
            "type": "boolean",
            "description": "Optional. Set to \"true\" if prospect's email address should be verified"
          },
          "conflictAction": {
            "type": "string",
            "description": "Conflict action to take if we attempt to add an already existing prospect",
            "enum": [
              "overwrite",
              "noUpdate",
              "addMissingFields"
            ]
          }
        },
        "required": [
          "prospectList",
          "conflictAction"
        ]
      },
      "ProspectsVerificationStatusDto": {
        "type": "object",
        "properties": {
          "emails": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "emails"
        ]
      },
      "ProspectImportV2Dto": {
        "type": "object",
        "properties": {
          "prospectList": {
            "example": [
              {
                "First Name": "Jon",
                "Last Name": "Smith",
                "Email": "johnsmith@example.com",
                "Company": "ABC",
                "Country": "USA",
                "Phone Number": "1234567890",
                "Job Title": "Procurement Manager"
              },
              {
                "First Name": "Jemmy",
                "Last Name": "Lorance",
                "Email": "jemmy@example.com",
                "Company": "ABC",
                "Country": "USA",
                "Phone Number": "1234567891",
                "Job Title": "Procurement Manager"
              }
            ],
            "description": "The array of prospect list. Each prospect is represented by an array of fields.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "verifyProspects": {
            "type": "boolean",
            "description": "Optional. Set to \"true\" if prospect's email address should be verified"
          },
          "conflictAction": {
            "type": "string",
            "description": "Conflict action to take if we attempt to add an already existing prospect",
            "enum": [
              "overwrite",
              "noUpdate",
              "addMissingFields"
            ]
          },
          "tags": {
            "description": "Array of tags to be assigned to the imported prospects. If the tag does not exist, it will be created.",
            "example": [
              "tag1",
              "tag2",
              "tag3"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "prospectList",
          "conflictAction"
        ]
      },
      "ImportStatus": {
        "type": "object",
        "properties": {
          "isCompleted": {
            "type": "boolean",
            "example": true,
            "description": "Indicates whether the import process is completed successfully."
          },
          "reportURL": {
            "type": "string",
            "example": "https://example.com/import-prospect/file?fileName=import+error+report.csv&key=failedProspect%2F95689%2F158b2ab10e4%2Fimport_err.csv",
            "description": "URL to download additional information related to the import process, such as error reports for failed prospects or other details."
          }
        },
        "required": [
          "isCompleted"
        ]
      },
      "ProspectAttributeItem": {
        "type": "object",
        "properties": {
          "fieldId": {
            "type": "string",
            "description": "The ID of the field to update. Use the field IDs returned by the GET /fields endpoint.",
            "example": "BVaD1mKgzo"
          },
          "attributeValue": {
            "type": "string",
            "description": "The new value to set for this field.",
            "example": "John"
          }
        },
        "required": [
          "fieldId",
          "attributeValue"
        ]
      },
      "UpsertProspectAttributeDto": {
        "type": "object",
        "properties": {
          "fieldId": {
            "type": "string",
            "description": "The ID of the field to update. Use this for updating a single field. Use the field IDs returned by the GET /fields endpoint. Required when \"attributes\" is not provided.",
            "example": "1qPB1GBBwD"
          },
          "attributeValue": {
            "type": "string",
            "description": "The new value to set for the field specified by \"fieldId\". Required when \"fieldId\" is provided.",
            "example": "Smith"
          },
          "attributes": {
            "description": "A list of field updates to apply in a single request. Use this to update multiple fields at once. Each item must specify a fieldId and the new value. When this is provided, \"fieldId\" and \"attributeValue\" are ignored.",
            "example": [
              {
                "fieldId": "BVaD1mKgzo",
                "attributeValue": "John"
              },
              {
                "fieldId": "1qPB1GBBwD",
                "attributeValue": "Smith"
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProspectAttributeItem"
            }
          }
        }
      },
      "Step": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "bwOLEx4l8G",
            "description": "Unique identifier for the step in the sequence"
          },
          "name": {
            "type": "string",
            "example": "Step 1",
            "description": "Name of the step in the sequence"
          }
        }
      },
      "Client": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "g9bzZq4aMd",
            "description": "Unique identifier for the client associated with the sequence"
          },
          "companyName": {
            "type": "string",
            "example": "Demo",
            "description": "Company name of the client"
          },
          "firstName": {
            "type": "string",
            "example": "John",
            "description": "First name of the client"
          },
          "lastName": {
            "type": "string",
            "example": "Doe",
            "description": "Last name of the client"
          }
        }
      },
      "SequenceUser": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1,
            "description": "Unique identifier for the sequence owner"
          },
          "firstName": {
            "type": "string",
            "example": "John",
            "description": "First name of the sequence owner"
          },
          "lastName": {
            "type": "string",
            "example": "Doe",
            "description": "Last name of the sequence owner"
          },
          "email": {
            "type": "string",
            "example": "john.doe@example.com",
            "description": "Email address of the sequence owner"
          }
        }
      },
      "Sequence": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "JA5YdAr9wy",
            "description": "Unique identifier for the sequence"
          },
          "title": {
            "type": "string",
            "example": "Sample Sequence",
            "description": "Title of the sequence"
          },
          "active": {
            "type": "boolean",
            "example": true,
            "description": "Indicates whether the sequence is active or not"
          },
          "steps": {
            "description": "Steps included in the sequence",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Step"
            }
          },
          "client": {
            "nullable": true,
            "description": "Client associated with the sequence, if any",
            "allOf": [
              {
                "$ref": "#/components/schemas/Client"
              }
            ]
          },
          "user": {
            "nullable": true,
            "description": "Owner of the sequence. Included only in Open API responses.",
            "allOf": [
              {
                "$ref": "#/components/schemas/SequenceUser"
              }
            ]
          }
        }
      },
      "GetSequenceDto": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "example": "Successfully fetched all sequences and their associated steps",
            "description": "Response message indicating the status of the operation"
          },
          "payload": {
            "description": "Array of sequences and their associated details",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Sequence"
            }
          }
        }
      },
      "CreateSequenceDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "emailAccountIds": {
            "example": [
              "1Gz3xlNwr9",
              "ajzR8xpPAq"
            ],
            "description": "Array of hashed email account IDs to attach as senders of the sequence. If any ID is invalid, inactive, or exceeds the account limit, the entire request is rejected and no sequence is created.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "scheduleId": {
            "type": "string",
            "description": "Hashed ID of the sending schedule to assign to the sequence."
          }
        },
        "required": [
          "title"
        ]
      },
      "CreateSequenceResponseDto": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "example": "Sequence created successfully",
            "description": "Response message indicating the status of the operation"
          },
          "payload": {
            "description": "Created sequence details",
            "allOf": [
              {
                "$ref": "#/components/schemas/Sequence"
              }
            ]
          }
        }
      },
      "UpdateProspectOutcomeDto": {
        "type": "object",
        "properties": {
          "prospectEmails": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "outcomeName": {
            "type": "string"
          },
          "sequenceId": {
            "type": "string"
          },
          "dealValue": {
            "type": "number"
          }
        },
        "required": [
          "prospectEmails",
          "outcomeName"
        ]
      },
      "EmailAccountSetting": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "Z6zxo5O7aA",
            "description": "Unique identifier for the email account setting"
          },
          "emailAccountId": {
            "type": "string",
            "example": "WjzR8xpPAq",
            "description": "Identifier for the email account associated with this setting"
          },
          "code": {
            "type": "string",
            "example": "available-quota",
            "description": "Setting code indicating the type of setting"
          },
          "value": {
            "type": "string",
            "example": "11",
            "description": "Value of the setting"
          },
          "modifiedAt": {
            "type": "string",
            "example": "2024-09-24T13:00:00.712Z",
            "description": "Timestamp for the last modification of the setting"
          }
        }
      },
      "EmailAccount": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "WjzR8xpPAq",
            "description": "Unique identifier for the email account"
          },
          "userId": {
            "type": "string",
            "example": "2AwrlZ3aQn",
            "description": "User ID associated with the email account"
          },
          "shAccountId": {
            "type": "string",
            "example": "Y8aL11LzNn",
            "description": "SalesHandy account ID associated with the email account"
          },
          "fromName": {
            "type": "string",
            "example": "John patel",
            "description": "Name shown in the \"from\" field of outgoing emails"
          },
          "fromEmail": {
            "type": "string",
            "example": "example@gmail.com",
            "description": "Email address used for sending emails"
          },
          "fromFirstName": {
            "type": "string",
            "example": "John",
            "description": "First name of the user associated with the email account"
          },
          "fromLastName": {
            "type": "string",
            "example": "Prajapati",
            "description": "Last name of the user associated with the email account"
          },
          "type": {
            "type": "number",
            "example": 3,
            "description": "Type of email account (1: Gmail, 2: Microsoft, 3: SmtpImap)"
          },
          "status": {
            "type": "number",
            "example": 1,
            "description": "Status of the email account (0: Inactive, 1: Active, 2: InProgress)"
          },
          "isDefault": {
            "type": "boolean",
            "example": true,
            "description": "Indicates true if this email account is the default account for the user"
          },
          "lastConnectedAt": {
            "type": "string",
            "example": "2024-09-23T02:34:51.000Z",
            "description": "Timestamp for the last time the account was connected"
          },
          "createdAt": {
            "type": "string",
            "example": "2024-08-22T23:00:23.379Z",
            "description": "Timestamp for when the email account was created"
          },
          "modifiedAt": {
            "type": "string",
            "example": "2024-09-23T02:34:51.000Z",
            "description": "Timestamp for the last modification of the email account"
          },
          "deletedAt": {
            "type": "string",
            "example": null,
            "description": "Timestamp for when the email account was deleted, if applicable"
          },
          "emailServiceProvider": {
            "type": "string",
            "example": "gsuite",
            "description": "Email service provider used by the account"
          },
          "healthScore": {
            "type": "number",
            "example": 71,
            "description": "Health score of the email account"
          },
          "settings": {
            "description": "Settings associated with the email account",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmailAccountSetting"
            }
          }
        }
      },
      "SequenceAllEmailResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "8Jwomvq5aO",
            "description": "Unique identifier for the sequence"
          },
          "sequenceId": {
            "type": "string",
            "example": "k4PerXkXan",
            "description": "Identifier for the sequence associated with the email account"
          },
          "createdAt": {
            "type": "string",
            "example": "2024-09-23T01:18:04.826Z",
            "description": "Timestamp for when the sequence was created"
          },
          "deletedAt": {
            "type": "string",
            "example": null,
            "description": "Timestamp for when the sequence was deleted, if applicable"
          },
          "emailAccount": {
            "description": "Details of the email account associated with the sequence",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmailAccount"
            }
          }
        }
      },
      "AddEmailAccountToSequenceDto": {
        "type": "object",
        "properties": {
          "emailAccountIds": {
            "example": [
              "1Gz3xlNwr9",
              "ajzR8xpPAq",
              "vXwAZr6P8q"
            ],
            "description": "Array of email account IDs to be added.",
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "required": [
          "emailAccountIds"
        ]
      },
      "RemoveEmailAccountFromSequenceDto": {
        "type": "object",
        "properties": {
          "emailAccountIds": {
            "example": [
              "1Gz3xlNwr9",
              "ajzR8xpPAq",
              "vXwAZr6P8q"
            ],
            "description": "Array of email account IDs to be removed.",
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "required": [
          "emailAccountIds"
        ]
      },
      "SequenceProspectImportV2Dto": {
        "type": "object",
        "properties": {
          "prospectList": {
            "example": [
              {
                "First Name": "Jon",
                "Last Name": "Smith",
                "Email": "johnsmith@example.com",
                "Company": "ABC",
                "Country": "USA",
                "Phone Number": "1234567890",
                "Job Title": "Procurement Manager"
              },
              {
                "First Name": "Jemmy",
                "Last Name": "Lorance",
                "Email": "jemmy@example.com",
                "Company": "ABC",
                "Country": "USA",
                "Phone Number": "1234567891",
                "Job Title": "Procurement Manager"
              }
            ],
            "description": "The array of prospect list. Each prospect is represented by an array of fields.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "stepId": {
            "type": "number",
            "description": "Set the step to which the prospect is to be added",
            "example": "0VOLRwYe82"
          },
          "verifyProspects": {
            "type": "boolean",
            "description": "Optional. Set to \"true\" if prospect's email address should be verified"
          },
          "conflictAction": {
            "type": "string",
            "description": "Conflict action to take if we attempt to add an already existing prospect",
            "enum": [
              "overwrite",
              "noUpdate",
              "addMissingFields"
            ]
          },
          "tags": {
            "description": "Array of tags to be assigned to the imported prospects. If the tag does not exist, it will be created.",
            "example": [
              "tag1",
              "tag2",
              "tag3"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "prospectList",
          "stepId",
          "conflictAction"
        ]
      },
      "UpdateSequenceStatusDto": {
        "type": "object",
        "properties": {
          "sequenceIds": {
            "description": "Ids of the sequences",
            "example": [
              "2dP27N0gZ4",
              "2dP27NugZ3",
              "2dP27NrgZ3"
            ],
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "status": {
            "type": "string",
            "description": "status",
            "enum": [
              "resume",
              "pause"
            ],
            "example": "resume"
          }
        },
        "required": [
          "sequenceIds",
          "status"
        ]
      },
      "SequenceStepVariantPayload": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "Email content (HTML)",
            "example": "<div><span style=\"font-family: sans-serif; font-size: 13px;\">Sample email content</span></div>"
          },
          "preheader": {
            "type": "string",
            "description": "Email preheader text",
            "example": "Sample preheader"
          },
          "subject": {
            "type": "string",
            "description": "Email subject line",
            "example": "Sample email subject"
          },
          "connectionNote": {
            "type": "string",
            "description": "LinkedIn connection note",
            "example": "LinkedIn Connection Note"
          },
          "message": {
            "type": "string",
            "description": "LinkedIn InMail or WhatsApp message",
            "example": "Sample LinkedIn InMail message"
          },
          "title": {
            "type": "string",
            "description": "Custom task title",
            "example": "Sample Custom Title"
          },
          "action": {
            "type": "object",
            "description": "Custom task action",
            "example": {
              "url": "https://example.com",
              "name": "Visit Example Website"
            }
          }
        }
      },
      "Variant": {
        "type": "object",
        "properties": {
          "payload": {
            "description": "Payload for the variant based on the step type",
            "allOf": [
              {
                "$ref": "#/components/schemas/SequenceStepVariantPayload"
              }
            ]
          },
          "taskNote": {
            "type": "string",
            "description": "Default task note for tasks generated by this variant. NOT allowed on Email variants (type=1) — edge rejects it because Email is automated, not task-based. Use for LinkedIn / Call / Task / WhatsApp channels.",
            "example": "Follow up within 24 hours if no reply",
            "maxLength": 3000
          },
          "attachmentIds": {
            "description": "Hashed IDs of attachments to include on this variant (Email steps only). Upload via POST /v1/attachments to obtain an ID. IDs are decoded to numbers by the gateway before forwarding to the edge service.",
            "example": [
              "lN5xKp2vJq",
              "aQ8dVzYw1R"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CreateSequenceStepDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "The task 'type' of step that will be created",
            "enum": [
              "Email",
              "LinkedInConnectionRequest",
              "LinkedInMessage",
              "LinkedInInMail",
              "LinkedInViewProfile",
              "LinkedInPostInteration",
              "Custom",
              "CallIntroduction",
              "CallDemo",
              "CallFollowUp",
              "CallReminder",
              "CallOther",
              "WhatsappMessage",
              "WhatsappVoiceMessage",
              "WhatsappVoiceCall"
            ],
            "example": 1
          },
          "priority": {
            "type": "string",
            "description": "Priority of the tasks that will be generated by this step, default is NORMAL",
            "enum": [
              "Urgent",
              "High",
              "Normal",
              "Low"
            ],
            "example": 3
          },
          "assigneeId": {
            "type": "string",
            "description": "User ID of the assignee who will be assigned the tasks generated by this step, default = User ID of sequence owner",
            "example": "z6R8Mw4vBn"
          },
          "variants": {
            "description": "An array of variants for the sequence step. Email steps support up to 26 variants (A/B testing); other channels use a single variant. The `payload` shape depends on the step channel — see examples in OpenAPI.md.\n\n**Email (type=1)**: `payload = { subject, content, preheader? }`. `taskNote` is NOT allowed (Email is automated, not task-based).\n**LinkedIn / Call / Task / WhatsApp (type=2,3,4,9,11-18)**: `taskNote` is allowed (these channels generate a task).",
            "minItems": 1,
            "maxItems": 26,
            "example": [
              {
                "payload": {
                  "subject": "Quick question, {{firstName}}",
                  "content": "<p>Hi {{firstName}},</p><p>Hope you're doing well — wanted to reach out about {{companyName}}.</p><p>Best,<br/>Vatsal</p>",
                  "preheader": "Quick question about your team"
                },
                "attachmentIds": [
                  "lN5xKp2vJq"
                ]
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Variant"
            }
          },
          "absoluteDays": {
            "type": "number",
            "description": "The absolute number of days for the sequence step.",
            "minimum": 1,
            "maximum": 999,
            "example": 3
          }
        },
        "required": [
          "type",
          "variants",
          "absoluteDays"
        ]
      },
      "SequenceStep": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "bwOLEx4l8G",
            "description": "Unique identifier for the step in the sequence"
          },
          "name": {
            "type": "string",
            "example": "Step 1",
            "description": "Name of the step in the sequence"
          },
          "number": {
            "type": "number",
            "example": 1,
            "description": "Step number in the sequence"
          },
          "type": {
            "type": "number",
            "example": 1,
            "description": "Type of the step"
          },
          "absoluteDays": {
            "type": "number",
            "example": 3,
            "description": "Absolute days for the step"
          }
        }
      },
      "SequenceStepType": {
        "type": "string",
        "enum": [
          "Email",
          "LinkedInConnectionRequest",
          "LinkedInMessage",
          "LinkedInInMail",
          "LinkedInViewProfile",
          "LinkedInPostInteration",
          "Custom",
          "CallIntroduction",
          "CallDemo",
          "CallFollowUp",
          "CallReminder",
          "CallOther",
          "WhatsappMessage",
          "WhatsappVoiceMessage",
          "WhatsappVoiceCall"
        ]
      },
      "UpdateSequenceStepVariantDto": {
        "type": "object",
        "properties": {
          "status": {
            "type": "number",
            "description": "Variant status: 0 = Inactive (paused), 1 = Active.",
            "example": 1,
            "enum": [
              0,
              1
            ]
          },
          "taskNote": {
            "type": "string",
            "description": "Task note for the variant. NOT allowed on Email variants (type=1) — edge rejects it because Email is automated, not task-based. Use for LinkedIn / Call / Task / WhatsApp channels.",
            "example": "Follow up within 24 hours if no reply",
            "maxLength": 3000
          },
          "payload": {
            "type": "object",
            "description": "Payload for the variant. Shape must match the step's channel — see OpenAPI.md (Email: `{subject, content, preheader?}`, LinkedInConnectionRequest: `{connectionNote}`, LinkedInMessage: `{message}`, LinkedInInMail: `{subject, message}`, ViewProfile/PostInteraction/Task/Call/Whatsapp: `{}`).",
            "example": {
              "subject": "Following up, {{firstName}}",
              "content": "<p>Hi {{firstName}},</p><p>Wanted to follow up on my last email.</p>",
              "preheader": "Following up"
            }
          },
          "absoluteDays": {
            "type": "number",
            "description": "Override day number for this variant (1–999). Each day can hold at most one Email step.",
            "minimum": 1,
            "example": 3
          },
          "attachmentIds": {
            "description": "Full replacement of the attachment list for this variant (Email variants only). Pass `[]` to remove all attachments. Upload attachments via POST /v1/attachments to obtain an ID.",
            "example": [
              "lN5xKp2vJq",
              "aQ8dVzYw1R"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "type": {
            "example": 1,
            "description": "Channel type of the variant. Rarely changed on update — must still match the parent step.",
            "$ref": "#/components/schemas/SequenceStepType"
          },
          "assigneeId": {
            "type": "string",
            "description": "Hashed user ID to assign generated tasks to (task-based channels). Defaults to the sequence owner.",
            "example": "z6R8Mw4vBn"
          },
          "priority": {
            "type": "string",
            "enum": [
              "Urgent",
              "High",
              "Normal",
              "Low"
            ],
            "description": "Task priority (1=Urgent, 2=High, 3=Normal, 4=Low). Used when the channel generates a task.",
            "example": 3
          }
        }
      },
      "SequenceSettingItemDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "number",
            "description": "Integer setting code (1–13). See OpenAPI.md.",
            "example": 5
          },
          "value": {
            "type": "string",
            "description": "Value to write for the setting (always a string).\n- Toggle codes: `\"0\"` / `\"1\"`.\n- JSON-array codes (`bcc`=7, `cc`=8): JSON-encoded strings, e.g. `\"[]\"` or `\"[\\\"a@b.com\\\"]\"`.\n- `unsubscribe-link` (code 1): either `\"\"` (disabled) or an HTML snippet that **must include the `{{link}}` placeholder** — the server replaces `{{link}}` with the recipient-specific unsubscribe URL at send time. Non-empty values without `{{link}}` are rejected. Three preset snippets are accepted verbatim (see OpenAPI.md).\n- `unsubscribe-text` (code 2): any plain-text string appended to the email footer.",
            "example": "1"
          }
        },
        "required": [
          "code",
          "value"
        ]
      },
      "UpdateSequenceSettingsDto": {
        "type": "object",
        "properties": {
          "settings": {
            "description": "Array of settings to update. All codes are forwarded.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SequenceSettingItemDto"
            }
          },
          "scheduleId": {
            "type": "string",
            "description": "Hashed ID of the schedule to assign to this sequence."
          }
        }
      },
      "PriorityDistributionPreset": {
        "type": "string",
        "enum": [
          "PrioritiseFollowUps",
          "PrioritiseNewProspects",
          "BalancedSending",
          "AggressivelyPrioritiseNewProspects"
        ]
      },
      "UpdatePriorityDistributionDto": {
        "type": "object",
        "properties": {
          "priorityDistributionId": {
            "description": "Priority distribution preset id.\n`1` = Prioritise Follow-Ups (more emails from follow-up steps).\n`2` = Prioritise New Prospects (more emails from the first step).\n`3` = Balanced Sending (equal across steps).\n`4` = Aggressively Prioritise New Prospects (~80% from the first step).",
            "example": 3,
            "$ref": "#/components/schemas/PriorityDistributionPreset"
          }
        },
        "required": [
          "priorityDistributionId"
        ]
      },
      "UpdateSequenceScheduleDto": {
        "type": "object",
        "properties": {
          "scheduleId": {
            "type": "string",
            "description": "Hashed ID of the schedule to assign to the sequence.",
            "example": "aB3xK9"
          }
        },
        "required": [
          "scheduleId"
        ]
      },
      "CreateSequenceStepVariantDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Channel type of the variant. Must match the parent step. 1=Email, 2=LinkedInConnectionRequest, 3=LinkedInMessage, 4=LinkedInInMail, 5=LinkedInViewProfile, 6=LinkedInPostInteraction, 9=Task, 11=CallIntroduction, 12=CallDemo, 13=CallFollowUp, 14=CallReminder, 15=CallOther, 16=WhatsappMessage, 17=WhatsappVoiceMessage, 18=WhatsappVoiceCall.",
            "enum": [
              "Email",
              "LinkedInConnectionRequest",
              "LinkedInMessage",
              "LinkedInInMail",
              "LinkedInViewProfile",
              "LinkedInPostInteration",
              "Custom",
              "CallIntroduction",
              "CallDemo",
              "CallFollowUp",
              "CallReminder",
              "CallOther",
              "WhatsappMessage",
              "WhatsappVoiceMessage",
              "WhatsappVoiceCall"
            ],
            "example": 1
          },
          "payload": {
            "type": "object",
            "description": "Payload for the variant. Shape depends on the channel:\n- Email (type=1): `{ subject, content, preheader? }`\n- LinkedInConnectionRequest (type=2): `{ connectionNote }`\n- LinkedInMessage (type=3): `{ message }`\n- LinkedInInMail (type=4): `{ subject, message }`\n- ViewProfile/PostInteraction/Task/Call/Whatsapp: `{}` (empty object)\n\nSee OpenAPI.md.",
            "example": {
              "subject": "Following up, {{firstName}}",
              "content": "<p>Hi {{firstName}},</p><p>Wanted to follow up on my last email.</p>",
              "preheader": "Following up"
            }
          },
          "attachmentIds": {
            "description": "Hashed IDs of attachments to include (Email variants only). Upload via POST /v1/attachments to obtain an ID.",
            "example": [
              "lN5xKp2vJq"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "taskNote": {
            "type": "string",
            "description": "Task note for the generated task. NOT allowed on Email variants (type=1) — edge rejects it because Email is automated, not task-based. Use for LinkedIn / Call / Task / WhatsApp channels.",
            "example": "Follow up within 24 hours if no reply",
            "maxLength": 3000
          },
          "absoluteDays": {
            "type": "number",
            "description": "Override day number for this variant. Defaults to the step's absoluteDays.",
            "minimum": 1,
            "example": 3
          },
          "assigneeId": {
            "type": "string",
            "description": "Hashed user ID to assign generated tasks to (task-based channels). Defaults to the sequence owner.",
            "example": "z6R8Mw4vBn"
          },
          "priority": {
            "type": "string",
            "enum": [
              "Urgent",
              "High",
              "Normal",
              "Low"
            ],
            "description": "Task priority (1=Urgent, 2=High, 3=Normal, 4=Low). Used when the channel generates a task.",
            "example": 3
          }
        },
        "required": [
          "type",
          "payload"
        ]
      },
      "SequenceStepVariant": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "MAwgmlAKaN",
            "description": "Unique identifier for the sequence step variant"
          },
          "payload": {
            "description": "Content payload of the variant containing subject and body",
            "allOf": [
              {
                "$ref": "#/components/schemas/SequenceStepVariantPayload"
              }
            ]
          },
          "taskNote": {
            "type": "string",
            "example": null,
            "description": "Optional note associated with the variant task"
          },
          "status": {
            "type": "number",
            "example": 1,
            "description": "Status of the variant (0: Inactive, 1: Active)"
          },
          "type": {
            "type": "number",
            "example": 1,
            "description": "Type of the sequence step (1: Email, 2: LinkedInConnectionRequest, 3: LinkedInMessage, 4: LinkedInInMail, 5: LinkedInViewProfile, 9: Custom, 11-15: Call variants, 16-18: WhatsApp variants)"
          },
          "executionType": {
            "type": "number",
            "example": 1,
            "description": "Execution type of the step (1: Automated, 2: Manual)"
          },
          "stepStatus": {
            "type": "number",
            "example": 1,
            "description": "Status of the parent step (0: Inactive, 1: Active)"
          }
        }
      },
      "AddContactsToSequenceDto": {
        "type": "object",
        "properties": {
          "stepId": {
            "type": "string",
            "description": "Sequence step ID",
            "example": "bwOLEx4l8G"
          },
          "contactIds": {
            "description": "Contact IDs to add",
            "example": [
              "2dP27N0gZ4",
              "VMw56r9jPb"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "stepId",
          "contactIds"
        ]
      },
      "SendTestEmailDto": {
        "type": "object",
        "properties": {
          "to": {
            "description": "One or more recipient email addresses for the test email.",
            "example": [
              "qa.recipient@example.org"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "fromEmailAccountId": {
            "type": "string",
            "description": "Public sending email account ID. The sender must be connected to the sequence.",
            "example": "Y8aL4J6jaN"
          },
          "subject": {
            "type": "string",
            "description": "Subject line of the test email.",
            "example": "OpenAPI test email"
          },
          "content": {
            "type": "string",
            "description": "HTML body of the test email.",
            "example": "<p>Hello from OpenAPI validation.</p>"
          },
          "preheader": {
            "type": "string",
            "description": "Preview text shown in the recipient inbox.",
            "example": "OpenAPI preheader"
          }
        },
        "required": [
          "to",
          "fromEmailAccountId",
          "subject",
          "content"
        ]
      },
      "CreateFieldDto": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "The display name of the custom field. This label will appear in the prospect profile and throughout the application.",
            "example": "LinkedIn Profile URL"
          },
          "fieldType": {
            "type": "string",
            "description": "The data type of the custom field. Accepted values: text, number, date, long-text, dropdown, currency.",
            "enum": [
              "text",
              "number",
              "date",
              "long-text",
              "dropdown",
              "currency"
            ],
            "example": "text"
          },
          "fallbackText": {
            "type": "string",
            "description": "A default placeholder text to display when the field has no value for a prospect.",
            "example": "Not provided"
          },
          "metadata": {
            "type": "object",
            "description": "Per-type configuration. Required for Dropdown and Currency fields, ignored for others. For Dropdown (fieldType \"dropdown\"): <code>{ \"options\": [\"Free\", \"Growth\", \"Enterprise\"] }</code> — list of selectable values (max 50). For Currency (fieldType \"currency\"): <code>{ \"currencyCode\": \"USD\" }</code> — ISO 4217 code from USD, EUR, GBP, JPY, CHF, CAD, AUD, CNY, INR, SGD, HKD, NZD, KRW, SEK, AED, BRL, MXN, ZAR, SAR.",
            "example": {
              "options": [
                "Free",
                "Growth",
                "Enterprise"
              ]
            }
          }
        },
        "required": [
          "label",
          "fieldType"
        ]
      },
      "UpdateFieldDto": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "The new display name for the custom field. This label will appear in the prospect profile and throughout the application.",
            "example": "LinkedIn URL"
          },
          "fallbackText": {
            "type": "string",
            "description": "Updated placeholder text to display when the field has no value for a prospect.",
            "example": "Not available"
          }
        }
      },
      "ProspectAndSequenceIdsDto": {
        "type": "object",
        "properties": {
          "prospectId": {
            "type": "string",
            "description": "prospect id of an existing prospect",
            "example": "2dP27N0gZ4"
          },
          "sequenceId": {
            "type": "string",
            "description": "sequence id in which the related prospect id exists",
            "example": "VMw56r9jPb"
          }
        },
        "required": [
          "prospectId",
          "sequenceId"
        ]
      },
      "ProspectsUpdateStatusDto": {
        "type": "object",
        "properties": {
          "prospectAndSequenceIds": {
            "description": "array of prospect id and step id",
            "example": [
              {
                "prospectId": "2dP27N0gZ4",
                "sequenceId": "VMw56r9jPb"
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProspectAndSequenceIdsDto"
            }
          },
          "status": {
            "type": "string",
            "description": "status type to update",
            "examples": [
              "finished",
              "paused",
              "replied",
              "unsubscribed",
              "active"
            ]
          },
          "pauseDelayInDays": {
            "type": "number",
            "description": "optional property to define pause delay in days in case of pausing prospects, only used when status=paused"
          }
        },
        "required": [
          "prospectAndSequenceIds",
          "status"
        ]
      },
      "AssignTagToProspectsDto": {
        "type": "object",
        "properties": {
          "prospects": {
            "description": "IDs of the prospects",
            "example": [
              "2dP27N0gZ4",
              "bzZWZpl4wM",
              "2dP27NrgZ3"
            ],
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "prospectsEmails": {
            "description": "Email addresses associated with the prospects",
            "example": [
              "example2@example.com",
              "example1@example.com"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "tags": {
            "description": "Names of the new tags to be created and attached to the given prospects",
            "example": [
              "Tag1",
              "Tag2"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "tags"
        ]
      },
      "UnAssignTagToProspectsDto": {
        "type": "object",
        "properties": {
          "prospects": {
            "description": "Ids of the prospects",
            "example": [
              "2dP27N0gZ4",
              "bzZWZpl4wM",
              "2dP27NrgZ3"
            ],
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "prospectsEmails": {
            "description": "Email addresses associated with the prospects",
            "example": [
              "example2@example.com",
              "example1@example.com"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "tags": {
            "type": "string",
            "description": "Name of the tag",
            "example": "tag 1"
          }
        },
        "required": [
          "tags"
        ]
      },
      "AddBlacklistDomainDto": {
        "type": "object",
        "properties": {
          "domains": {
            "type": "string",
            "description": "List of domain names to be blacklisted seperated by ',' (not prefixed by http:// or https://). \n      <br>Maximum domain limit is 50 & Minumum domain limit is 1.",
            "example": "example.com,dev.to,rataalada.com"
          }
        },
        "required": [
          "domains"
        ]
      },
      "AddDncListDto": {
        "type": "object",
        "properties": {
          "items": {
            "description": "Array of strings containing either emails or domains",
            "example": [
              "example@example.com",
              "domain.com"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "dncListId": {
            "type": "string",
            "description": "DNC list id to which the items should be added. Use the string `id` returned by GET /v1/dnc (e.g. \"vWjzRkZwAq\") — do not coerce it to a number.",
            "example": "vWjzRkZwAq"
          }
        },
        "required": [
          "items",
          "dncListId"
        ]
      },
      "DncValueType": {
        "type": "string",
        "enum": [
          "all",
          "email",
          "domain"
        ]
      },
      "DncItems": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "9KwONr6Yz6",
            "description": "Unique identifier for the DNC list detail."
          },
          "value": {
            "type": "string",
            "example": "abc@gmail.com",
            "description": "The value of the DNC item, such as an email address or domain."
          },
          "type": {
            "type": "string",
            "example": "email",
            "description": "The type of DNC item (\"email\" and \"domain\")."
          },
          "createdAt": {
            "type": "string",
            "example": "2024-11-15T03:53:20.814Z",
            "description": "Timestamp when this DNC list detail was created."
          }
        }
      },
      "DncList": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "9pa8lvQay2",
            "description": "Unique identifier for the DNC list."
          },
          "name": {
            "type": "string",
            "example": "Global Do Not Contact List",
            "description": "Name of the DNC list."
          },
          "numberOfItems": {
            "type": "number",
            "example": 2,
            "description": "Total number of items in the DNC list."
          },
          "createdAt": {
            "type": "string",
            "example": "2024-08-14T05:29:42.734Z",
            "description": "Timestamp when this DNC list was created."
          },
          "updatedAt": {
            "type": "string",
            "example": "2024-11-15T03:53:20.811Z",
            "description": "Timestamp when this DNC list was last updated."
          },
          "addedBy": {
            "type": "string",
            "example": "John Patel",
            "description": "Name of the person who added this DNC list."
          },
          "ownerId": {
            "type": "string",
            "example": "9KwOp8YP6k",
            "description": "Unique identifier for the owner of the DNC list."
          },
          "dncItems": {
            "description": "Details of the items within the DNC list.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DncItems"
            }
          }
        }
      },
      "Meta": {
        "type": "object",
        "properties": {
          "totalItems": {
            "type": "number",
            "example": 1,
            "description": "Total number of items available."
          },
          "currentPage": {
            "type": "number",
            "example": 1,
            "description": "Current page number."
          },
          "itemsPerPage": {
            "type": "number",
            "example": 25,
            "description": "Number of items displayed per page."
          },
          "totalPages": {
            "type": "number",
            "example": 1,
            "description": "Total number of pages available."
          },
          "itemCount": {
            "type": "number",
            "example": 1,
            "description": "Number of items on the current page."
          }
        }
      },
      "FetchDncListResponse": {
        "type": "object",
        "properties": {
          "dncList": {
            "description": "Array of DNC lists with their details.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DncList"
            }
          },
          "meta": {
            "description": "Pagination metadata for the DNC lists.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "FetchDncListResponseDto": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "example": "Successfully fetched dnc item",
            "description": "Response message indicating the status of the request."
          },
          "payload": {
            "description": "The payload containing DNC lists and pagination metadata.",
            "allOf": [
              {
                "$ref": "#/components/schemas/FetchDncListResponse"
              }
            ]
          }
        }
      },
      "AssignClientResourceDto": {
        "type": "object",
        "properties": {
          "resourceIds": {
            "description": "IDs of resources to assign",
            "example": [
              "1Gz3xlNwr9",
              "ajzR8xpPAq"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "clientId": {
            "type": "string",
            "description": "Optional client ID for scoping",
            "example": "9pa8BRwy2"
          }
        },
        "required": [
          "resourceIds"
        ]
      },
      "CreateClientDto": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "Client's first name.",
            "example": "Maya"
          },
          "lastName": {
            "type": "string",
            "description": "Client's last name.",
            "example": "Client"
          },
          "email": {
            "type": "string",
            "description": "Client's email address. Must be a valid email on a non-blacklisted domain.",
            "example": "maya.client@example.org"
          },
          "companyName": {
            "type": "string",
            "description": "Client's company name.",
            "example": "Acme Growth"
          },
          "permission": {
            "type": "string",
            "description": "Access level for the client. Accepted values: \"1\" = Full access, \"2\" = Limited access.",
            "enum": [
              "1",
              "2"
            ],
            "example": "1"
          }
        },
        "required": [
          "firstName",
          "lastName",
          "email",
          "companyName",
          "permission"
        ]
      },
      "EmailAccountAddDto": {
        "type": "object",
        "properties": {
          "emailServiceProvider": {
            "type": "string",
            "description": "Email service provider : gsuite, microsoft, o365, yahoo, zoho, godaddy, yandex, sendgrid, other",
            "example": "gsuite",
            "enum": [
              "gsuite",
              "microsoft",
              "o365",
              "yahoo",
              "zoho",
              "godaddy",
              "yandex",
              "sendgrid",
              "other"
            ]
          },
          "fromFirstName": {
            "type": "string",
            "description": "First name of the sender",
            "example": "John"
          },
          "fromLastName": {
            "type": "string",
            "description": "Last name of the sender",
            "example": "Snow"
          },
          "smtpEmailAddress": {
            "type": "string",
            "description": "SMTP email address",
            "example": "john@example.com"
          },
          "smtpUserName": {
            "type": "string",
            "description": "SMTP username",
            "example": "john@example.com"
          },
          "smtpPassword": {
            "type": "string",
            "description": "SMTP password",
            "example": "smtp-password"
          },
          "smtpHost": {
            "type": "string",
            "description": "SMTP host",
            "example": "smtp.gmail.com"
          },
          "smtpPort": {
            "type": "number",
            "description": "SMTP port",
            "example": 465
          },
          "smtpEncryption": {
            "type": "string",
            "description": "SMTP encryption type (SSL/TLS/NONE)",
            "example": "ssl",
            "enum": [
              "ssl",
              "tls",
              "none"
            ]
          },
          "imapEmailAddress": {
            "type": "string",
            "description": "IMAP email address",
            "example": "john@example.com"
          },
          "imapUserName": {
            "type": "string",
            "description": "IMAP username",
            "example": "john@example.com"
          },
          "imapPassword": {
            "type": "string",
            "description": "IMAP password",
            "example": "imap-password"
          },
          "imapHost": {
            "type": "string",
            "description": "IMAP host",
            "example": "imap.gmail.com"
          },
          "imapPort": {
            "type": "number",
            "description": "IMAP port",
            "example": 993
          },
          "imapEncryption": {
            "type": "string",
            "description": "IMAP encryption type (SSL/TLS/NONE)",
            "example": "ssl",
            "enum": [
              "ssl",
              "tls",
              "none"
            ]
          }
        },
        "required": [
          "emailServiceProvider",
          "fromFirstName",
          "fromLastName",
          "smtpEmailAddress",
          "smtpUserName",
          "smtpPassword",
          "smtpHost",
          "smtpPort",
          "smtpEncryption",
          "imapEmailAddress",
          "imapUserName",
          "imapPassword",
          "imapHost",
          "imapPort",
          "imapEncryption"
        ]
      },
      "ReconnectEmailAccountDto": {
        "type": "object",
        "properties": {
          "emailAccountIds": {
            "example": [
              "1Gz3xlNwr9",
              "ajzR8xpPAq",
              "vXwAZr6P8q"
            ],
            "description": "Array of email account IDs to be toggled on.",
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "required": [
          "emailAccountIds"
        ]
      },
      "UpdateEmailAccountDto": {
        "type": "object",
        "properties": {
          "emailAccountIds": {
            "description": "Array of email account IDs associated with the user",
            "example": [
              "Z6zxEXJwAk",
              "D6zxEXJwAk"
            ],
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "senderFirstName": {
            "type": "string",
            "description": "First name of the sender (required)",
            "example": "John"
          },
          "senderLastName": {
            "type": "string",
            "description": "Last name of the sender",
            "example": "Doe"
          },
          "dailyQuota": {
            "type": "number",
            "description": "Daily sending quota for the email account",
            "example": 500
          },
          "bcc": {
            "type": "string",
            "description": "BCC email addresses (comma-separated if multiple)",
            "example": "bcc@example.com"
          },
          "signatureHtml": {
            "type": "string",
            "description": "HTML signature for the email",
            "example": "<p>Best regards,<br>John Doe</p>"
          },
          "sendingIntervalMin": {
            "type": "number",
            "description": "Minimum interval (in seconds) between email sends",
            "example": 60
          },
          "sendingIntervalMax": {
            "type": "number",
            "description": "Maximum interval (in seconds) between email sends",
            "example": 120
          },
          "rampUpInitialSendingLimit": {
            "type": "number",
            "description": "Initial sending limit for ramp-up",
            "example": 100
          },
          "rampUpPercent": {
            "type": "number",
            "description": "Ramp-up percentage increase per interval",
            "example": 10
          },
          "clientId": {
            "type": "number",
            "description": "client id associated with the user.",
            "example": "JA5YdAr9wy"
          }
        },
        "required": [
          "emailAccountIds",
          "senderFirstName"
        ]
      },
      "SortByKey": {
        "type": "string",
        "enum": [
          "created-date",
          "health-score",
          "remaining-quota",
          "clientFirstName"
        ]
      },
      "GetAllEmailAccountDto": {
        "type": "object",
        "properties": {
          "search": {
            "type": "string",
            "description": "Search term for filtering email accounts based on email or firstName or lastName",
            "example": "john.doe@example.com"
          },
          "pageSize": {
            "type": "number",
            "description": "Number of items per page. Maximum pageSize is 100.",
            "example": 25,
            "default": 25
          },
          "page": {
            "type": "number",
            "description": "Page number for pagination. Defaults to the first page.",
            "example": 1,
            "default": 1
          },
          "sortByKey": {
            "description": "Sort key to order the email accounts list. Defaults to creation date.",
            "example": "health-score",
            "$ref": "#/components/schemas/SortByKey"
          },
          "sort": {
            "type": "string",
            "description": "Sort order for the results, either ascending or descending.",
            "enum": [
              "ASC",
              "DESC"
            ],
            "example": "DESC"
          },
          "sequenceIds": {
            "description": "List of sequence IDs to filter the email accounts.",
            "example": [
              "JA5YdAr9wy"
            ],
            "type": "array",
            "items": {
              "type": "array"
            }
          },
          "clientIds": {
            "description": "Array of email account IDs associated with the user.",
            "example": [
              "JA5YdAr9wy"
            ],
            "type": "array",
            "items": {
              "type": "array"
            }
          },
          "addedBy": {
            "description": "List of user IDs who added the email accounts.",
            "example": [
              "JA5YdAr9wy"
            ],
            "type": "array",
            "items": {
              "type": "array"
            }
          },
          "status": {
            "type": "number",
            "description": "Filter email accounts by status. 0 for Inactive, 1 for Active, 2 for Suspended.",
            "example": 1
          },
          "emailServiceProvider": {
            "description": "List of email service providers associated with the email accounts.",
            "example": [
              "gsuite",
              "microsoft"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "UserDto": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "example": "John",
            "description": "First name of the user"
          },
          "lastName": {
            "type": "string",
            "example": "Doe",
            "description": "Last name of the user"
          }
        }
      },
      "Setting": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "OqwmgYpLaj",
            "description": "Unique ID of the setting"
          },
          "code": {
            "type": "string",
            "example": "available-quota",
            "description": "Code of the setting"
          },
          "value": {
            "type": "string",
            "example": "6",
            "description": "Value of the setting"
          },
          "modifiedAt": {
            "type": "string",
            "example": "2024-10-01T13:00:01.187Z",
            "description": "Timestamp of the last modification"
          }
        }
      },
      "ClientDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "g9bzZq4aMd",
            "description": "Unique ID of the client"
          },
          "firstName": {
            "type": "string",
            "example": "john",
            "description": "First name of the client"
          },
          "lastName": {
            "type": "string",
            "example": "doe",
            "description": "Last name of the client"
          },
          "email": {
            "type": "string",
            "example": "johndoe+5@saleshandy.com",
            "description": "Email of the client"
          },
          "status": {
            "type": "string",
            "example": "active",
            "description": "Status of the client"
          },
          "companyName": {
            "type": "string",
            "example": "Demo",
            "description": "Company name of the client"
          }
        }
      },
      "Email": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "XdPd8p1PVo",
            "description": "Unique ID of the email account"
          },
          "fromName": {
            "type": "string",
            "example": "John Doe",
            "description": "Name of the email sender"
          },
          "fromEmail": {
            "type": "string",
            "example": "johndoe+4@saleshandy.com",
            "description": "Sender email address"
          },
          "type": {
            "type": "number",
            "example": 3,
            "description": "Type of email account (1: Gmail, 2: Microsoft, 3: SmtpImap)"
          },
          "status": {
            "type": "number",
            "example": 1,
            "description": "Status of the email account (0: Inactive, 1: Active, 2: InProgress)"
          },
          "isDefault": {
            "type": "boolean",
            "example": false,
            "description": "Indicates true if this email account is the default account for the user"
          },
          "createdAt": {
            "type": "string",
            "example": "2024-08-28T04:42:10.131Z",
            "description": "Account creation timestamp"
          },
          "healthScore": {
            "type": "number",
            "example": 55,
            "description": "Health score of the email account"
          },
          "user": {
            "description": "User details associated with the email account",
            "allOf": [
              {
                "$ref": "#/components/schemas/UserDto"
              }
            ]
          },
          "sequences": {
            "description": "List of sequences associated with the email account",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Sequence"
            }
          },
          "settings": {
            "description": "List of settings for the email account",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Setting"
            }
          },
          "client": {
            "description": "Client details associated with the email account",
            "allOf": [
              {
                "$ref": "#/components/schemas/ClientDto"
              }
            ]
          },
          "hashId": {
            "type": "string",
            "example": "XdPd8p1PVo",
            "description": "Hash ID of the email account"
          }
        }
      },
      "MetaDto": {
        "type": "object",
        "properties": {
          "totalItems": {
            "type": "number",
            "example": 1,
            "description": "Total number of items"
          },
          "currentPage": {
            "type": "number",
            "example": 1,
            "description": "Current page number"
          },
          "itemsPerPage": {
            "type": "number",
            "example": 25,
            "description": "Number of items per page"
          },
          "totalPages": {
            "type": "number",
            "example": 1,
            "description": "Total number of pages"
          },
          "itemCount": {
            "type": "number",
            "example": 1,
            "description": "Number of items on the current page"
          }
        }
      },
      "FetchAllEmailAccountResponseDto": {
        "type": "object",
        "properties": {
          "emails": {
            "description": "List of email accounts",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Email"
            }
          },
          "meta": {
            "description": "Pagination metadata",
            "allOf": [
              {
                "$ref": "#/components/schemas/MetaDto"
              }
            ]
          },
          "connectedEmailsCount": {
            "type": "number",
            "example": 1,
            "description": "Number of connected email accounts"
          },
          "disconnectedEmailsCount": {
            "type": "number",
            "example": 0,
            "description": "Number of disconnected email accounts"
          }
        }
      },
      "SmtpConnectionDto": {
        "type": "object",
        "properties": {
          "emailAddress": {
            "type": "string",
            "description": "Email address used for SMTP authentication.",
            "example": "sarah.chen@outreach.io"
          },
          "password": {
            "type": "string",
            "description": "SMTP password or app-specific password.",
            "example": "AppPassword123"
          },
          "host": {
            "type": "string",
            "description": "SMTP hostname.",
            "example": "smtp.zoho.com"
          },
          "port": {
            "type": "number",
            "description": "SMTP port (1–65535).",
            "example": 587,
            "minimum": 1,
            "maximum": 65535
          },
          "encryption": {
            "type": "string",
            "description": "SMTP connection encryption.",
            "enum": [
              "TLS",
              "SSL"
            ],
            "example": "TLS"
          },
          "userName": {
            "type": "string",
            "description": "SMTP username — usually the same as the email address.",
            "example": "sarah.chen@outreach.io"
          }
        },
        "required": [
          "emailAddress",
          "password",
          "host",
          "port",
          "encryption",
          "userName"
        ]
      },
      "ImapConnectionDto": {
        "type": "object",
        "properties": {
          "emailAddress": {
            "type": "string",
            "description": "Email address used for IMAP authentication.",
            "example": "sarah.chen@outreach.io"
          },
          "password": {
            "type": "string",
            "description": "IMAP password or app-specific password.",
            "example": "AppPassword123"
          },
          "host": {
            "type": "string",
            "description": "IMAP hostname.",
            "example": "imap.zoho.com"
          },
          "port": {
            "type": "number",
            "description": "IMAP port (1–65535).",
            "example": 993,
            "minimum": 1,
            "maximum": 65535
          },
          "encryption": {
            "type": "string",
            "description": "IMAP connection encryption.",
            "enum": [
              "TLS",
              "SSL"
            ],
            "example": "SSL"
          }
        },
        "required": [
          "emailAddress",
          "password",
          "host",
          "port",
          "encryption"
        ]
      },
      "ConnectEmailAccountPayloadDto": {
        "type": "object",
        "properties": {
          "smtp": {
            "description": "SMTP connection settings.",
            "allOf": [
              {
                "$ref": "#/components/schemas/SmtpConnectionDto"
              }
            ]
          },
          "imap": {
            "description": "IMAP connection settings.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImapConnectionDto"
              }
            ]
          }
        },
        "required": [
          "smtp",
          "imap"
        ]
      },
      "ConnectEmailAccountDto": {
        "type": "object",
        "properties": {
          "emailServiceProvider": {
            "type": "string",
            "description": "Email service provider identifier. Accepted values: gmail, microsoft, gsuite, o365, yahoo, zoho, godaddy, yandex, sendgrid, other.",
            "enum": [
              "gmail",
              "microsoft",
              "gsuite",
              "o365",
              "yahoo",
              "zoho",
              "godaddy",
              "yandex",
              "sendgrid",
              "other"
            ],
            "example": "zoho"
          },
          "fromName": {
            "type": "string",
            "description": "Full display name shown as the sender.",
            "example": "Sarah Chen"
          },
          "fromFirstName": {
            "type": "string",
            "description": "Sender's first name.",
            "example": "Sarah"
          },
          "fromLastName": {
            "type": "string",
            "description": "Sender's last name.",
            "example": "Chen"
          },
          "payload": {
            "description": "SMTP + IMAP connection settings.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ConnectEmailAccountPayloadDto"
              }
            ]
          }
        },
        "required": [
          "emailServiceProvider",
          "fromName",
          "fromFirstName",
          "fromLastName",
          "payload"
        ]
      },
      "SequenceConsolidatedReportsData": {
        "type": "object",
        "properties": {
          "sequenceIds": {
            "description": "Ids of the sequences",
            "example": [
              "2dP27N0gZ4",
              "2dP27NugZ3",
              "2dP27NrgZ3"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "startDate": {
            "type": "string",
            "description": "Start Date must in a valid date & it must not be older than 2 years ago. Example:- 2001-12-18 (YYYY-MM-DD).",
            "example": "2024-11-15"
          },
          "endDate": {
            "type": "string",
            "description": "End Date must in a valid date & it must not exceed 1 year after Start Date. Example:- 2001-12-18 (YYYY-MM-DD)",
            "example": "2024-11-19"
          },
          "pageNum": {
            "type": "number",
            "description": "Page number. It should be greater then 1",
            "example": 1
          },
          "pageLimit": {
            "type": "number",
            "description": "Number of documents to be returned. Page limit should be between 10 & 500 per page.",
            "example": 25
          }
        },
        "required": [
          "sequenceIds",
          "startDate",
          "endDate",
          "pageNum",
          "pageLimit"
        ]
      },
      "SequenceStatsReportData": {
        "type": "object",
        "properties": {
          "sequenceId": {
            "type": "string",
            "description": "Id of the sequence",
            "example": "2dP27N0gZ4"
          }
        },
        "required": [
          "sequenceId"
        ]
      },
      "EmailAccountStatsDto": {
        "type": "object",
        "properties": {
          "emailId": {
            "type": "string",
            "description": "Id of the email account",
            "example": "2dP27N0gZ4"
          }
        },
        "required": [
          "emailId"
        ]
      },
      "EmailSentDetailsDto": {
        "type": "object",
        "properties": {
          "sequenceIds": {
            "description": "Filter by specific sequence IDs",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "startDate": {
            "type": "string",
            "description": "Start date for the report (ISO date string)",
            "example": "2024-01-01"
          },
          "endDate": {
            "type": "string",
            "description": "End date for the report (ISO date string)",
            "example": "2024-01-31"
          }
        },
        "required": [
          "startDate",
          "endDate"
        ]
      },
      "ReportTeamStatsDto": {
        "type": "object",
        "properties": {
          "userIds": {
            "description": "Array of encrypted user IDs to filter the report",
            "example": [
              "abc123xyz",
              "def456uvw"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "startDate": {
            "type": "string",
            "description": "Start date for the report period in ISO 8601 format with timezone",
            "example": "2024-01-01T00:00:00.000+00:00"
          },
          "endDate": {
            "type": "string",
            "description": "End date for the report period in ISO 8601 format with timezone",
            "example": "2024-01-31T23:59:59.999+00:00"
          },
          "countBy": {
            "type": "string",
            "description": "How to group the statistics (relative or absolute)",
            "example": "absolute",
            "enum": [
              "relative",
              "absolute"
            ]
          },
          "limit": {
            "type": "number",
            "description": "Maximum number of records to return per page",
            "example": 10,
            "minimum": 1
          },
          "page": {
            "type": "number",
            "description": "Page number for pagination",
            "example": 1,
            "minimum": 1
          },
          "sortOrder": {
            "type": "string",
            "description": "Sort direction for ordering results",
            "example": "desc",
            "enum": [
              "asc",
              "desc"
            ],
            "default": "desc"
          },
          "orderBy": {
            "type": "string",
            "description": "Field name to order the results by. Valid values depend on report type",
            "example": "prospectAdded",
            "enum": [
              "prospectAdded",
              "prospectContacted",
              "opened",
              "clicked",
              "replied",
              "unSubscribed",
              "bounced",
              "Uncategorized",
              "Interested",
              "Not Interested",
              "Meeting Booked",
              "Out of Office",
              "Closed",
              "Not Now",
              "Do Not Contact",
              "prospectContacted",
              "emailSent",
              "opened",
              "clicked",
              "replied",
              "bounced"
            ]
          },
          "type": {
            "type": "string",
            "description": "Type of report to generate (prospect or email)",
            "example": "prospect",
            "enum": [
              "prospect",
              "email"
            ]
          }
        },
        "required": [
          "userIds",
          "startDate",
          "endDate",
          "countBy",
          "limit",
          "page",
          "sortOrder",
          "orderBy",
          "type"
        ]
      },
      "GetTaskDTO": {
        "type": "object",
        "properties": {
          "page": {
            "type": "number",
            "description": "Page number for pagination",
            "minimum": 1
          },
          "pageSize": {
            "type": "number",
            "description": "Number of records per page",
            "minimum": 1
          },
          "sortOrder": {
            "type": "string",
            "description": "Sort order for the results",
            "enum": [
              "ASC",
              "DESC"
            ]
          },
          "sortBy": {
            "type": "string",
            "description": "Field to sort by",
            "enum": [
              "priority",
              "completedAt",
              "skippedAt",
              "dueDate"
            ]
          },
          "status": {
            "type": "string",
            "description": "Status of the task",
            "enum": [
              "upcoming",
              "dueToday",
              "completed",
              "skipped",
              "overdue"
            ]
          },
          "sequenceId": {
            "type": "string",
            "description": "Sequence id (hashed)"
          },
          "taskAssignee": {
            "type": "string",
            "description": "Task Assignee account id (hashed)"
          },
          "prospectOutcome": {
            "type": "string",
            "description": "Prospect outcome"
          },
          "taskType": {
            "type": "string",
            "description": "Open api task type",
            "enum": [
              "linkedin",
              "call",
              "whatsapp",
              "custom"
            ]
          },
          "search": {
            "type": "string",
            "description": "Search term to filter tasks"
          },
          "callOutcome": {
            "type": "string",
            "description": "Call outcome for filtering tasks",
            "enum": [
              "Interested",
              "Callback Later",
              "Followup",
              "Not Interested",
              "Wrong Number",
              "No Answer",
              "Left Voicemail",
              "Not In Service"
            ]
          }
        }
      },
      "CreateTaskDto": {
        "type": "object",
        "properties": {
          "prospectIds": {
            "description": "List of prospect IDs to create the task for. Pass a single-element array for one prospect, or multiple IDs to create the same task for several prospects in one request.",
            "example": [
              "8PvBmrB7P7"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "taskType": {
            "type": "string",
            "description": "The type of task. Accepted values: \"2\" = LinkedIn connection request, \"3\" = LinkedIn message, \"4\" = LinkedIn InMail, \"5\" = LinkedIn view profile, \"6\" = LinkedIn post interaction, \"9\" = Custom, \"11\" = Call introduction, \"12\" = Call demo, \"13\" = Call follow-up, \"14\" = Call reminder, \"15\" = Call other, \"16\" = WhatsApp message, \"17\" = WhatsApp voice message, \"18\" = WhatsApp voice call.",
            "enum": [
              "2",
              "3",
              "4",
              "5",
              "6",
              "9",
              "11",
              "12",
              "13",
              "14",
              "15",
              "16",
              "17",
              "18"
            ],
            "example": "13"
          },
          "priority": {
            "type": "string",
            "description": "The priority level of the task. Accepted values: \"1\" = Urgent, \"2\" = High, \"3\" = Medium, \"4\" = Low. Defaults to no priority if not provided.",
            "enum": [
              "1",
              "2",
              "3",
              "4"
            ],
            "example": "3"
          },
          "dueDate": {
            "type": "string",
            "description": "The due date for the task in YYYY-MM-DD format (e.g. \"2026-04-22\"). Defaults to today if not provided.",
            "example": "2026-04-22"
          },
          "taskNote": {
            "type": "string",
            "description": "An optional note or description to attach to the task.",
            "example": "Call to follow up on the proposal sent yesterday."
          }
        },
        "required": [
          "prospectIds",
          "taskType"
        ]
      },
      "SnoozeTaskDTO": {
        "type": "object",
        "properties": {
          "callOutcome": {
            "type": "string",
            "description": "Call outcome for call tasks (optional)",
            "enum": [
              "Interested",
              "Callback Later",
              "Followup",
              "Not Interested",
              "Wrong Number",
              "No Answer",
              "Left Voicemail",
              "Not In Service"
            ],
            "example": "no-answer"
          },
          "snoozeUntil": {
            "type": "string",
            "description": "Date and time until which the task should be snoozed",
            "example": "2024-06-17T05:55:38.434Z"
          }
        },
        "required": [
          "snoozeUntil"
        ]
      },
      "CompleteTaskDTO": {
        "type": "object",
        "properties": {
          "callOutcome": {
            "type": "string",
            "description": "Call outcome for call tasks (mandatory for call tasks)",
            "enum": [
              "Interested",
              "Callback Later",
              "Followup",
              "Not Interested",
              "Wrong Number",
              "No Answer",
              "Left Voicemail",
              "Not In Service"
            ],
            "example": "no-answer"
          }
        }
      },
      "UpdateTaskNoteDTO": {
        "type": "object",
        "properties": {
          "note": {
            "type": "string",
            "description": "Note content for the task",
            "example": "Mention the new product updates in the call"
          }
        },
        "required": [
          "note"
        ]
      },
      "BulkSnoozeTaskDTO": {
        "type": "object",
        "properties": {
          "taskIds": {
            "description": "Array of task IDs to snooze",
            "example": [
              "lP0Zg2keMz",
              "MP0Cg1keMa",
              "BS0Zg5keMq"
            ],
            "minItems": 1,
            "maxItems": 10000,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "snoozeUntil": {
            "type": "string",
            "description": "Date and time until which the tasks should be snoozed",
            "example": "2024-06-17T05:55:38.434Z",
            "format": "date-time"
          }
        },
        "required": [
          "taskIds",
          "snoozeUntil"
        ]
      },
      "BulkTaskActionResponseDTO": {
        "type": "object",
        "properties": {
          "bulkActionId": {
            "type": "string",
            "description": "Unique identifier for the bulk action",
            "example": "lP0Zg2keMz"
          },
          "message": {
            "type": "string",
            "description": "Confirmation message",
            "example": "Snooze request accepted. Use the bulk status API to track results."
          },
          "statusCheckUrl": {
            "type": "string",
            "description": "URL to check the status of the bulk action",
            "example": "/v1/tasks/bulk-status/lP0Zg2keMz"
          }
        },
        "required": [
          "bulkActionId",
          "message",
          "statusCheckUrl"
        ]
      },
      "BulkSkipTaskDTO": {
        "type": "object",
        "properties": {
          "taskIds": {
            "description": "Array of task IDs to skip",
            "example": [
              "lP0Zg2keMz",
              "MP0Cg1keMa",
              "BS0Zg5keMq"
            ],
            "minItems": 1,
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "taskIds"
        ]
      },
      "BulkTaskStatusResponseDTO": {
        "type": "object",
        "properties": {
          "bulkActionId": {
            "type": "string",
            "description": "Unique identifier for the bulk action",
            "example": "lP0Zg2keMz"
          },
          "action": {
            "type": "string",
            "description": "Type of bulk action performed",
            "enum": [
              "snooze",
              "skip"
            ],
            "example": "snooze"
          },
          "totalTasks": {
            "type": "number",
            "description": "Total number of tasks in the bulk action",
            "example": 3
          },
          "completed": {
            "type": "number",
            "description": "Number of tasks completed successfully",
            "example": 3
          },
          "failed": {
            "type": "number",
            "description": "Number of tasks that failed",
            "example": 0
          },
          "pending": {
            "type": "number",
            "description": "Number of pending tasks (only present when status is in_progress)",
            "example": 5
          },
          "status": {
            "type": "string",
            "description": "Current status of the bulk action",
            "enum": [
              "in_progress",
              "completed",
              "failed"
            ],
            "example": "completed"
          },
          "createdAt": {
            "type": "string",
            "description": "Date and time when the bulk action was created",
            "example": "2024-06-17T05:55:38.434Z",
            "format": "date-time"
          },
          "completedAt": {
            "type": "string",
            "description": "Date and time when the bulk action was completed (null if in progress)",
            "example": "2024-06-19T05:55:38.434Z",
            "format": "date-time",
            "nullable": true
          },
          "csvDownloadLink": {
            "type": "string",
            "description": "Download link for CSV with detailed results (null if in progress)",
            "example": "https://my.saleshandy.com/api/edge/tasks/export/file?fileName=task_bulk_update_failed_report_62bc067f77_20250811_121241.csv",
            "nullable": true
          }
        },
        "required": [
          "bulkActionId",
          "action",
          "totalTasks",
          "completed",
          "failed",
          "status",
          "createdAt",
          "completedAt",
          "csvDownloadLink"
        ]
      },
      "OutcomeItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "r1qPBRlPDv",
            "description": "Unique identifier for the outcome item"
          },
          "name": {
            "type": "string",
            "example": "Uncategorized",
            "description": "Name of the outcome item"
          },
          "isDefault": {
            "type": "boolean",
            "example": true,
            "description": "Indicates if the outcome is the default"
          },
          "sentiment": {
            "type": "string",
            "example": "Neutral",
            "description": "Sentiment associated with the outcome (e.g., Positive, Neutral, Negative)"
          }
        }
      },
      "OutcomeListResponse": {
        "type": "object",
        "properties": {
          "items": {
            "description": "List of outcome items",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OutcomeItem"
            }
          },
          "meta": {
            "description": "Pagination metadata for the response",
            "allOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ]
          }
        }
      },
      "GetOutcomeResponseDto": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "example": "Successfully fetched outcome list",
            "description": "Response message indicating the operation status"
          },
          "payload": {
            "description": "Payload containing outcome items and pagination metadata",
            "allOf": [
              {
                "$ref": "#/components/schemas/OutcomeListResponse"
              }
            ]
          }
        }
      },
      "EmailsFilterDto": {
        "type": "object",
        "properties": {
          "page": {
            "type": "number"
          },
          "limit": {
            "type": "number"
          },
          "search": {
            "type": "string",
            "default": ""
          },
          "categoryIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sentiment": {
            "type": "string",
            "description": "Filter by SentimentsType",
            "enum": [
              "Positive",
              "Negative",
              "Neutral",
              "Uncategorized"
            ]
          },
          "sequenceIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "emailAccountIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "startDate": {
            "type": "string"
          },
          "endDate": {
            "type": "string"
          },
          "isRead": {
            "type": "number"
          },
          "owners": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "clientIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "type": {
            "type": "string",
            "description": "Filter by emails type",
            "enum": [
              "system",
              "external"
            ]
          }
        },
        "required": [
          "page",
          "limit",
          "owners"
        ]
      },
      "EmailReplyDto": {
        "type": "object",
        "properties": {
          "emailThreadId": {
            "type": "string",
            "example": "Rxh247rdgp",
            "description": "Hashed Unified Inbox thread id. For webhook flows, use conversationId from the webhook payload as this value."
          },
          "emailId": {
            "type": "string",
            "example": "EaxmPl3Id",
            "description": "Hashed email id from the Unified Inbox thread response."
          },
          "content": {
            "type": "string"
          },
          "cc": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "bcc": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "to": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "templateId": {
            "type": "number"
          },
          "attachmentIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "unifiedScheduledId": {
            "type": "number"
          }
        },
        "required": [
          "emailThreadId",
          "emailId",
          "content",
          "cc",
          "bcc",
          "to",
          "templateId",
          "attachmentIds",
          "unifiedScheduledId"
        ]
      },
      "FullNameWithCompanyDto": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "description": "First name of the person"
          },
          "last_name": {
            "type": "string",
            "description": "Last name of the person"
          },
          "company_domain": {
            "type": "string",
            "description": "Company domain (required if company_website is absent or empty)",
            "example": "acme.com"
          },
          "company_website": {
            "type": "string",
            "description": "Company website URL (required if company_domain is absent or empty)",
            "example": "https://acme.com"
          }
        }
      },
      "LeadEnrichmentDto": {
        "type": "object",
        "properties": {
          "linkedin_url": {
            "description": "LinkedIn profile URLs to enrich (max 100)",
            "example": [
              "https://linkedin.com/in/johndoe"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "lead_id": {
            "description": "Lead IDs to enrich (max 100)",
            "example": [
              12345,
              67890
            ],
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "reveal_phone": {
            "type": "boolean",
            "description": "Whether to reveal phone numbers",
            "default": false
          },
          "email_type": {
            "type": "string",
            "description": "Type of email to reveal. Combined with reveal_phone to decide what is revealed: work_email + reveal_phone=false reveals the work email; work_email + reveal_phone=true reveals work email and phone; personal_email + reveal_phone=false reveals the personal email; personal_email + reveal_phone=true reveals work email, personal email and phone.",
            "enum": [
              "work_email",
              "personal_email"
            ],
            "default": "work_email"
          },
          "webhook_url": {
            "type": "string",
            "description": "Webhook URL to call when enrichment completes"
          },
          "full_name_with_company": {
            "description": "Full name + company combinations to enrich (max 100)",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FullNameWithCompanyDto"
            }
          }
        }
      },
      "CompaniesEnrichmentDto": {
        "type": "object",
        "properties": {
          "company_domain": {
            "description": "Company domains to enrich (max 100)",
            "example": [
              "acme.com"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "company_website": {
            "description": "Company website URLs to enrich (max 100)",
            "example": [
              "https://acme.com"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "company_id": {
            "description": "Company IDs to enrich (max 100)",
            "example": [
              12345
            ],
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "linkedin_url": {
            "description": "LinkedIn company URLs to enrich (max 100)",
            "example": [
              "https://linkedin.com/company/acme"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "webhook_url": {
            "type": "string",
            "description": "Webhook URL to call when enrichment completes"
          }
        }
      },
      "IncludesFilterExactMatchDto": {
        "type": "object",
        "properties": {
          "includes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "exactMatch": {
            "type": "number",
            "enum": [
              0,
              1
            ]
          }
        }
      },
      "IncludesExcludesFilter1Dto": {
        "type": "object",
        "properties": {
          "includes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "excludes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "exactMatch": {
            "type": "number",
            "enum": [
              0,
              1
            ]
          }
        }
      },
      "IncludesExcludesFilter4Dto": {
        "type": "object",
        "properties": {
          "includes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "excludes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "IncludesFilterDto": {
        "type": "object",
        "properties": {
          "includes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "IncludesExcludesFilterDto": {
        "type": "object",
        "properties": {
          "includes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "excludes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "exactMatch": {
            "type": "number",
            "enum": [
              0,
              1
            ]
          },
          "shouldSearchPast": {
            "type": "number"
          }
        }
      },
      "RangeFilterDto": {
        "type": "object",
        "properties": {
          "min": {
            "type": "string"
          },
          "max": {
            "type": "string"
          }
        }
      },
      "IncludesExcludesFilter2Dto": {
        "type": "object",
        "properties": {
          "includes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "excludes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "shouldSearchPast": {
            "type": "number"
          }
        }
      },
      "SearchLeadsOpenAPIDto": {
        "type": "object",
        "properties": {
          "full_name": {
            "$ref": "#/components/schemas/IncludesFilterExactMatchDto"
          },
          "decision_maker": {
            "type": "boolean"
          },
          "company_bootstraped": {
            "type": "boolean"
          },
          "is_b2b": {
            "type": "boolean"
          },
          "linkedin_url": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "$ref": "#/components/schemas/IncludesExcludesFilter1Dto"
          },
          "department": {
            "$ref": "#/components/schemas/IncludesExcludesFilter4Dto"
          },
          "company_hq_location": {
            "$ref": "#/components/schemas/IncludesExcludesFilter1Dto"
          },
          "certifications": {
            "$ref": "#/components/schemas/IncludesFilterDto"
          },
          "job_title": {
            "$ref": "#/components/schemas/IncludesExcludesFilterDto"
          },
          "management_level": {
            "$ref": "#/components/schemas/IncludesExcludesFilter4Dto"
          },
          "jobs_changed_within": {
            "$ref": "#/components/schemas/RangeFilterDto"
          },
          "company_annual_revenue": {
            "$ref": "#/components/schemas/RangeFilterDto"
          },
          "company_funding_amount": {
            "$ref": "#/components/schemas/RangeFilterDto"
          },
          "company_funding_date": {
            "$ref": "#/components/schemas/RangeFilterDto"
          },
          "company_founded_year": {
            "$ref": "#/components/schemas/RangeFilterDto"
          },
          "skills": {
            "$ref": "#/components/schemas/IncludesExcludesFilter1Dto"
          },
          "current_company_experience": {
            "$ref": "#/components/schemas/RangeFilterDto"
          },
          "current_role_tenure": {
            "$ref": "#/components/schemas/RangeFilterDto"
          },
          "total_experience": {
            "$ref": "#/components/schemas/RangeFilterDto"
          },
          "company_industry": {
            "$ref": "#/components/schemas/IncludesExcludesFilter4Dto"
          },
          "company_name": {
            "$ref": "#/components/schemas/IncludesExcludesFilter2Dto"
          },
          "projected_base_salary": {
            "$ref": "#/components/schemas/RangeFilterDto"
          },
          "company_size": {
            "$ref": "#/components/schemas/RangeFilterDto"
          },
          "linkedin_connection_count": {
            "$ref": "#/components/schemas/RangeFilterDto"
          },
          "linkedin_followers_count": {
            "$ref": "#/components/schemas/RangeFilterDto"
          },
          "education_degrees": {
            "$ref": "#/components/schemas/IncludesExcludesFilter4Dto"
          },
          "social_link": {
            "$ref": "#/components/schemas/IncludesFilterDto"
          },
          "keywords": {
            "$ref": "#/components/schemas/IncludesFilterDto"
          },
          "page": {
            "type": "number",
            "default": 1,
            "minimum": 1,
            "maximum": 400
          },
          "limitPerCompany": {
            "type": "number",
            "minimum": 1,
            "maximum": 10000
          },
          "company_domain": {
            "$ref": "#/components/schemas/IncludesExcludesFilter4Dto"
          }
        }
      },
      "CompanyIncludesExcludesSimpleFilterDto": {
        "type": "object",
        "properties": {
          "includes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "excludes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CompanyIncludesExcludesFilterDto": {
        "type": "object",
        "properties": {
          "includes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "excludes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "exactMatch": {
            "type": "number",
            "enum": [
              0,
              1
            ]
          }
        }
      },
      "CompanyRangeFilterDto": {
        "type": "object",
        "properties": {
          "min": {
            "type": "string"
          },
          "max": {
            "type": "string"
          }
        }
      },
      "CompanyIncludesFilterDto": {
        "type": "object",
        "properties": {
          "includes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ProductReviewScoreChangeFilter": {
        "type": "object",
        "properties": {
          "duration": {
            "type": "string",
            "enum": [
              "current",
              "monthly",
              "quarterly",
              "yearly"
            ]
          },
          "direction": {
            "type": "string",
            "enum": [
              "up",
              "down",
              "any"
            ]
          },
          "points_range": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          }
        }
      },
      "SeniorityCountFilterDto": {
        "type": "object",
        "properties": {
          "group": {
            "type": "string",
            "enum": [
              "owner",
              "founder",
              "clevel",
              "partner",
              "vp",
              "head",
              "director",
              "manager",
              "senior",
              "mid",
              "junior",
              "intern",
              "specialist",
              "other_management"
            ]
          },
          "count": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          }
        }
      },
      "DepartmentCountFilterDto": {
        "type": "object",
        "properties": {
          "group": {
            "type": "string",
            "enum": [
              "medical",
              "sales",
              "hr",
              "legal",
              "marketing",
              "finance",
              "technical",
              "consulting",
              "operations",
              "product",
              "general_management",
              "administrative",
              "customer_service",
              "project_management",
              "design",
              "research",
              "trades",
              "real_estate",
              "education",
              "other_department"
            ]
          },
          "count": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          }
        }
      },
      "BaseSalaryFilterDto": {
        "type": "object",
        "properties": {
          "title": {
            "$ref": "#/components/schemas/CompanyIncludesExcludesFilterDto"
          },
          "range": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          }
        }
      },
      "LookAlikeFilterDto": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string"
          },
          "company_id": {
            "type": "number"
          },
          "_company_name": {
            "type": "string"
          },
          "_industry": {
            "type": "string"
          },
          "_categories_and_keywords": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "_technologies_used": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "_competitors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "_annual_revenue": {
            "type": "number"
          },
          "_followers_count_linkedin": {
            "type": "number"
          },
          "_total_website_visits_monthly": {
            "type": "number"
          },
          "_ownership_status": {
            "type": "string"
          }
        }
      },
      "VisitsBreakdownByCountryFilterDto": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string"
          },
          "percentage": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          }
        }
      },
      "VisitsBreakdownByGenderFilterDto": {
        "type": "object",
        "properties": {
          "gender": {
            "type": "string",
            "enum": [
              "male",
              "female"
            ]
          },
          "percentage": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          }
        }
      },
      "SearchCompaniesOpenAPIDto": {
        "type": "object",
        "properties": {
          "signalIds": {
            "type": "array",
            "items": {
              "type": "number",
              "maximum": 10,
              "minimum": 1
            }
          },
          "newsIds": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "company_name": {
            "$ref": "#/components/schemas/CompanyIncludesExcludesSimpleFilterDto"
          },
          "company_hq_location": {
            "$ref": "#/components/schemas/CompanyIncludesExcludesFilterDto"
          },
          "company_founded_year": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "company_industry": {
            "$ref": "#/components/schemas/CompanyIncludesExcludesSimpleFilterDto"
          },
          "company_domain": {
            "$ref": "#/components/schemas/CompanyIncludesExcludesSimpleFilterDto"
          },
          "type": {
            "type": "string",
            "enum": [
              "Private",
              "Public"
            ]
          },
          "sic_codes": {
            "$ref": "#/components/schemas/CompanyIncludesFilterDto"
          },
          "naics_codes": {
            "$ref": "#/components/schemas/CompanyIncludesFilterDto"
          },
          "product_reviews_score_change": {
            "$ref": "#/components/schemas/ProductReviewScoreChangeFilter"
          },
          "is_b2b": {
            "type": "boolean"
          },
          "technologies_used": {
            "$ref": "#/components/schemas/CompanyIncludesFilterDto"
          },
          "last_funding_round_name": {
            "$ref": "#/components/schemas/CompanyIncludesFilterDto"
          },
          "last_funding_round_amount_raised": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "last_funding_round_announced_date": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "funding_rounds_name": {
            "$ref": "#/components/schemas/CompanyIncludesFilterDto"
          },
          "company_funding_amount": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "company_funding_date": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "company_annual_revenue": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "company_size": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "employee_count_seniority": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SeniorityCountFilterDto"
            }
          },
          "employee_count_department": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DepartmentCountFilterDto"
            }
          },
          "base_salary": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BaseSalaryFilterDto"
            }
          },
          "ownership_status": {
            "type": "string",
            "enum": [
              "Private",
              "Public",
              "Other"
            ]
          },
          "website": {
            "$ref": "#/components/schemas/CompanyIncludesFilterDto"
          },
          "look_alike_company_name": {
            "maxItems": 5,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LookAlikeFilterDto"
            }
          },
          "linkedin_url": {
            "$ref": "#/components/schemas/CompanyIncludesExcludesFilterDto"
          },
          "followers_count_linkedin": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "active_job_postings_title": {
            "$ref": "#/components/schemas/CompanyIncludesFilterDto"
          },
          "active_job_postings_count": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "total_website_visits_monthly": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "rank_global": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "visits_breakdown_by_country": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VisitsBreakdownByCountryFilterDto"
            }
          },
          "visits_breakdown_by_gender": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VisitsBreakdownByGenderFilterDto"
            }
          },
          "product_reviews_aggregate_score": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "product_reviews_count": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "employee_reviews_total_count": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "employee_reviews_aggregate_score": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "employee_reviews_business_outlook": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "employee_reviews_ceo_approval": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "employee_reviews_career_opportunities": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "employee_reviews_recommend": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "employee_reviews_work_life_balance": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "employee_reviews_culture_values": {
            "$ref": "#/components/schemas/CompanyRangeFilterDto"
          },
          "keywords": {
            "$ref": "#/components/schemas/CompanyIncludesFilterDto"
          },
          "social_urls": {
            "$ref": "#/components/schemas/CompanyIncludesFilterDto"
          },
          "page": {
            "type": "number",
            "default": 1,
            "minimum": 1,
            "maximum": 400
          }
        }
      },
      "BulkAddToSequenceDto": {
        "type": "object",
        "properties": {
          "leadIds": {
            "description": "Lead IDs to add to the sequence (max 10000)",
            "example": [
              12345,
              67890
            ],
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "sequenceId": {
            "type": "string",
            "description": "Sequence ID",
            "example": "bwOLEx4l8G"
          },
          "stepId": {
            "type": "string",
            "description": "Step ID of the sequence",
            "example": "2dP27N0gZ4"
          },
          "tagIds": {
            "description": "Existing tag IDs to assign to the leads",
            "example": [
              "VMw56r9jPb"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "newTags": {
            "description": "New tag names to create and assign to the leads",
            "example": [
              "Tag1",
              "Tag2"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "leadIds",
          "sequenceId",
          "stepId"
        ]
      },
      "AiChatDto": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Natural-language query describing the leads or companies to find",
            "example": "Find fintech companies with 51-200 employees",
            "minLength": 1,
            "maxLength": 600
          },
          "conversationId": {
            "type": "string",
            "description": "Existing conversation id to continue a previous AI chat session"
          },
          "limit": {
            "type": "number",
            "description": "Maximum number of results to return (1-200). Defaults to 25. Larger values are fetched by paginating the underlying search.",
            "minimum": 1,
            "maximum": 200,
            "default": 25
          }
        },
        "required": [
          "query"
        ]
      },
      "HourMinuteDto": {
        "type": "object",
        "properties": {
          "hour": {
            "type": "number",
            "minimum": 0,
            "maximum": 23,
            "example": 9
          },
          "minute": {
            "type": "number",
            "minimum": 0,
            "maximum": 59,
            "example": 0
          }
        },
        "required": [
          "hour",
          "minute"
        ]
      },
      "SlotDto": {
        "type": "object",
        "properties": {
          "start": {
            "description": "Start time of the sending window.",
            "example": {
              "hour": 9,
              "minute": 0
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/HourMinuteDto"
              }
            ]
          },
          "end": {
            "description": "End time of the sending window.",
            "example": {
              "hour": 17,
              "minute": 0
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/HourMinuteDto"
              }
            ]
          }
        },
        "required": [
          "start",
          "end"
        ]
      },
      "TimeSlotDto": {
        "type": "object",
        "properties": {
          "day": {
            "type": "number",
            "minimum": 0,
            "maximum": 6,
            "description": "0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday",
            "example": 1
          },
          "slots": {
            "description": "Sending windows for this day. Pass an empty array to mark the day as inactive.",
            "example": [
              {
                "start": {
                  "hour": 9,
                  "minute": 0
                },
                "end": {
                  "hour": 17,
                  "minute": 0
                }
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SlotDto"
            }
          }
        },
        "required": [
          "day",
          "slots"
        ]
      },
      "CreateScheduleDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Human-readable label for the schedule.",
            "example": "Weekdays 9-5"
          },
          "timezone": {
            "type": "string",
            "description": "IANA timezone identifier (e.g. <code>America/New_York</code>, <code>Asia/Kolkata</code>). Must be a valid entry from the IANA Time Zone Database.",
            "example": "America/New_York"
          },
          "timeSlots": {
            "description": "Exactly 7 entries — one per day of the week (Sunday through Saturday). Days with no sending windows should have an empty <code>slots</code> array.",
            "minItems": 7,
            "maxItems": 7,
            "example": [
              {
                "day": 0,
                "slots": []
              },
              {
                "day": 1,
                "slots": [
                  {
                    "start": {
                      "hour": 9,
                      "minute": 0
                    },
                    "end": {
                      "hour": 17,
                      "minute": 0
                    }
                  }
                ]
              },
              {
                "day": 2,
                "slots": [
                  {
                    "start": {
                      "hour": 9,
                      "minute": 0
                    },
                    "end": {
                      "hour": 17,
                      "minute": 0
                    }
                  }
                ]
              },
              {
                "day": 3,
                "slots": [
                  {
                    "start": {
                      "hour": 9,
                      "minute": 0
                    },
                    "end": {
                      "hour": 17,
                      "minute": 0
                    }
                  }
                ]
              },
              {
                "day": 4,
                "slots": [
                  {
                    "start": {
                      "hour": 9,
                      "minute": 0
                    },
                    "end": {
                      "hour": 17,
                      "minute": 0
                    }
                  }
                ]
              },
              {
                "day": 5,
                "slots": [
                  {
                    "start": {
                      "hour": 9,
                      "minute": 0
                    },
                    "end": {
                      "hour": 17,
                      "minute": 0
                    }
                  }
                ]
              },
              {
                "day": 6,
                "slots": []
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimeSlotDto"
            }
          },
          "isDefault": {
            "type": "boolean",
            "description": "If true, mark this schedule as the account default. New sequences without an explicit scheduleId will use this schedule.",
            "example": false
          }
        },
        "required": [
          "name",
          "timezone",
          "timeSlots"
        ]
      },
      "ConditionDto": {
        "type": "object",
        "properties": {
          "conditionId": {
            "type": "string",
            "description": "Client-assigned identifier for the condition. Any string; auto-generated (11-char hex) when omitted.",
            "example": "cond-open-01"
          },
          "name": {
            "type": "string",
            "enum": [
              "Email Open Count",
              "Replied",
              "Reply Body Contains",
              "Link Click",
              "Prospect Outcome",
              "Last Step Completed",
              "Prospect Tag"
            ],
            "description": "Condition type. Must be one of the 7 valid values defined by <code>ConditionName</code>.",
            "example": "Replied"
          },
          "operation": {
            "type": "string",
            "enum": [
              "greater than",
              "less than",
              "greater than or equals",
              "less than or equals",
              "is",
              "is not",
              "is any",
              "is not any",
              "contains"
            ],
            "description": "Operator valid for the selected <code>name</code>. See the condition matrix in the API docs — invalid name/operation combinations are rejected with a 400.",
            "example": "is"
          },
          "value": {
            "description": "Threshold or filter value. Type depends on <code>name</code> × <code>operation</code>: integer, boolean, string[] (URLs or keywords), or integer[] (IDs). Omit entirely for <code>Link Click</code> with <code>is any</code> / <code>is not any</code>.",
            "example": false,
            "oneOf": [
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              {
                "type": "array",
                "items": {
                  "type": "integer"
                }
              }
            ]
          }
        },
        "required": [
          "name",
          "operation"
        ]
      },
      "CreateSubsequenceDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Subsequence title. 1–200 characters.",
            "example": "Re-engagement Subsequence",
            "minLength": 1,
            "maxLength": 200
          },
          "scheduleId": {
            "type": "number",
            "description": "Sending schedule ID (integer). Use <code>GET /v1/schedules</code> to list available IDs. When omitted, the account default schedule is assigned.",
            "example": 58964
          },
          "firstStepRelativeDays": {
            "type": "number",
            "description": "Days after the trigger fires before the first step runs (entry delay). Minimum 1. When omitted, no delay is applied.",
            "example": 2,
            "minimum": 1
          },
          "conditions": {
            "description": "Trigger conditions (min 1). All conditions use implicit AND logic. Each item is validated against the condition matrix — invalid name/operation/value combinations are rejected with a 400.",
            "example": [
              {
                "name": "Replied",
                "operation": "is",
                "value": false
              },
              {
                "conditionId": "cond-open-01",
                "name": "Email Open Count",
                "operation": "greater than",
                "value": 3
              },
              {
                "name": "Link Click",
                "operation": "is any"
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConditionDto"
            }
          }
        },
        "required": [
          "title",
          "conditions"
        ]
      },
      "UpdateSubsequenceDto": {
        "type": "object",
        "properties": {
          "scheduleId": {
            "type": "number",
            "description": "Replace the current sending schedule. Use <code>GET /v1/schedules</code> to list available IDs.",
            "example": 60030
          },
          "firstStepRelativeDays": {
            "type": "number",
            "description": "Replace the entry delay (days after the trigger before the first step runs). Minimum 1.",
            "example": 3,
            "minimum": 1
          },
          "conditions": {
            "description": "Replace all current conditions with this new set (full-replacement, not append). Must contain at least 1 item when supplied. Passing <code>conditions: []</code> is silently ignored by the internal API — does NOT clear conditions.",
            "example": [
              {
                "conditionId": "cond-open-01",
                "name": "Email Open Count",
                "operation": "greater than",
                "value": 3
              },
              {
                "name": "Replied",
                "operation": "is",
                "value": false
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConditionDto"
            }
          }
        }
      },
      "GenerateMailboxNamesDto": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "Sender's first name.",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "Sender's last name.",
            "example": "Smith"
          },
          "domain": {
            "type": "string",
            "description": "The domain to generate addresses for (e.g. \"tryoutreachteam.com\").",
            "example": "tryoutreachteam.com"
          },
          "count": {
            "type": "number",
            "description": "Number of suggestions to return. Min 1, max 100.",
            "example": 5,
            "minimum": 1,
            "maximum": 100
          }
        },
        "required": [
          "firstName",
          "lastName",
          "domain",
          "count"
        ]
      },
      "PurchaseDomainMailboxDto": {
        "type": "object",
        "properties": {
          "firstname": {
            "type": "string",
            "description": "Mailbox owner's first name (used as sender display name). 1–50 chars. Note: field is 'firstname' (lowercase 'n').",
            "example": "John",
            "minLength": 1,
            "maxLength": 50
          },
          "lastname": {
            "type": "string",
            "description": "Mailbox owner's last name. 1–50 chars.",
            "example": "Smith",
            "minLength": 1,
            "maxLength": 50
          },
          "email": {
            "type": "string",
            "description": "Full email address to create (e.g. \"john.smith@tryoutreachteam.com\"). Must use the parent domain.",
            "example": "john.smith@tryoutreachteam.com"
          },
          "profilePicId": {
            "type": "number",
            "description": "Numeric ID of a pre-uploaded profile picture from POST /v1/domain/profile-picture/upload. Pass 0 for no picture.",
            "example": 0,
            "minimum": 0
          }
        },
        "required": [
          "firstname",
          "lastname",
          "email",
          "profilePicId"
        ]
      },
      "PurchaseDomainItemDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Domain name to register (e.g. \"tryoutreachteam.com\"). 3–254 chars. No protocol prefix.",
            "example": "tryoutreachteam.com",
            "minLength": 3,
            "maxLength": 254
          },
          "redirectUrl": {
            "type": "string",
            "description": "Forward Domain — bare domain only, no http:// or https:// prefix. HTTP visitors are forwarded here. 3–254 chars.",
            "example": "acmecorp.com"
          },
          "mailboxes": {
            "description": "One entry per mailbox to create on this domain. Minimum 1.",
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PurchaseDomainMailboxDto"
            }
          }
        },
        "required": [
          "name",
          "redirectUrl",
          "mailboxes"
        ]
      },
      "PurchaseDomainDto": {
        "type": "object",
        "properties": {
          "domainOwnerFirstname": {
            "type": "string",
            "description": "Registrant first name. 1–50 characters.",
            "example": "John",
            "minLength": 1,
            "maxLength": 50
          },
          "domainOwnerLastname": {
            "type": "string",
            "description": "Registrant last name. 1–50 characters.",
            "example": "Smith",
            "minLength": 1,
            "maxLength": 50
          },
          "companyName": {
            "type": "string",
            "description": "Registrant organisation name.",
            "example": "Acme Corp"
          },
          "address": {
            "type": "string",
            "description": "Registrant street address.",
            "example": "123 Market Street"
          },
          "city": {
            "type": "string",
            "description": "Registrant city.",
            "example": "San Francisco"
          },
          "state": {
            "type": "string",
            "description": "Registrant state or province.",
            "example": "CA"
          },
          "country": {
            "type": "string",
            "description": "Registrant country. ISO alpha-2 code (e.g. \"US\", \"IN\").",
            "example": "US"
          },
          "zipcode": {
            "type": "string",
            "description": "Postal code. Must be valid for the given country.",
            "example": "94105"
          },
          "phoneNumber": {
            "type": "string",
            "description": "Registrant phone in E.164 format — + + country code + number (e.g. \"+14155551234\").",
            "example": "+14155551234"
          },
          "emailServiceProvider": {
            "type": "string",
            "description": "The provider used to provision mailboxes. Determines pricing and infrastructure.",
            "enum": [
              "Google",
              "Microsoft",
              "Azure"
            ],
            "example": "Google"
          },
          "planType": {
            "type": "string",
            "description": "Billing cycle for mailbox subscriptions. \"quarterly\" (default), \"annualFlexi\", or \"annualFixed\". NOTE: Azure only supports \"quarterly\" — passing any other value returns a 400 error.",
            "example": "quarterly",
            "enum": [
              "quarterly",
              "annualFlexi",
              "annualFixed"
            ]
          },
          "domains": {
            "description": "One entry per domain to purchase. Minimum 1.",
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PurchaseDomainItemDto"
            }
          },
          "isReplacement": {
            "type": "boolean",
            "description": "Set true to fulfil this order using replacement-slot credits from a previously cancelled or expired order.",
            "example": false
          },
          "isFreeOrder": {
            "type": "boolean",
            "description": "Set true to use free-tier domain/mailbox credits on the account.",
            "example": false
          }
        },
        "required": [
          "domainOwnerFirstname",
          "domainOwnerLastname",
          "companyName",
          "address",
          "country",
          "zipcode",
          "phoneNumber",
          "emailServiceProvider",
          "domains"
        ]
      },
      "CreateNoteDto": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "The content of the note. Supports plain text and HTML.",
            "example": "Follow up with this prospect next week regarding the demo."
          },
          "visibility": {
            "type": "string",
            "description": "Who can see this note. Use \"1\" for public (visible to all team members) or \"2\" for private (visible only to you).",
            "enum": [
              "1",
              "2"
            ],
            "example": "1"
          },
          "prospectIds": {
            "description": "List of prospect IDs to attach the note to. Pass a single-element array for a single prospect, or multiple IDs to attach the same note to several prospects in one request.",
            "example": [
              "8PvBmrB7P7"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "attachmentIds": {
            "description": "IDs of attachments to associate with this note. Upload via POST /v1/notes/attachments to obtain each attachmentId.",
            "example": [
              "Aw83gqRXvk",
              "BV4yLpC2nX"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "status": {
            "type": "string",
            "description": "The status of the note. Use \"0\" for draft or \"1\" for published. Defaults to \"1\" (published) if not provided.",
            "enum": [
              "0",
              "1"
            ],
            "default": "1",
            "example": "1"
          }
        },
        "required": [
          "content",
          "visibility",
          "prospectIds"
        ]
      },
      "UpdateNoteDto": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "The updated content of the note. Supports plain text.",
            "example": "Prospect confirmed interest. Schedule a demo call for next Monday."
          },
          "visibility": {
            "type": "string",
            "description": "Updated visibility setting. Use \"1\" for public (visible to all team members) or \"2\" for private (visible only to you).",
            "enum": [
              "1",
              "2"
            ],
            "example": "2"
          },
          "status": {
            "type": "string",
            "description": "Updated status of the note. Use \"0\" for draft or \"1\" for published.",
            "enum": [
              "0",
              "1"
            ],
            "example": "1"
          }
        }
      },
      "CreateWebhookDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Display name for the webhook.",
            "example": "Email Sent Webhook"
          },
          "webhookUrl": {
            "type": "string",
            "description": "Destination URL where the webhook payload will be delivered.",
            "example": "https://example.org/webhooks/email-sent"
          },
          "webhookEvent": {
            "type": "array",
            "description": "Webhook events to subscribe to. Accepted values: email-sent, email-opened, email-link-clicked, reply-received, email-bounced, prospect-unsubscribed, prospect-finished, prospect-outcome-updated, sequence-paused, email-account-disconnected, email-account-paused, inbox-analyser-test-completed, task-created, bulk-task-updated, call-task-updated, linkedin-task-updated, custom-task-updated, whatsapp-task-updated, task-updated.",
            "example": [
              "email-sent"
            ],
            "items": {
              "type": "string",
              "enum": [
                "email-sent",
                "email-opened",
                "email-link-clicked",
                "reply-received",
                "email-bounced",
                "prospect-unsubscribed",
                "prospect-finished",
                "prospect-outcome-updated",
                "sequence-paused",
                "email-account-disconnected",
                "email-account-paused",
                "inbox-analyser-test-completed",
                "task-created",
                "bulk-task-updated",
                "call-task-updated",
                "linkedin-task-updated",
                "custom-task-updated",
                "whatsapp-task-updated",
                "task-updated"
              ]
            }
          },
          "headers": {
            "type": "object",
            "description": "Custom HTTP headers included in each webhook delivery. Pass `{}` if no custom headers are needed.",
            "example": {
              "X-Webhook-Source": "saleshandy"
            }
          }
        },
        "required": [
          "name",
          "webhookUrl",
          "webhookEvent",
          "headers"
        ]
      }
    }
  }
}