{"id":20652314,"url":"https://github.com/openpolis/atokaconn","last_synced_at":"2026-01-21T09:02:17.671Z","repository":{"id":57412408,"uuid":"385968874","full_name":"openpolis/atokaconn","owner":"openpolis","description":"A python package that allows connections to and data extractions from the ATOKA.io API service.","archived":false,"fork":false,"pushed_at":"2022-10-10T09:17:48.000Z","size":101,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-31T02:24:58.037Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/openpolis.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-07-14T14:27:03.000Z","updated_at":"2022-10-10T09:17:49.000Z","dependencies_parsed_at":"2022-09-10T00:13:09.241Z","dependency_job_id":null,"html_url":"https://github.com/openpolis/atokaconn","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/openpolis/atokaconn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openpolis%2Fatokaconn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openpolis%2Fatokaconn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openpolis%2Fatokaconn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openpolis%2Fatokaconn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openpolis","download_url":"https://codeload.github.com/openpolis/atokaconn/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openpolis%2Fatokaconn/sbom","scorecard":{"id":709933,"data":{"date":"2025-08-11","repo":{"name":"github.com/openpolis/atokaconn","commit":"1cc72d14e6bca6b569f8827ef93f6e29872aab67"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/16 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":"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":"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":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"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":"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":"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":"Maintained","score":0,"reason":"0 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":"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.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt: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 'main'"],"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":0,"reason":"30 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2024-230 / GHSA-248v-346w-9cwc","Warn: Project is vulnerable to: PYSEC-2022-42986 / GHSA-43fp-rhv2-5gv8","Warn: Project is vulnerable to: PYSEC-2023-135 / GHSA-xqr8-7jwr-rhp7","Warn: Project is vulnerable to: PYSEC-2024-60 / GHSA-jjg7-2v4v-x38h","Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: GHSA-gmj6-6f8f-6699","Warn: Project is vulnerable to: GHSA-h5c8-rqwp-cp95","Warn: Project is vulnerable to: GHSA-h75v-3vvj-5mfj","Warn: Project is vulnerable to: GHSA-q2x7-8rv6-6q7h","Warn: Project is vulnerable to: GHSA-3f63-hfp8-52jq","Warn: Project is vulnerable to: GHSA-44wm-f244-xhp3","Warn: Project is vulnerable to: GHSA-4fx9-vc88-q2xc","Warn: Project is vulnerable to: PYSEC-2023-227 / GHSA-8ghj-p4vj-mr35","Warn: Project is vulnerable to: PYSEC-2022-10 / GHSA-8vj2-vxx3-667w","Warn: Project is vulnerable to: PYSEC-2022-168 / GHSA-9j59-75qj-795w","Warn: Project is vulnerable to: GHSA-j7hp-h8jx-5ppr","Warn: Project is vulnerable to: PYSEC-2022-42979 / GHSA-m2vv-5vj5-2hm7","Warn: Project is vulnerable to: PYSEC-2022-8 / GHSA-pw3c-h7wp-cvhx","Warn: Project is vulnerable to: PYSEC-2022-9 / GHSA-xrcv-f9gm-v42c","Warn: Project is vulnerable to: PYSEC-2023-175","Warn: Project is vulnerable to: PYSEC-2022-42969","Warn: Project is vulnerable to: PYSEC-2023-117 / GHSA-mrwq-x4v8-fh7p","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2023-74 / GHSA-j8r2-6x86-q33q","Warn: Project is vulnerable to: GHSA-34jh-p97f-mpxf","Warn: Project is vulnerable to: PYSEC-2023-212 / GHSA-g4mx-q9vg-27p4","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v","Warn: Project is vulnerable to: PYSEC-2023-192 / GHSA-v845-jxx5-vc9f","Warn: Project is vulnerable to: GHSA-jfmj-5v4g-7637"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T07:49:52.830Z","repository_id":57412408,"created_at":"2025-08-22T07:49:52.830Z","updated_at":"2025-08-22T07:49:52.830Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28630938,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T04:47:28.174Z","status":"ssl_error","status_checked_at":"2026-01-21T04:47:22.943Z","response_time":86,"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":[],"created_at":"2024-11-16T17:33:51.785Z","updated_at":"2026-01-21T09:02:17.650Z","avatar_url":"https://github.com/openpolis.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Latest Version](https://img.shields.io/pypi/v/atokaconn.svg)](https://pypi.python.org/pypi/atokaconn)\n[![Latest Version](https://img.shields.io/pypi/pyversions/atokaconn.svg)](https://pypi.python.org/pypi/atokaconn)\n[![License](https://img.shields.io/pypi/l/atokaconn.svg)](https://pypi.python.org/pypi/atokaconn)\n[![Downloads](https://pepy.tech/badge/atokaconn/month)](https://pepy.tech/project/atokaconn/month)\n\n[![Twitter Follow](https://img.shields.io/twitter/follow/openpolislab)](https://twitter.com/openpolislab)\n\n![Tests Badge](https://op-badges.s3.eu-west-1.amazonaws.com/atokaconn/tests-badge.svg?2)\n![Coverage Badge](https://op-badges.s3.eu-west-1.amazonaws.com/atokaconn/coverage-badge.svg?2)\n![Flake8](https://op-badges.s3.eu-west-1.amazonaws.com/atokaconn/flake8-badge.svg?2)\n\n\n`atokaconn` is a python package that allows connections to and data extractions from the \n[ATOKA](https://atoka.io/pages/en/) API service.\n\nATOKA is a service provided by SpazioDati (Cerved), based on companies' data from the \nCamera di Commercio.\n\nAn extensive introduction to these data's structure is available here: https://atoka.io/pages/en/data-structure/.\n\nThe API reference is available here: https://developers.atoka.io/v2/.\n\n## Installation\n\nPython versions from 3.6 are supported.\n\nThe package is hosted on pypi, and can be installed, for example using pip:\n\n    pip install atokaconn\n\n## Usage\n\nOnce a key has been obtained from ATOKA's service (you need to pay for this), then\n\n    from atokaconn import AtokaConn\n    atoka_conn = AtokaConn(key=MYKEY)\n    atoka_p = atoka_conn.get_person_from_tax_id(tax_id)\n \nATOKA has an incredibly rich set of endpoints and filters, allowing a wide variety of usages \nfor their API. This package implements a **very limited set of public methods** that facilitate\naccessing only part of all available information. \n\nSee https://gitlab.com/spaziodati/atoka-cli for a go-based CLI implementation.\n\nSee the Contributing section to increase coverage.\n\n### get_person_from_tax_id\nGets a single person, as a dict, from its tax_id. \nRaises one of the Atoka exceptions if errors are present or no persons are found.\nsee: https://developers.atoka.io/v2/people.html#people_taxIds\n\n### search_person\nRetrieves a single person from ATOKA API, starting from its anagraphical data.\nRaises Atoka exceptions if errors or no objects are found.\n \n`person` is an object instance of Popolo Person type to look for into ATOKA\n  Can be an instance of an object with these attributes:\n    - family_name,\n    - given_name,\n    - birth_date (YYYY[-MM][-DD])\n    - birth_location_area (object of Popolo Area type, an instance with a name attribute will do)\n\nTODO: this is not generic enough, as OPDM/Popolo concepts creeps in. Must be generalized.\n\n### get_people_from_atoka_ids\nReturns a list of dictionaries, with persons corresponding to the passed atoka ids.\n\n### get_people_from_tax_ids\nReturns a list of dictionaries, with persons corresponding to the passed tax ids\n\n### get_companies_from_atoka_ids\nReturns a list of dictionaries, with companies corresponding to the passed atoka ids.\n\n### get_companies_from_tax_ids\nReturns a list of dictionaries, with companies corresponding to the passed tax ids.\n\n### get_roles_from_atoka_ids\nReturns all people in companies with given atoka ids, used to extract people with roles in these companies\n\nMost of the above methods are based on the internal generic `get_items_from_ids`, which uses \n`posts_requests`, in order to correctly build the multipart *batch* post request.\n\nWhen extracting roles, we hit a 50 items limit, and the `extend_response` method must be used, in order to fetch \nitems when the returned count is greater than 50.   \n\n## Support\n\nThere is no guaranteed support available, but authors will try to keep up with issues \nand merge proposed solutions into the code base.\n\n## Project Status\nThis project is currently being developed by the [Openpolis Foundation](https://www.openpolis.it/openpolis-foundation/)\nand does only cover those parts of the ATOKA API that are needed in the Foundation's projects. \nShould more be needed, you can either ask to increase the coverage, or try to contribute, following instructions below.\n\n## Contributing\nIn order to contribute to this project:\n* verify that python 3.6+ is being used (or use [pyenv](https://github.com/pyenv/pyenv))\n* verify or install [poetry](https://python-poetry.org/), to handle packages and dependencies in a leaner way, \n  with respect to pip and requirements\n* clone the project `git clone git@github.com:openpolis/atokaconn.git` \n* install the dependencies in the virtualenv, with `poetry install`,\n  this will also install the dev dependencies\n* develop and test \n* create a [pull request](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)\n* wait for the maintainers to review and eventually merge your pull request into the main repository\n\n### Testing\nTests are under the tests folder, and can be launched with \n\n    pytest\n\nRequests and responses from ATOKA's API are mocked, in order to avoid having to connect to \nthe remote service during tests (slow and needs an API key).\n\nCoverage is installed as a dev dependency and can be used to see how much of the package's code is covered by tests:\n\n    coverage run -m pytest\n\n    # sends coverage report to terminal\n    coverage report -m \n\n    # generate and open a web page with interactive coverage report\n    coverage html\n    open htmlcov/index.html \n\nSyntax can be checked with `flake8`.\n\nCoverage and flake8 configurations are in their sections within `setup.cfg`.\n\n## Authors\nGuglielmo Celata - guglielmo@openpolis.it\n\n## Licensing\nThis package is released under an MIT License, see details in the LICENSE.txt file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenpolis%2Fatokaconn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenpolis%2Fatokaconn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenpolis%2Fatokaconn/lists"}