one-sdk


Nameone-sdk JSON
Version 1.0.0b14 PyPI version JSON
download
home_pageNone
SummaryOneSDK is a universal API client which provides an unparalleled developer experience for every HTTP API
upload_time2025-01-31 15:18:16
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseNone
keywords superface api client sdk one-sdk ai integrations
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [Website](https://superface.ai) | [Get Started](https://superface.ai/docs/getting-started) | [Documentation](https://superface.ai/docs) | [GitHub Discussions](https://sfc.is/discussions) | [Twitter](https://twitter.com/superfaceai) | [Support](https://superface.ai/support)
<br />
<br />
<img src="https://github.com/superfaceai/one-sdk/raw/main/docs/LogoGreen.png" alt="Superface" width="100" height="100">

# Superface OneSDK

**One SDK for all the APIs you want to integrate with.**

[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/superfaceai/one-sdk/ci_cd.yml)](https://github.com/superfaceai/one-sdk/actions/workflows/ci_cd.yml)
[![license](https://img.shields.io/npm/l/@superfaceai/one-sdk)](LICENSE)
[![GitHub Discussions](https://img.shields.io/github/discussions/superfaceai/.github?logo=github&logoColor=fff)](https://github.com/orgs/superfaceai/discussions)
[![npm](https://img.shields.io/pypi/v/one-sdk)](https://pypi.org/project/one-sdk/)

`OneClient` is a universal API client which provides an unparalleled developer experience for every HTTP API. It enhances resiliency to API changes, and comes with built-in integration monitoring and provider failover.

For more details about Superface, visit [How it Works](https://superface.ai/how-it-works) and [Get Started](https://superface.ai/docs/getting-started).

## Important Links

- [Superface website](https://superface.ai)
- [Get Started](https://superface.ai/docs/getting-started)
- [Documentation](https://superface.ai/docs)
- [Support](https://superface.ai/support)

## Install

To install OneSDK into the project, run:

```shell
python3 -m pip install one-sdk
```

## Setup

OneClient uses three files (also called Comlink) which together make the integration:

- **Profile** - describe business capabilities apart from the implementation details, what is expected as input and what will be the result. Profile name have optional scope before `/` and required name `[scope/]<name>`
- **Provider** - Define a provider's API services and security schemes to use in a Comlink Map
- **Map** - describe implementation details for fulfilling a business capability from a Comlink Profile

To glue all the parts together, OneClient uses name and file structure convention.

```
.
└── superface/ - directory with all the Comlinks in project root
    ├── <profileScope>.<profileName>.profile - profile file
    ├── <providerName>.provider.json - provider file
    ├── <profileScope>.<profileName>.<providerName>.map.js - map file
    └── ... - repeat for all the Comlinks
```

### Send email example

As an example, lets send an email with [Mailchimp](https://github.com/superfaceai/one-sdk/blob/main/examples/maps/src/mailchimp.provider.json). The use-case is described in the profile [communication/send-email](https://github.com/superfaceai/one-sdk/blob/main/examples/maps/src/communication.send-email.profile) and the map with [implementation](https://github.com/superfaceai/one-sdk/blob/feat/superface_assets_convention/examples/maps/src/communication.send-email.mailchimp.map.js).

1. Start with creating a new directory `superface` in the root of your project.
2. Add the profile. Because profile name contains have scope we need to replace `/` with `.`. So, the profile with name `communication/send-email` have corresponding filename `communication.send-email.profile`.
3. Add the provider. The provider name is the same as the filename. So the provider with name `mailchimp` have corresponding filename `mailchimp.provider.json`.
4. Add the map. Map connects profile and provider, so the filename is consists of both as well `communication.send-email.mailchimp.map.js`.

The final structure should look like this:

```
.
└── superface/
    ├── communication.send-email.mailchimp.map.js
    ├── communication.send-email.profile
    └── mailchimp.provider.json
```

## Use

Create `__main__.py` file with following content and update:

```py
import sys
from one_sdk import OneClient, PerformError, UnexpectedError

client = OneClient()
profile = client.get_profile("<profileName>")
use_case = profile.get_usecase("<usecaseName>")
try:
    r = use_case.perform(
        {
            # Input parameters as defined in profile:
            '<key>': '<value>'
        },
        provider = "<providerName>",
        # Provider specific integration parameters:
        parameters = {
            '<integrationParameterName>': '<integrationParameterValue>'
        },
        security = {
            # Provider specific security values:
            '<securityValueId>': {
                # Security values as described in provider or on profile page
            }
        }
    )
    print(f"RESULT: {r}")
except PerformError as e:
    print(f"ERROR RESULT: {e.error_result}")
except ValidationError as e:
    print(f"INVALID INPUT: {e.message}", file = sys.stderr)
except UnexpectedError as e:
    print(f"ERROR:", e, file = sys.stderr)
finally:
    client.send_metrics_to_superface()
```

Then run the script with:

```shell
python __main__.py
```

## License

OneSDK is licensed under the [MIT License](LICENSE).

© 2023 Superface s.r.o.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "one-sdk",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "superface, api, client, sdk, one-sdk, ai, integrations",
    "author": null,
    "author_email": "Superface Team <hello@superface.ai>",
    "download_url": "https://files.pythonhosted.org/packages/af/76/53d69fa75b83c6b4c31f269ac449b82033b37c7d573ab3b1998e39a05e67/one_sdk-1.0.0b14.tar.gz",
    "platform": null,
    "description": "[Website](https://superface.ai) | [Get Started](https://superface.ai/docs/getting-started) | [Documentation](https://superface.ai/docs) | [GitHub Discussions](https://sfc.is/discussions) | [Twitter](https://twitter.com/superfaceai) | [Support](https://superface.ai/support)\n<br />\n<br />\n<img src=\"https://github.com/superfaceai/one-sdk/raw/main/docs/LogoGreen.png\" alt=\"Superface\" width=\"100\" height=\"100\">\n\n# Superface OneSDK\n\n**One SDK for all the APIs you want to integrate with.**\n\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/superfaceai/one-sdk/ci_cd.yml)](https://github.com/superfaceai/one-sdk/actions/workflows/ci_cd.yml)\n[![license](https://img.shields.io/npm/l/@superfaceai/one-sdk)](LICENSE)\n[![GitHub Discussions](https://img.shields.io/github/discussions/superfaceai/.github?logo=github&logoColor=fff)](https://github.com/orgs/superfaceai/discussions)\n[![npm](https://img.shields.io/pypi/v/one-sdk)](https://pypi.org/project/one-sdk/)\n\n`OneClient` is a universal API client which provides an unparalleled developer experience for every HTTP API. It enhances resiliency to API changes, and comes with built-in integration monitoring and provider failover.\n\nFor more details about Superface, visit [How it Works](https://superface.ai/how-it-works) and [Get Started](https://superface.ai/docs/getting-started).\n\n## Important Links\n\n- [Superface website](https://superface.ai)\n- [Get Started](https://superface.ai/docs/getting-started)\n- [Documentation](https://superface.ai/docs)\n- [Support](https://superface.ai/support)\n\n## Install\n\nTo install OneSDK into the project, run:\n\n```shell\npython3 -m pip install one-sdk\n```\n\n## Setup\n\nOneClient uses three files (also called Comlink) which together make the integration:\n\n- **Profile** - describe business capabilities apart from the implementation details, what is expected as input and what will be the result. Profile name have optional scope before `/` and required name `[scope/]<name>`\n- **Provider** - Define a provider's API services and security schemes to use in a Comlink Map\n- **Map** - describe implementation details for fulfilling a business capability from a Comlink Profile\n\nTo glue all the parts together, OneClient uses name and file structure convention.\n\n```\n.\n\u2514\u2500\u2500 superface/ - directory with all the Comlinks in project root\n    \u251c\u2500\u2500 <profileScope>.<profileName>.profile - profile file\n    \u251c\u2500\u2500 <providerName>.provider.json - provider file\n    \u251c\u2500\u2500 <profileScope>.<profileName>.<providerName>.map.js - map file\n    \u2514\u2500\u2500 ... - repeat for all the Comlinks\n```\n\n### Send email example\n\nAs an example, lets send an email with [Mailchimp](https://github.com/superfaceai/one-sdk/blob/main/examples/maps/src/mailchimp.provider.json). The use-case is described in the profile [communication/send-email](https://github.com/superfaceai/one-sdk/blob/main/examples/maps/src/communication.send-email.profile) and the map with [implementation](https://github.com/superfaceai/one-sdk/blob/feat/superface_assets_convention/examples/maps/src/communication.send-email.mailchimp.map.js).\n\n1. Start with creating a new directory `superface` in the root of your project.\n2. Add the profile. Because profile name contains have scope we need to replace `/` with `.`. So, the profile with name `communication/send-email` have corresponding filename `communication.send-email.profile`.\n3. Add the provider. The provider name is the same as the filename. So the provider with name `mailchimp` have corresponding filename `mailchimp.provider.json`.\n4. Add the map. Map connects profile and provider, so the filename is consists of both as well `communication.send-email.mailchimp.map.js`.\n\nThe final structure should look like this:\n\n```\n.\n\u2514\u2500\u2500 superface/\n    \u251c\u2500\u2500 communication.send-email.mailchimp.map.js\n    \u251c\u2500\u2500 communication.send-email.profile\n    \u2514\u2500\u2500 mailchimp.provider.json\n```\n\n## Use\n\nCreate `__main__.py` file with following content and update:\n\n```py\nimport sys\nfrom one_sdk import OneClient, PerformError, UnexpectedError\n\nclient = OneClient()\nprofile = client.get_profile(\"<profileName>\")\nuse_case = profile.get_usecase(\"<usecaseName>\")\ntry:\n    r = use_case.perform(\n        {\n            # Input parameters as defined in profile:\n            '<key>': '<value>'\n        },\n        provider = \"<providerName>\",\n        # Provider specific integration parameters:\n        parameters = {\n            '<integrationParameterName>': '<integrationParameterValue>'\n        },\n        security = {\n            # Provider specific security values:\n            '<securityValueId>': {\n                # Security values as described in provider or on profile page\n            }\n        }\n    )\n    print(f\"RESULT: {r}\")\nexcept PerformError as e:\n    print(f\"ERROR RESULT: {e.error_result}\")\nexcept ValidationError as e:\n    print(f\"INVALID INPUT: {e.message}\", file = sys.stderr)\nexcept UnexpectedError as e:\n    print(f\"ERROR:\", e, file = sys.stderr)\nfinally:\n    client.send_metrics_to_superface()\n```\n\nThen run the script with:\n\n```shell\npython __main__.py\n```\n\n## License\n\nOneSDK is licensed under the [MIT License](LICENSE).\n\n\u00a9 2023 Superface s.r.o.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "OneSDK is a universal API client which provides an unparalleled developer experience for every HTTP API",
    "version": "1.0.0b14",
    "project_urls": {
        "Bug Tracker": "https://github.com/superfaceai/one-sdk/issues",
        "Homepage": "https://github.com/superfaceai/one-sdk/tree/main/packages/python_host"
    },
    "split_keywords": [
        "superface",
        " api",
        " client",
        " sdk",
        " one-sdk",
        " ai",
        " integrations"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "51d5404142a4dfe292c8fec6e00c445ba0cffc29c19aa794f4cfb411b74d5811",
                "md5": "1905ec08273110861bc0a59590928829",
                "sha256": "cd59294582f983f192d8dbc1506f4a25a3c6e7115fa491e5a3a164c75a707fc7"
            },
            "downloads": -1,
            "filename": "one_sdk-1.0.0b14-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "1905ec08273110861bc0a59590928829",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 1191886,
            "upload_time": "2025-01-31T15:18:14",
            "upload_time_iso_8601": "2025-01-31T15:18:14.276125Z",
            "url": "https://files.pythonhosted.org/packages/51/d5/404142a4dfe292c8fec6e00c445ba0cffc29c19aa794f4cfb411b74d5811/one_sdk-1.0.0b14-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "af7653d69fa75b83c6b4c31f269ac449b82033b37c7d573ab3b1998e39a05e67",
                "md5": "a326248490bc85b461c6a70f2f6a49e7",
                "sha256": "0521043fa905613eb37b5081476b7d11bbc08e97b8952e8fa0c57543dc890a0d"
            },
            "downloads": -1,
            "filename": "one_sdk-1.0.0b14.tar.gz",
            "has_sig": false,
            "md5_digest": "a326248490bc85b461c6a70f2f6a49e7",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 1190840,
            "upload_time": "2025-01-31T15:18:16",
            "upload_time_iso_8601": "2025-01-31T15:18:16.360294Z",
            "url": "https://files.pythonhosted.org/packages/af/76/53d69fa75b83c6b4c31f269ac449b82033b37c7d573ab3b1998e39a05e67/one_sdk-1.0.0b14.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-31 15:18:16",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "superfaceai",
    "github_project": "one-sdk",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "one-sdk"
}
        
Elapsed time: 1.73771s