Python client library for the Geni.com public REST API
Project description
Geni: Python Client Library for Geni.com Public REST API
This library simplifies interaction with the Geni.com public REST API, enabling developers to automate various family tree management tasks or integrate Geni functionality into their Python applications. Specifically, it helps post-process your family tree after importing a GEDCOM file.
Features
- Simplifies API interaction.
- Implements OAuth authentication flow.
- Handles Geni's required rate-limiting automatically.
- Stores API keys and tokens for ease of use.
- Provides examples for common use cases.
Installation
Use the following command to install the library directly from GitHub:
pip install git+https://github.com/bryndin/geni.git
Usage Examples
See the examples directory.
Implemented Methods
The library currently supports the following methods:
- Profile
- profile: Returns information about a profile.
- add-child: Add a child to a profile and return the added profile.
- add-parent: Add a parent to a profile and return the added profile.
- add-partner: Add a partner to a profile and return the added profile.
- add-sibling: Add a sibling to a profile and return the added profile.
- delete: Deletes a profile.
- update_basics: Update fields on the basics and about tabs and return the changed profile. Parameters can be posted as form data or JSON.
- Stats
- stats: Returns information about the site.
- world_family_tree: Returns information about the world family tree.
- User
- managed_profiles: Returns a list of profiles the user manages.
Additional methods are planned for future releases. Contributions are welcome!
Authentication
To interact with the Geni API, you need to authenticate using OAuth 2.0. Follow these steps:
-
Register your application at Geni.com App Registration.
-
Copy your API Key.
-
Make your key available in one of the following ways:
-
Store your API Key in a file named
geni_api.keyin your working directory, -
or pass your API key as a parameter during the library initialization.
-
-
During the first run, you will be prompted to authorize your application:
- In the terminal window the library will give you the URL to Geni Auth page
Visit this URL to authorize the application: https://www.geni.com/platform/oauth/authorize?client_id=XXXXXXXX&response_type=token&display=desktop Paste the redirect URL (from the address bar): - Open it in any browser and authorize your application in Geni.
- After authorization, Geni will redirect you to a "Not Found" page. This is expected behavior. Copy the entire URL from the browser address bar and paste it in the terminal.
- The library will extract the access token from that redirected URL and save it to a temporary file
geni_token.tmp.
- In the terminal window the library will give you the URL to Geni Auth page
-
Each subsequent request will use the access token from the temporary file, until the token expires or the file is manually removed.
-
If the access token is expired, the library will ask you to re-authenticate before continuing with the request (expiration time is also stored in the temporary file).
Sensitive files
The library uses two files:
geni_api.key: Created manually to store your API key.geni_token.tmp: Created by the library to store the temporary API access token.
Ensure these files are secured and not exposed in version control systems. These files must be manually deleted when no longer needed.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file geniapi-0.1.0.tar.gz.
File metadata
- Download URL: geniapi-0.1.0.tar.gz
- Upload date:
- Size: 20.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2254ea85d444a8ae55012ce6fa97beade6493f2d2ae5ec47054499fc7ebdeb71
|
|
| MD5 |
a27965cdf5995f906769b46d9a74791c
|
|
| BLAKE2b-256 |
5b104759dd4b04343f367368dbecfa6739cef3b0accb45eef7edc37c22852b0c
|
Provenance
The following attestation bundles were made for geniapi-0.1.0.tar.gz:
Publisher:
pypi.yaml on bryndin/geni
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
geniapi-0.1.0.tar.gz -
Subject digest:
2254ea85d444a8ae55012ce6fa97beade6493f2d2ae5ec47054499fc7ebdeb71 - Sigstore transparency entry: 167807224
- Sigstore integration time:
-
Permalink:
bryndin/geni@f7c421ba7dfe2b144b9d3be9742c93acec2d49bc -
Branch / Tag:
refs/heads/master - Owner: https://github.com/bryndin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yaml@f7c421ba7dfe2b144b9d3be9742c93acec2d49bc -
Trigger Event:
push
-
Statement type:
File details
Details for the file geniapi-0.1.0-py3-none-any.whl.
File metadata
- Download URL: geniapi-0.1.0-py3-none-any.whl
- Upload date:
- Size: 26.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9dab74c20d535bb26e11c585b8bc9a76efa5d369b98ac8e8d3bebba13897b771
|
|
| MD5 |
0041049f729ab3384c476595e7392fd1
|
|
| BLAKE2b-256 |
7aa044a9c51d0cd48f17690eff2db82afd7187c471b613370ac5fba071371806
|
Provenance
The following attestation bundles were made for geniapi-0.1.0-py3-none-any.whl:
Publisher:
pypi.yaml on bryndin/geni
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
geniapi-0.1.0-py3-none-any.whl -
Subject digest:
9dab74c20d535bb26e11c585b8bc9a76efa5d369b98ac8e8d3bebba13897b771 - Sigstore transparency entry: 167807226
- Sigstore integration time:
-
Permalink:
bryndin/geni@f7c421ba7dfe2b144b9d3be9742c93acec2d49bc -
Branch / Tag:
refs/heads/master - Owner: https://github.com/bryndin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yaml@f7c421ba7dfe2b144b9d3be9742c93acec2d49bc -
Trigger Event:
push
-
Statement type: