{"id":34083807,"url":"https://github.com/exponea/exponea-python-sdk","last_synced_at":"2026-04-09T00:02:18.354Z","repository":{"id":57427672,"uuid":"144694809","full_name":"exponea/exponea-python-sdk","owner":"exponea","description":"⚠️ DEPRECATED Python SDK for Exponea Data and Tracking API","archived":false,"fork":false,"pushed_at":"2025-07-02T08:17:03.000Z","size":45,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-12-16T15:35:40.560Z","etag":null,"topics":["api","data","exponea","python","sdk"],"latest_commit_sha":null,"homepage":"https://docs.exponea.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exponea.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-08-14T08:56:38.000Z","updated_at":"2025-07-02T08:17:40.000Z","dependencies_parsed_at":"2022-09-09T08:51:23.101Z","dependency_job_id":null,"html_url":"https://github.com/exponea/exponea-python-sdk","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/exponea/exponea-python-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exponea%2Fexponea-python-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exponea%2Fexponea-python-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exponea%2Fexponea-python-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exponea%2Fexponea-python-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exponea","download_url":"https://codeload.github.com/exponea/exponea-python-sdk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exponea%2Fexponea-python-sdk/sbom","scorecard":{"id":388386,"data":{"date":"2025-08-11","repo":{"name":"github.com/exponea/exponea-python-sdk","commit":"893c0b689fd8e05fc1d825dbc020948a844074ee"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.4,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"1 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 1/18 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":5,"reason":"5 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2014-14 / GHSA-652x-xj99-gmcc","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2014-13 / GHSA-cfj3-7x9c-4p3h","Warn: Project is vulnerable to: PYSEC-2018-28 / GHSA-x84v-xcm2-53pg"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 6 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T17:13:25.139Z","repository_id":57427672,"created_at":"2025-08-18T17:13:25.139Z","updated_at":"2025-08-18T17:13:25.139Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31579058,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","data","exponea","python","sdk"],"created_at":"2025-12-14T12:57:12.612Z","updated_at":"2026-04-09T00:02:18.349Z","avatar_url":"https://github.com/exponea.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n---\n\n# ⚠️ This SDK has been deprecated and is no longer maintained.\n\nPlease consult the [official API reference](https://documentation.bloomreach.com/engagement/reference) for how to interact with the API.\n\n---\n\n# Exponea Python SDK\n\nAn official Python client for Exponea Data API\n\n## Installation\n```\npip install exponea-python-sdk\n```\n\n## Usage\n```python\nfrom exponea_python_sdk import Exponea\nexponea = Exponea(\"project_token\", username=\"basic_auth_username\", password=\"basic_auth_password\")\n```\nYou can now fully utilize all four API, which are Analyses, Catalog, Customer and Tracking API described bellow.\n\n## Tests\nTo run tests, run the following command\n```python\npython -m pytest\n```\n\n## Logging\nTo configure logging, use the attribute `exponea.logger` where a standard logger from Python `logging` module is initalized. For example, to enable `DEBUG` messages, you can configure\n```python\nexponea.logger.setLevel(\"DEBUG\")\n```\n\n## Official documenation\nFor official Exponea documenation of Data API please see \u003chttps://developers.exponea.com/v2/reference\u003e\n\n## Table of Contents\n* [Customer API](#customer-api)\n    * [get_customer](#get_customer)\n    * [get_customer_consents](#get_customer_consents)\n    * [get_customer_attributes](#get_customer_attributes)\n    * [get_customers](#get_customers)\n    * [get_events](#get_events)\n    * [anonymize_customer](#anonymize_customer)\n* [Analyses API](#analyses-api)\n    * [get_report](#get_report)\n    * [get_funnel](#get_funnel)\n    * [get_segmentation](#get_segmentation)\n* [Catalog API](#catalog-api)\n    * [create_catalog](#create_catalog)\n    * [get_catalog_name](#get_catalog_name)\n    * [get_catalog_items](#get_catalog_items)\n    * [update_catalog_item](#update_catalog_item)\n    * [update_catalog_name](#update_catalog_name)\n    * [create_catalog_item](#create_catalog_item)\n    * [delete_catalog_item](#delete_catalog_item)\n    * [delete_catalog_items](#delete_catalog_items)\n    * [delete_catalog](#delete_catalog)\n* [Tracking API](#tracking-api)\n    * [get_system_time](#get_system_time)\n    * [update_customer_properties](#update_customer_properties)\n    * [add_event](#add_event)\n    * [batch_commands](#batch_commands)\n\n## Catalog API\n\n## create_catalog\n```python\nexponea.catalog.create_catalog(\"catalog_name\", [\"field_one\", \"field_two\"])\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| catalog_name  | `String`        | Yes      |\n| fields        | `Array\u003cString\u003e` | Yes      |\n\nIt returns ID of the catalog as a String.\n\n```python\nd2b69e7s987b0asa0137455f2\n```\n\n## get_catalog_name\n```python\nexponea.catalog.get_catalog_name(\"catalog_id\")\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| catalog_id    | `String`        | Yes      |\n\nIt returns name of the catalog as a String.\n\n```python\ntest_catalog\n```\n\n## get_catalog_items\n```python\nexponea.catalog.get_catalog_items(\"catalog_id\", params={})\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| catalog_id    | `String`        | Yes      |\n| params        | `Dictionary`    | No       |\n\n_Note: `params` is a kwargs argument._\n\nIt returns items of the catalog that match the query and filters specified in params Dictionary. See [official documentation](https://developers.exponea.com/v2/reference#get-catalog-items) for what kind of options you can give to params Dictionary.\n\n```python\n{\n    \"matched\": 2,\n    \"limit\": 20,\n    \"skip\": 0,\n    \"data\": [{\"item_id\": \"1\", \"properties\": {\"field_one\": \"foo\", \"field_two\": \"baz\"}}],\n    \"matched_limited\": False,\n    \"total\": 2\n}\n```\n\n## update_catalog_item\n```python\nexponea.catalog.update_catalog_item(\"catalog_id\", \"1\", {\"field_one\": \"new_value\"})\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| catalog_id    | `String`        | Yes      |\n| item_id       | `String`        | Yes      |\n| properties    | `String`        | Yes      |\n\nIt returns Boolean of whether the operation was successful.\n\n```python\nTrue\n```\n\n## update_catalog_name\n```python\nexponea.catalog.update_catalog_name(\"catalog_id\", \"new_name\", [\"fiel_one\", \"field_two\", \"field_three\"])\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| catalog_id    | `String`        | Yes      |\n| new_name      | `String`        | Yes      |\n| fields        | `Array\u003cString\u003e` | Yes      |\n\n_Note: `fields` must contain those fields that already exist._\n\nIt returns Boolean of whether the operation was successful.\n\n```python\nTrue\n```\n\n## create_catalog_item\n```python\nexponea.catalog.create_catalog_item(\"catalog_id\", \"item_id\", { \"field_one\": \"value_one\" })\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| catalog_id    | `String`        | Yes      |\n| item_id       | `String`        | Yes      |\n| properties    | `Dictionary`    | Yes      |\n\n_Note: This operation replaces an already existing item if the IDs match._\n\nIt returns Boolean of whether the operation was successful.\n```python\nTrue\n```\n\n## update_catalog_item\n```python\nexponea.catalog.update_catalog_item(\"catalog_id\", \"item_id\", { \"field_one\": \"value_one\" })\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| catalog_id    | `String`        | Yes      |\n| item_id       | `String`        | Yes      |\n| properties    | `Dictionary`    | Yes      |\n\n_Note: Updates only those fields that are specified in properties Dictionary._\n\nIt returns Boolean of whether the operation was successful.\n```python\nTrue\n```\n\n\n## delete_catalog_item\n```python\nexponea.catalog.delete_catalog_item(\"catalog_id\", \"item_id\")\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| catalog_id    | `String`        | Yes      |\n| item_id       | `String`        | Yes      |\n\nIt returns Boolean of whether the operation was successful.\n\n```python\nTrue\n```\n\n## delete_catalog_items\n```python\nexponea.catalog.delete_catalog_items(\"catalog_id\")\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| catalog_id    | `String`        | Yes      |\n\nIt returns Boolean of whether the operation was successful.\n\n```python\nTrue\n```\n\n## delete_catalog\n```python\nexponea.catalog.delete_catalog(\"catalog_id\")\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| catalog_id    | `String`        | Yes      |\n\nIt returns Boolean of whether the operation was successful.\n\n```python\nTrue\n```\n\n## Tracking API\n\n### get_system_time\n```python\nexponea.tracking.get_system_time(batch=False)\n```\n| Parameter     | Type          | Required |\n| ------------- | ------------- | -------- |\n| batch         | `Boolean`     | No       |\n\n_Note: The `batch` kwarg specifies whether command is used in the batch mode. See [batch_commands method](#batch_commands) for details._\n\nIt returns a Float.\n```python\n1533663283.8943756\n```\n\n### update_customer_properties\n```python\nexponea.tracking.update_customer_properties({ \"registered\": \"test\" }, { \"first_name\": \"Lukas\" }, batch=False)\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| customer_ids  | `Dictionary`    | Yes      |\n| properties    | `Dictionary`    | Yes      |\n| batch         | `Boolean`       | No       |\n\n_Note: The Customer's properties will get updated with the values of the properties Dictionary._\n\n_Note: The `batch` kwarg specifies whether command is used in the batch mode. See [batch_commands method](#batch_commands) for details._\n\nIt returns Boolean describing whether operation was successful or not.\n```python\nTrue\n```\n\n### add_event\n```python\nexponea.tracking.add_event({ \"registered\": \"test\" }, \"event_type\", properties={ \"property\": \"sample_property\" }, timestamp=1533663283, batch=False)\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| customer_ids  | `Dictionary`    | Yes      |\n| event_type    | `String`        | Yes      |\n| properties    | `Dictionary`    | No       |\n| timestamp     | `Float`         | No       |\n| batch         | `Boolean`       | No       |\n\n_Note: `properties`, `timestamp` and `batch` parameters are kwargs._\n\n_Note: The `batch` kwarg specifies whether command is used in the batch mode. See [batch_commands method](#batch_commands) for details._\n\nIt returns Boolean describing whether operation was successful or not.\n```python\nTrue\n```\n\n### batch_commands\n```python\nexponea.tracking.batch_commands([\n    exponea.tracking.add_event({ \"registered\": \"test\" }, \"event_type\", properties={ \"property\": \"test\" }, batch=True),\n    exponea.tracking.update_customer_properties({ \"registered\": \"test\" }, { \"first_name\": \"Lukas\" }, batch=True),\n    exponea.tracking.get_system_time(batch=True)\n])\n```\n| Parameter     | Type                | Required |\n| ------------- | -------------       | -------- |\n| commands      | `Array\u003cDictionary\u003e` | Yes      |\n\nSee [official documentation](https://developers.exponea.com/v2/reference#section-how-to-build-a-command-body) for the available formats of different types of commands.\nIt returns an Array of Booleans describing whether each operation was successful or not.\n\n```python\n[True, True, 1533833512.6860783]\n```\n\n## Customer API\n\n### get_customer\n```python\nexponea.customer.get_customer({ \"registered\": \"test\", \"cookie\": \"123\" })\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| customer_ids  | `Dictionary`    | Yes      |\n\n_Note: The keys of the Dictionary are the names of the ID type, and value is the value for a given customer._\n\nIt returns a Dictionary.\n```python\n{\n    \"events\": [{\n        \"type\": \"test\",\n        \"timestamp\": 1533495544.343536,\n        \"properties\": {}\n    }],\n    \"properties\": {\n        \"first_name\": \"Lukas\",\n        \"last_nam\": \"Cerny\"\n    },\n    \"ids\": {\n        \"registered\": \"test\",\n        \"cookie\": \"123\"\n    }\n}\n```\n\n### get_customer_consents\n```python\nexponea.customer.get_customer_consents({\"registered\": \"test\"}, [ \"newsletter\", \"other\" ])\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| customer_ids  | `Dictionary`    | Yes      |\n| consent_types | `Array\u003cString\u003e` | Yes      |\n\nIt returns a Dictionary.\n\n```python\n{\n    \"newsletter\": True,\n    \"other\": False\n}\n```\n\n### get_customer_attributes\n```python\nexponea.customer.get_customer_attributes({\"registered\": \"test\"}, ids=[\"cookie\", \"ga\"], properties=[\"first_name\"], aggregations=[\"agg_id\"], segmentations=[\"segm_id\"], predictions=[\"pred_id\"], expressions=[\"expr_id\"])\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| customer_ids  | `Dictionary`    | Yes      |\n| ids           | `Array\u003cString\u003e` | No       |\n| properties    | `Array\u003cString\u003e` | No       |\n| aggregations  | `Array\u003cString\u003e` | No       |\n| expressions   | `Array\u003cString\u003e` | No       |\n| segmentations | `Array\u003cString\u003e` | No       |\n| predictions   | `Array\u003cString\u003e` | No       |\n| expressions   | `Array\u003cString\u003e` | No       |\n\n_Note: All the arguments are kwargs and specify the attributes you want to recieve._\n\nIt returns a Dictionary.\n```python\n{\n    \"ids\": {\n        \"cookie\": [],\n        \"ga\": \"sample_id\"\n    },\n    \"properties\": {\n        \"first_name\": \"Lukas\"\n    },\n    \"aggregations\": {\n        \"agg_id\": \"sample_aggregate\"\n    },\n    \"segmentations\": {\n        \"segm_id\": \"sample_segment\"\n    },\n    \"predictions\": {\n        \"pred_id\": \"sample_prediction\"\n    },\n    \"expressions\": {\n        \"expr_id\": \"sample_expression\"\n    }\n}\n```\n_Note: If you do not specify one of the attribute types, it will not have a key in the resulting Dictionary._\n\n### get_customers\n```python\nexponea.customer.get_customers()\n```\n| Parameter     | Type          | Required |\n| ------------- | ------------- | -------- |\n\nIt returns an Array.\n```python\n[\n    {\n        \"ids\": {\n            \"cookie\": [],\n            \"registered\": \"test\"\n        },\n        \"properties\": {\n            \"first_name\": \"Lukas\",\n            \"last_name\": \"Cerny\"\n        }\n    }\n]\n```\n\n### get_events\n```python\nexponea.customer.get_events({ \"registered\": \"test\" }, [ \"event_type\" ])\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| customer_ids  | `Dictionary`    | Yes      |\n| event_types   | `Array\u003cString\u003e` | Yes      |\n\n_Note: Elements of `event_types` Array are names of Events._\n\nIt returns an Array.\n```python\n[\n    {\n        \"properties\":{\n            \"foo\": \"baz\"\n        },\n        \"timestamp\":1533495529.9268496,\n        \"type\": \"event_type\"\n    }\n]\n```\n\n### anonymize_customer\n```python\nexponea.customer.anonymize_customer({ \"registered\": \"test\" })\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| customer_ids  | `Dictionary`    | Yes      |\n\nIt returns a Boolean if operation was successful or not.\n\n```python\nTrue\n```\n\n## Analyses API\n\n### get_report\n```python\nexponea.analyses.get_report(\"report_id\")\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| report_id     | `String`        | Yes      |\n\nIt returns a Dictionary. The elements in `data` represent individual rows.\n\n```python\n{\n    \"name\": \"report_name\",\n    \"data\": [\n        {\n            \"column_name_1\": \"value_1\",\n            \"column_name_2\": 1\n        }\n    ]\n}\n```\n\n### get_funnel\n```python\nexponea.analyses.get_funnel(\"funnel_id\")\n```\n| Parameter     | Type            | Required |\n| ------------- | -------------   | -------- |\n| funnel_id     | `String`        | Yes      |\n\nIt returns a Dictionary. The elements in `data` represent individual drill downs.\n\n```python\n{\n    \"name\": \"funnel_name\",\n    \"data\": [\n        {\n            \"serie\": \"serie_name\",\n            \"step 1 step_one_name count\": 2,\n            \"step 2 step_two_name count\": 1,\n            \"step 2 event_name duration from previous\": 435764.1615576744\n        }\n    ]\n}\n```\n\n### get_segmentation\n```python\nexponea.analyses.get_segmentation(\"segmentation_id\")\n```\n| Parameter     | Type              | Required |\n| ------------- | -------------     | -------- |\n| segmentation_id | `String`        | Yes      |\n\nIt returns a Dictionary. The elements in `data` represent individual segments.\n\n```python\n{\n    \"name\": \"segmentation_name\",\n    \"data\": [\n        {\n            \"segment\": \"segment_name_1\",\n            \"#\": 0\n        }\n    ]\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexponea%2Fexponea-python-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexponea%2Fexponea-python-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexponea%2Fexponea-python-sdk/lists"}