# Interact iRedAdmin-Pro RESTful API with Python

Note

- For more details about iRedAdmin-Pro RESTful API, please read document: iRedAdmin-Pro: RESTful API.
- If you need an API which has not yet been implemented, don't hesitate to contact us.
- Our sample code below requires third-party Python module `requests`. For more details, please read its official documentation: Requests: HTTP for Humans

Sample Python code to interact iRedAdmin-Pro RESTful API.

    import sys
    import requests

    url = 'http://<server>/iredadmin/api'

    # Admin email address and password.
    admin = 'postmaster@mydomain.com'
    pw = 'my_password'

    # Login
    r = requests.post(url + '/login', data={'username': admin,
                                            'password': pw})

    # Get returned JSON data
    data = r.json()
    if not data['_success']:
        sys.exit('Login failed')

    cookies = r.cookies

    # Create domain: test.com
    requests.post(url + '/domain/test.com',
                  cookies=cookies,
                  data={'defaultQuota': '1024'})

    # Create user: zhb@test.com
    requests.post(url + '/user/zhb@test.com',
                  cookies=cookies,
                  data={'cn': 'My Name',
                        'password': 'A@StrongPassword2',
                        'preferredLanguage': 'zh_CN',
                        'mailQuota': 2048})

    # Create list: list@test.com. Note: OpenLDAP only.
    requests.post(url + '/maillist/list@test.com',
                  cookies=cookies,
                  data={'cn': 'My List'})

    # Create alias: alias@test.com
    requests.post(url + '/alias/alias@test.com',
                  cookies=cookies,
                  data={'cn': 'My Alias'})

    # Update user: zhb@test.com
    requests.put(url + '/user/zhb@test.com',
                 cookies=cookies,
                 data={'cn': 'My New Name',
                       'password': 'WHDZ2@5yxORvVqzYY',
                       'transport': 'dovecot',
                       'language': 'en_US',
                       'quota': 2048})

    # Delete user: zhb@test.com
    requests.delete(url + '/user/zhb@test.com', cookies=cookies)

    # Delete mailing list: list@test.com. Note: OpenLDAP only.
    requests.delete(url + '/maillist/list@test.com', cookies=cookies)

    # Delete alias: alias@test.com
    requests.delete(url + '/alias/alias@test.com', cookies=cookies)

    # Delete domain: test.com
    requests.delete(url + '/domain/test.com', cookies=cookies)

## See Also

- Interact iRedAdmin-Pro RESTful API with `curl`