billecta 1.14.0

Generated Billecta API
Documentation
use std::collections::HashMap;
use std::error::Error;
use uuid::Uuid;

type DynError = Box<dyn Error + 'static>;

#[tokio::main]
async fn main() -> Result<(), DynError> {
    let client = billecta::Client::from_env();

    let creditors_ids = CREDITOR_IDS
        .lines()
        .map(|s| s.trim())
        .filter(|s| !s.is_empty())
        .map(|s| s.parse::<Uuid>())
        .collect::<Result<Vec<_>, _>>()?;

    let product_ids = PRODUCT_IDS
        .lines()
        .map(|s| s.trim())
        .filter(|s| !s.is_empty())
        .map(|s| s.parse::<Uuid>())
        .collect::<Result<Vec<_>, _>>()?;

    let all_creditors = billecta::creditors::get_all_creditors(None, None, None, None)
        .send(&client)
        .await?
        .into_iter()
        .filter(|cred| creditors_ids.contains(&cred.creditor_public_id))
        .collect::<Vec<_>>();

    let mut all_products = HashMap::<Uuid, billecta::Product>::new();

    for creditor in &all_creditors {
        println!("Checking {}", creditor.name.as_deref().unwrap());

        let products = billecta::products::get_all_products(
            creditor.creditor_public_id,
            None,
            None,
            None,
            None,
        )
        .send(&client)
        .await?;

        for p in products {
            all_products.insert(p.product_public_id, p);
        }
    }

    for product_id in product_ids {
        if let Some(p) = all_products.get(&product_id) {
            println!(
                "{}({}): {}",
                product_id,
                p.creditor_public_id,
                p.description.as_deref().unwrap()
            );
        } else {
            println!("Could not find {product_id}");
        }
    }

    println!("Fetched {} creditors", all_creditors.len());

    Ok(())
}

static PRODUCT_IDS: &str = r#"
d314dfa2-d369-4fc6-a37c-929857137774
8357cf64-f347-47e5-a0b9-072665db05c4
403c0978-2706-4bcb-bf05-3224e29980e8
26ac22bf-99b8-4d15-a4de-9bf85fc5c4a8
19d375dd-0d0f-4df8-bc75-c23c2b88d805
b786fe7a-a8e7-4115-834b-ba56b2118e82
2bda19fc-6ab0-448c-889d-ae986db5b885
128f7dd6-f438-4feb-ab8e-d28f7599a9d2
0e8cf649-d89c-4178-bc13-a3cb30451f5c
5e215a17-03ca-4569-a8e9-656266f1ff2f
9c2aa9a1-eaa8-4a19-a5f8-6dccf89823dd
41bb6aaf-0ca0-4d77-8574-30a41e06faf0
f125ad3d-51d7-4866-8c14-fd80cf4e5569
89be2083-7384-4aec-8bdf-4d2c8eaa336b
272e9c01-adff-41c7-9d18-05c6ed48cb17
2cc11e9b-3e35-45b1-97ba-1ba9c0d420af
6c9a334d-3fe6-44e6-88ad-57106d968097
66793af7-865b-4c41-9f84-f6d2c352f0e6
e4018c2d-df2b-4a12-b2ed-deac744886b3
44c9fd57-3ed9-45f9-a775-53cb5d74e5b1
2891d303-f643-4b38-9ea0-75953b1707c4
1f9e3f36-a9e8-43c7-8391-8ccd81cbe420
029d6983-356b-4e65-ac49-dbfccce00b70
a20a7df5-1722-48b2-b2a2-8306414e28d1
b54670cd-b5bb-41e8-8fad-fe0cc140239e
9cffd0f0-db9f-400b-b273-deded11748fa
53251e32-58d1-46ba-add6-a76bce69215a
589c5507-05da-47c5-8ade-0802821db33e
c52c32cf-b529-4b59-8088-0632bbaeafaf
b3ba5b70-b664-48f9-ba92-35d9e84e4efc
"#;

