pluggy-sdk 1.0.0.post2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pluggy_sdk/__init__.py +183 -0
- pluggy_sdk/api/__init__.py +26 -0
- pluggy_sdk/api/account_api.py +582 -0
- pluggy_sdk/api/acquirer_anticipation_api.py +658 -0
- pluggy_sdk/api/acquirer_receivable_api.py +658 -0
- pluggy_sdk/api/acquirer_sale_api.py +658 -0
- pluggy_sdk/api/auth_api.py +599 -0
- pluggy_sdk/api/bill_api.py +561 -0
- pluggy_sdk/api/bulk_payment_api.py +854 -0
- pluggy_sdk/api/category_api.py +1084 -0
- pluggy_sdk/api/connector_api.py +970 -0
- pluggy_sdk/api/identity_api.py +575 -0
- pluggy_sdk/api/income_report_api.py +308 -0
- pluggy_sdk/api/investment_api.py +909 -0
- pluggy_sdk/api/items_api.py +1441 -0
- pluggy_sdk/api/loan_api.py +561 -0
- pluggy_sdk/api/payment_customer_api.py +1399 -0
- pluggy_sdk/api/payment_intent_api.py +833 -0
- pluggy_sdk/api/payment_recipient_api.py +1976 -0
- pluggy_sdk/api/payment_request_api.py +1636 -0
- pluggy_sdk/api/portfolio_yield_api.py +574 -0
- pluggy_sdk/api/smart_account_api.py +1116 -0
- pluggy_sdk/api/transaction_api.py +954 -0
- pluggy_sdk/api/webhook_api.py +1391 -0
- pluggy_sdk/api_client.py +769 -0
- pluggy_sdk/api_response.py +21 -0
- pluggy_sdk/configuration.py +466 -0
- pluggy_sdk/exceptions.py +200 -0
- pluggy_sdk/models/__init__.py +145 -0
- pluggy_sdk/models/account.py +134 -0
- pluggy_sdk/models/accounts_list200_response.py +102 -0
- pluggy_sdk/models/acquirer_anticipation.py +117 -0
- pluggy_sdk/models/acquirer_anticipation_data.py +101 -0
- pluggy_sdk/models/acquirer_data.py +113 -0
- pluggy_sdk/models/acquirer_receivable.py +143 -0
- pluggy_sdk/models/acquirer_receivable_data.py +108 -0
- pluggy_sdk/models/acquirer_receivable_data_establishment.py +96 -0
- pluggy_sdk/models/acquirer_receivable_destination_account.py +92 -0
- pluggy_sdk/models/acquirer_receivable_related_sale.py +99 -0
- pluggy_sdk/models/acquirer_sale.py +171 -0
- pluggy_sdk/models/acquirer_sale_data.py +150 -0
- pluggy_sdk/models/acquirer_sale_installment.py +93 -0
- pluggy_sdk/models/acquirer_sale_installment_data.py +95 -0
- pluggy_sdk/models/address.py +110 -0
- pluggy_sdk/models/aggregated_portfolio.py +120 -0
- pluggy_sdk/models/aggregated_portfolio_response.py +102 -0
- pluggy_sdk/models/asset_distribution.py +88 -0
- pluggy_sdk/models/auth_request.py +90 -0
- pluggy_sdk/models/auth_response.py +88 -0
- pluggy_sdk/models/bank_data.py +92 -0
- pluggy_sdk/models/bill.py +109 -0
- pluggy_sdk/models/bill_finance_charge.py +103 -0
- pluggy_sdk/models/bills_list200_response.py +102 -0
- pluggy_sdk/models/bulk_payment.py +128 -0
- pluggy_sdk/models/bulk_payments_list200_response.py +102 -0
- pluggy_sdk/models/category.py +96 -0
- pluggy_sdk/models/client_category_rule.py +94 -0
- pluggy_sdk/models/company.py +90 -0
- pluggy_sdk/models/connect_token_request.py +94 -0
- pluggy_sdk/models/connect_token_response.py +88 -0
- pluggy_sdk/models/connector.py +141 -0
- pluggy_sdk/models/connector_credential.py +121 -0
- pluggy_sdk/models/connector_health.py +96 -0
- pluggy_sdk/models/connector_health_details.py +90 -0
- pluggy_sdk/models/connector_list_response.py +102 -0
- pluggy_sdk/models/connector_user_action.py +93 -0
- pluggy_sdk/models/create_bulk_payment.py +96 -0
- pluggy_sdk/models/create_client_category_rule.py +92 -0
- pluggy_sdk/models/create_item.py +111 -0
- pluggy_sdk/models/create_item_parameters.py +144 -0
- pluggy_sdk/models/create_or_update_payment_customer.py +105 -0
- pluggy_sdk/models/create_payment_customer_request_body.py +103 -0
- pluggy_sdk/models/create_payment_intent.py +94 -0
- pluggy_sdk/models/create_payment_recipient.py +100 -0
- pluggy_sdk/models/create_payment_request.py +102 -0
- pluggy_sdk/models/create_pix_qr_payment_request.py +96 -0
- pluggy_sdk/models/create_smart_account_request.py +102 -0
- pluggy_sdk/models/create_webhook.py +99 -0
- pluggy_sdk/models/credential_select_option.py +90 -0
- pluggy_sdk/models/credit_card_metadata.py +101 -0
- pluggy_sdk/models/credit_data.py +127 -0
- pluggy_sdk/models/document.py +100 -0
- pluggy_sdk/models/email.py +100 -0
- pluggy_sdk/models/global_error_response.py +94 -0
- pluggy_sdk/models/i_count_response.py +88 -0
- pluggy_sdk/models/identity_relation.py +102 -0
- pluggy_sdk/models/identity_response.py +149 -0
- pluggy_sdk/models/income_report.py +90 -0
- pluggy_sdk/models/income_reports_response.py +102 -0
- pluggy_sdk/models/investment.py +192 -0
- pluggy_sdk/models/investment_expenses.py +108 -0
- pluggy_sdk/models/investment_metadata.py +99 -0
- pluggy_sdk/models/investment_transaction.py +124 -0
- pluggy_sdk/models/investments_list200_response.py +102 -0
- pluggy_sdk/models/item.py +148 -0
- pluggy_sdk/models/item_creation_error_response.py +102 -0
- pluggy_sdk/models/item_error.py +94 -0
- pluggy_sdk/models/item_options.py +90 -0
- pluggy_sdk/models/loan.py +199 -0
- pluggy_sdk/models/loan_contracted_fee.py +118 -0
- pluggy_sdk/models/loan_contracted_finance_charge.py +92 -0
- pluggy_sdk/models/loan_installment_balloon_payment.py +95 -0
- pluggy_sdk/models/loan_installment_balloon_payment_amount.py +90 -0
- pluggy_sdk/models/loan_installments.py +130 -0
- pluggy_sdk/models/loan_interest_rate.py +136 -0
- pluggy_sdk/models/loan_payment_release.py +103 -0
- pluggy_sdk/models/loan_payment_release_over_parcel.py +106 -0
- pluggy_sdk/models/loan_payment_release_over_parcel_charge.py +92 -0
- pluggy_sdk/models/loan_payment_release_over_parcel_fee.py +92 -0
- pluggy_sdk/models/loan_payments.py +98 -0
- pluggy_sdk/models/loan_warranty.py +94 -0
- pluggy_sdk/models/loans_list200_response.py +102 -0
- pluggy_sdk/models/merchant.py +96 -0
- pluggy_sdk/models/monthly_portfolio.py +100 -0
- pluggy_sdk/models/monthly_portfolio_response.py +102 -0
- pluggy_sdk/models/not_authenticated_response.py +90 -0
- pluggy_sdk/models/page_response_acquirer_anticipations.py +102 -0
- pluggy_sdk/models/page_response_acquirer_receivables.py +102 -0
- pluggy_sdk/models/page_response_acquirer_sales.py +102 -0
- pluggy_sdk/models/page_response_category_rules.py +102 -0
- pluggy_sdk/models/page_response_investment_transactions.py +102 -0
- pluggy_sdk/models/page_response_transactions.py +102 -0
- pluggy_sdk/models/parameter_validation_error.py +92 -0
- pluggy_sdk/models/parameter_validation_response.py +98 -0
- pluggy_sdk/models/payment_customer.py +105 -0
- pluggy_sdk/models/payment_customers_list200_response.py +102 -0
- pluggy_sdk/models/payment_data.py +105 -0
- pluggy_sdk/models/payment_data_participant.py +101 -0
- pluggy_sdk/models/payment_institution.py +101 -0
- pluggy_sdk/models/payment_intent.py +145 -0
- pluggy_sdk/models/payment_intents_list200_response.py +102 -0
- pluggy_sdk/models/payment_recipient.py +106 -0
- pluggy_sdk/models/payment_recipient_account.py +99 -0
- pluggy_sdk/models/payment_recipients_institution_list200_response.py +102 -0
- pluggy_sdk/models/payment_recipients_list200_response.py +102 -0
- pluggy_sdk/models/payment_request.py +118 -0
- pluggy_sdk/models/payment_request_callback_urls.py +92 -0
- pluggy_sdk/models/payment_requests_list200_response.py +102 -0
- pluggy_sdk/models/percentage_over_index.py +90 -0
- pluggy_sdk/models/phone_number.py +100 -0
- pluggy_sdk/models/pix_data.py +90 -0
- pluggy_sdk/models/smart_account.py +107 -0
- pluggy_sdk/models/smart_account_address.py +112 -0
- pluggy_sdk/models/smart_account_balance.py +95 -0
- pluggy_sdk/models/smart_accounts_list200_response.py +102 -0
- pluggy_sdk/models/status_detail.py +142 -0
- pluggy_sdk/models/status_detail_product.py +101 -0
- pluggy_sdk/models/status_detail_product_warning.py +92 -0
- pluggy_sdk/models/transaction.py +145 -0
- pluggy_sdk/models/update_item.py +109 -0
- pluggy_sdk/models/update_item_parameters.py +144 -0
- pluggy_sdk/models/update_payment_recipient.py +100 -0
- pluggy_sdk/models/update_payment_request.py +102 -0
- pluggy_sdk/models/update_transaction.py +88 -0
- pluggy_sdk/models/webhook.py +106 -0
- pluggy_sdk/models/webhook_creation_error_response.py +90 -0
- pluggy_sdk/models/webhooks_list200_response.py +102 -0
- pluggy_sdk/py.typed +0 -0
- pluggy_sdk/rest.py +258 -0
- pluggy_sdk-1.0.0.post2.dist-info/METADATA +336 -0
- pluggy_sdk-1.0.0.post2.dist-info/RECORD +163 -0
- pluggy_sdk-1.0.0.post2.dist-info/WHEEL +5 -0
- pluggy_sdk-1.0.0.post2.dist-info/top_level.txt +1 -0
@@ -0,0 +1,90 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
Pluggy API
|
5
|
+
|
6
|
+
Pluggy's main API to review data and execute connectors
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 1.0.0
|
9
|
+
Contact: hello@pluggy.ai
|
10
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
11
|
+
|
12
|
+
Do not edit the class manually.
|
13
|
+
""" # noqa: E501
|
14
|
+
|
15
|
+
|
16
|
+
from __future__ import annotations
|
17
|
+
import pprint
|
18
|
+
import re # noqa: F401
|
19
|
+
import json
|
20
|
+
|
21
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictStr
|
22
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
23
|
+
from typing import Optional, Set
|
24
|
+
from typing_extensions import Self
|
25
|
+
|
26
|
+
class Company(BaseModel):
|
27
|
+
"""
|
28
|
+
Company object that holds the company's information
|
29
|
+
""" # noqa: E501
|
30
|
+
name: Optional[StrictStr] = Field(default=None, description="Name of the company")
|
31
|
+
cnpj: Optional[StrictStr] = Field(default=None, description="CNPJ of the company")
|
32
|
+
__properties: ClassVar[List[str]] = ["name", "cnpj"]
|
33
|
+
|
34
|
+
model_config = ConfigDict(
|
35
|
+
populate_by_name=True,
|
36
|
+
validate_assignment=True,
|
37
|
+
protected_namespaces=(),
|
38
|
+
)
|
39
|
+
|
40
|
+
|
41
|
+
def to_str(self) -> str:
|
42
|
+
"""Returns the string representation of the model using alias"""
|
43
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
44
|
+
|
45
|
+
def to_json(self) -> str:
|
46
|
+
"""Returns the JSON representation of the model using alias"""
|
47
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
48
|
+
return json.dumps(self.to_dict())
|
49
|
+
|
50
|
+
@classmethod
|
51
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
52
|
+
"""Create an instance of Company from a JSON string"""
|
53
|
+
return cls.from_dict(json.loads(json_str))
|
54
|
+
|
55
|
+
def to_dict(self) -> Dict[str, Any]:
|
56
|
+
"""Return the dictionary representation of the model using alias.
|
57
|
+
|
58
|
+
This has the following differences from calling pydantic's
|
59
|
+
`self.model_dump(by_alias=True)`:
|
60
|
+
|
61
|
+
* `None` is only added to the output dict for nullable fields that
|
62
|
+
were set at model initialization. Other fields with value `None`
|
63
|
+
are ignored.
|
64
|
+
"""
|
65
|
+
excluded_fields: Set[str] = set([
|
66
|
+
])
|
67
|
+
|
68
|
+
_dict = self.model_dump(
|
69
|
+
by_alias=True,
|
70
|
+
exclude=excluded_fields,
|
71
|
+
exclude_none=True,
|
72
|
+
)
|
73
|
+
return _dict
|
74
|
+
|
75
|
+
@classmethod
|
76
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
77
|
+
"""Create an instance of Company from a dict"""
|
78
|
+
if obj is None:
|
79
|
+
return None
|
80
|
+
|
81
|
+
if not isinstance(obj, dict):
|
82
|
+
return cls.model_validate(obj)
|
83
|
+
|
84
|
+
_obj = cls.model_validate({
|
85
|
+
"name": obj.get("name"),
|
86
|
+
"cnpj": obj.get("cnpj")
|
87
|
+
})
|
88
|
+
return _obj
|
89
|
+
|
90
|
+
|
@@ -0,0 +1,94 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
Pluggy API
|
5
|
+
|
6
|
+
Pluggy's main API to review data and execute connectors
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 1.0.0
|
9
|
+
Contact: hello@pluggy.ai
|
10
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
11
|
+
|
12
|
+
Do not edit the class manually.
|
13
|
+
""" # noqa: E501
|
14
|
+
|
15
|
+
|
16
|
+
from __future__ import annotations
|
17
|
+
import pprint
|
18
|
+
import re # noqa: F401
|
19
|
+
import json
|
20
|
+
|
21
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictStr
|
22
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
23
|
+
from pluggy_sdk.models.item_options import ItemOptions
|
24
|
+
from typing import Optional, Set
|
25
|
+
from typing_extensions import Self
|
26
|
+
|
27
|
+
class ConnectTokenRequest(BaseModel):
|
28
|
+
"""
|
29
|
+
Create a connect token request payload
|
30
|
+
""" # noqa: E501
|
31
|
+
item_id: Optional[StrictStr] = Field(default=None, description="Item identifier to allow Connect Widget to performan an update on it.", alias="itemId")
|
32
|
+
options: Optional[ItemOptions] = None
|
33
|
+
__properties: ClassVar[List[str]] = ["itemId", "options"]
|
34
|
+
|
35
|
+
model_config = ConfigDict(
|
36
|
+
populate_by_name=True,
|
37
|
+
validate_assignment=True,
|
38
|
+
protected_namespaces=(),
|
39
|
+
)
|
40
|
+
|
41
|
+
|
42
|
+
def to_str(self) -> str:
|
43
|
+
"""Returns the string representation of the model using alias"""
|
44
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
45
|
+
|
46
|
+
def to_json(self) -> str:
|
47
|
+
"""Returns the JSON representation of the model using alias"""
|
48
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
49
|
+
return json.dumps(self.to_dict())
|
50
|
+
|
51
|
+
@classmethod
|
52
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
53
|
+
"""Create an instance of ConnectTokenRequest from a JSON string"""
|
54
|
+
return cls.from_dict(json.loads(json_str))
|
55
|
+
|
56
|
+
def to_dict(self) -> Dict[str, Any]:
|
57
|
+
"""Return the dictionary representation of the model using alias.
|
58
|
+
|
59
|
+
This has the following differences from calling pydantic's
|
60
|
+
`self.model_dump(by_alias=True)`:
|
61
|
+
|
62
|
+
* `None` is only added to the output dict for nullable fields that
|
63
|
+
were set at model initialization. Other fields with value `None`
|
64
|
+
are ignored.
|
65
|
+
"""
|
66
|
+
excluded_fields: Set[str] = set([
|
67
|
+
])
|
68
|
+
|
69
|
+
_dict = self.model_dump(
|
70
|
+
by_alias=True,
|
71
|
+
exclude=excluded_fields,
|
72
|
+
exclude_none=True,
|
73
|
+
)
|
74
|
+
# override the default output from pydantic by calling `to_dict()` of options
|
75
|
+
if self.options:
|
76
|
+
_dict['options'] = self.options.to_dict()
|
77
|
+
return _dict
|
78
|
+
|
79
|
+
@classmethod
|
80
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
81
|
+
"""Create an instance of ConnectTokenRequest from a dict"""
|
82
|
+
if obj is None:
|
83
|
+
return None
|
84
|
+
|
85
|
+
if not isinstance(obj, dict):
|
86
|
+
return cls.model_validate(obj)
|
87
|
+
|
88
|
+
_obj = cls.model_validate({
|
89
|
+
"itemId": obj.get("itemId"),
|
90
|
+
"options": ItemOptions.from_dict(obj["options"]) if obj.get("options") is not None else None
|
91
|
+
})
|
92
|
+
return _obj
|
93
|
+
|
94
|
+
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
Pluggy API
|
5
|
+
|
6
|
+
Pluggy's main API to review data and execute connectors
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 1.0.0
|
9
|
+
Contact: hello@pluggy.ai
|
10
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
11
|
+
|
12
|
+
Do not edit the class manually.
|
13
|
+
""" # noqa: E501
|
14
|
+
|
15
|
+
|
16
|
+
from __future__ import annotations
|
17
|
+
import pprint
|
18
|
+
import re # noqa: F401
|
19
|
+
import json
|
20
|
+
|
21
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictStr
|
22
|
+
from typing import Any, ClassVar, Dict, List
|
23
|
+
from typing import Optional, Set
|
24
|
+
from typing_extensions import Self
|
25
|
+
|
26
|
+
class ConnectTokenResponse(BaseModel):
|
27
|
+
"""
|
28
|
+
Connect token response
|
29
|
+
""" # noqa: E501
|
30
|
+
access_token: StrictStr = Field(description="Connect token that's used to initialize Pluggy's Connect widget", alias="accessToken")
|
31
|
+
__properties: ClassVar[List[str]] = ["accessToken"]
|
32
|
+
|
33
|
+
model_config = ConfigDict(
|
34
|
+
populate_by_name=True,
|
35
|
+
validate_assignment=True,
|
36
|
+
protected_namespaces=(),
|
37
|
+
)
|
38
|
+
|
39
|
+
|
40
|
+
def to_str(self) -> str:
|
41
|
+
"""Returns the string representation of the model using alias"""
|
42
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
43
|
+
|
44
|
+
def to_json(self) -> str:
|
45
|
+
"""Returns the JSON representation of the model using alias"""
|
46
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
47
|
+
return json.dumps(self.to_dict())
|
48
|
+
|
49
|
+
@classmethod
|
50
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
51
|
+
"""Create an instance of ConnectTokenResponse from a JSON string"""
|
52
|
+
return cls.from_dict(json.loads(json_str))
|
53
|
+
|
54
|
+
def to_dict(self) -> Dict[str, Any]:
|
55
|
+
"""Return the dictionary representation of the model using alias.
|
56
|
+
|
57
|
+
This has the following differences from calling pydantic's
|
58
|
+
`self.model_dump(by_alias=True)`:
|
59
|
+
|
60
|
+
* `None` is only added to the output dict for nullable fields that
|
61
|
+
were set at model initialization. Other fields with value `None`
|
62
|
+
are ignored.
|
63
|
+
"""
|
64
|
+
excluded_fields: Set[str] = set([
|
65
|
+
])
|
66
|
+
|
67
|
+
_dict = self.model_dump(
|
68
|
+
by_alias=True,
|
69
|
+
exclude=excluded_fields,
|
70
|
+
exclude_none=True,
|
71
|
+
)
|
72
|
+
return _dict
|
73
|
+
|
74
|
+
@classmethod
|
75
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
76
|
+
"""Create an instance of ConnectTokenResponse from a dict"""
|
77
|
+
if obj is None:
|
78
|
+
return None
|
79
|
+
|
80
|
+
if not isinstance(obj, dict):
|
81
|
+
return cls.model_validate(obj)
|
82
|
+
|
83
|
+
_obj = cls.model_validate({
|
84
|
+
"accessToken": obj.get("accessToken")
|
85
|
+
})
|
86
|
+
return _obj
|
87
|
+
|
88
|
+
|
@@ -0,0 +1,141 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
Pluggy API
|
5
|
+
|
6
|
+
Pluggy's main API to review data and execute connectors
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 1.0.0
|
9
|
+
Contact: hello@pluggy.ai
|
10
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
11
|
+
|
12
|
+
Do not edit the class manually.
|
13
|
+
""" # noqa: E501
|
14
|
+
|
15
|
+
|
16
|
+
from __future__ import annotations
|
17
|
+
import pprint
|
18
|
+
import re # noqa: F401
|
19
|
+
import json
|
20
|
+
|
21
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr, field_validator
|
22
|
+
from typing import Any, ClassVar, Dict, List, Optional, Union
|
23
|
+
from pluggy_sdk.models.connector_credential import ConnectorCredential
|
24
|
+
from pluggy_sdk.models.connector_health import ConnectorHealth
|
25
|
+
from typing import Optional, Set
|
26
|
+
from typing_extensions import Self
|
27
|
+
|
28
|
+
class Connector(BaseModel):
|
29
|
+
"""
|
30
|
+
Connector object
|
31
|
+
""" # noqa: E501
|
32
|
+
id: Union[StrictFloat, StrictInt] = Field(description="Primary identifier")
|
33
|
+
name: Optional[StrictStr] = Field(default=None, description="Name of the institution")
|
34
|
+
institution_url: Optional[StrictStr] = Field(default=None, description="Homepage of the institution", alias="institutionUrl")
|
35
|
+
image_url: Optional[StrictStr] = Field(default=None, description="Image of the logo hosted by Pluggy", alias="imageUrl")
|
36
|
+
primary_color: Optional[StrictStr] = Field(default=None, description="Primary color", alias="primaryColor")
|
37
|
+
type: Optional[StrictStr] = Field(default=None, description="Type of institution")
|
38
|
+
country: Optional[StrictStr] = Field(default=None, description="Country located")
|
39
|
+
credentials: Optional[List[ConnectorCredential]] = Field(default=None, description="Parameters required to start the connection")
|
40
|
+
has_mfa: Optional[StrictBool] = Field(default=None, description="Does the connector require an MFA to execute?", alias="hasMFA")
|
41
|
+
products: Optional[List[StrictStr]] = Field(default=None, description="Products supported by the connector")
|
42
|
+
oauth: Optional[StrictBool] = Field(default=None, description="If 'true', the connector requires an Oauth flow to execute")
|
43
|
+
oauth_url: Optional[StrictStr] = Field(default=None, description="URL to perform Oauth flow if needed", alias="oauthUrl")
|
44
|
+
reset_password_url: Optional[StrictStr] = Field(default=None, description="URL to the financial institution to reset the password", alias="resetPasswordUrl")
|
45
|
+
health: Optional[ConnectorHealth] = None
|
46
|
+
is_open_finance: Optional[StrictBool] = Field(default=None, description="Indicates if the connector uses the regulated Open Finance APIs", alias="isOpenFinance")
|
47
|
+
supports_payment_initiation: Optional[StrictBool] = Field(default=None, description="Indicates if the connector supports the payment initiation API", alias="supportsPaymentInitiation")
|
48
|
+
__properties: ClassVar[List[str]] = ["id", "name", "institutionUrl", "imageUrl", "primaryColor", "type", "country", "credentials", "hasMFA", "products", "oauth", "oauthUrl", "resetPasswordUrl", "health", "isOpenFinance", "supportsPaymentInitiation"]
|
49
|
+
|
50
|
+
@field_validator('products')
|
51
|
+
def products_validate_enum(cls, value):
|
52
|
+
"""Validates the enum"""
|
53
|
+
if value is None:
|
54
|
+
return value
|
55
|
+
|
56
|
+
for i in value:
|
57
|
+
if i not in set(['ACCOUNTS', 'TRANSACTIONS', 'CREDIT_CARDS', 'INVESTMENTS', 'INVESTMENTS_TRANSACTIONS', 'PAYMENT_DATA', 'IDENTITY', 'BROKERAGE_NOTE', 'OPPORTUNITIES', 'PORTFOLIO', 'INCOME_REPORTS', 'MOVE_SECURITY']):
|
58
|
+
raise ValueError("each list item must be one of ('ACCOUNTS', 'TRANSACTIONS', 'CREDIT_CARDS', 'INVESTMENTS', 'INVESTMENTS_TRANSACTIONS', 'PAYMENT_DATA', 'IDENTITY', 'BROKERAGE_NOTE', 'OPPORTUNITIES', 'PORTFOLIO', 'INCOME_REPORTS', 'MOVE_SECURITY')")
|
59
|
+
return value
|
60
|
+
|
61
|
+
model_config = ConfigDict(
|
62
|
+
populate_by_name=True,
|
63
|
+
validate_assignment=True,
|
64
|
+
protected_namespaces=(),
|
65
|
+
)
|
66
|
+
|
67
|
+
|
68
|
+
def to_str(self) -> str:
|
69
|
+
"""Returns the string representation of the model using alias"""
|
70
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
71
|
+
|
72
|
+
def to_json(self) -> str:
|
73
|
+
"""Returns the JSON representation of the model using alias"""
|
74
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
75
|
+
return json.dumps(self.to_dict())
|
76
|
+
|
77
|
+
@classmethod
|
78
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
79
|
+
"""Create an instance of Connector from a JSON string"""
|
80
|
+
return cls.from_dict(json.loads(json_str))
|
81
|
+
|
82
|
+
def to_dict(self) -> Dict[str, Any]:
|
83
|
+
"""Return the dictionary representation of the model using alias.
|
84
|
+
|
85
|
+
This has the following differences from calling pydantic's
|
86
|
+
`self.model_dump(by_alias=True)`:
|
87
|
+
|
88
|
+
* `None` is only added to the output dict for nullable fields that
|
89
|
+
were set at model initialization. Other fields with value `None`
|
90
|
+
are ignored.
|
91
|
+
"""
|
92
|
+
excluded_fields: Set[str] = set([
|
93
|
+
])
|
94
|
+
|
95
|
+
_dict = self.model_dump(
|
96
|
+
by_alias=True,
|
97
|
+
exclude=excluded_fields,
|
98
|
+
exclude_none=True,
|
99
|
+
)
|
100
|
+
# override the default output from pydantic by calling `to_dict()` of each item in credentials (list)
|
101
|
+
_items = []
|
102
|
+
if self.credentials:
|
103
|
+
for _item in self.credentials:
|
104
|
+
if _item:
|
105
|
+
_items.append(_item.to_dict())
|
106
|
+
_dict['credentials'] = _items
|
107
|
+
# override the default output from pydantic by calling `to_dict()` of health
|
108
|
+
if self.health:
|
109
|
+
_dict['health'] = self.health.to_dict()
|
110
|
+
return _dict
|
111
|
+
|
112
|
+
@classmethod
|
113
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
114
|
+
"""Create an instance of Connector from a dict"""
|
115
|
+
if obj is None:
|
116
|
+
return None
|
117
|
+
|
118
|
+
if not isinstance(obj, dict):
|
119
|
+
return cls.model_validate(obj)
|
120
|
+
|
121
|
+
_obj = cls.model_validate({
|
122
|
+
"id": obj.get("id"),
|
123
|
+
"name": obj.get("name"),
|
124
|
+
"institutionUrl": obj.get("institutionUrl"),
|
125
|
+
"imageUrl": obj.get("imageUrl"),
|
126
|
+
"primaryColor": obj.get("primaryColor"),
|
127
|
+
"type": obj.get("type"),
|
128
|
+
"country": obj.get("country"),
|
129
|
+
"credentials": [ConnectorCredential.from_dict(_item) for _item in obj["credentials"]] if obj.get("credentials") is not None else None,
|
130
|
+
"hasMFA": obj.get("hasMFA"),
|
131
|
+
"products": obj.get("products"),
|
132
|
+
"oauth": obj.get("oauth"),
|
133
|
+
"oauthUrl": obj.get("oauthUrl"),
|
134
|
+
"resetPasswordUrl": obj.get("resetPasswordUrl"),
|
135
|
+
"health": ConnectorHealth.from_dict(obj["health"]) if obj.get("health") is not None else None,
|
136
|
+
"isOpenFinance": obj.get("isOpenFinance"),
|
137
|
+
"supportsPaymentInitiation": obj.get("supportsPaymentInitiation")
|
138
|
+
})
|
139
|
+
return _obj
|
140
|
+
|
141
|
+
|
@@ -0,0 +1,121 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
Pluggy API
|
5
|
+
|
6
|
+
Pluggy's main API to review data and execute connectors
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 1.0.0
|
9
|
+
Contact: hello@pluggy.ai
|
10
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
11
|
+
|
12
|
+
Do not edit the class manually.
|
13
|
+
""" # noqa: E501
|
14
|
+
|
15
|
+
|
16
|
+
from __future__ import annotations
|
17
|
+
import pprint
|
18
|
+
import re # noqa: F401
|
19
|
+
import json
|
20
|
+
|
21
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator
|
22
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
23
|
+
from pluggy_sdk.models.credential_select_option import CredentialSelectOption
|
24
|
+
from typing import Optional, Set
|
25
|
+
from typing_extensions import Self
|
26
|
+
|
27
|
+
class ConnectorCredential(BaseModel):
|
28
|
+
"""
|
29
|
+
Credential details for a connector
|
30
|
+
""" # noqa: E501
|
31
|
+
name: StrictStr = Field(description="Name of the key")
|
32
|
+
label: StrictStr = Field(description="Label for input")
|
33
|
+
type: StrictStr = Field(description="Type of credential required")
|
34
|
+
assistive_text: Optional[StrictStr] = Field(default=None, description="Text to help the user when completing the input", alias="assistiveText")
|
35
|
+
data: Optional[StrictStr] = Field(default=None, description="Used to return base64 images")
|
36
|
+
placeholder: Optional[StrictStr] = Field(default=None, description="Placeholder text for the input")
|
37
|
+
validation: Optional[StrictStr] = Field(default=None, description="Regex validation for the user's input")
|
38
|
+
validation_message: Optional[StrictStr] = Field(default=None, description="Validation message when input doesn't match the regex", alias="validationMessage")
|
39
|
+
mfa: Optional[StrictBool] = Field(default=None, description="Credential is an MFA parameter and must be refreshed on each execution")
|
40
|
+
options: Optional[List[CredentialSelectOption]] = Field(default=None, description="List of possible values for the input")
|
41
|
+
__properties: ClassVar[List[str]] = ["name", "label", "type", "assistiveText", "data", "placeholder", "validation", "validationMessage", "mfa", "options"]
|
42
|
+
|
43
|
+
@field_validator('type')
|
44
|
+
def type_validate_enum(cls, value):
|
45
|
+
"""Validates the enum"""
|
46
|
+
if value not in set(['text', 'password', 'number', 'image', 'select']):
|
47
|
+
raise ValueError("must be one of enum values ('text', 'password', 'number', 'image', 'select')")
|
48
|
+
return value
|
49
|
+
|
50
|
+
model_config = ConfigDict(
|
51
|
+
populate_by_name=True,
|
52
|
+
validate_assignment=True,
|
53
|
+
protected_namespaces=(),
|
54
|
+
)
|
55
|
+
|
56
|
+
|
57
|
+
def to_str(self) -> str:
|
58
|
+
"""Returns the string representation of the model using alias"""
|
59
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
60
|
+
|
61
|
+
def to_json(self) -> str:
|
62
|
+
"""Returns the JSON representation of the model using alias"""
|
63
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
64
|
+
return json.dumps(self.to_dict())
|
65
|
+
|
66
|
+
@classmethod
|
67
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
68
|
+
"""Create an instance of ConnectorCredential from a JSON string"""
|
69
|
+
return cls.from_dict(json.loads(json_str))
|
70
|
+
|
71
|
+
def to_dict(self) -> Dict[str, Any]:
|
72
|
+
"""Return the dictionary representation of the model using alias.
|
73
|
+
|
74
|
+
This has the following differences from calling pydantic's
|
75
|
+
`self.model_dump(by_alias=True)`:
|
76
|
+
|
77
|
+
* `None` is only added to the output dict for nullable fields that
|
78
|
+
were set at model initialization. Other fields with value `None`
|
79
|
+
are ignored.
|
80
|
+
"""
|
81
|
+
excluded_fields: Set[str] = set([
|
82
|
+
])
|
83
|
+
|
84
|
+
_dict = self.model_dump(
|
85
|
+
by_alias=True,
|
86
|
+
exclude=excluded_fields,
|
87
|
+
exclude_none=True,
|
88
|
+
)
|
89
|
+
# override the default output from pydantic by calling `to_dict()` of each item in options (list)
|
90
|
+
_items = []
|
91
|
+
if self.options:
|
92
|
+
for _item in self.options:
|
93
|
+
if _item:
|
94
|
+
_items.append(_item.to_dict())
|
95
|
+
_dict['options'] = _items
|
96
|
+
return _dict
|
97
|
+
|
98
|
+
@classmethod
|
99
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
100
|
+
"""Create an instance of ConnectorCredential from a dict"""
|
101
|
+
if obj is None:
|
102
|
+
return None
|
103
|
+
|
104
|
+
if not isinstance(obj, dict):
|
105
|
+
return cls.model_validate(obj)
|
106
|
+
|
107
|
+
_obj = cls.model_validate({
|
108
|
+
"name": obj.get("name"),
|
109
|
+
"label": obj.get("label"),
|
110
|
+
"type": obj.get("type"),
|
111
|
+
"assistiveText": obj.get("assistiveText"),
|
112
|
+
"data": obj.get("data"),
|
113
|
+
"placeholder": obj.get("placeholder"),
|
114
|
+
"validation": obj.get("validation"),
|
115
|
+
"validationMessage": obj.get("validationMessage"),
|
116
|
+
"mfa": obj.get("mfa"),
|
117
|
+
"options": [CredentialSelectOption.from_dict(_item) for _item in obj["options"]] if obj.get("options") is not None else None
|
118
|
+
})
|
119
|
+
return _obj
|
120
|
+
|
121
|
+
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
"""
|
4
|
+
Pluggy API
|
5
|
+
|
6
|
+
Pluggy's main API to review data and execute connectors
|
7
|
+
|
8
|
+
The version of the OpenAPI document: 1.0.0
|
9
|
+
Contact: hello@pluggy.ai
|
10
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
11
|
+
|
12
|
+
Do not edit the class manually.
|
13
|
+
""" # noqa: E501
|
14
|
+
|
15
|
+
|
16
|
+
from __future__ import annotations
|
17
|
+
import pprint
|
18
|
+
import re # noqa: F401
|
19
|
+
import json
|
20
|
+
|
21
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictStr
|
22
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
23
|
+
from pluggy_sdk.models.connector_health_details import ConnectorHealthDetails
|
24
|
+
from typing import Optional, Set
|
25
|
+
from typing_extensions import Self
|
26
|
+
|
27
|
+
class ConnectorHealth(BaseModel):
|
28
|
+
"""
|
29
|
+
Connector health status
|
30
|
+
""" # noqa: E501
|
31
|
+
status: Optional[StrictStr] = Field(default=None, description="'ONLINE' | 'OFFLINE' | 'UNSTABLE'")
|
32
|
+
stage: Optional[StrictStr] = None
|
33
|
+
details: Optional[ConnectorHealthDetails] = None
|
34
|
+
__properties: ClassVar[List[str]] = ["status", "stage", "details"]
|
35
|
+
|
36
|
+
model_config = ConfigDict(
|
37
|
+
populate_by_name=True,
|
38
|
+
validate_assignment=True,
|
39
|
+
protected_namespaces=(),
|
40
|
+
)
|
41
|
+
|
42
|
+
|
43
|
+
def to_str(self) -> str:
|
44
|
+
"""Returns the string representation of the model using alias"""
|
45
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
46
|
+
|
47
|
+
def to_json(self) -> str:
|
48
|
+
"""Returns the JSON representation of the model using alias"""
|
49
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
50
|
+
return json.dumps(self.to_dict())
|
51
|
+
|
52
|
+
@classmethod
|
53
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
54
|
+
"""Create an instance of ConnectorHealth from a JSON string"""
|
55
|
+
return cls.from_dict(json.loads(json_str))
|
56
|
+
|
57
|
+
def to_dict(self) -> Dict[str, Any]:
|
58
|
+
"""Return the dictionary representation of the model using alias.
|
59
|
+
|
60
|
+
This has the following differences from calling pydantic's
|
61
|
+
`self.model_dump(by_alias=True)`:
|
62
|
+
|
63
|
+
* `None` is only added to the output dict for nullable fields that
|
64
|
+
were set at model initialization. Other fields with value `None`
|
65
|
+
are ignored.
|
66
|
+
"""
|
67
|
+
excluded_fields: Set[str] = set([
|
68
|
+
])
|
69
|
+
|
70
|
+
_dict = self.model_dump(
|
71
|
+
by_alias=True,
|
72
|
+
exclude=excluded_fields,
|
73
|
+
exclude_none=True,
|
74
|
+
)
|
75
|
+
# override the default output from pydantic by calling `to_dict()` of details
|
76
|
+
if self.details:
|
77
|
+
_dict['details'] = self.details.to_dict()
|
78
|
+
return _dict
|
79
|
+
|
80
|
+
@classmethod
|
81
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
82
|
+
"""Create an instance of ConnectorHealth from a dict"""
|
83
|
+
if obj is None:
|
84
|
+
return None
|
85
|
+
|
86
|
+
if not isinstance(obj, dict):
|
87
|
+
return cls.model_validate(obj)
|
88
|
+
|
89
|
+
_obj = cls.model_validate({
|
90
|
+
"status": obj.get("status"),
|
91
|
+
"stage": obj.get("stage"),
|
92
|
+
"details": ConnectorHealthDetails.from_dict(obj["details"]) if obj.get("details") is not None else None
|
93
|
+
})
|
94
|
+
return _obj
|
95
|
+
|
96
|
+
|