You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by pa...@apache.org on 2023/11/06 13:49:40 UTC

(airflow) branch main updated: Add Cohere Provider (#34921)

This is an automated email from the ASF dual-hosted git repository.

pankaj pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 7fc19d4fdb Add Cohere Provider (#34921)
7fc19d4fdb is described below

commit 7fc19d4fdbe0e6a2e720aac72e1042aab1dd4cb6
Author: Utkarsh Sharma <ut...@gmail.com>
AuthorDate: Mon Nov 6 19:19:32 2023 +0530

    Add Cohere Provider (#34921)
    
    * Add Cohere Provider
    
    * Add Cohere Provider
    
    * Move link to seealso sphinx directive
    
    * Updated check for parameters
    
    * Update dependency of the cohere
    
    * Move the dag out of rst and into system tests
    
    * Add dependency to of cohere python sdk
    
    * Add cache_property for the cohere client
    
    * Remove unwanted get_conn method
    
    * Add correct label to password field
    
    * Expose timeout, max_retries and api_url to user
    
    * Fix documentation
    
    * Update interface of CohereEmbeddingOperator operator
    
    * Updated testcases
    
    * Updated testcases
    
    * Fix static check and docs build
    
    * Update CONTRIBUTING.rst
    
    Co-authored-by: Josh Fell <48...@users.noreply.github.com>
    
    * Update docs/apache-airflow-providers-cohere/operators/embedding.rst
    
    Co-authored-by: Josh Fell <48...@users.noreply.github.com>
    
    * Update airflow/providers/cohere/operators/embedding.py
    
    Co-authored-by: Josh Fell <48...@users.noreply.github.com>
    
    * Update airflow/providers/cohere/hooks/cohere.py
    
    Co-authored-by: Hussein Awala <hu...@awala.fr>
    
    * Update airflow/providers/cohere/CHANGELOG.rst
    
    Co-authored-by: Hussein Awala <hu...@awala.fr>
    
    * Address the PR comments
    
    * Resolve conflicts
    
    * Fix breaking tests
    
    * Fix static checks
    
    * Update airflow/providers/cohere/operators/embedding.py
    
    Co-authored-by: Pankaj Singh <98...@users.noreply.github.com>
    
    * Fix docstring
    
    * Add note for initial release
    
    * Add security.rst file
    
    * Update airflow/providers/cohere/hooks/cohere.py
    
    * Update airflow/providers/cohere/operators/embedding.py
    
    Co-authored-by: Josh Fell <48...@users.noreply.github.com>
    
    * Update docs/apache-airflow-providers-cohere/operators/embedding.rst
    
    Co-authored-by: Josh Fell <48...@users.noreply.github.com>
    
    * Add ref to sequrity.rst
    
    * Update docs/apache-airflow-providers-cohere/security.rst
    
    * Add /changelog.rst
    
    * Resolve conflicts
    
    ---------
    
    Co-authored-by: Josh Fell <48...@users.noreply.github.com>
    Co-authored-by: Hussein Awala <hu...@awala.fr>
    Co-authored-by: Pankaj Singh <98...@users.noreply.github.com>
    Co-authored-by: Pankaj <pa...@astronomer.io>
---
 .../airflow_providers_bug_report.yml               |  1 +
 CONTRIBUTING.rst                                   |  6 +-
 INSTALL                                            |  6 +-
 .../providers/cohere/.latest-doc-only-change.txt   |  1 +
 airflow/providers/cohere/CHANGELOG.rst             | 26 ++++++
 airflow/providers/cohere/__init__.py               | 24 ++++++
 airflow/providers/cohere/hooks/__init__.py         | 24 ++++++
 airflow/providers/cohere/hooks/cohere.py           | 83 ++++++++++++++++++
 airflow/providers/cohere/operators/__init__.py     | 16 ++++
 airflow/providers/cohere/operators/embedding.py    | 69 +++++++++++++++
 airflow/providers/cohere/provider.yaml             | 54 ++++++++++++
 docs/apache-airflow-providers-cohere/changelog.rst | 18 ++++
 docs/apache-airflow-providers-cohere/commits.rst   | 19 +++++
 .../connections.rst                                | 37 ++++++++
 docs/apache-airflow-providers-cohere/index.rst     | 98 ++++++++++++++++++++++
 .../installing-providers-from-sources.rst          | 18 ++++
 .../operators/embedding.rst                        | 40 +++++++++
 docs/apache-airflow-providers-cohere/security.rst  | 19 +++++
 docs/apache-airflow/extra-packages-ref.rst         |  2 +
 generated/provider_dependencies.json               |  8 ++
 images/breeze/output-commands-hash.txt             | 18 ++--
 images/breeze/output_build-docs.svg                |  2 +-
 ...tput_release-management_add-back-references.svg |  8 +-
 ...management_generate-issue-content-providers.svg | 12 +--
 ...e-management_prepare-provider-documentation.svg | 12 +--
 ...elease-management_prepare-provider-packages.svg | 12 +--
 .../output_release-management_publish-docs.svg     |  2 +-
 ...output_sbom_generate-providers-requirements.svg | 16 ++--
 tests/providers/cohere/__init__.py                 | 16 ++++
 tests/providers/cohere/hooks/__init__.py           | 16 ++++
 tests/providers/cohere/hooks/test_cohere.py        | 46 ++++++++++
 tests/providers/cohere/operators/__init__.py       | 16 ++++
 tests/providers/cohere/operators/test_embedding.py | 56 +++++++++++++
 tests/system/providers/cohere/__init__.py          | 16 ++++
 .../cohere/example_cohere_embedding_operator.py    | 40 +++++++++
 35 files changed, 810 insertions(+), 47 deletions(-)

diff --git a/.github/ISSUE_TEMPLATE/airflow_providers_bug_report.yml b/.github/ISSUE_TEMPLATE/airflow_providers_bug_report.yml
index 4c3a0a9819..e8a221be9c 100644
--- a/.github/ISSUE_TEMPLATE/airflow_providers_bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/airflow_providers_bug_report.yml
@@ -48,6 +48,7 @@ body:
         - celery
         - cloudant
         - cncf-kubernetes
+        - cohere
         - common-io
         - common-sql
         - daskexecutor
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index a3fe3386eb..15783d1c9c 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -671,9 +671,9 @@ aiobotocore, airbyte, alibaba, all, all_dbs, amazon, apache.atlas, apache.beam,
 apache.drill, apache.druid, apache.flink, apache.hdfs, apache.hive, apache.impala, apache.kafka,
 apache.kylin, apache.livy, apache.pig, apache.pinot, apache.spark, apache.sqoop, apache.webhdfs,
 apprise, arangodb, asana, async, atlas, atlassian.jira, aws, azure, cassandra, celery, cgroups,
-cloudant, cncf.kubernetes, common.io, common.sql, crypto, dask, daskexecutor, databricks, datadog,
-dbt.cloud, deprecated_api, devel, devel_all, devel_ci, devel_hadoop, dingding, discord, doc,
-doc_gen, docker, druid, elasticsearch, exasol, facebook, ftp, gcp, gcp_api, github,
+cloudant, cncf.kubernetes, cohere, common.io, common.sql, crypto, dask, daskexecutor, databricks,
+datadog, dbt.cloud, deprecated_api, devel, devel_all, devel_ci, devel_hadoop, dingding, discord,
+doc, doc_gen, docker, druid, elasticsearch, exasol, facebook, ftp, gcp, gcp_api, github,
 github_enterprise, google, google_auth, grpc, hashicorp, hdfs, hive, http, imap, influxdb, jdbc,
 jenkins, kerberos, kubernetes, ldap, leveldb, microsoft.azure, microsoft.mssql, microsoft.psrp,
 microsoft.winrm, mongo, mssql, mysql, neo4j, odbc, openfaas, openlineage, opensearch, opsgenie,
diff --git a/INSTALL b/INSTALL
index b76af9d622..6e233fe0a0 100644
--- a/INSTALL
+++ b/INSTALL
@@ -98,9 +98,9 @@ aiobotocore, airbyte, alibaba, all, all_dbs, amazon, apache.atlas, apache.beam,
 apache.drill, apache.druid, apache.flink, apache.hdfs, apache.hive, apache.impala, apache.kafka,
 apache.kylin, apache.livy, apache.pig, apache.pinot, apache.spark, apache.sqoop, apache.webhdfs,
 apprise, arangodb, asana, async, atlas, atlassian.jira, aws, azure, cassandra, celery, cgroups,
-cloudant, cncf.kubernetes, common.io, common.sql, crypto, dask, daskexecutor, databricks, datadog,
-dbt.cloud, deprecated_api, devel, devel_all, devel_ci, devel_hadoop, dingding, discord, doc,
-doc_gen, docker, druid, elasticsearch, exasol, facebook, ftp, gcp, gcp_api, github,
+cloudant, cncf.kubernetes, cohere, common.io, common.sql, crypto, dask, daskexecutor, databricks,
+datadog, dbt.cloud, deprecated_api, devel, devel_all, devel_ci, devel_hadoop, dingding, discord,
+doc, doc_gen, docker, druid, elasticsearch, exasol, facebook, ftp, gcp, gcp_api, github,
 github_enterprise, google, google_auth, grpc, hashicorp, hdfs, hive, http, imap, influxdb, jdbc,
 jenkins, kerberos, kubernetes, ldap, leveldb, microsoft.azure, microsoft.mssql, microsoft.psrp,
 microsoft.winrm, mongo, mssql, mysql, neo4j, odbc, openfaas, openlineage, opensearch, opsgenie,
diff --git a/airflow/providers/cohere/.latest-doc-only-change.txt b/airflow/providers/cohere/.latest-doc-only-change.txt
new file mode 100644
index 0000000000..14a9c1ef7c
--- /dev/null
+++ b/airflow/providers/cohere/.latest-doc-only-change.txt
@@ -0,0 +1 @@
+c645d8e40c167ea1f6c332cdc3ea0ca5a9363205
diff --git a/airflow/providers/cohere/CHANGELOG.rst b/airflow/providers/cohere/CHANGELOG.rst
new file mode 100644
index 0000000000..54baa1945c
--- /dev/null
+++ b/airflow/providers/cohere/CHANGELOG.rst
@@ -0,0 +1,26 @@
+ .. Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+ ..   http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+``apache-airflow-providers-cohere``
+
+Changelog
+---------
+
+1.0.0
+.....
+
+Initial version of the provider.
diff --git a/airflow/providers/cohere/__init__.py b/airflow/providers/cohere/__init__.py
new file mode 100644
index 0000000000..c88b314548
--- /dev/null
+++ b/airflow/providers/cohere/__init__.py
@@ -0,0 +1,24 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE
+# OVERWRITTEN WHEN PREPARING DOCUMENTATION FOR THE PACKAGES.
+#
+# IF YOU WANT TO MODIFY IT, YOU SHOULD MODIFY THE TEMPLATE
+# `PROVIDER__INIT__PY_TEMPLATE.py.jinja2` IN the `dev/provider_packages` DIRECTORY
+#
diff --git a/airflow/providers/cohere/hooks/__init__.py b/airflow/providers/cohere/hooks/__init__.py
new file mode 100644
index 0000000000..c88b314548
--- /dev/null
+++ b/airflow/providers/cohere/hooks/__init__.py
@@ -0,0 +1,24 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE
+# OVERWRITTEN WHEN PREPARING DOCUMENTATION FOR THE PACKAGES.
+#
+# IF YOU WANT TO MODIFY IT, YOU SHOULD MODIFY THE TEMPLATE
+# `PROVIDER__INIT__PY_TEMPLATE.py.jinja2` IN the `dev/provider_packages` DIRECTORY
+#
diff --git a/airflow/providers/cohere/hooks/cohere.py b/airflow/providers/cohere/hooks/cohere.py
new file mode 100644
index 0000000000..20c77d5869
--- /dev/null
+++ b/airflow/providers/cohere/hooks/cohere.py
@@ -0,0 +1,83 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from __future__ import annotations
+
+from functools import cached_property
+from typing import Any
+
+import cohere
+
+from airflow.hooks.base import BaseHook
+
+
+class CohereHook(BaseHook):
+    """
+    Use Cohere Python SDK to interact with Cohere platform.
+
+    .. seealso:: https://docs.cohere.com/docs
+
+    :param conn_id: :ref:`Cohere connection id <howto/connection:cohere>`
+    :param timeout: Request timeout in seconds.
+    :param max_retries: Maximal number of retries for requests.
+    """
+
+    conn_name_attr = "conn_id"
+    default_conn_name = "cohere_default"
+    conn_type = "cohere"
+    hook_name = "Cohere"
+
+    def __init__(
+        self,
+        conn_id: str = default_conn_name,
+        timeout: int | None = None,
+        max_retries: int | None = None,
+    ) -> None:
+        super().__init__()
+        self.conn_id = conn_id
+        self.timeout = timeout
+        self.max_retries = max_retries
+
+    @cached_property
+    def get_conn(self) -> cohere.Client:
+        conn = self.get_connection(self.conn_id)
+        return cohere.Client(
+            api_key=conn.password, timeout=self.timeout, max_retries=self.max_retries, api_url=conn.host
+        )
+
+    def create_embeddings(
+        self, texts: list[str], model: str = "embed-multilingual-v2.0"
+    ) -> list[list[float]]:
+        response = self.get_conn.embed(texts=texts, model=model)
+        embeddings = response.embeddings
+        return embeddings
+
+    @staticmethod
+    def get_ui_field_behaviour() -> dict[str, Any]:
+        return {
+            "hidden_fields": ["schema", "login", "port", "extra"],
+            "relabeling": {
+                "password": "API Key",
+            },
+        }
+
+    def test_connection(self) -> tuple[bool, str]:
+        try:
+            self.get_conn.generate("Test", max_tokens=10)
+            return True, "Connection established"
+        except Exception as e:
+            return False, str(e)
diff --git a/airflow/providers/cohere/operators/__init__.py b/airflow/providers/cohere/operators/__init__.py
new file mode 100644
index 0000000000..13a83393a9
--- /dev/null
+++ b/airflow/providers/cohere/operators/__init__.py
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
diff --git a/airflow/providers/cohere/operators/embedding.py b/airflow/providers/cohere/operators/embedding.py
new file mode 100644
index 0000000000..dba95e7e8f
--- /dev/null
+++ b/airflow/providers/cohere/operators/embedding.py
@@ -0,0 +1,69 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+from __future__ import annotations
+
+from functools import cached_property
+from typing import TYPE_CHECKING, Any, Sequence
+
+from airflow.models import BaseOperator
+from airflow.providers.cohere.hooks.cohere import CohereHook
+
+if TYPE_CHECKING:
+    from airflow.utils.context import Context
+
+
+class CohereEmbeddingOperator(BaseOperator):
+    """Creates the embedding base by interacting with cohere hosted services.
+
+    .. seealso::
+        For more information on how to use this operator, take a look at the guide:
+        :ref:`howto/operator:CohereEmbeddingOperator`
+
+    :param input_text: single string text or list of text items that need to be embedded.
+    :param conn_id: Optional. The name of the Airflow connection to get connection
+        information for Cohere. Defaults to "cohere_default".
+    :param timeout: Timeout in seconds for Cohere API.
+    :param max_retries: Number of times to retry before failing.
+    """
+
+    template_fields: Sequence[str] = ("input_text",)
+
+    def __init__(
+        self,
+        input_text: list[str] | str,
+        conn_id: str = CohereHook.default_conn_name,
+        timeout: int | None = None,
+        max_retries: int | None = None,
+        **kwargs: Any,
+    ):
+        super().__init__(**kwargs)
+        if isinstance(input_text, str):
+            input_text = [input_text]
+        self.conn_id = conn_id
+        self.input_text = input_text
+        self.timeout = timeout
+        self.max_retries = max_retries
+
+    @cached_property
+    def hook(self) -> CohereHook:
+        """Return an instance of the CohereHook."""
+        return CohereHook(conn_id=self.conn_id, timeout=self.timeout, max_retries=self.max_retries)
+
+    def execute(self, context: Context) -> list[list[float]]:
+        """Embed texts using Cohere embed services."""
+        return self.hook.create_embeddings(self.input_text)
diff --git a/airflow/providers/cohere/provider.yaml b/airflow/providers/cohere/provider.yaml
new file mode 100644
index 0000000000..55500e0e76
--- /dev/null
+++ b/airflow/providers/cohere/provider.yaml
@@ -0,0 +1,54 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+---
+package-name: apache-airflow-providers-cohere
+
+name: Cohere
+
+description: |
+    `Cohere <https://docs.cohere.com/docs>`__
+
+suspended: false
+
+versions:
+  - 1.0.0
+
+integrations:
+  - integration-name: Cohere
+    external-doc-url: https://docs.cohere.com/docs
+    how-to-guide:
+      - /docs/apache-airflow-providers-cohere/operators/embedding.rst
+    tags: [software]
+
+dependencies:
+  - apache-airflow>=2.5.0
+  - cohere>=4.27
+
+hooks:
+  - integration-name: Cohere
+    python-modules:
+      - airflow.providers.cohere.hooks.cohere
+
+operators:
+  - integration-name: Cohere
+    python-modules:
+      - airflow.providers.cohere.operators.embedding
+
+connection-types:
+  - hook-class-name: airflow.providers.cohere.hooks.cohere.CohereHook
+    connection-type: cohere
diff --git a/docs/apache-airflow-providers-cohere/changelog.rst b/docs/apache-airflow-providers-cohere/changelog.rst
new file mode 100644
index 0000000000..be95cf4557
--- /dev/null
+++ b/docs/apache-airflow-providers-cohere/changelog.rst
@@ -0,0 +1,18 @@
+ .. Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+ ..   http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+.. include:: ../../airflow/providers/cohere/CHANGELOG.rst
diff --git a/docs/apache-airflow-providers-cohere/commits.rst b/docs/apache-airflow-providers-cohere/commits.rst
new file mode 100644
index 0000000000..f69ac2c0ad
--- /dev/null
+++ b/docs/apache-airflow-providers-cohere/commits.rst
@@ -0,0 +1,19 @@
+ .. Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+ ..   http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+Package apache-airflow-providers-cohere
+-------------------------------------------
diff --git a/docs/apache-airflow-providers-cohere/connections.rst b/docs/apache-airflow-providers-cohere/connections.rst
new file mode 100644
index 0000000000..0ab583dfd5
--- /dev/null
+++ b/docs/apache-airflow-providers-cohere/connections.rst
@@ -0,0 +1,37 @@
+ .. Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+ ..   http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+.. _howto/connection:cohere:
+
+Cohere Connection
+=======================
+
+The `Cohere <https://cohere.com/>`__ connection type enables access to Cohere APIs, which we can use to interact with multilingual models.
+
+Default Connection IDs
+----------------------
+
+Cohere hooks point to ``cohere_default`` by default.
+
+Configuring the Connection
+--------------------------
+
+Password (required)
+    Specify the password to connect.
+
+Host (optional)
+    Specify the API host
diff --git a/docs/apache-airflow-providers-cohere/index.rst b/docs/apache-airflow-providers-cohere/index.rst
new file mode 100644
index 0000000000..8bfd1678a3
--- /dev/null
+++ b/docs/apache-airflow-providers-cohere/index.rst
@@ -0,0 +1,98 @@
+
+ .. Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+ ..   http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+``apache-airflow-providers-cohere``
+======================================
+
+
+.. toctree::
+    :hidden:
+    :maxdepth: 1
+    :caption: Basics
+
+    Home <self>
+    Changelog <changelog>
+    Security <security>
+
+.. toctree::
+    :hidden:
+    :maxdepth: 1
+    :caption: Guides
+
+    Connection types <connections>
+    Operators <operators/embedding>
+
+.. toctree::
+    :hidden:
+    :maxdepth: 1
+    :caption: Resources
+
+    Python API <_api/airflow/providers/cohere/index>
+    PyPI Repository <https://pypi.org/project/apache-airflow-providers-cohere/>
+    Installing from sources <installing-providers-from-sources>
+
+.. toctree::
+    :hidden:
+    :maxdepth: 1
+    :caption: System tests
+
+    System Tests <_api/tests/system/providers/cohere/index>
+
+Package apache-airflow-providers-cohere
+-----------------------------------------
+
+`Cohere <https://cohere.com>`__
+
+
+Release: 1.0.0
+
+Provider package
+----------------
+
+This is a provider package for ``cohere`` APIs. All classes for this provider package
+are in ``airflow.providers.cohere`` python module.
+
+Installation
+------------
+
+You can install this package on top of an existing Airflow 2 installation (see ``Requirements`` below)
+for the minimum Airflow version supported) via
+``pip install apache-airflow-providers-cohere``
+
+
+Requirements
+------------
+
+The minimum Apache Airflow version supported by this provider package is ``2.5.0``.
+
+==================  ==================
+PIP package         Version required
+==================  ==================
+``apache-airflow``  ``>=2.5.0``
+``cohere``          ``>=4.27``
+==================  ==================
+
+.. THE REMAINDER OF THE FILE IS AUTOMATICALLY GENERATED. IT WILL BE OVERWRITTEN AT RELEASE TIME!
+
+
+.. toctree::
+    :hidden:
+    :maxdepth: 1
+    :caption: Commits
+
+    Detailed list of commits <commits>
diff --git a/docs/apache-airflow-providers-cohere/installing-providers-from-sources.rst b/docs/apache-airflow-providers-cohere/installing-providers-from-sources.rst
new file mode 100644
index 0000000000..b4e730f4ff
--- /dev/null
+++ b/docs/apache-airflow-providers-cohere/installing-providers-from-sources.rst
@@ -0,0 +1,18 @@
+ .. Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+ ..   http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+.. include:: ../exts/includes/installing-providers-from-sources.rst
diff --git a/docs/apache-airflow-providers-cohere/operators/embedding.rst b/docs/apache-airflow-providers-cohere/operators/embedding.rst
new file mode 100644
index 0000000000..b765fe8e9d
--- /dev/null
+++ b/docs/apache-airflow-providers-cohere/operators/embedding.rst
@@ -0,0 +1,40 @@
+ .. Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+ ..   http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+.. _howto/operator:CohereEmbeddingOperator:
+
+CohereEmbeddingOperator
+========================
+
+Use the :class:`~airflow.providers.cohere.operators.embedding.CohereEmbeddingOperator` to
+interact with Cohere APIs to create embeddings for a given text.
+
+
+Using the Operator
+^^^^^^^^^^^^^^^^^^
+
+The CohereEmbeddingOperator requires the ``input_text`` as an input to embedding API. Use the ``conn_id`` parameter to specify the Cohere connection to use to
+connect to your account.
+
+Example Code:
+-------------
+
+.. exampleinclude:: /../../tests/system/providers/cohere/example_cohere_embedding_operator.py
+    :language: python
+    :dedent: 4
+    :start-after: [START howto_operator_cohere_embedding]
+    :end-before: [END howto_operator_cohere_embedding]
diff --git a/docs/apache-airflow-providers-cohere/security.rst b/docs/apache-airflow-providers-cohere/security.rst
new file mode 100644
index 0000000000..b8f95e6ecf
--- /dev/null
+++ b/docs/apache-airflow-providers-cohere/security.rst
@@ -0,0 +1,19 @@
+
+ .. Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+ ..   http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+.. include:: ../exts/includes/security.rst
diff --git a/docs/apache-airflow/extra-packages-ref.rst b/docs/apache-airflow/extra-packages-ref.rst
index dba750908d..9f7fcc9a03 100644
--- a/docs/apache-airflow/extra-packages-ref.rst
+++ b/docs/apache-airflow/extra-packages-ref.rst
@@ -172,6 +172,8 @@ These are extras that add dependencies needed for integration with external serv
 +---------------------+-----------------------------------------------------+-----------------------------------------------------+
 | cloudant            | ``pip install 'apache-airflow[cloudant]'``          | Cloudant hook                                       |
 +---------------------+-----------------------------------------------------+-----------------------------------------------------+
+| cohere              | ``pip install 'apache-airflow[cohere]'``            | Cohere hook and operators                           |
++---------------------+-----------------------------------------------------+-----------------------------------------------------+
 | databricks          | ``pip install 'apache-airflow[databricks]'``        | Databricks hooks and operators                      |
 +---------------------+-----------------------------------------------------+-----------------------------------------------------+
 | datadog             | ``pip install 'apache-airflow[datadog]'``           | Datadog hooks and sensors                           |
diff --git a/generated/provider_dependencies.json b/generated/provider_dependencies.json
index 38d2259dab..8be76a03e9 100644
--- a/generated/provider_dependencies.json
+++ b/generated/provider_dependencies.json
@@ -269,6 +269,14 @@
     "cross-providers-deps": [],
     "excluded-python-versions": []
   },
+  "cohere": {
+    "deps": [
+      "apache-airflow>=2.5.0",
+      "cohere>=4.27"
+    ],
+    "cross-providers-deps": [],
+    "excluded-python-versions": []
+  },
   "common.io": {
     "deps": [
       "apache-airflow>=2.8.0"
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index 64ba323baa..a5d9a89c8d 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -2,7 +2,7 @@
 # Please do not solve it but run `breeze setup regenerate-command-images`.
 # This command should fix the conflict and regenerate help images that you have conflict with.
 main:96b4884054753db922cb8ca2cc555368
-build-docs:2e9882744f219e56726548ce2d13c3f5
+build-docs:3863424b58f31d5a2b285055b044ad70
 ci:find-backtracking-candidates:17fe56b867a745e5032a08dfcd3f73ee
 ci:fix-ownership:3e5a73533cc96045e72cb258783cfc96
 ci:free-space:49af17b032039c05c41a7a8283f365cc
@@ -36,26 +36,26 @@ prod-image:build:1628f7bff3e7e369f0358a646682e674
 prod-image:pull:3817ef211b023b76df84ee1110ef64dd
 prod-image:verify:bd2b78738a7c388dbad6076c41a9f906
 prod-image:6011405076eb0e1049d87e971e3adce1
-release-management:add-back-references:51960e2831d0e03a2b127d252929b843
+release-management:add-back-references:8154089f6b96923edd772c5a38f7d143
 release-management:create-minor-branch:a3834afc4aa5d1e98002c9e9e7a9931d
 release-management:generate-constraints:01aef235b11e59ed7f10c970a5cdaba7
-release-management:generate-issue-content-providers:cda108e7f2506c2816af8f2a6c24070c
+release-management:generate-issue-content-providers:97e29b10f93a0d0276469fc470110c95
 release-management:generate-providers-metadata:d4e8e5cfaa024e3963af02d7a873048d
 release-management:install-provider-packages:34c38aca17d23dbb454fe7a6bfd8e630
 release-management:prepare-airflow-package:85d01c57e5b5ee0fb9e5f9d9706ed3b5
-release-management:prepare-provider-documentation:eb861d68b8d72cd98dc8732fc5393796
-release-management:prepare-provider-packages:908e2c826f7b4959dfd8bc693f3857a7
-release-management:publish-docs:51ee9bf1268529513996a14bd5350c19
+release-management:prepare-provider-documentation:8a142fef4a148279d7794571c4cfed33
+release-management:prepare-provider-packages:10c9e86ce1ba6c50acfd0d5367d06da8
+release-management:publish-docs:7eef8e54cbc9743afb865531ff92503d
 release-management:release-prod-images:cfbfe8b19fee91fd90718f98ef2fd078
 release-management:start-rc-process:b27bd524dd3c89f50a747b60a7e892c1
 release-management:start-release:419f48f6a4ff4457cb9de7ff496aebbe
 release-management:update-constraints:02ec4b119150e3fdbac52026e94820ef
 release-management:verify-provider-packages:96dce5644aad6b37080acf77b3d8de3a
-release-management:59d956e45fccf55e47f16e33cfc5d04a
+release-management:c0d470f72e53df330e573c7bc0a08470
 sbom:build-all-airflow-images:32f8acade299c2b112e986bae99846db
-sbom:generate-providers-requirements:3926848718283cf2ef00310a0892e867
+sbom:generate-providers-requirements:bc008fcd52f258fbd989a42e66e44349
 sbom:update-sbom-information:653be48be70b4b7ff5172d491aadc694
-sbom:386048e0c00c0de30cf181eb9f3862ea
+sbom:9d0e848adefac54a4ccda950ca3bc4ee
 setup:autocomplete:fffcd49e102e09ccd69b3841a9e3ea8e
 setup:check-all-params-in-groups:5c5e3c382fc8ce84899d224448b3f48a
 setup:config:3435f1f1535a82c30591dbf577294d2e
diff --git a/images/breeze/output_build-docs.svg b/images/breeze/output_build-docs.svg
index 6bb4ceffe6..7622be26f3 100644
--- a/images/breeze/output_build-docs.svg
+++ b/images/breeze/output_build-docs.svg
@@ -163,7 +163,7 @@
 </text><text class="breeze-build-docs-r1" x="12.2" y="93.2" textLength="12.2" clip-path="url(#breeze-build-docs-line-3)">[</text><text class="breeze-build-docs-r4" x="24.4" y="93.2" textLength="85.4" clip-path="url(#breeze-build-docs-line-3)">OPTIONS</text><text class="breeze-build-docs-r1" x="109.8" y="93.2" textLength="36.6" clip-path="url(#breeze-build-docs-line-3)">]&#160;[</text><text class="breeze-build-docs-r4" x="146.4" y="93.2" textLength="36.6" clip-path="url(#breeze-build-docs [...]
 </text><text class="breeze-build-docs-r4" x="12.2" y="117.6" textLength="73.2" clip-path="url(#breeze-build-docs-line-4)">apache</text><text class="breeze-build-docs-r1" x="85.4" y="117.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-4)">.</text><text class="breeze-build-docs-r4" x="97.6" y="117.6" textLength="48.8" clip-path="url(#breeze-build-docs-line-4)">beam</text><text class="breeze-build-docs-r1" x="146.4" y="117.6" textLength="36.6" clip-path="url(#breeze-build-docs-l [...]
 </text><text class="breeze-build-docs-r4" x="12.2" y="142" textLength="73.2" clip-path="url(#breeze-build-docs-line-5)">apache</text><text class="breeze-build-docs-r1" x="85.4" y="142" textLength="12.2" clip-path="url(#breeze-build-docs-line-5)">.</text><text class="breeze-build-docs-r4" x="97.6" y="142" textLength="73.2" clip-path="url(#breeze-build-docs-line-5)">impala</text><text class="breeze-build-docs-r1" x="170.8" y="142" textLength="36.6" clip-path="url(#breeze-build-docs-line-5) [...]
-</text><text class="breeze-build-docs-r4" x="12.2" y="166.4" textLength="85.4" clip-path="url(#breeze-build-docs-line-6)">apprise</text><text class="breeze-build-docs-r1" x="97.6" y="166.4" textLength="36.6" clip-path="url(#breeze-build-docs-line-6)">&#160;|&#160;</text><text class="breeze-build-docs-r4" x="134.2" y="166.4" textLength="97.6" clip-path="url(#breeze-build-docs-line-6)">arangodb</text><text class="breeze-build-docs-r1" x="231.8" y="166.4" textLength="36.6" clip-path="url(#b [...]
+</text><text class="breeze-build-docs-r4" x="12.2" y="166.4" textLength="85.4" clip-path="url(#breeze-build-docs-line-6)">apprise</text><text class="breeze-build-docs-r1" x="97.6" y="166.4" textLength="36.6" clip-path="url(#breeze-build-docs-line-6)">&#160;|&#160;</text><text class="breeze-build-docs-r4" x="134.2" y="166.4" textLength="97.6" clip-path="url(#breeze-build-docs-line-6)">arangodb</text><text class="breeze-build-docs-r1" x="231.8" y="166.4" textLength="36.6" clip-path="url(#b [...]
 </text><text class="breeze-build-docs-r4" x="12.2" y="190.8" textLength="146.4" clip-path="url(#breeze-build-docs-line-7)">daskexecutor</text><text class="breeze-build-docs-r1" x="158.6" y="190.8" textLength="36.6" clip-path="url(#breeze-build-docs-line-7)">&#160;|&#160;</text><text class="breeze-build-docs-r4" x="195.2" y="190.8" textLength="122" clip-path="url(#breeze-build-docs-line-7)">databricks</text><text class="breeze-build-docs-r1" x="317.2" y="190.8" textLength="36.6" clip-path [...]
 </text><text class="breeze-build-docs-r4" x="12.2" y="215.2" textLength="36.6" clip-path="url(#breeze-build-docs-line-8)">ftp</text><text class="breeze-build-docs-r1" x="48.8" y="215.2" textLength="36.6" clip-path="url(#breeze-build-docs-line-8)">&#160;|&#160;</text><text class="breeze-build-docs-r4" x="85.4" y="215.2" textLength="73.2" clip-path="url(#breeze-build-docs-line-8)">github</text><text class="breeze-build-docs-r1" x="158.6" y="215.2" textLength="36.6" clip-path="url(#breeze-b [...]
 </text><text class="breeze-build-docs-r1" x="12.2" y="239.6" textLength="24.4" clip-path="url(#breeze-build-docs-line-9)">|&#160;</text><text class="breeze-build-docs-r4" x="36.6" y="239.6" textLength="109.8" clip-path="url(#breeze-build-docs-line-9)">microsoft</text><text class="breeze-build-docs-r1" x="146.4" y="239.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-9)">.</text><text class="breeze-build-docs-r4" x="158.6" y="239.6" textLength="48.8" clip-path="url(#breeze-buil [...]
diff --git a/images/breeze/output_release-management_add-back-references.svg b/images/breeze/output_release-management_add-back-references.svg
index ebcd1572ef..fd0739906c 100644
--- a/images/breeze/output_release-management_add-back-references.svg
+++ b/images/breeze/output_release-management_add-back-references.svg
@@ -134,10 +134,10 @@
 </text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="93.2" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-3)">[</text><text class="breeze-release-management-add-back-references-r4" x="24.4" y="93.2" textLength="85.4" clip-path="url(#breeze-release-management-add-back-references-line-3)">OPTIONS</text><text class="breeze-release-management-add-back-references-r1" x="109.8" y="93.2" textLength="36.6" clip-path="url(#breeze- [...]
 </text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="117.6" textLength="73.2" clip-path="url(#breeze-release-management-add-back-references-line-4)">apache</text><text class="breeze-release-management-add-back-references-r1" x="85.4" y="117.6" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-4)">.</text><text class="breeze-release-management-add-back-references-r4" x="97.6" y="117.6" textLength="109.8" clip-path="url(#breez [...]
 </text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="142" textLength="73.2" clip-path="url(#breeze-release-management-add-back-references-line-5)">apache</text><text class="breeze-release-management-add-back-references-r1" x="85.4" y="142" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-5)">.</text><text class="breeze-release-management-add-back-references-r4" x="97.6" y="142" textLength="61" clip-path="url(#breeze-release [...]
-</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="166.4" textLength="97.6" clip-path="url(#breeze-release-management-add-back-references-line-6)">arangodb</text><text class="breeze-release-management-add-back-references-r1" x="109.8" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-add-back-references-line-6)">&#160;|&#160;</text><text class="breeze-release-management-add-back-references-r4" x="146.4" y="166.4" textLength="61" clip-pat [...]
-</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="190.8" textLength="122" clip-path="url(#breeze-release-management-add-back-references-line-7)">databricks</text><text class="breeze-release-management-add-back-references-r1" x="134.2" y="190.8" textLength="36.6" clip-path="url(#breeze-release-management-add-back-references-line-7)">&#160;|&#160;</text><text class="breeze-release-management-add-back-references-r4" x="170.8" y="190.8" textLength="85.4" clip- [...]
-</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="215.2" textLength="73.2" clip-path="url(#breeze-release-management-add-back-references-line-8)">google</text><text class="breeze-release-management-add-back-references-r1" x="85.4" y="215.2" textLength="36.6" clip-path="url(#breeze-release-management-add-back-references-line-8)">&#160;|&#160;</text><text class="breeze-release-management-add-back-references-r4" x="122" y="215.2" textLength="48.8" clip-path=" [...]
-</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="239.6" textLength="109.8" clip-path="url(#breeze-release-management-add-back-references-line-9)">microsoft</text><text class="breeze-release-management-add-back-references-r1" x="122" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-9)">.</text><text class="breeze-release-management-add-back-references-r4" x="134.2" y="239.6" textLength="48.8" clip-path="url(#br [...]
+</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="166.4" textLength="97.6" clip-path="url(#breeze-release-management-add-back-references-line-6)">arangodb</text><text class="breeze-release-management-add-back-references-r1" x="109.8" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-add-back-references-line-6)">&#160;|&#160;</text><text class="breeze-release-management-add-back-references-r4" x="146.4" y="166.4" textLength="61" clip-pat [...]
+</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="190.8" textLength="146.4" clip-path="url(#breeze-release-management-add-back-references-line-7)">daskexecutor</text><text class="breeze-release-management-add-back-references-r1" x="158.6" y="190.8" textLength="36.6" clip-path="url(#breeze-release-management-add-back-references-line-7)">&#160;|&#160;</text><text class="breeze-release-management-add-back-references-r4" x="195.2" y="190.8" textLength="122" cl [...]
+</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="215.2" textLength="36.6" clip-path="url(#breeze-release-management-add-back-references-line-8)">ftp</text><text class="breeze-release-management-add-back-references-r1" x="48.8" y="215.2" textLength="36.6" clip-path="url(#breeze-release-management-add-back-references-line-8)">&#160;|&#160;</text><text class="breeze-release-management-add-back-references-r4" x="85.4" y="215.2" textLength="73.2" clip-path="ur [...]
+</text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="239.6" textLength="24.4" clip-path="url(#breeze-release-management-add-back-references-line-9)">|&#160;</text><text class="breeze-release-management-add-back-references-r4" x="36.6" y="239.6" textLength="109.8" clip-path="url(#breeze-release-management-add-back-references-line-9)">microsoft</text><text class="breeze-release-management-add-back-references-r1" x="146.4" y="239.6" textLength="12.2" clip-path=" [...]
 </text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="264" textLength="73.2" clip-path="url(#breeze-release-management-add-back-references-line-10)">oracle</text><text class="breeze-release-management-add-back-references-r1" x="85.4" y="264" textLength="36.6" clip-path="url(#breeze-release-management-add-back-references-line-10)">&#160;|&#160;</text><text class="breeze-release-management-add-back-references-r4" x="122" y="264" textLength="109.8" clip-path="url [...]
 </text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="288.4" textLength="134.2" clip-path="url(#breeze-release-management-add-back-references-line-11)">singularity</text><text class="breeze-release-management-add-back-references-r1" x="146.4" y="288.4" textLength="36.6" clip-path="url(#breeze-release-management-add-back-references-line-11)">&#160;|&#160;</text><text class="breeze-release-management-add-back-references-r4" x="183" y="288.4" textLength="61" clip [...]
 </text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="312.8" textLength="85.4" clip-path="url(#breeze-release-management-add-back-references-line-12)">zendesk</text><text class="breeze-release-management-add-back-references-r1" x="97.6" y="312.8" textLength="1354.2" clip-path="url(#breeze-release-management-add-back-references-line-12)">]...&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;& [...]
