Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,10 @@ print(response.data)
| `serviceMethods.setDisappearingChat` | The method is designed to change the settings of disappearing messages in chats | [SetDisappearingChat](https://green-api.com/en/docs/api/service/SetDisappearingChat/) |
| `webhooks.startReceivingNotifications` | The method is designed to start receiving new notifications | |
| `webhooks.stopReceivingNotifications` | The method is designed to stop receiving new notifications | |
| `partner.GetInstances` | The method is for getting all the account instances created by the partner. | [GetInstances](https://green-api.com/en/docs/partners/getInstances/) |
| `partner.CreateInstance` | The method is for creating an instance. | [CreateInstance](https://green-api.com/en/docs/partners/createInstance/) |
| `partner.DeleteInstanceAccount` | The method is for deleting an instance. | [DeleteInstanceAccount](https://green-api.com/en/docs/partners/deleteInstanceAccount/) |


## Service methods documentation

Expand Down
3 changes: 3 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,9 @@ print(response.data)
| `serviceMethods.setDisappearingChat` | Метод предназначен для изменения настроек исчезающих сообщений в чатах | [SetDisappearingChat](https://green-api.com/docs/api/service/SetDisappearingChat/) |
| `webhooks.startReceivingNotifications` | Метод предназначен для старта получения новых уведомлений | |
| `webhooks.stopReceivingNotifications` | Метод предназначен для остановки получения новых уведомлений | |
| `partner.GetInstances` | Метод предназначен для получения всех инстансов аккаунтов созданных партнёром. | [GetInstances](https://green-api.com/docs/partners/getInstances/) |
| `partner.CreateInstance` | Метод предназначен для создания инстанса от имени партнёра. | [CreateInstance](https://green-api.com/docs/partners/createInstance/) |
| `partner.DeleteInstanceAccount` | Метод предназначен для удаления инстанса аккаунта партнёра. | [DeleteInstanceAccount](https://green-api.com/docs/partners/deleteInstanceAccount/) |

## Документация по методам сервиса

Expand Down
34 changes: 34 additions & 0 deletions examples/partherMethods/CreateInstance.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
from whatsapp_api_client_python import API

greenAPI = API.GreenApiPartner(
"gac.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrst"
)


def main():
settings = {
"name": "Created by Python SDK",
"webhookUrl": "https://webhook.url",
"webhookUrlToken": "auth_token",
"delaySendMessagesMilliseconds": 5000,
"markIncomingMessagesReaded": "yes",
"markIncomingMessagesReadedOnReply": "yes",
"outgoingWebhook": "yes",
"outgoingMessageWebhook": "yes",
"outgoingAPIMessageWebhook": "yes",
"stateWebhook": "yes",
"incomingWebhook": "yes",
"deviceWebhook": "yes",
"keepOnlineStatus": "yes",
"pollMessageWebhook": "yes",
"incomingBlockWebhook": "yes",
"incomingCallWebhook": "yes",
"editedMessageWebhook": "yes",
"deletedMessageWebhook": "yes"
}

response = greenAPI.partner.createInstance(settings)
print(response.data)

if __name__ == '__main__':
main()
14 changes: 14 additions & 0 deletions examples/partherMethods/DeleteInstanceAccount.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from whatsapp_api_client_python import API

greenAPI = API.GreenApiPartner(
"gac.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrst"
)


def main():
response = greenAPI.partner.deleteInstanceAccount(1103123456)
print(response.data)


if __name__ == '__main__':
main()
13 changes: 13 additions & 0 deletions examples/partherMethods/GetInstances.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from whatsapp_api_client_python import API

greenAPI = API.GreenApiPartner(
"gac.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrst"
)


def main():
response = greenAPI.partner.getInstances()
print(response.data)

if __name__ == '__main__':
main()
34 changes: 34 additions & 0 deletions examples/setSettings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
from whatsapp_api_client_python import API

greenAPI = API.GreenAPI(
"1101000001", "d75b3a66374942c5b3c019c698abc2067e151558acbd412345"
)


def main():
settings = {
"webhookUrl": "https://webhook.url",
"webhookUrlToken": "auth_token",
"delaySendMessagesMilliseconds": 5000,
"markIncomingMessagesReaded": "yes",
"markIncomingMessagesReadedOnReply": "yes",
"outgoingWebhook": "yes",
"outgoingMessageWebhook": "yes",
"outgoingAPIMessageWebhook": "yes",
"stateWebhook": "yes",
"incomingWebhook": "yes",
"deviceWebhook": "yes",
"keepOnlineStatus": "yes",
"pollMessageWebhook": "yes",
"incomingBlockWebhook": "yes",
"incomingCallWebhook": "yes",
"editedMessageWebhook": "yes",
"deletedMessageWebhook": "yes"
}

response = greenAPI.account.setSettings(settings)
print(response.data)


if __name__ == '__main__':
main()
33 changes: 32 additions & 1 deletion whatsapp_api_client_python/API.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
receiving,
sending,
serviceMethods,
webhooks
webhooks,
partner
)


Expand Down Expand Up @@ -182,3 +183,33 @@ class GreenAPI(GreenApi):

class GreenAPIError(Exception):
pass

class GreenApiPartner(GreenApi):
def __init__(
self,
partnerToken: str,
email: str = None,
host: str = "https://api.green-api.com"
):

super().__init__(
idInstance="",
apiTokenInstance="",
host=host
)

self.partnerToken = partnerToken
self.email = email
self.partner = partner.Partner(self)

def request(
self,
method: str,
url: str,
payload: Optional[dict] = None,
files: Optional[dict] = None
) -> GreenAPIResponse:

url = url.replace("{{partnerToken}}", self.partnerToken)

return super().request(method, url, payload, files)
61 changes: 61 additions & 0 deletions whatsapp_api_client_python/tools/partner.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
from typing import Dict, TYPE_CHECKING, Union

from ..response import Response

if TYPE_CHECKING:
from ..API import GreenApiPartner

class Partner:
def __init__(self, api: "GreenApiPartner"):
self.api = api

def getInstances(self) -> Response:
"""
The method is aimed for getting all the account instances created by the partner.

https://green-api.com/en/docs/partners/getInstances/
"""

return self.api.request(
"GET", (
"{{host}}/partner/"
"getInstances/{{partnerToken}}"
)
)

def createInstance(self, requestBody: Dict[str, Union[int, str]]) -> Response:
"""
The method is aimed for creating a messenger account instance on the partner's part.

https://green-api.com/en/docs/partners/createInstance/
"""

return self.api.request(
"POST", (
"{{host}}/partner/"
"createInstance/{{partnerToken}}"
), requestBody
)

def deleteInstanceAccount(self, idInstance: int) -> Response:
"""
The method is aimed for deleting an instance of the partners's account.

https://green-api.com/en/docs/partners/deleteInstanceAccount/
"""

request_body = self.handle_parameters(locals())

return self.api.request(
"POST", (
"{{host}}/partner/"
"deleteInstanceAccount/{{partnerToken}}"
), request_body
)

def handle_parameters(self, parameters: dict) -> dict:
return {
key: value
for key, value in parameters.items()
if value is not None and key != "self"
}
Loading