Skip to main content

This is a openapi helper library for the ZMP AI Platform

Project description

zmp-openapi-helper

Platform Badge Component Badge CI Badge License Badge PyPI - Version PyPI - Implementation PyPI - Python Version PyPI - Wheel PyPI - Download

Introduction

This is a openapi helper library for the ZMP AI Platform

Key Features

  • Support the OpenAPI Specification(>=3.0.0)
  • Generate the Arguments Schema for the LLM

Installation

Install using pip:

pip install zmp-openapi-helper

Install using poetry:

poetry add zmp-openapi-helper

Usage

Basic example:

import logging
import logging.config

from zmp_openapi_helper import (
    MixedAPISpecConfig,
    ZmpAPIWrapper,
)

logging.config.fileConfig("logging.conf", disable_existing_loggers=False)
logging.getLogger("zmp_openapi_helper.openapi.zmpapi_models").setLevel(logging.INFO)
logging.getLogger("zmp_openapi_helper.toolkits.toolkit").setLevel(logging.INFO)
logger = logging.getLogger("appLogger")
logger.setLevel(logging.DEBUG)

if __name__ == "__main__":
    mixed_api_spec_config = MixedAPISpecConfig.from_mixed_spec_file(
        file_path="runner/openapi/zmp_mixed_api_spec.json"
    )

    zmp_api_wrapper = ZmpAPIWrapper(
        "https://api.test.company.com",
        mixed_api_spec_config=mixed_api_spec_config,
        auth_type=AuthenticationType.CUSTOM,
        custom_auth_header_key="X-Access-Key",
        custom_auth_header_value="xxxxx",
    )

    operations = zmp_api_wrapper.get_operations()
    for operation in operations:
        print("-" * 100)
        print(operation.args_schema)
        for field_name, field_info in operation.args_schema.model_fields.items():
            print(
                f"\t{field_name}: {field_info.annotation}, {field_info.default}, {field_info.description}"
            )
            
    response = zmp_api_wrapper.run(
        "GET",
        "/api/alert/v1/alerts",
        query_params=None
    )
    print(response)

Mixed API Spec Config Sample

