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.1.tar.gz (34.3 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.1-py3-none-any.whl (46.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: prometeo-2.0.1.tar.gz
  • Upload date:
  • Size: 34.3 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.1.tar.gz
Algorithm Hash digest
SHA256 061dac79cca79bb7f306e086b6d0e8e44c3d84ac93df2c1c55fc84adb915a9f4
MD5 a42e04cf196b796c8df91b7f9ad2adca
BLAKE2b-256 89ae65d7e3f7b77c220339e566c122ea835bf0f5f25e2a322c8fdbd9c80a0cd9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prometeo-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 46.8 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9158f3c746f43bc97742801d25163ba236f709924c70b3829b43233a6341aa63
MD5 ca8f605ffdb6e86b56a56a30a1391a78
BLAKE2b-256 87cbf557b24070d64802f7ff283b764da7cd1f8c778716cb19550f97abe99c2f

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