diff --git a/images/breeze/output_release-management_generate-issue-content-providers.svg b/images/breeze/output_release-management_generate-issue-content-providers.svg
index 10139cafc5..6f03ffa40d 100644
--- a/images/breeze/output_release-management_generate-issue-content-providers.svg
+++ b/images/breeze/output_release-management_generate-issue-content-providers.svg
@@ -144,12 +144,12 @@
 </text><text class="breeze-release-management-generate-issue-content-providers-r1" x="12.2" y="93.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-3)">[</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="24.4" y="93.2" textLength="85.4" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-3)">OPTIONS</text><text class="breeze-release-management-generate-issue-content-providers [...]
 </text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="117.6" textLength="73.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-4)">apache</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="85.4" y="117.6" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-4)">.</text><text class="breeze-release-management-generate-issue-content-provider [...]
 </text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="142" textLength="73.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-5)">apache</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="85.4" y="142" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-5)">.</text><text class="breeze-release-management-generate-issue-content-providers-r4 [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="166.4" textLength="73.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-6)">celery</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="85.4" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-6)">&#160;|&#160;</text><text class="breeze-release-management-generate-issue-cont [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="190.8" textLength="97.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-7)">dingding</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="109.8" y="190.8" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-7)">&#160;|&#160;</text><text class="breeze-release-management-generate-issue-c [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="215.2" textLength="48.8" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-8)">imap</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="61" y="215.2" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-8)">&#160;|&#160;</text><text class="breeze-release-management-generate-issue-content- [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="239.6" textLength="61" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-9)">mysql</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="73.2" y="239.6" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-9)">&#160;|&#160;</text><text class="breeze-release-management-generate-issue-content [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="264" textLength="97.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-10)">postgres</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="109.8" y="264" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-10)">&#160;|&#160;</text><text class="breeze-release-management-generate-issue-con [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="288.4" textLength="73.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-11)">sqlite</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="85.4" y="288.4" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-11)">&#160;|&#160;</text><text class="breeze-release-management-generate-issue-co [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="166.4" textLength="73.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-6)">celery</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="85.4" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-6)">&#160;|&#160;</text><text class="breeze-release-management-generate-issue-cont [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="190.8" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-7)">dbt</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="48.8" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-7)">.</text><text class="breeze-release-management-generate-issue-content-providers-r [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="12.2" y="215.2" textLength="24.4" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-8)">|&#160;</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="36.6" y="215.2" textLength="48.8" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-8)">http</text><text class="breeze-release-management-generate-issue-content-prov [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="239.6" textLength="61" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-9)">mongo</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="73.2" y="239.6" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-9)">&#160;|&#160;</text><text class="breeze-release-management-generate-issue-content [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="264" textLength="73.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-10)">plexus</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="85.4" y="264" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-10)">&#160;|&#160;</text><text class="breeze-release-management-generate-issue-conten [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="288.4" textLength="109.8" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-11)">snowflake</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="122" y="288.4" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-11)">&#160;|&#160;</text><text class="breeze-release-management-generate-issue [...]
 </text><text class="breeze-release-management-generate-issue-content-providers-r1" x="1464" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-12)">
 </text><text class="breeze-release-management-generate-issue-content-providers-r1" x="12.2" y="337.2" textLength="585.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-13)">Generates&#160;content&#160;for&#160;issue&#160;to&#160;test&#160;the&#160;release.</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-13)">
 </text><text class="breeze-release-management-generate-issue-content-providers-r1" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-14)">