{
    "backends": [
        {
            "backend": "zcp-alert-backend",
            "config": {
                "file_path": "runner/openapi/zcp/zcp_alert_backend_openapi_spec.json",
                "prefix": "/api/alert/v1",
                "apis": [
                    {
                        "path":"/api/alert/v1/alerts",
                        "methods": ["get"]
                    },
                    {
                        "path":"/api/alert/v1/alerts",
                        "methods": ["post"]
                    },
                    {
                        "path":"/api/alert/v1/alerts/{alert_id}",
                        "methods": ["get"]
                    },
                    {
                        "path":"/api/alert/v1/alerts/webhook",
                        "methods": ["post"]
                    },
                    {
                        "path":"/api/alert/v1/alerts/{alert_id}/{action}",
                        "methods": ["patch"]
                    },
                    {
                        "path":"/api/alert/v1/alerts/bulk/{action}",
                        "methods": [
                            {
                                "method": "patch",
                                "description": "Bulk action on alerts"
                            }
                        ]
                    }
                ]
            }
        },
        {
            "backend": "zcp-mcm-backend",
            "config": {
                "file_path": "runner/openapi/zcp/zcp_mcm_backend_openapi_spec.json",
                "prefix": "/api/mcm/resource/v1beta1",
                "apis": [
                    {
                        "path":"/api/mcm/resource/v1beta1/workload/pods",
                        "methods": [
                            {
                                "method": "get",
                                "description": "Get pods using the query parameters"
                            }
                        ]
                    },
                    {
                        "path":"/api/mcm/resource/v1beta1/workload/pods/{name}",
                        "methods": [
                            {
                                "method": "get",
                                "description": "Get pod details by name and cluster and namespace parameters"
                            }
                        ]
                    },
                    {
                        "path":"/api/mcm/resource/v1beta1/workload/pods/events",
                        "methods": [
                            {
                                "method": "get",
                                "description": "Get pod events by id which is consists of cluster, namespace and pod name. seperated by $. e.g.)id=cluster1$namespace1$pod1"
                            }
                        ]
                    },
                    {
                        "path":"/api/mcm/resource/v1beta1/workload/pods/metrics",
                        "methods": [
                            {
                                "method": "get",
                                "description": "Get pod metrics by id which is consists of cluster, namespace and pod name. seperated by $. e.g.)id=cluster1$namespace1$pod1"
                            }
                        ]
                    },
                    {
                        "path":"/api/mcm/resource/v1beta1/accesscontrol/clusterrolebindings",
                        "methods": ["get", "delete"]
                    },
                    {
                        "path":"/api/mcm/resource/v1beta1/clusters",
                        "methods": [
                            {
                                "method":   "get",
                                "description": "Get clusters using the query parameters"
                            }
                        ]
                    }
                ]
            }
        },
        {
            "backend": "zcp-monitoring-backend",
            "config": {
                "file_path": "runner/openapi/zcp/zcp_monitoring_backend_openapi_spec.json",
                "prefix": "/api/monitoring/v1beta1",
                "apis": [
                    {
                        "path":"/api/monitoring/v1beta1/realms/{realm}/rules/{namespace}",
                        "methods": [
                            {
                                "method": "get",
                                "description": "Get rule groups by realm and namespace"
                            }
                        ]
                    },
                    {
                        "path":"/api/monitoring/v1beta1/realms/{realm}/events",
                        "methods": [
                            {
                                "method": "get",
                                "description": "Get events by realm"
                            }
                        ]
                    },
                    {
                        "path":"/api/monitoring/v1beta1/realms/{realm}/metrics/clusters",
                        "methods": [
                            {
                                "method": "get",
                                "description": "Get metrics of clusters by realm"
                            }
                        ]
                    },
                    {
                        "path":"/api/monitoring/v1beta1/realms/{realm}/metrics/nodes",
                        "methods": [
                            {
                                "method": "get",
                                "description": "Get metrics of nodes by realm"
                            }
                        ]
                    },
                    {
                        "path":"/api/monitoring/v1beta1/realms/{realm}/metrics/pods",
                        "methods": [
                            {
                                "method": "get",
                                "tool_name": "get_metrics_of_pods_by_realm",
                                "description": "Get metrics of pods by realm"
                            }
                        ]
                    }
                ]
            }
        }
    ]
}

For more detailed usage instructions, please refer to our documentation.

Development Setup

  1. Clone the repository
git clone https://github.com/yourusername/zmp-openapi-helper.git
cd zmp-openapi-helper
  1. Create and activate virtual environment
python -m venv .venv
source .venv/bin/activate  # Windows: venv\Scripts\activate
  1. Install development dependencies
poetry install

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contact

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

zmp_openapi_helper-0.2.1.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

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

zmp_openapi_helper-0.2.1-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

Details for the file zmp_openapi_helper-0.2.1.tar.gz.

File metadata

  • Download URL: zmp_openapi_helper-0.2.1.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.11.10 Darwin/24.3.0

File hashes

Hashes for zmp_openapi_helper-0.2.1.tar.gz
Algorithm Hash digest
SHA256 b6d093d95236ebb05dff6d3a60d527c4ee26f9181047e7361124ee5de2064723
MD5 dbc93120d61c799d36edbf132a3eb23d
BLAKE2b-256 e4e53aedb6b617f8ffe2212ce4e6a06a584fcf498c43c2568d3fd5500268a5c6

See more details on using hashes here.

File details

Details for the file zmp_openapi_helper-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: zmp_openapi_helper-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 18.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.11.10 Darwin/24.3.0

File hashes

Hashes for zmp_openapi_helper-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b437305f581f7f49fef3e7bf7a6f1f983dc8befba68419ae159714a7801a0eae
MD5 15b2cb00ca16bc50ea3bee8720faddf4
BLAKE2b-256 53bb025483645197584784a7ccd27121bb27d2fbf3fa438d175552ff05af03b7

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