Skip to main content

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 2.7 and 3.5+
  • 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='testing')

The environment argument is either testing 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.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)

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

Release files for prometeo 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for prometeo 1.2.0
File Size Uploaded
prometeo-1.2.0.tar.gz 25.6 kB Details

Release files / prometeo-1.2.0.tar.gz

Download URL prometeo-1.2.0.tar.gz
Size 25.6 kB
Tags Source
SHA-256 checksum
How to use checksums
c6aaaeb401d9f62611a3c621d30b4f01c84c476c23470f4ddc51fdc2e32d9174
BLAKE2b-256 checksum
How to use checksums
8b54d4952e6221a5f1b2b68afe5e3ac4573006dc3463619c43b836cbff743c80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.7.5

Release history Release notifications | RSS feed

2.0.9

2 release files

2.0.8

2 release files

2.0.7

2 release files

2.0.6

2 release files

2.0.5

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.2.4

2 release files

1.2.3

1 release file

1.2.2

1 release file

1.2.1

1 release file

This release

1.2.0 This release

1 release file

1.1.0

1 release file

1.0.2

1 release file

1.0.0

1 release file

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page