diff --git a/images/breeze/output_release-management_prepare-provider-documentation.svg b/images/breeze/output_release-management_prepare-provider-documentation.svg
index a8e4587c4b..27f198d97e 100644
--- a/images/breeze/output_release-management_prepare-provider-documentation.svg
+++ b/images/breeze/output_release-management_prepare-provider-documentation.svg
@@ -156,12 +156,12 @@
 </text><text class="breeze-release-management-prepare-provider-documentation-r1" x="12.2" y="93.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-3)">[</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="93.2" textLength="85.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-3)">OPTIONS</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="10 [...]
 </text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="117.6" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-4)">apache</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="85.4" y="117.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-4)">.</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="9 [...]
 </text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="142" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-5)">apache</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="85.4" y="142" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-5)">.</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="97.6" [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="166.4" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-6)">celery</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="85.4" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-6)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-documentat [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="190.8" textLength="97.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-7)">dingding</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="109.8" y="190.8" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-7)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-documen [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="215.2" textLength="48.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-8)">imap</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="61" y="215.2" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-8)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-documentation- [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="239.6" textLength="61" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-9)">mysql</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="73.2" y="239.6" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-9)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-documentation [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="264" textLength="97.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-10)">postgres</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="109.8" y="264" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-10)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-documenta [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="288.4" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-11)">sqlite</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="85.4" y="288.4" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-11)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-document [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="166.4" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-6)">celery</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="85.4" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-6)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-documentat [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="190.8" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-7)">dbt</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="48.8" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-7)">.</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="61"  [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="12.2" y="215.2" textLength="24.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-8)">|&#160;</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="36.6" y="215.2" textLength="48.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-8)">http</text><text class="breeze-release-management-prepare-provider-documentation-r1"  [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="239.6" textLength="61" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-9)">mongo</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="73.2" y="239.6" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-9)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-documentation [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="264" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-10)">plexus</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="85.4" y="264" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-10)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-documentatio [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="288.4" textLength="109.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-11)">snowflake</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="122" y="288.4" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-11)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-docum [...]
 </text><text class="breeze-release-management-prepare-provider-documentation-r1" x="1464" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-12)">
 </text><text class="breeze-release-management-prepare-provider-documentation-r1" x="12.2" y="337.2" textLength="780.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-13)">Prepare&#160;CHANGELOG,&#160;README&#160;and&#160;COMMITS&#160;information&#160;for&#160;providers.</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation- [...]
 </text><text class="breeze-release-management-prepare-provider-documentation-r1" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-14)">
