dinie-sdk-sandbox 1.1.0
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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +40 -0
- data/LICENSE +21 -0
- data/README.md +280 -0
- data/lib/dinie/generated/api_version.rb +8 -0
- data/lib/dinie/generated/client.rb +96 -0
- data/lib/dinie/generated/errors/registry.rb +40 -0
- data/lib/dinie/generated/events/base.rb +11 -0
- data/lib/dinie/generated/events/credit_offer.rb +56 -0
- data/lib/dinie/generated/events/customer_created.rb +42 -0
- data/lib/dinie/generated/events/customer_denied.rb +39 -0
- data/lib/dinie/generated/events/customer_kyc_updated.rb +36 -0
- data/lib/dinie/generated/events/customer_status.rb +48 -0
- data/lib/dinie/generated/events/deserializers.rb +35 -0
- data/lib/dinie/generated/events/loan_active.rb +35 -0
- data/lib/dinie/generated/events/loan_created.rb +38 -0
- data/lib/dinie/generated/events/loan_payment_received.rb +46 -0
- data/lib/dinie/generated/events/loan_processing.rb +37 -0
- data/lib/dinie/generated/events/loan_signature_received.rb +48 -0
- data/lib/dinie/generated/events/loan_status.rb +73 -0
- data/lib/dinie/generated/events.rb +4 -0
- data/lib/dinie/generated/resources/banks.rb +25 -0
- data/lib/dinie/generated/resources/biometrics.rb +27 -0
- data/lib/dinie/generated/resources/credentials.rb +56 -0
- data/lib/dinie/generated/resources/credit_offers.rb +59 -0
- data/lib/dinie/generated/resources/customers.rb +200 -0
- data/lib/dinie/generated/resources/loans.rb +70 -0
- data/lib/dinie/generated/resources/webhook_endpoints.rb +97 -0
- data/lib/dinie/generated/resources.rb +9 -0
- data/lib/dinie/generated/types/bank.rb +17 -0
- data/lib/dinie/generated/types/biometrics_session.rb +16 -0
- data/lib/dinie/generated/types/biometrics_session_exchange_response.rb +23 -0
- data/lib/dinie/generated/types/credential.rb +52 -0
- data/lib/dinie/generated/types/credit_offer.rb +62 -0
- data/lib/dinie/generated/types/customer.rb +46 -0
- data/lib/dinie/generated/types/customer_bank_account.rb +33 -0
- data/lib/dinie/generated/types/ids.rb +18 -0
- data/lib/dinie/generated/types/kyc.rb +458 -0
- data/lib/dinie/generated/types/kyc_attachment_response.rb +16 -0
- data/lib/dinie/generated/types/loan.rb +51 -0
- data/lib/dinie/generated/types/money.rb +4 -0
- data/lib/dinie/generated/types/simulation.rb +35 -0
- data/lib/dinie/generated/types/transaction.rb +43 -0
- data/lib/dinie/generated/types/webhook_endpoint.rb +52 -0
- data/lib/dinie/generated/types/webhook_secret_rotation.rb +17 -0
- data/lib/dinie/generated/types.rb +18 -0
- data/lib/dinie/runtime/errors.rb +295 -0
- data/lib/dinie/runtime/http.rb +327 -0
- data/lib/dinie/runtime/idempotency.rb +34 -0
- data/lib/dinie/runtime/logger.rb +326 -0
- data/lib/dinie/runtime/model.rb +162 -0
- data/lib/dinie/runtime/multipart.rb +77 -0
- data/lib/dinie/runtime/paginator.rb +164 -0
- data/lib/dinie/runtime/rate_limit.rb +150 -0
- data/lib/dinie/runtime/request_options.rb +112 -0
- data/lib/dinie/runtime/retry.rb +74 -0
- data/lib/dinie/runtime/token_manager.rb +341 -0
- data/lib/dinie/runtime/webhooks.rb +194 -0
- data/lib/dinie/version.rb +7 -0
- data/lib/dinie.rb +37 -0
- data/sig/_external/faraday.rbs +44 -0
- data/sig/dinie/generated/client.rbs +45 -0
- data/sig/dinie/generated/errors/registry.rbs +40 -0
- data/sig/dinie/generated/events/base.rbs +17 -0
- data/sig/dinie/generated/events/credit_offer.rbs +33 -0
- data/sig/dinie/generated/events/customer_created.rbs +27 -0
- data/sig/dinie/generated/events/customer_denied.rbs +25 -0
- data/sig/dinie/generated/events/customer_kyc_updated.rbs +21 -0
- data/sig/dinie/generated/events/customer_status.rbs +26 -0
- data/sig/dinie/generated/events/deserializers.rbs +9 -0
- data/sig/dinie/generated/events/loan_active.rbs +20 -0
- data/sig/dinie/generated/events/loan_created.rbs +23 -0
- data/sig/dinie/generated/events/loan_payment_received.rbs +28 -0
- data/sig/dinie/generated/events/loan_processing.rbs +23 -0
- data/sig/dinie/generated/events/loan_signature_received.rbs +30 -0
- data/sig/dinie/generated/events/loan_status.rbs +40 -0
- data/sig/dinie/generated/resources/banks.rbs +15 -0
- data/sig/dinie/generated/resources/credentials.rbs +21 -0
- data/sig/dinie/generated/resources/credit_offers.rbs +19 -0
- data/sig/dinie/generated/resources/customers.rbs +58 -0
- data/sig/dinie/generated/resources/loans.rbs +26 -0
- data/sig/dinie/generated/resources/webhook_endpoints.rbs +35 -0
- data/sig/dinie/generated/types/bank.rbs +12 -0
- data/sig/dinie/generated/types/biometrics_session.rbs +11 -0
- data/sig/dinie/generated/types/credential.rbs +26 -0
- data/sig/dinie/generated/types/credit_offer.rbs +24 -0
- data/sig/dinie/generated/types/customer.rbs +25 -0
- data/sig/dinie/generated/types/customer_bank_account.rbs +26 -0
- data/sig/dinie/generated/types/enums.rbs +66 -0
- data/sig/dinie/generated/types/ids.rbs +21 -0
- data/sig/dinie/generated/types/kyc/attachment.rbs +14 -0
- data/sig/dinie/generated/types/kyc/common.rbs +42 -0
- data/sig/dinie/generated/types/kyc/requirements.rbs +117 -0
- data/sig/dinie/generated/types/kyc/submitted.rbs +21 -0
- data/sig/dinie/generated/types/kyc/uploads.rbs +24 -0
- data/sig/dinie/generated/types/loan.rbs +32 -0
- data/sig/dinie/generated/types/money.rbs +6 -0
- data/sig/dinie/generated/types/simulation.rbs +28 -0
- data/sig/dinie/generated/types/transaction.rbs +24 -0
- data/sig/dinie/generated/types/webhook_endpoint.rbs +38 -0
- data/sig/dinie/runtime/errors.rbs +106 -0
- data/sig/dinie/runtime/http.rbs +59 -0
- data/sig/dinie/runtime/idempotency.rbs +15 -0
- data/sig/dinie/runtime/logger.rbs +89 -0
- data/sig/dinie/runtime/model.rbs +51 -0
- data/sig/dinie/runtime/multipart.rbs +25 -0
- data/sig/dinie/runtime/paginator.rbs +50 -0
- data/sig/dinie/runtime/rate_limit.rbs +46 -0
- data/sig/dinie/runtime/request_options.rbs +35 -0
- data/sig/dinie/runtime/retry.rbs +29 -0
- data/sig/dinie/runtime/token_manager.rbs +51 -0
- data/sig/dinie/runtime/webhooks.rbs +31 -0
- data/sig/dinie/version.rbs +7 -0
- metadata +316 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Server-response error catalog + dispatch table (RB14, architecture §4.1, §7). Mirrors
|
|
2
|
+
# `lib/dinie/generated/errors/registry.rb`. Each marker is an empty subclass of `APIStatusError`.
|
|
3
|
+
|
|
4
|
+
module Dinie
|
|
5
|
+
# 400 — `invalid-request`.
|
|
6
|
+
class BadRequestError < APIStatusError
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# 401 — `authentication-failed`.
|
|
10
|
+
class AuthError < APIStatusError
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# 403 — `forbidden` type URL orphan (P1 debt); dispatches by status.
|
|
14
|
+
class PermissionError < APIStatusError
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# 404 — `not-found`.
|
|
18
|
+
class NotFoundError < APIStatusError
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# 409 — `conflict`.
|
|
22
|
+
class ConflictError < APIStatusError
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# 422 — `validation-failed`.
|
|
26
|
+
class ValidationError < APIStatusError
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# 429 — `rate-limit-exceeded`.
|
|
30
|
+
class RateLimitError < APIStatusError
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# 500 (also 503) and the ≥500 band fallback — `internal`.
|
|
34
|
+
class ServerError < APIStatusError
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
module Internal
|
|
38
|
+
ERROR_REGISTRY: Hash[Symbol, untyped]
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# `Events::WebhookEventBase` — the common envelope shared by all 15 events (architecture §3.1, §8).
|
|
2
|
+
# Mirrors `lib/dinie/generated/events/base.rb`. Each member inherits the seven envelope fields and
|
|
3
|
+
# pins its own `type` + narrows `data` to its `*Data` model. Never instantiated directly.
|
|
4
|
+
|
|
5
|
+
module Dinie
|
|
6
|
+
module Events
|
|
7
|
+
class WebhookEventBase < Internal::Model
|
|
8
|
+
attr_reader api_version: String
|
|
9
|
+
attr_reader created_at: Integer
|
|
10
|
+
attr_reader data: untyped
|
|
11
|
+
attr_reader delivery_id: String
|
|
12
|
+
attr_reader id: event_id
|
|
13
|
+
attr_reader timestamp: Integer
|
|
14
|
+
attr_reader type: String
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# `credit_offer.available` + `credit_offer.expired` events — one schema, two classes (architecture
|
|
2
|
+
# §3.1, §8). Mirrors `lib/dinie/generated/events/credit_offer.rb`. `data` is bespoke (NOT `CreditOffer`).
|
|
3
|
+
|
|
4
|
+
module Dinie
|
|
5
|
+
module Events
|
|
6
|
+
class CreditOfferEventData < Internal::Model
|
|
7
|
+
attr_reader approved_amount: money
|
|
8
|
+
attr_reader customer_id: customer_id
|
|
9
|
+
attr_reader due_date_rule: String?
|
|
10
|
+
attr_reader external_id: String?
|
|
11
|
+
attr_reader id: credit_offer_id
|
|
12
|
+
attr_reader installments: Integer
|
|
13
|
+
attr_reader min_amount: Float
|
|
14
|
+
attr_reader monthly_interest_rate: Float
|
|
15
|
+
attr_reader status: credit_offer_status
|
|
16
|
+
attr_reader valid_until: Integer
|
|
17
|
+
|
|
18
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> CreditOfferEventData
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
class CreditOfferAvailable < WebhookEventBase
|
|
22
|
+
attr_reader data: CreditOfferEventData
|
|
23
|
+
|
|
24
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> CreditOfferAvailable
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class CreditOfferExpired < WebhookEventBase
|
|
28
|
+
attr_reader data: CreditOfferEventData
|
|
29
|
+
|
|
30
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> CreditOfferExpired
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# `customer.created` event (architecture §3.1, §8). Mirrors
|
|
2
|
+
# `lib/dinie/generated/events/customer_created.rb`. `data` is a bespoke payload (NOT `Customer`).
|
|
3
|
+
|
|
4
|
+
module Dinie
|
|
5
|
+
module Events
|
|
6
|
+
class CustomerCreatedData < Internal::Model
|
|
7
|
+
attr_reader cnpj: String?
|
|
8
|
+
attr_reader cpf: String
|
|
9
|
+
attr_reader email: String
|
|
10
|
+
attr_reader external_id: String?
|
|
11
|
+
attr_reader id: customer_id
|
|
12
|
+
attr_reader kyc: Array[Kyc::Requirement]
|
|
13
|
+
attr_reader name: String
|
|
14
|
+
attr_reader phone: String
|
|
15
|
+
attr_reader status: customer_status
|
|
16
|
+
attr_reader trading_name: String
|
|
17
|
+
|
|
18
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> CustomerCreatedData
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
class CustomerCreated < WebhookEventBase
|
|
22
|
+
attr_reader data: CustomerCreatedData
|
|
23
|
+
|
|
24
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> CustomerCreated
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# `customer.denied` event (architecture §3.1, §8). Mirrors
|
|
2
|
+
# `lib/dinie/generated/events/customer_denied.rb`.
|
|
3
|
+
|
|
4
|
+
module Dinie
|
|
5
|
+
module Events
|
|
6
|
+
class CustomerDeniedData < Internal::Model
|
|
7
|
+
attr_reader cnpj: String?
|
|
8
|
+
attr_reader cpf: String
|
|
9
|
+
attr_reader email: String
|
|
10
|
+
attr_reader external_id: String?
|
|
11
|
+
attr_reader id: customer_id
|
|
12
|
+
attr_reader name: String
|
|
13
|
+
attr_reader phone: String
|
|
14
|
+
attr_reader status: String
|
|
15
|
+
|
|
16
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> CustomerDeniedData
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
class CustomerDenied < WebhookEventBase
|
|
20
|
+
attr_reader data: CustomerDeniedData
|
|
21
|
+
|
|
22
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> CustomerDenied
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# `customer.kyc_updated` event (architecture §3.1, §8). Mirrors
|
|
2
|
+
# `lib/dinie/generated/events/customer_kyc_updated.rb`. `data.kyc` reuses the KYC discriminated union.
|
|
3
|
+
|
|
4
|
+
module Dinie
|
|
5
|
+
module Events
|
|
6
|
+
class CustomerKycUpdatedData < Internal::Model
|
|
7
|
+
attr_reader external_id: String?
|
|
8
|
+
attr_reader id: customer_id
|
|
9
|
+
attr_reader kyc: Array[Kyc::Requirement]
|
|
10
|
+
attr_reader status: customer_status
|
|
11
|
+
|
|
12
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> CustomerKycUpdatedData
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
class CustomerKycUpdated < WebhookEventBase
|
|
16
|
+
attr_reader data: CustomerKycUpdatedData
|
|
17
|
+
|
|
18
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> CustomerKycUpdated
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# `customer.under_review` + `customer.active` events — one schema, two classes (architecture §3.1,
|
|
2
|
+
# §8). Mirrors `lib/dinie/generated/events/customer_status.rb`.
|
|
3
|
+
|
|
4
|
+
module Dinie
|
|
5
|
+
module Events
|
|
6
|
+
class CustomerStatusData < Internal::Model
|
|
7
|
+
attr_reader external_id: String?
|
|
8
|
+
attr_reader id: customer_id
|
|
9
|
+
attr_reader status: customer_status
|
|
10
|
+
|
|
11
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> CustomerStatusData
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class CustomerUnderReview < WebhookEventBase
|
|
15
|
+
attr_reader data: CustomerStatusData
|
|
16
|
+
|
|
17
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> CustomerUnderReview
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class CustomerActive < WebhookEventBase
|
|
21
|
+
attr_reader data: CustomerStatusData
|
|
22
|
+
|
|
23
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> CustomerActive
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# `Events::DESERIALIZERS` — the per-type webhook dispatch table (architecture §4.1, RB14). Mirrors
|
|
2
|
+
# `lib/dinie/generated/events/deserializers.rb`. 15 entries from 11 schemas; consumed by
|
|
3
|
+
# `runtime/webhooks.rb` via the controlled inverse import.
|
|
4
|
+
|
|
5
|
+
module Dinie
|
|
6
|
+
module Events
|
|
7
|
+
DESERIALIZERS: Hash[String, ^(Hash[Symbol, untyped]) -> WebhookEventBase]
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# `loan.active` event (architecture §3.1, §8). Mirrors `lib/dinie/generated/events/loan_active.rb`.
|
|
2
|
+
|
|
3
|
+
module Dinie
|
|
4
|
+
module Events
|
|
5
|
+
class LoanActiveData < Internal::Model
|
|
6
|
+
attr_reader id: loan_id
|
|
7
|
+
attr_reader principal_amount: money
|
|
8
|
+
attr_reader requested_amount: money
|
|
9
|
+
attr_reader status: loan_status
|
|
10
|
+
|
|
11
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> LoanActiveData
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class LoanActive < WebhookEventBase
|
|
15
|
+
attr_reader data: LoanActiveData
|
|
16
|
+
|
|
17
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> LoanActive
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# `loan.created` event (architecture §3.1, §8). Mirrors `lib/dinie/generated/events/loan_created.rb`.
|
|
2
|
+
|
|
3
|
+
module Dinie
|
|
4
|
+
module Events
|
|
5
|
+
class LoanCreatedData < Internal::Model
|
|
6
|
+
attr_reader credit_offer_id: credit_offer_id
|
|
7
|
+
attr_reader customer_id: customer_id
|
|
8
|
+
attr_reader id: loan_id
|
|
9
|
+
attr_reader installment_count: Integer
|
|
10
|
+
attr_reader requested_amount: money
|
|
11
|
+
attr_reader signing_url: String?
|
|
12
|
+
attr_reader status: loan_status
|
|
13
|
+
|
|
14
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> LoanCreatedData
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
class LoanCreated < WebhookEventBase
|
|
18
|
+
attr_reader data: LoanCreatedData
|
|
19
|
+
|
|
20
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> LoanCreated
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# `loan.payment_received` event (architecture §3.1, §8). Mirrors
|
|
2
|
+
# `lib/dinie/generated/events/loan_payment_received.rb`. Carries a nested `payment`.
|
|
3
|
+
|
|
4
|
+
module Dinie
|
|
5
|
+
module Events
|
|
6
|
+
class LoanPayment < Internal::Model
|
|
7
|
+
attr_reader amount: money
|
|
8
|
+
attr_reader installment_number: Integer
|
|
9
|
+
attr_reader paid_at: Integer
|
|
10
|
+
|
|
11
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> LoanPayment
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class LoanPaymentReceivedData < Internal::Model
|
|
15
|
+
attr_reader id: loan_id
|
|
16
|
+
attr_reader payment: LoanPayment
|
|
17
|
+
attr_reader status: loan_status
|
|
18
|
+
|
|
19
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> LoanPaymentReceivedData
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class LoanPaymentReceived < WebhookEventBase
|
|
23
|
+
attr_reader data: LoanPaymentReceivedData
|
|
24
|
+
|
|
25
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> LoanPaymentReceived
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# `loan.processing` event (architecture §3.1, §8). Mirrors
|
|
2
|
+
# `lib/dinie/generated/events/loan_processing.rb`.
|
|
3
|
+
|
|
4
|
+
module Dinie
|
|
5
|
+
module Events
|
|
6
|
+
class LoanProcessingData < Internal::Model
|
|
7
|
+
attr_reader ccb_number: String?
|
|
8
|
+
attr_reader credit_offer_id: credit_offer_id
|
|
9
|
+
attr_reader customer_id: customer_id
|
|
10
|
+
attr_reader disbursement_method: String?
|
|
11
|
+
attr_reader id: loan_id
|
|
12
|
+
attr_reader status: loan_status
|
|
13
|
+
|
|
14
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> LoanProcessingData
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
class LoanProcessing < WebhookEventBase
|
|
18
|
+
attr_reader data: LoanProcessingData
|
|
19
|
+
|
|
20
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> LoanProcessing
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# `loan.signature_received` event (architecture §3.1, §8). Mirrors
|
|
2
|
+
# `lib/dinie/generated/events/loan_signature_received.rb`. Carries a nested `signer`.
|
|
3
|
+
|
|
4
|
+
module Dinie
|
|
5
|
+
module Events
|
|
6
|
+
class LoanSigner < Internal::Model
|
|
7
|
+
attr_reader cpf: String
|
|
8
|
+
attr_reader name: String
|
|
9
|
+
attr_reader signed_at: Integer
|
|
10
|
+
|
|
11
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> LoanSigner
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class LoanSignatureReceivedData < Internal::Model
|
|
15
|
+
attr_reader id: loan_id
|
|
16
|
+
attr_reader signatures_received: Integer
|
|
17
|
+
attr_reader signatures_required: Integer
|
|
18
|
+
attr_reader signer: LoanSigner
|
|
19
|
+
attr_reader status: loan_status
|
|
20
|
+
|
|
21
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> LoanSignatureReceivedData
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
class LoanSignatureReceived < WebhookEventBase
|
|
25
|
+
attr_reader data: LoanSignatureReceivedData
|
|
26
|
+
|
|
27
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> LoanSignatureReceived
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# `loan.finished` + `loan.cancelled` + `loan.error` events — one schema, three classes (architecture
|
|
2
|
+
# §3.1, §8). Mirrors `lib/dinie/generated/events/loan_status.rb`. The nested `error` object is named
|
|
3
|
+
# `LoanErrorDetails` to avoid colliding with the `LoanError` event class.
|
|
4
|
+
|
|
5
|
+
module Dinie
|
|
6
|
+
module Events
|
|
7
|
+
class LoanErrorDetails < Internal::Model
|
|
8
|
+
attr_reader code: String
|
|
9
|
+
attr_reader message: String
|
|
10
|
+
|
|
11
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> LoanErrorDetails
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class LoanStatusData < Internal::Model
|
|
15
|
+
attr_reader error: LoanErrorDetails?
|
|
16
|
+
attr_reader id: loan_id
|
|
17
|
+
attr_reader status: loan_status
|
|
18
|
+
|
|
19
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> LoanStatusData
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class LoanFinished < WebhookEventBase
|
|
23
|
+
attr_reader data: LoanStatusData
|
|
24
|
+
|
|
25
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> LoanFinished
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
class LoanCancelled < WebhookEventBase
|
|
29
|
+
attr_reader data: LoanStatusData
|
|
30
|
+
|
|
31
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> LoanCancelled
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
class LoanError < WebhookEventBase
|
|
35
|
+
attr_reader data: LoanStatusData
|
|
36
|
+
|
|
37
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> LoanError
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# `Resources::Banks` — the `client.banks` resource: the bank directory (architecture §3.2, §11).
|
|
2
|
+
# Mirrors `lib/dinie/generated/resources/banks.rb`. `list` returns a FLAT `Array<Bank>` (not paginated).
|
|
3
|
+
|
|
4
|
+
module Dinie
|
|
5
|
+
module Resources
|
|
6
|
+
class Banks
|
|
7
|
+
BANKS_PATH: String
|
|
8
|
+
|
|
9
|
+
def initialize: (Dinie::Internal::HttpClient http) -> void
|
|
10
|
+
|
|
11
|
+
# List the banks available for customer bank-account submission (`GET /banks`). FLAT array.
|
|
12
|
+
def list: (?request_options: request_opts) -> Array[Dinie::Bank]
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# `Resources::Credentials` — the `client.credentials` resource: API-key management (architecture
|
|
2
|
+
# §3.2). Mirrors `lib/dinie/generated/resources/credentials.rb`.
|
|
3
|
+
|
|
4
|
+
module Dinie
|
|
5
|
+
module Resources
|
|
6
|
+
class Credentials
|
|
7
|
+
CREDENTIALS_PATH: String
|
|
8
|
+
|
|
9
|
+
def initialize: (Dinie::Internal::HttpClient http) -> void
|
|
10
|
+
|
|
11
|
+
# Create an API credential (`POST /auth/credentials`) → the only secret-bearing response.
|
|
12
|
+
def create: (?request_options: request_opts, **untyped fields) -> Dinie::CredentialWithSecret
|
|
13
|
+
|
|
14
|
+
# List API credentials (`GET /auth/credentials`), auto-paginating by `starting_after`.
|
|
15
|
+
def list: (?limit: Integer, ?starting_after: String, ?request_options: request_opts) -> Dinie::Page[Dinie::Credential]
|
|
16
|
+
|
|
17
|
+
# Revoke an API credential (`DELETE /auth/credentials/{client_id}` → 204).
|
|
18
|
+
def revoke: (String client_id, ?request_options: request_opts) -> nil
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# `Resources::CreditOffers` — the `client.credit_offers` resource (architecture §3.2). Mirrors
|
|
2
|
+
# `lib/dinie/generated/resources/credit_offers.rb`. No `create` (R10) — offers are minted by the Core.
|
|
3
|
+
|
|
4
|
+
module Dinie
|
|
5
|
+
module Resources
|
|
6
|
+
class CreditOffers
|
|
7
|
+
def initialize: (Dinie::Internal::HttpClient http) -> void
|
|
8
|
+
|
|
9
|
+
# List credit offers (`GET /credit-offers`), auto-paginating by `starting_after`.
|
|
10
|
+
def list: (?limit: Integer, ?starting_after: String, ?request_options: request_opts, **untyped filters) -> Dinie::Page[Dinie::CreditOffer]
|
|
11
|
+
|
|
12
|
+
# Retrieve a single credit offer (`GET /credit-offers/{id}`).
|
|
13
|
+
def retrieve: (String id, ?request_options: request_opts) -> Dinie::CreditOffer
|
|
14
|
+
|
|
15
|
+
# Price an offer (`POST /credit-offers/{id}/simulations`).
|
|
16
|
+
def create_simulation: (String credit_offer_id, ?request_options: request_opts, **untyped fields) -> Dinie::Simulation
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# `Resources::Customers` — the largest resource (architecture §3.1, §3.2). Mirrors
|
|
2
|
+
# `lib/dinie/generated/resources/customers.rb`. THE exemplar resource shape (008/010 copy it).
|
|
3
|
+
|
|
4
|
+
module Dinie
|
|
5
|
+
module Resources
|
|
6
|
+
class Customers
|
|
7
|
+
def initialize: (Dinie::Internal::HttpClient http) -> void
|
|
8
|
+
|
|
9
|
+
# Register a new customer (`POST /customers`).
|
|
10
|
+
def create: (email: String, phone: String, cpf: String, cnpj: String, ?name: String, ?external_id: String, ?request_options: request_opts) -> Dinie::Customer
|
|
11
|
+
|
|
12
|
+
# List and search customers (`GET /customers`), auto-paginating by `starting_after`.
|
|
13
|
+
def list: (?limit: Integer, ?starting_after: String, ?request_options: request_opts, **untyped filters) -> Dinie::Page[Dinie::Customer]
|
|
14
|
+
|
|
15
|
+
# Retrieve the full customer object (`GET /customers/{id}`).
|
|
16
|
+
def retrieve: (String id, ?request_options: request_opts) -> Dinie::Customer
|
|
17
|
+
|
|
18
|
+
# Update mutable customer fields (`PATCH /customers/{id}`).
|
|
19
|
+
def update: (String id, ?request_options: request_opts, **untyped fields) -> Dinie::Customer
|
|
20
|
+
|
|
21
|
+
# Retrieve the customer's linked bank account (`GET /customers/{id}/bank-account`).
|
|
22
|
+
def retrieve_bank_account: (String customer_id, ?request_options: request_opts) -> Dinie::CustomerBankAccount
|
|
23
|
+
|
|
24
|
+
# Create or update the customer's disbursement bank account (`POST /customers/{id}/bank-account`).
|
|
25
|
+
def upsert_bank_account: (String customer_id, ?request_options: request_opts, **untyped fields) -> Dinie::CustomerBankAccount
|
|
26
|
+
|
|
27
|
+
# Generate a temporary biometrics-capture session (`POST /customers/{id}/biometrics`).
|
|
28
|
+
def create_biometrics_session: (String customer_id, ?request_options: request_opts) -> Dinie::BiometricsSession
|
|
29
|
+
|
|
30
|
+
# KYC review trigger (`POST /customers/{id}/kyc-review` → 202, no content).
|
|
31
|
+
def start_kyc_review: (String customer_id, ?request_options: request_opts) -> nil
|
|
32
|
+
|
|
33
|
+
# The customer credit-offers subresource (`customers.credit_offers`).
|
|
34
|
+
def credit_offers: () -> Dinie::Resources::Customers::CreditOffers
|
|
35
|
+
|
|
36
|
+
# The KYC attachments subresource (`customers.kyc_attachments`).
|
|
37
|
+
def kyc_attachments: () -> Dinie::Resources::Customers::KycAttachments
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
def paginated_query: (limit: untyped, starting_after: untyped, cursor: untyped, filters: Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
|
42
|
+
|
|
43
|
+
# `customers.credit_offers` — list a single customer's credit offers.
|
|
44
|
+
class CreditOffers
|
|
45
|
+
def initialize: (Dinie::Internal::HttpClient http) -> void
|
|
46
|
+
|
|
47
|
+
def list: (String customer_id, ?limit: Integer, ?starting_after: String, ?request_options: request_opts, **untyped filters) -> Dinie::Page[Dinie::CreditOffer]
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# `customers.kyc_attachments` — the KYC attachment-upload subresource.
|
|
51
|
+
class KycAttachments
|
|
52
|
+
def initialize: (Dinie::Internal::HttpClient http) -> void
|
|
53
|
+
|
|
54
|
+
def create: (String customer_id, ?request_options: request_opts, **untyped upload) -> Dinie::Kyc::AttachmentResponse
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# `Resources::Loans` — the `client.loans` resource + the `loans.transactions` subresource
|
|
2
|
+
# (architecture §3.2, §3.1). Mirrors `lib/dinie/generated/resources/loans.rb`.
|
|
3
|
+
|
|
4
|
+
module Dinie
|
|
5
|
+
module Resources
|
|
6
|
+
class Loans
|
|
7
|
+
def initialize: (Dinie::Internal::HttpClient http) -> void
|
|
8
|
+
|
|
9
|
+
# Create a loan from an accepted credit-offer simulation (`POST /loans`).
|
|
10
|
+
def create: (credit_offer_id: String, simulation_id: String, installment_count: Integer, installment_amount: Float, first_due_date: String, ?request_options: request_opts) -> Dinie::Loan
|
|
11
|
+
|
|
12
|
+
# Retrieve a single loan (`GET /loans/{id}`).
|
|
13
|
+
def retrieve: (String id, ?request_options: request_opts) -> Dinie::Loan
|
|
14
|
+
|
|
15
|
+
# The loan transactions subresource (`loans.transactions`).
|
|
16
|
+
def transactions: () -> Dinie::Resources::Loans::Transactions
|
|
17
|
+
|
|
18
|
+
# `loans.transactions` — list a single loan's installments.
|
|
19
|
+
class Transactions
|
|
20
|
+
def initialize: (Dinie::Internal::HttpClient http) -> void
|
|
21
|
+
|
|
22
|
+
def list: (String loan_id, ?limit: Integer, ?starting_after: String, ?request_options: request_opts) -> Dinie::Page[Dinie::Transaction]
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# `Resources::WebhookEndpoints` — the `client.webhook_endpoints` resource: REST management of
|
|
2
|
+
# webhook endpoints (architecture §3.2). Mirrors `lib/dinie/generated/resources/webhook_endpoints.rb`.
|
|
3
|
+
# Distinct from event reception (`Dinie::Webhooks.extract`).
|
|
4
|
+
|
|
5
|
+
module Dinie
|
|
6
|
+
module Resources
|
|
7
|
+
class WebhookEndpoints
|
|
8
|
+
WEBHOOK_ENDPOINTS_PATH: String
|
|
9
|
+
|
|
10
|
+
def initialize: (Dinie::Internal::HttpClient http) -> void
|
|
11
|
+
|
|
12
|
+
# Create a webhook endpoint (`POST /webhooks/endpoints`) → the secret-bearing response.
|
|
13
|
+
def create: (?request_options: request_opts, **untyped fields) -> Dinie::WebhookEndpointWithSecret
|
|
14
|
+
|
|
15
|
+
# List webhook endpoints (`GET /webhooks/endpoints`), auto-paginating by `starting_after`.
|
|
16
|
+
def list: (?limit: Integer, ?starting_after: String, ?request_options: request_opts) -> Dinie::Page[Dinie::WebhookEndpoint]
|
|
17
|
+
|
|
18
|
+
# Retrieve a webhook endpoint by id (`GET /webhooks/endpoints/{id}`).
|
|
19
|
+
def retrieve: (String id, ?request_options: request_opts) -> Dinie::WebhookEndpoint
|
|
20
|
+
|
|
21
|
+
# Update a webhook endpoint (`PATCH /webhooks/endpoints/{id}`).
|
|
22
|
+
def update: (String id, ?request_options: request_opts, **untyped fields) -> Dinie::WebhookEndpoint
|
|
23
|
+
|
|
24
|
+
# Delete a webhook endpoint (`DELETE /webhooks/endpoints/{id}` → 204).
|
|
25
|
+
def delete: (String id, ?request_options: request_opts) -> nil
|
|
26
|
+
|
|
27
|
+
# Rotate the HMAC signing secret (`POST /webhooks/endpoints/{id}/rotate-secret`).
|
|
28
|
+
def rotate_secret: (String id, ?expire_current_in: Integer, ?request_options: request_opts) -> Dinie::WebhookSecretRotation
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
def endpoint_path: (String id) -> String
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# `Bank` — a bank-directory entry, read-only (architecture §3.3, §6, §11). Mirrors
|
|
2
|
+
# `lib/dinie/generated/types/bank.rb`. `id` is the COMPE code string (`"001"`), not a `*_…` id.
|
|
3
|
+
|
|
4
|
+
module Dinie
|
|
5
|
+
class Bank < Internal::Model
|
|
6
|
+
attr_reader display_name: String
|
|
7
|
+
attr_reader id: String
|
|
8
|
+
attr_reader name: String
|
|
9
|
+
|
|
10
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> Bank
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# `BiometricsSession` — a temporary biometrics-capture session, read-only (architecture §3.3, §6).
|
|
2
|
+
# Mirrors `lib/dinie/generated/types/biometrics_session.rb`.
|
|
3
|
+
|
|
4
|
+
module Dinie
|
|
5
|
+
class BiometricsSession < Internal::Model
|
|
6
|
+
attr_reader expires_at: Integer
|
|
7
|
+
attr_reader session_url: String
|
|
8
|
+
|
|
9
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> BiometricsSession
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# `Credential` + `CredentialWithSecret` (allOf → subclass) — API-key management (architecture
|
|
2
|
+
# §3.3, §6). Mirrors `lib/dinie/generated/types/credential.rb`.
|
|
3
|
+
|
|
4
|
+
module Dinie
|
|
5
|
+
class Credential < Internal::Model
|
|
6
|
+
attr_reader client_id: api_client_id
|
|
7
|
+
attr_reader created_at: Integer
|
|
8
|
+
attr_reader expires_at: Integer?
|
|
9
|
+
attr_reader id: api_client_id
|
|
10
|
+
attr_reader last_used_at: Integer?
|
|
11
|
+
attr_reader name: String
|
|
12
|
+
attr_reader status: credential_status
|
|
13
|
+
attr_reader updated_at: Integer
|
|
14
|
+
|
|
15
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> Credential
|
|
16
|
+
|
|
17
|
+
def self.serialize_create: (name: String, ?expires_at: Integer?) -> Hash[Symbol, untyped]
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# The creation-only credential — `Credential` plus `client_secret` (the contract's allOf).
|
|
21
|
+
class CredentialWithSecret < Credential
|
|
22
|
+
attr_reader client_secret: String
|
|
23
|
+
|
|
24
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> CredentialWithSecret
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# `CreditOffer` — a pre-approved credit offer (`co_…`), read-only (architecture §3.3, §6).
|
|
2
|
+
# Mirrors `lib/dinie/generated/types/credit_offer.rb`. installments XOR min/max — all three
|
|
3
|
+
# declared, exclusivity documented not enforced.
|
|
4
|
+
|
|
5
|
+
module Dinie
|
|
6
|
+
class CreditOffer < Internal::Model
|
|
7
|
+
attr_reader approved_amount: money
|
|
8
|
+
attr_reader created_at: Integer
|
|
9
|
+
attr_reader customer_id: customer_id
|
|
10
|
+
attr_reader due_date_rule: String?
|
|
11
|
+
attr_reader external_id: String?
|
|
12
|
+
attr_reader id: credit_offer_id
|
|
13
|
+
attr_reader installments: Integer?
|
|
14
|
+
attr_reader max_installments: Integer?
|
|
15
|
+
attr_reader min_amount: Float
|
|
16
|
+
attr_reader min_installments: Integer?
|
|
17
|
+
attr_reader monthly_interest_rate: Float
|
|
18
|
+
attr_reader status: credit_offer_status
|
|
19
|
+
attr_reader updated_at: Integer
|
|
20
|
+
attr_reader valid_until: Integer
|
|
21
|
+
|
|
22
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> CreditOffer
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# `Customer` — the full read model + its two request dumps (architecture §6, §3.3). THE exemplar
|
|
2
|
+
# (de)serializer shape. Mirrors `lib/dinie/generated/types/customer.rb`.
|
|
3
|
+
|
|
4
|
+
module Dinie
|
|
5
|
+
class Customer < Internal::Model
|
|
6
|
+
attr_reader cnpj: String?
|
|
7
|
+
attr_reader cpf: String
|
|
8
|
+
attr_reader created_at: Integer
|
|
9
|
+
attr_reader email: String
|
|
10
|
+
attr_reader external_id: String?
|
|
11
|
+
attr_reader id: customer_id
|
|
12
|
+
attr_reader kyc: Array[Kyc::Requirement]?
|
|
13
|
+
attr_reader name: String?
|
|
14
|
+
attr_reader phone: String
|
|
15
|
+
attr_reader status: customer_status
|
|
16
|
+
attr_reader trading_name: String?
|
|
17
|
+
attr_reader updated_at: Integer
|
|
18
|
+
|
|
19
|
+
def self.deserialize: (Hash[Symbol, untyped] raw) -> Customer
|
|
20
|
+
|
|
21
|
+
def self.serialize_create: (email: String, phone: String, cpf: String, cnpj: String, ?name: String, ?external_id: String) -> Hash[Symbol, untyped]
|
|
22
|
+
|
|
23
|
+
def self.serialize_update: (?email: String, ?phone: String) -> Hash[Symbol, untyped]
|
|
24
|
+
end
|
|
25
|
+
end
|