static CREDITOR_IDS: &str = r#"
f22068bd-4fe0-45fe-a610-25104aa702d8
ed3272f7-5401-417c-a9c0-a79ea0b52a01
ac490d10-ee6c-4f9b-b690-3250403050de
282059a3-0d99-4922-a081-ee31cdf1805d
5d85b016-12d1-4ce0-b0c7-82e4cf1f3363
a6933956-71f3-4c37-a375-77aa393f1eff
a58d098e-8ff9-420a-87ad-6b35a9cf4b5c
59a30fa6-f2d3-4b7f-99e5-ac7227608af0
4cd58a30-088f-44cb-b8ca-d218539e6a56
848ebbbd-a7f4-4146-8d7a-3a8e1788f766
f47b0dcd-ffce-4dcc-bf88-640ad8e27fdc
5e1da4d6-bda0-4806-bdb0-ea8e118d9796
04f1e410-9a38-4fe7-8331-fb9326434e95
0d401e88-c5dd-4648-8368-ce4366ff2926
d8059067-2036-4697-bb0f-3c112e5973e4
c117c947-5a5b-4aaf-a15e-3dc359184c9c
4d2703c3-4801-4dfc-bb08-52a56daa98b4
a6151649-04f6-4462-9cfe-e385846b2aa8
105a1f36-eea3-42a8-8030-516e6b2bc42d
6aa8b3b2-f196-492b-a527-01e8450590da
986488ce-9d9c-46ae-b4f8-b05684f442cd
0cadf77f-1447-4fbb-b610-f8b8d2eb208c
d456b322-4a6a-412e-9ec4-051eacf4b694
9867d432-4de8-416c-82ff-4a99c4f04418
6b3ae990-197c-475c-8940-9dfdf98d89cc
531e3d06-b844-4df9-a531-f0af2de45420
3e7da984-f141-40d4-b0cb-134114b3a215
48729590-7333-4422-9377-5af1c08f8154
0c20d215-50d9-4480-ba0d-06e8ab1412d8
53f042c3-8db6-48fa-b852-c17826f330ff
b5c4b479-b243-4ea9-8299-9b68336aad6d
8e57eacf-6954-4cb8-afdc-89f7a19f3129
426ef9eb-e245-429c-8f4d-75b80bd003b1
729f090f-9911-4524-9121-d45d6a09364f
721e9145-b24c-4bad-b3a5-7e8b033ca935
415643cf-d153-4800-a0fd-6dbf6e63444e
01bbe3b8-e268-4f4a-832b-c33be8ab9763
fd15afc3-9514-49f6-82bd-5b45c85f2ff2
bf1ea4b1-881f-44a8-8e06-c556f2f723b2
a69a6908-3cf5-40e1-a719-b2676c9d2626
3f6e907c-c615-4ab0-a81e-f595893c5388
6fe834fd-d36e-4f0c-888a-a8212107b893
c7b2487f-3d51-49d3-aff3-d2898fc6d59e
0f5b6fd7-1549-4638-a182-8e5366b1d04a
5a3a1803-a5ab-483a-a206-41c17706c4ac
d7aa931b-1560-447e-a49b-55760abc5ead
95ec19c3-89e5-4b10-bea1-2b51d9624bbc
fe1a8972-9e61-45d1-a49a-ae832d0e98d0
154982b9-5725-49b2-a151-f177ae1f68e3
6f6dd9ab-edc9-404c-9af3-908417d5fd38
3b01c28c-5b30-46aa-bc49-7cf88f036acf
d5d49c86-dcfb-4806-857a-1844e5c53747
93f47a41-94e7-45db-84d3-7dc45dd49597
c6d8bae9-63fb-4dfe-b8ac-19255450b2fd
c05f4efe-d029-4bae-8781-3a334e6d6125
1084df3e-df06-427f-b123-316c9624f24c
c61e3e8d-4e6b-4231-a79f-d52b3f67680b
ece267c3-df96-4008-b117-aca1895bba93
0040526c-ce0c-429d-a63b-bc498364edfd
e559b0a4-2a52-4f74-a058-acbd5552b840
267f1e2d-72f6-4709-a383-c84397149015
b2c8e949-8263-4acd-886c-490d1ee0586d
3c247a06-256f-4c3c-b850-cf2c4c66e9c5
e6d5d304-e794-4b97-89d6-5c4a92b39fdf
558c7f46-5eb1-483f-a8d8-094b473211b5
fcff616b-9b42-464f-a91d-b14198e164b8
22810e5b-60bd-4d39-9228-d9f60d741741
9af21317-10c8-4c9c-b1d1-35c44237873c
87514fee-03c3-4489-8fbb-c0df7aa36377
8d616779-97e1-4eb1-ab8b-bce79a53b056
3b3dca66-339b-4530-85d3-cdd3cf2d358b
9f098a61-0298-4b6c-8217-aa604abfc7a5
4e770ee3-1772-4b87-99de-50cca72da5cf
83dc2aff-21b9-47ea-9463-5b7049d188a0
59851d09-8b3e-4217-a5fb-4ccc95ea1cb9
3ef7f73b-13cb-4d76-8e4f-0f10f079fdb9
b56be679-a7b0-4338-8357-9628797cd368
cff99564-c47b-4664-b408-2eab8ae34994
1e5943cc-f9fe-4332-8b65-165959a8f076
1e69bbf4-9d47-4b0d-abc7-330f36a17efa
94bc27b9-6203-4bad-a914-ac2dcab454fe
f6368314-be47-4ce6-ad3b-26115df0ec7c
99d76aad-3b84-44c3-a6de-7d30ee7624c7
48dbbc30-d90e-47c6-8cb4-09888455d46a
8a70f6ed-4a68-4653-a73c-b76f9ba43842
2548da7c-d126-4f41-ab07-a1bd100c17ee
cfc37a1d-185e-4819-a2e5-0ba185911dc1
efa01e1b-0f7d-4e92-91b3-19df2fb85d5e
351ace02-fbd0-462f-a3d3-587ffea3d5b2
0a2c09ba-1a34-4a68-87c6-0e6e3adef5a5
5ddccce7-c3ef-4ccd-827c-40dfcec3782a
b4f8de90-1be8-491a-96ec-b214bea81ce7
34b3340f-9a67-4417-9ee7-388c915c143e
ee6af168-0998-46aa-af0c-96b93a5f2822
dbc66f8d-7d54-4154-87e0-64a5c8789a49
fefe039b-d6d2-4db4-8b02-f9af1363412f
67b82a86-a34a-4110-aebb-8f6e11038d6a
f4147a43-dee9-4e4a-96ee-2cd6eb1fc619
c665b16a-d36e-446d-94a2-40e8c4f81b96
233ae9b8-43c7-400f-a3be-9ce19df27c1b
0d5fcd37-590d-4561-a92b-18f8d19ed0ec
fd8edc0a-4d39-4372-a5d5-e2abf40a39eb
0d9ae779-2322-4841-804b-c5e784641653
f31a033a-9239-41c6-ba7f-64e684bb37b1
c1de4b76-153b-40ef-b403-c231cb9628ef
622d90e7-22a4-4f43-a049-49d570646a94
84ff915d-47f1-4cd9-8e20-c2e3afaaac54
5ea14c83-8168-4701-a56d-393e81f6fb8a
ad95bfb0-ef9e-4a05-a930-f4ed7871ae33
541ffe3c-dcf1-447a-8cce-65679d4d7573
b1835d2a-5787-4c36-a403-039443b470c2
55bcda37-8181-462e-af79-2c26c07ceaeb
b33f76a9-57d7-4b88-87c0-ccbc32f166f2
8f731953-e97b-4bf9-acce-cb917270173c
a78afbe2-4f36-4a77-9c9c-55680b07796b
9c2f46a6-8c76-49af-85d8-79f8cc0c80a0
987a2c48-6653-43bc-8145-baf7fbf4b193
81eea930-e68b-46b7-af49-fb5019aefa55
330d1dcc-2797-4cf1-a5f4-68c347b360a1
9c0cb5a1-b58a-4192-9004-9bfb48e5262c
4b09bf33-fb14-4ad8-8f80-54a577d95dd2
64a6bac7-15a6-4073-a74e-c686ce67721f
bb73fc02-18bb-4208-bb22-5b5535c133fa
25929759-4cb8-4be5-8182-5ad18820210d
4bcaaad3-2552-4cca-bf05-85f77cab5ec4
d46d1980-57df-43ec-b486-c1a31e7be8b8
12a3403f-c298-405a-afbb-9b1ba7542bd9
a1d52477-084a-4b12-a321-66a0dfdeec8f
eaba854d-c706-4a1b-bbd8-decf8c68f5c2
5b72381d-a80b-485d-9639-40dd40cb56a4
141859db-acdb-4e31-bc7b-b8c74baad2cc
3b296230-b014-4fa1-b96b-f540148e8c19
6864eed0-3488-4567-b1d6-892d3b661714
7650c40b-3279-4168-afe3-228c1cc8e8d6
e4ab1b9e-a9fe-45f6-910d-959b8d679faa
c3535e32-4b99-49be-8530-b6b640287384
22098474-d415-458c-b53d-5b88d54b4892
3572d949-58bd-4c8b-b247-8e2971a1efe9
b59b4d4c-fbd7-4a5f-80be-84ce5ae087ca
f8153339-5494-4d38-b17e-21b24e298be4
9b01e68e-f99c-485c-bc49-5af27911f187
c8ff2ddb-7aeb-4a43-9d74-2f9f14d6762f
cad2e9cc-8ed3-4a35-a23e-6f09801c32aa
63225c4b-7a83-4e48-9dbe-9f140798b35b
8a25a198-e8ee-4418-9481-4e78b1e68f92
6c0558a7-c751-4b71-a991-40c388922975
a362df77-72c7-4261-9e7b-4c49d683d648
b5f0163e-fde5-42b4-9c84-b25c9286941c
8324b13e-89d2-4a85-9960-3f954dca85fa
a9a33581-ea87-40a7-a890-9dcd4cc4544b
2e8c9e85-c6a6-4f68-ab8f-e657eb0196ca
57f6a6c9-9cbc-4876-a6e5-e17b14ca5e15
84f778eb-299a-4602-8197-9f7950d603b0
13603b12-4e19-4943-8a45-85c81d5b65ea
ee3920b2-87b1-4a3a-aae2-6ab55ac3f87e
"#;