diff --git a/images/breeze/output_release-management_prepare-provider-packages.svg b/images/breeze/output_release-management_prepare-provider-packages.svg
index fa4c36063e..507cd13783 100644
--- a/images/breeze/output_release-management_prepare-provider-packages.svg
+++ b/images/breeze/output_release-management_prepare-provider-packages.svg
@@ -141,12 +141,12 @@
 </text><text class="breeze-release-management-prepare-provider-packages-r1" x="12.2" y="93.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-3)">[</text><text class="breeze-release-management-prepare-provider-packages-r4" x="24.4" y="93.2" textLength="85.4" clip-path="url(#breeze-release-management-prepare-provider-packages-line-3)">OPTIONS</text><text class="breeze-release-management-prepare-provider-packages-r1" x="109.8" y="93.2" textLength= [...]
 </text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="117.6" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-4)">apache</text><text class="breeze-release-management-prepare-provider-packages-r1" x="85.4" y="117.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-4)">.</text><text class="breeze-release-management-prepare-provider-packages-r4" x="97.6" y="117.6" textLength [...]
 </text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="142" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-5)">apache</text><text class="breeze-release-management-prepare-provider-packages-r1" x="85.4" y="142" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-5)">.</text><text class="breeze-release-management-prepare-provider-packages-r4" x="97.6" y="142" textLength="48.8 [...]
