Skip to main content

RENAMED TO: bsm-api-client

Project description

BSM Logo

pybedrock-server-manager

PyPI version Python Versions License

Introduction

[!IMPORTANT] RENAMED TO: bsm-api-client

pybedrock_server_manager is an asynchronous Python client library for interacting with the Bedrock Server Manager API. It provides a convenient way to manage Minecraft Bedrock Dedicated Servers through the manager's HTTP API.

Features

  • Fully asynchronous using asyncio and aiohttp.
  • Context manager support for session management.
  • Handles authentication (JWT) automatically, including token refresh attempts.
  • Provides methods for most BSM API endpoints:
    • Manager Information & Global Actions
    • Server Listing, Status & Configuration
    • Server Actions (Start, Stop, Command, Update, etc.)
    • Content Management (Backups, Worlds, Addons)
    • OS-specific Task Scheduling (Cron for Linux, Task Scheduler for Windows)
  • Custom exceptions for specific API errors, providing context like status codes and API messages.
  • Supports connecting via HTTP or HTTPS.

Installation

Install the library using pip:

pip install pybedrock_server_manager

Quick Start

Here's a basic example of how to initialize the client and fetch server information:

For a complete list of endpoints and examples, see API_DOCS.md

import asyncio
from pybedrock_server_manager import BedrockServerManagerApi, APIError, CannotConnectError

async def main():
    client = BedrockServerManagerApi(
        host="host",                   # e.g., "127.0.0.1" or "bsm.example.internal"
        username="username",           # Username for BSM login
        password="password",           # Password for BSM login
        port=11325,                    # Optional: Not required for example if using domain such as bsm.example.internal
        use_ssl=False                  # Set to True if your manager uses HTTPS
        verify_ssl=True                # Set to False if using HTTPS with a self-signed cert
    )

    try:
        async with client: # Handles session and token management
            # Get manager info (no auth needed for this specific call, but client handles it)
            manager_info = await client.async_get_info()
            print(f"Manager OS: {manager_info.get('data', {}).get('os_type')}, Version: {manager_info.get('data', {}).get('app_version')}")

            # Get list of all servers
            servers = await client.async_get_servers_details()
            if servers:
                print("\nManaged Servers:")
                for server in servers:
                    print(f"  - Name: {server['name']}, Status: {server['status']}, Version: {server['version']}")
            else:
                print("No servers found.")

            # Example: Start a specific server (replace 'MyServer' with an actual server name)
            # server_name_to_start = "MyServer"
            # if any(s['name'] == server_name_to_start for s in servers):
            #     print(f"\nAttempting to start server: {server_name_to_start}")
            #     start_response = await client.async_start_server(server_name_to_start)
            #     print(f"Start response: {start_response.get('message')}")
            # else:
            #     print(f"\nServer '{server_name_to_start}' not found, cannot start.")

    except AuthError as e:
        print(f"Authentication Error: {e}")
    except ServerNotFoundError as e:
        print(f"Server Not Found Error: {e}")
    except APIError as e:
        print(f"An API Error occurred: {e}")
        print(f"  Status Code: {e.status_code}")
        print(f"  API Message: {e.api_message}")
        print(f"  API Errors: {e.api_errors}")
    except CannotConnectError as e:
        print(f"Connection Error: {e}")
    except ValueError as e:
        print(f"Input Error: {e}")
    finally:
        # The `async with client:` block handles closing the session.
        # If not using context manager, you would call:
        # await client.close()
        pass

if __name__ == "__main__":
    asyncio.run(main())

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pybedrock_server_manager-0.6.0.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pybedrock_server_manager-0.6.0-py3-none-any.whl (4.2 kB view details)

Uploaded Python 3

File details

Details for the file pybedrock_server_manager-0.6.0.tar.gz.

File metadata

File hashes

Hashes for pybedrock_server_manager-0.6.0.tar.gz
Algorithm Hash digest
SHA256 5385958bed9d1396fe18c8546482c9c874cd63035aa13712cc59402b8f77ed9c
MD5 79fecf31ea2fc99545ef26e277e4f69b
BLAKE2b-256 4aa28fdff9a77c88f5454a83bdd647e3f6d09f169da4a78ce232ebd93af7216f

See more details on using hashes here.

File details

Details for the file pybedrock_server_manager-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pybedrock_server_manager-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 694fea0d61bcfa1ee3d8d2867e3c2c20559c4b522fe304df00f2fc502317e8e1
MD5 79e5de2aa2c6a6d26df0070fcca2dc47
BLAKE2b-256 27a999e10f2389244e6486f42fc3c9bbbb586f85a0c763a98a4b38bbf22755be

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page