Metadata-Version: 2.4
Name: macss-modular-api-graphql-client
Version: 0.5.0
Summary: Official MACSS outbound GraphQL client for Python.
Author: ccisne.dev
License-Expression: MIT
Project-URL: Homepage, https://github.com/macss-dev/modular_api
Project-URL: Repository, https://github.com/macss-dev/modular_api/tree/main/code/py/modular_api_graphql_client
Project-URL: Issues, https://github.com/macss-dev/modular_api/issues
Project-URL: Documentation, https://github.com/macss-dev/modular_api/tree/main/code/py/modular_api_graphql_client#readme
Keywords: macss,graphql,client
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Typing :: Typed
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"

# macss-modular-api-graphql-client

Official MACSS outbound GraphQL client for Python.

## Quick start

```python
from modular_api_graphql_client import GraphqlRequest, ServiceClientConfig, graphql_client

result = graphql_client(
    config=ServiceClientConfig(
        service_id="users-graphql",
        base_url="https://api.example.test",
        redacted_summary="users-graphql@example",
        default_headers={"accept": "application/json"},
    ),
    request=GraphqlRequest(
        operation_id="users.query",
        document="query GetUsers { users { id } }",
        operation_name="GetUsers",
    ),
    decoder=lambda value: dict(value or {}),
)

if result.is_success:
    print(result.value.data)
    print(result.value.errors)
else:
    print(result.failure.message)
```

## Current slice

- query-only GraphQL POST requests to `/graphql`
- normalized `GraphqlResponse[T]` with `data`, `errors`, `extensions`, and metadata
- persistent `GraphqlClient`
- one-shot `graphql_client()` helper
- transport failures kept separate from GraphQL error envelopes