-</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="166.4" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-6)">celery</text><text class="breeze-release-management-prepare-provider-packages-r1" x="85.4" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-6)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-packages-r4" x="122" y="166.4" [...]
-</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="190.8" textLength="97.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-7)">dingding</text><text class="breeze-release-management-prepare-provider-packages-r1" x="109.8" y="190.8" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-7)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-packages-r4" x="146.4" y="1 [...]
-</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="215.2" textLength="48.8" clip-path="url(#breeze-release-management-prepare-provider-packages-line-8)">imap</text><text class="breeze-release-management-prepare-provider-packages-r1" x="61" y="215.2" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-8)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-packages-r4" x="97.6" y="215.2" te [...]
-</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="239.6" textLength="61" clip-path="url(#breeze-release-management-prepare-provider-packages-line-9)">mysql</text><text class="breeze-release-management-prepare-provider-packages-r1" x="73.2" y="239.6" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-9)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-packages-r4" x="109.8" y="239.6"  [...]
-</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="264" textLength="97.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-10)">postgres</text><text class="breeze-release-management-prepare-provider-packages-r1" x="109.8" y="264" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-10)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-packages-r4" x="146.4" y="264 [...]
-</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="288.4" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-11)">sqlite</text><text class="breeze-release-management-prepare-provider-packages-r1" x="85.4" y="288.4" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-11)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-packages-r4" x="122" y="288. [...]
+</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="166.4" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-6)">celery</text><text class="breeze-release-management-prepare-provider-packages-r1" x="85.4" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-6)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-packages-r4" x="122" y="166.4" [...]
+</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="190.8" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-7)">dbt</text><text class="breeze-release-management-prepare-provider-packages-r1" x="48.8" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-7)">.</text><text class="breeze-release-management-prepare-provider-packages-r4" x="61" y="190.8" textLength="61" [...]
+</text><text class="breeze-release-management-prepare-provider-packages-r1" x="12.2" y="215.2" textLength="24.4" clip-path="url(#breeze-release-management-prepare-provider-packages-line-8)">|&#160;</text><text class="breeze-release-management-prepare-provider-packages-r4" x="36.6" y="215.2" textLength="48.8" clip-path="url(#breeze-release-management-prepare-provider-packages-line-8)">http</text><text class="breeze-release-management-prepare-provider-packages-r1" x="85.4" y="215.2" textLe [...]
+</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="239.6" textLength="61" clip-path="url(#breeze-release-management-prepare-provider-packages-line-9)">mongo</text><text class="breeze-release-management-prepare-provider-packages-r1" x="73.2" y="239.6" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-9)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-packages-r4" x="109.8" y="239.6"  [...]
+</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="264" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-10)">plexus</text><text class="breeze-release-management-prepare-provider-packages-r1" x="85.4" y="264" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-10)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-packages-r4" x="122" y="264" tex [...]
+</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="288.4" textLength="109.8" clip-path="url(#breeze-release-management-prepare-provider-packages-line-11)">snowflake</text><text class="breeze-release-management-prepare-provider-packages-r1" x="122" y="288.4" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-11)">&#160;|&#160;</text><text class="breeze-release-management-prepare-provider-packages-r4" x="158.6" y= [...]
 </text><text class="breeze-release-management-prepare-provider-packages-r1" x="1464" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-12)">
 </text><text class="breeze-release-management-prepare-provider-packages-r1" x="12.2" y="337.2" textLength="585.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-13)">Prepare&#160;sdist/whl&#160;packages&#160;of&#160;Airflow&#160;Providers.</text><text class="breeze-release-management-prepare-provider-packages-r1" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-13)">
 </text><text class="breeze-release-management-prepare-provider-packages-r1" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-14)">
