Skip to main content

Python client library for Prometeo

Project description

Prometeo Python API Client PyPI version Documentation Status Bitbucket Pipelines branch

This is the official python library for the Prometeo API

Documentation

Complete client documentation is available at Read the docs

Installation

Prerequisites

  • Python version 3.7
  • An API Key (contact us to get one!)

Install package

$ pip install prometeo

Quick Start

Get your key

Go to your dashboard, there you'll find your API key. Use it to instantiate the client:

from prometeo import Client


client = Client('<YOUR_API_KEY>', environment='sandbox')

The environment argument is either sandbox for the sandbox or production for the production environment.

Listing movements

The following example logs in to the sandboxed bank and retrieves a list of movements

from datetime import datetime

session = client.banking.new_session()
session = session.login(provider='test', username='12345', password='gfdsa')
accounts = session.get_accounts()
account = accounts[0]
print(account.number, ' - ', account.name)
movements = account.get_movements(datetime(2019, 2, 1), datetime(2019, 2, 2))
for movement in movements:
    print(movement.detail, movement.debit, movement.credit)

Listing credit card movements

cards = session.get_credit_cards()
card = cards[0]
print(card.number, ' - ', card.name)
movements = card.get_movements('USD', datetime(2019, 2, 1), datetime(2019, 2, 2))
for movement in movements:
    print(movement.detail, movement.debit, movement.credit)

Listing all available banks

providers = client.banking.get_providers()
for provider in providers:
    print(provider.name, provider.country)

Account Validation API

Validating Account in MX

result = client.account_validation.validate(
    account_number="999000000000000014",
    country_code="MX"
)

CURP API

Checking the existence of a curp

from prometeo.curp import exceptions

curp = 'ABCD12345EFGH'
try:
    result = client.curp.query(curp)
except exceptions.CurpError as e:
    print("CURP does not exist:", e.message)

Looking for a CURP by person

from datetime import datetime
from prometeo.curp import exceptions, Gender, State

curp = 'ABCD12345EFGH'
state = State.SINALOA
birthdate = datetime(1988, 3, 4)
name = 'JOHN'
first_surname = 'DOE'
last_surname = 'PONCE'
gender = Gender.MALE
try:
    result = client.curp.reverse_query(
        state, birthdate, name, first_surname, last_surname, gender
    )
except exceptions.CurpError as e:
    print("CURP does not exist:", e.message)

DIAN API

Log in

Supply the NIT to log in as a company:

from prometeo.dian import DocumentType

session = client.dian.login(
    nit='098765',
    document_type=DocumentType.CEDULA_CIUDADANIA,
    document='12345',
    password='test_password',
)

Or omit it to log in as a person:

from prometeo.dian import DocumentType

session = client.dian.login(
    document_type=DocumentType.CEDULA_CIUDADANIA,
    document='12345',
    password='test_password',
)

Get the data

Company info:

session.get_company_info()

Balances:

session.get_balances()

Rent declaration:

session.get_rent_declaration(2018)

VAT declaration:

from prometeo.dian import Periodicity, QuartlerlyPeriod

session.get_vat_declaration(2019, Periodicity.QUARTERLY, QuartlerlyPeriod.JANUARY_APRIL)

Numeration:

from datetime import datetime
from prometeo.dian import NumerationType

session.get_numeration(NumerationType.Authorization, datetime(2019, 1, 1), datetime(2019, 5, 1))

Retentions:

from prometeo.dian import MonthlyPeriod

session.get_retentions(2019, MonthlyPeriod.NOVEMBER)

SAT API

Login in

from prometeo.sat import LoginScope

session = client.sat.login(
    rfc='ABCD1234EFGH',
    password='password',
    scope=LoginScope.CFDI,
)

Work with CFDI bills

List emitted and received bills

from prometeo.sat import BillStatus

emitted_bills = session.get_emitted_bills(
    date_start=datetime(2020, 1, 1),
    date_end=datetime(2020, 2, 1),
    status=BillStatus.ANY,
)

received_bills = session.get_received_bills(
    year=2020,
    month=1,
    status=BillStatus.ANY,

Bulk download of bills

from prometeo.sat import BillStatus

download_requests = session.download_emitted_bills(
    date_start=datetime(2020, 1, 1),
    date_end=datetime(2020, 2, 1),
    status=BillStatus.ANY,
)

for request in download_requests:
    download = request.get_download()
    content = download.get_file().read()

Download acknowledgements

from prometeo.sat import Motive, DocumentType, Status, SendType

acks = session.get_acknowledgement(
    year=2020,
    month_start=1,
    month_end=2,
    motive=Motive.ALL,
    document_type=DocumentType.ALL,
    status=Status.ALL,
    send_type=SendType.ALL,
)
for ack in acks:
    download = ack.download().get_file()

How to run tests

We are using the tox testing library tox

To run the tests imlpemented inside the tests folder simply run the following command inside your project: tox

This will run tests for both python 2 and 3. To restrict the result to only python3 use: tox -e py3

How to generate HTML documentation

Inside your terminal, move to the /docs folder (there should be a file named Makefile), run the following command: make html

This will generate the HTML files inside the docs/_build folder.

Notes

  1. Do not install pip install prometeo package inside the same virtual enviroment where this project is running as it may cause conflicts while running unittest.

  2. To use the local files insted of the production source code, install it with pip install prometeo --no-index --find-links file:///srv/pkg/mypackage

License

The MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prometeo-2.0.0.tar.gz (34.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

prometeo-2.0.0-py3-none-any.whl (46.7 kB view details)

Uploaded Python 3

File details

Details for the file prometeo-2.0.0.tar.gz.

File metadata

  • Download URL: prometeo-2.0.0.tar.gz
  • Upload date:
  • Size: 34.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for prometeo-2.0.0.tar.gz
Algorithm Hash digest
SHA256 17c3ec9b806fc130ee34b0ddbdd4c3c599be0f5591adc14aa87e3de8950f99fd
MD5 23f7f092ef2b64b4db22b40e120da8e4
BLAKE2b-256 da2061a856b30125fc7261cf46d1af068cae8d887dd31c04bcc7e2d4c5f131a8

See more details on using hashes here.

File details

Details for the file prometeo-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: prometeo-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 46.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for prometeo-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6044227578680f2ccfd82f61f79102411a5717ec94083ca1881661a140811b8b
MD5 43f8994121506d4923f051dde783ebd9
BLAKE2b-256 9dce15100273d184c505b0ab87158b4a5520e05988c2c3273be5ce07b115e443

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page