diff --git a/images/breeze/output_release-management_publish-docs.svg b/images/breeze/output_release-management_publish-docs.svg
index 8108ee78d1..38ffcaf32d 100644
--- a/images/breeze/output_release-management_publish-docs.svg
+++ b/images/breeze/output_release-management_publish-docs.svg
@@ -180,7 +180,7 @@
 </text><text class="breeze-release-management-publish-docs-r1" x="12.2" y="93.2" textLength="12.2" clip-path="url(#breeze-release-management-publish-docs-line-3)">[</text><text class="breeze-release-management-publish-docs-r4" x="24.4" y="93.2" textLength="85.4" clip-path="url(#breeze-release-management-publish-docs-line-3)">OPTIONS</text><text class="breeze-release-management-publish-docs-r1" x="109.8" y="93.2" textLength="36.6" clip-path="url(#breeze-release-management-publish-docs-lin [...]
 </text><text class="breeze-release-management-publish-docs-r4" x="12.2" y="117.6" textLength="73.2" clip-path="url(#breeze-release-management-publish-docs-line-4)">apache</text><text class="breeze-release-management-publish-docs-r1" x="85.4" y="117.6" textLength="12.2" clip-path="url(#breeze-release-management-publish-docs-line-4)">.</text><text class="breeze-release-management-publish-docs-r4" x="97.6" y="117.6" textLength="48.8" clip-path="url(#breeze-release-management-publish-docs-li [...]
 </text><text class="breeze-release-management-publish-docs-r4" x="12.2" y="142" textLength="73.2" clip-path="url(#breeze-release-management-publish-docs-line-5)">apache</text><text class="breeze-release-management-publish-docs-r1" x="85.4" y="142" textLength="12.2" clip-path="url(#breeze-release-management-publish-docs-line-5)">.</text><text class="breeze-release-management-publish-docs-r4" x="97.6" y="142" textLength="73.2" clip-path="url(#breeze-release-management-publish-docs-line-5)" [...]
-</text><text class="breeze-release-management-publish-docs-r4" x="12.2" y="166.4" textLength="85.4" clip-path="url(#breeze-release-management-publish-docs-line-6)">apprise</text><text class="breeze-release-management-publish-docs-r1" x="97.6" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-publish-docs-line-6)">&#160;|&#160;</text><text class="breeze-release-management-publish-docs-r4" x="134.2" y="166.4" textLength="97.6" clip-path="url(#breeze-release-management-p [...]
+</text><text class="breeze-release-management-publish-docs-r4" x="12.2" y="166.4" textLength="85.4" clip-path="url(#breeze-release-management-publish-docs-line-6)">apprise</text><text class="breeze-release-management-publish-docs-r1" x="97.6" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-publish-docs-line-6)">&#160;|&#160;</text><text class="breeze-release-management-publish-docs-r4" x="134.2" y="166.4" textLength="97.6" clip-path="url(#breeze-release-management-p [...]
 </text><text class="breeze-release-management-publish-docs-r4" x="12.2" y="190.8" textLength="146.4" clip-path="url(#breeze-release-management-publish-docs-line-7)">daskexecutor</text><text class="breeze-release-management-publish-docs-r1" x="158.6" y="190.8" textLength="36.6" clip-path="url(#breeze-release-management-publish-docs-line-7)">&#160;|&#160;</text><text class="breeze-release-management-publish-docs-r4" x="195.2" y="190.8" textLength="122" clip-path="url(#breeze-release-manage [...]
 </text><text class="breeze-release-management-publish-docs-r4" x="12.2" y="215.2" textLength="36.6" clip-path="url(#breeze-release-management-publish-docs-line-8)">ftp</text><text class="breeze-release-management-publish-docs-r1" x="48.8" y="215.2" textLength="36.6" clip-path="url(#breeze-release-management-publish-docs-line-8)">&#160;|&#160;</text><text class="breeze-release-management-publish-docs-r4" x="85.4" y="215.2" textLength="73.2" clip-path="url(#breeze-release-management-publis [...]
 </text><text class="breeze-release-management-publish-docs-r1" x="12.2" y="239.6" textLength="24.4" clip-path="url(#breeze-release-management-publish-docs-line-9)">|&#160;</text><text class="breeze-release-management-publish-docs-r4" x="36.6" y="239.6" textLength="109.8" clip-path="url(#breeze-release-management-publish-docs-line-9)">microsoft</text><text class="breeze-release-management-publish-docs-r1" x="146.4" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-publ [...]
diff --git a/images/breeze/output_sbom_generate-providers-requirements.svg b/images/breeze/output_sbom_generate-providers-requirements.svg
index 9f08035158..6dfe112fdf 100644
--- a/images/breeze/output_sbom_generate-providers-requirements.svg
+++ b/images/breeze/output_sbom_generate-providers-requirements.svg
@@ -186,14 +186,14 @@
 </text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-9)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="239.6" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-9)">(airbyte&#160;|&#160;alibaba&#160;|&#160;amazon&#160;|&#160;apache.beam&#160;|&#160;apache.cassandra&#160;|&#160;apache.drill&#160;|&#160;apach [...]
 </text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-10)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="264" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-10)">apache.flink&#160;|&#160;apache.hdfs&#160;|&#160;apache.hive&#160;|&#160;apache.impala&#160;|&#160;apache.kafka&#160;|&#160;apache.kylin&#160;|&# [...]
 </text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-11)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="288.4" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-11)">apache.livy&#160;|&#160;apache.pig&#160;|&#160;apache.pinot&#160;|&#160;apache.spark&#160;|&#160;apache.sqoop&#160;|&#160;apprise&#160;|&#160 [...]
-</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-12)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="312.8" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-12)">asana&#160;|&#160;atlassian.jira&#160;|&#160;celery&#160;|&#160;cloudant&#160;|&#160;cncf.kubernetes&#160;|&#160;common.io&#160;|&#160;common [...]
-</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-13)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="337.2" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-13)">daskexecutor&#160;|&#160;databricks&#160;|&#160;datadog&#160;|&#160;dbt.cloud&#160;|&#160;dingding&#160;|&#160;discord&#160;|&#160;docker&#16 [...]
-</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-14)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="361.6" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-14)">|&#160;exasol&#160;|&#160;facebook&#160;|&#160;ftp&#160;|&#160;github&#160;|&#160;google&#160;|&#160;grpc&#160;|&#160;hashicorp&#160;|&#160;h [...]
-</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-15)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="386" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-15)">|&#160;jenkins&#160;|&#160;microsoft.azure&#160;|&#160;microsoft.mssql&#160;|&#160;microsoft.psrp&#160;|&#160;microsoft.winrm&#160;|&#160;mongo&# [...]
-</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-16)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="410.4" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-16)">mysql&#160;|&#160;neo4j&#160;|&#160;odbc&#160;|&#160;openfaas&#160;|&#160;openlineage&#160;|&#160;opensearch&#160;|&#160;opsgenie&#160;|&#160 [...]
-</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-17)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="434.8" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-17)">papermill&#160;|&#160;plexus&#160;|&#160;postgres&#160;|&#160;presto&#160;|&#160;redis&#160;|&#160;salesforce&#160;|&#160;samba&#160;|&#160;s [...]
-</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-18)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="459.2" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-18)">sftp&#160;|&#160;singularity&#160;|&#160;slack&#160;|&#160;smtp&#160;|&#160;snowflake&#160;|&#160;sqlite&#160;|&#160;ssh&#160;|&#160;tableau& [...]
-</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-19)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="483.6" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-19)">trino&#160;|&#160;vertica&#160;|&#160;yandex&#160;|&#160;zendesk)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16 [...]
+</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-12)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="312.8" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-12)">asana&#160;|&#160;atlassian.jira&#160;|&#160;celery&#160;|&#160;cloudant&#160;|&#160;cncf.kubernetes&#160;|&#160;cohere&#160;|&#160;common.io [...]
+</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-13)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="337.2" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-13)">|&#160;daskexecutor&#160;|&#160;databricks&#160;|&#160;datadog&#160;|&#160;dbt.cloud&#160;|&#160;dingding&#160;|&#160;discord&#160;|&#160;doc [...]
+</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-14)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="361.6" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-14)">elasticsearch&#160;|&#160;exasol&#160;|&#160;facebook&#160;|&#160;ftp&#160;|&#160;github&#160;|&#160;google&#160;|&#160;grpc&#160;|&#160;hash [...]
+</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-15)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="386" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-15)">influxdb&#160;|&#160;jdbc&#160;|&#160;jenkins&#160;|&#160;microsoft.azure&#160;|&#160;microsoft.mssql&#160;|&#160;microsoft.psrp&#160;|&#160;&#16 [...]
+</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-16)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="410.4" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-16)">microsoft.winrm&#160;|&#160;mongo&#160;|&#160;mysql&#160;|&#160;neo4j&#160;|&#160;odbc&#160;|&#160;openfaas&#160;|&#160;openlineage&#160;|&#1 [...]
+</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-17)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="434.8" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-17)">opsgenie&#160;|&#160;oracle&#160;|&#160;pagerduty&#160;|&#160;papermill&#160;|&#160;plexus&#160;|&#160;postgres&#160;|&#160;presto&#160;|&#16 [...]
+</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-18)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="459.2" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-18)">samba&#160;|&#160;segment&#160;|&#160;sendgrid&#160;|&#160;sftp&#160;|&#160;singularity&#160;|&#160;slack&#160;|&#160;smtp&#160;|&#160;snowfl [...]
+</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-19)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="483.6" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-19)">tableau&#160;|&#160;tabular&#160;|&#160;telegram&#160;|&#160;trino&#160;|&#160;vertica&#160;|&#160;yandex&#160;|&#160;zendesk)&#160;&#160;&#1 [...]
 </text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-20)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-20)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="508" textLength="109.8" clip-path="url(#breeze-sbom-generate-provid [...]
 </text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-21)">│</text><text class="breeze-sbom-generate-providers-requirements-r1" x="292.8" y="532.4" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-21)">value&#160;to&#160;account&#160;for&#160;the&#160;most&#160;recent&#160;version&#160;of&#160;the&#160;provider&#160;&#160;&#160;&#160;&#160;& [...]
 </text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-22)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="556.8" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-22)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1 [...]
diff --git a/tests/providers/cohere/__init__.py b/tests/providers/cohere/__init__.py
new file mode 100644
index 0000000000..13a83393a9
--- /dev/null
+++ b/tests/providers/cohere/__init__.py
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
diff --git a/tests/providers/cohere/hooks/__init__.py b/tests/providers/cohere/hooks/__init__.py
new file mode 100644
index 0000000000..13a83393a9
--- /dev/null
+++ b/tests/providers/cohere/hooks/__init__.py
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
diff --git a/tests/providers/cohere/hooks/test_cohere.py b/tests/providers/cohere/hooks/test_cohere.py
new file mode 100644
index 0000000000..8f566ec0c6
--- /dev/null
+++ b/tests/providers/cohere/hooks/test_cohere.py
@@ -0,0 +1,46 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from __future__ import annotations
+
+from unittest.mock import patch
+
+from airflow.models import Connection
+from airflow.providers.cohere.hooks.cohere import (
+    CohereHook,
+)
+
+
+class TestCohereHook:
+    """
+    Test for CohereHook
+    """
+
+    def test__get_api_key(self):
+        api_key = "test"
+        api_url = "http://some_host.com"
+        timeout = 150
+        max_retries = 5
+        with patch.object(
+            CohereHook,
+            "get_connection",
+            return_value=Connection(conn_type="cohere", password=api_key, host=api_url),
+        ), patch("cohere.Client") as client:
+            hook = CohereHook(timeout=timeout, max_retries=max_retries)
+            _ = hook.get_conn
+            client.assert_called_once_with(
+                api_key=api_key, timeout=timeout, max_retries=max_retries, api_url=api_url
+            )
diff --git a/tests/providers/cohere/operators/__init__.py b/tests/providers/cohere/operators/__init__.py
new file mode 100644
index 0000000000..13a83393a9
--- /dev/null
+++ b/tests/providers/cohere/operators/__init__.py
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
diff --git a/tests/providers/cohere/operators/test_embedding.py b/tests/providers/cohere/operators/test_embedding.py
new file mode 100644
index 0000000000..32dd83aa26
--- /dev/null
+++ b/tests/providers/cohere/operators/test_embedding.py
@@ -0,0 +1,56 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from __future__ import annotations
+
+from unittest.mock import MagicMock, patch
+
+from airflow.models import Connection
+from airflow.providers.cohere.operators.embedding import CohereEmbeddingOperator
+
+
+@patch("airflow.providers.cohere.hooks.cohere.CohereHook.get_connection")
+@patch("cohere.Client")
+def test_cohere_embedding_operator(cohere_client, get_connection):
+    """
+    Test Cohere client is getting called with the correct key and that
+     the execute methods returns expected response.
+    """
+    embedded_obj = [1, 2, 3]
+
+    class resp:
+        embeddings = embedded_obj
+
+    api_key = "test"
+    api_url = "http://some_host.com"
+    timeout = 150
+    max_retries = 5
+    texts = ["On Kernel-Target Alignment. We describe a family of global optimization procedures"]
+
+    get_connection.return_value = Connection(conn_type="cohere", password=api_key, host=api_url)
+    client_obj = MagicMock()
+    cohere_client.return_value = client_obj
+    client_obj.embed.return_value = resp
+
+    op = CohereEmbeddingOperator(
+        task_id="embed", conn_id="some_conn", input_text=texts, timeout=timeout, max_retries=max_retries
+    )
+
+    val = op.execute(context={})
+    cohere_client.assert_called_once_with(
+        api_key=api_key, api_url=api_url, timeout=timeout, max_retries=max_retries
+    )
+    assert val == embedded_obj
diff --git a/tests/system/providers/cohere/__init__.py b/tests/system/providers/cohere/__init__.py
new file mode 100644
index 0000000000..13a83393a9
--- /dev/null
+++ b/tests/system/providers/cohere/__init__.py
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
diff --git a/tests/system/providers/cohere/example_cohere_embedding_operator.py b/tests/system/providers/cohere/example_cohere_embedding_operator.py
new file mode 100644
index 0000000000..ec97ee91e5
--- /dev/null
+++ b/tests/system/providers/cohere/example_cohere_embedding_operator.py
@@ -0,0 +1,40 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from __future__ import annotations
+
+from datetime import datetime
+
+from airflow import DAG
+from airflow.providers.cohere.operators.embedding import CohereEmbeddingOperator
+
+with DAG("example_cohere_embedding", schedule=None, start_date=datetime(2023, 1, 1), catchup=False) as dag:
+    # [START howto_operator_cohere_embedding]
+    texts = [
+        "On Kernel-Target Alignment. We describe a family of global optimization procedures",
+        " that automatically decompose optimization problems into smaller loosely coupled",
+        " problems, then combine the solutions of these with message passing algorithms.",
+    ]
+
+    CohereEmbeddingOperator(input_text=texts, task_id="embedding_via_text")
+    CohereEmbeddingOperator(input_text=texts[0], task_id="embedding_via_task")
+    # [END howto_operator_cohere_embedding]
+
+
+from tests.system.utils import get_test_run
+
+# Needed to run the example DAG with pytest (see: tests/system/README.md#run_via_pytest)
+test_run = get_test_run(dag)