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.
Files changed (114) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +40 -0
  3. data/LICENSE +21 -0
  4. data/README.md +280 -0
  5. data/lib/dinie/generated/api_version.rb +8 -0
  6. data/lib/dinie/generated/client.rb +96 -0
  7. data/lib/dinie/generated/errors/registry.rb +40 -0
  8. data/lib/dinie/generated/events/base.rb +11 -0
  9. data/lib/dinie/generated/events/credit_offer.rb +56 -0
  10. data/lib/dinie/generated/events/customer_created.rb +42 -0
  11. data/lib/dinie/generated/events/customer_denied.rb +39 -0
  12. data/lib/dinie/generated/events/customer_kyc_updated.rb +36 -0
  13. data/lib/dinie/generated/events/customer_status.rb +48 -0
  14. data/lib/dinie/generated/events/deserializers.rb +35 -0
  15. data/lib/dinie/generated/events/loan_active.rb +35 -0
  16. data/lib/dinie/generated/events/loan_created.rb +38 -0
  17. data/lib/dinie/generated/events/loan_payment_received.rb +46 -0
  18. data/lib/dinie/generated/events/loan_processing.rb +37 -0
  19. data/lib/dinie/generated/events/loan_signature_received.rb +48 -0
  20. data/lib/dinie/generated/events/loan_status.rb +73 -0
  21. data/lib/dinie/generated/events.rb +4 -0
  22. data/lib/dinie/generated/resources/banks.rb +25 -0
  23. data/lib/dinie/generated/resources/biometrics.rb +27 -0
  24. data/lib/dinie/generated/resources/credentials.rb +56 -0
  25. data/lib/dinie/generated/resources/credit_offers.rb +59 -0
  26. data/lib/dinie/generated/resources/customers.rb +200 -0
  27. data/lib/dinie/generated/resources/loans.rb +70 -0
  28. data/lib/dinie/generated/resources/webhook_endpoints.rb +97 -0
  29. data/lib/dinie/generated/resources.rb +9 -0
  30. data/lib/dinie/generated/types/bank.rb +17 -0
  31. data/lib/dinie/generated/types/biometrics_session.rb +16 -0
  32. data/lib/dinie/generated/types/biometrics_session_exchange_response.rb +23 -0
  33. data/lib/dinie/generated/types/credential.rb +52 -0
  34. data/lib/dinie/generated/types/credit_offer.rb +62 -0
  35. data/lib/dinie/generated/types/customer.rb +46 -0
  36. data/lib/dinie/generated/types/customer_bank_account.rb +33 -0
  37. data/lib/dinie/generated/types/ids.rb +18 -0
  38. data/lib/dinie/generated/types/kyc.rb +458 -0
  39. data/lib/dinie/generated/types/kyc_attachment_response.rb +16 -0
  40. data/lib/dinie/generated/types/loan.rb +51 -0
  41. data/lib/dinie/generated/types/money.rb +4 -0
  42. data/lib/dinie/generated/types/simulation.rb +35 -0
  43. data/lib/dinie/generated/types/transaction.rb +43 -0
  44. data/lib/dinie/generated/types/webhook_endpoint.rb +52 -0
  45. data/lib/dinie/generated/types/webhook_secret_rotation.rb +17 -0
  46. data/lib/dinie/generated/types.rb +18 -0
  47. data/lib/dinie/runtime/errors.rb +295 -0
  48. data/lib/dinie/runtime/http.rb +327 -0
  49. data/lib/dinie/runtime/idempotency.rb +34 -0
  50. data/lib/dinie/runtime/logger.rb +326 -0
  51. data/lib/dinie/runtime/model.rb +162 -0
  52. data/lib/dinie/runtime/multipart.rb +77 -0
  53. data/lib/dinie/runtime/paginator.rb +164 -0
  54. data/lib/dinie/runtime/rate_limit.rb +150 -0
  55. data/lib/dinie/runtime/request_options.rb +112 -0
  56. data/lib/dinie/runtime/retry.rb +74 -0
  57. data/lib/dinie/runtime/token_manager.rb +341 -0
  58. data/lib/dinie/runtime/webhooks.rb +194 -0
  59. data/lib/dinie/version.rb +7 -0
  60. data/lib/dinie.rb +37 -0
  61. data/sig/_external/faraday.rbs +44 -0
  62. data/sig/dinie/generated/client.rbs +45 -0
  63. data/sig/dinie/generated/errors/registry.rbs +40 -0
  64. data/sig/dinie/generated/events/base.rbs +17 -0
  65. data/sig/dinie/generated/events/credit_offer.rbs +33 -0
  66. data/sig/dinie/generated/events/customer_created.rbs +27 -0
  67. data/sig/dinie/generated/events/customer_denied.rbs +25 -0
  68. data/sig/dinie/generated/events/customer_kyc_updated.rbs +21 -0
  69. data/sig/dinie/generated/events/customer_status.rbs +26 -0
  70. data/sig/dinie/generated/events/deserializers.rbs +9 -0
  71. data/sig/dinie/generated/events/loan_active.rbs +20 -0
  72. data/sig/dinie/generated/events/loan_created.rbs +23 -0
  73. data/sig/dinie/generated/events/loan_payment_received.rbs +28 -0
  74. data/sig/dinie/generated/events/loan_processing.rbs +23 -0
  75. data/sig/dinie/generated/events/loan_signature_received.rbs +30 -0
  76. data/sig/dinie/generated/events/loan_status.rbs +40 -0
  77. data/sig/dinie/generated/resources/banks.rbs +15 -0
  78. data/sig/dinie/generated/resources/credentials.rbs +21 -0
  79. data/sig/dinie/generated/resources/credit_offers.rbs +19 -0
  80. data/sig/dinie/generated/resources/customers.rbs +58 -0
  81. data/sig/dinie/generated/resources/loans.rbs +26 -0
  82. data/sig/dinie/generated/resources/webhook_endpoints.rbs +35 -0
  83. data/sig/dinie/generated/types/bank.rbs +12 -0
  84. data/sig/dinie/generated/types/biometrics_session.rbs +11 -0
  85. data/sig/dinie/generated/types/credential.rbs +26 -0
  86. data/sig/dinie/generated/types/credit_offer.rbs +24 -0
  87. data/sig/dinie/generated/types/customer.rbs +25 -0
  88. data/sig/dinie/generated/types/customer_bank_account.rbs +26 -0
  89. data/sig/dinie/generated/types/enums.rbs +66 -0
  90. data/sig/dinie/generated/types/ids.rbs +21 -0
  91. data/sig/dinie/generated/types/kyc/attachment.rbs +14 -0
  92. data/sig/dinie/generated/types/kyc/common.rbs +42 -0
  93. data/sig/dinie/generated/types/kyc/requirements.rbs +117 -0
  94. data/sig/dinie/generated/types/kyc/submitted.rbs +21 -0
  95. data/sig/dinie/generated/types/kyc/uploads.rbs +24 -0
  96. data/sig/dinie/generated/types/loan.rbs +32 -0
  97. data/sig/dinie/generated/types/money.rbs +6 -0
  98. data/sig/dinie/generated/types/simulation.rbs +28 -0
  99. data/sig/dinie/generated/types/transaction.rbs +24 -0
  100. data/sig/dinie/generated/types/webhook_endpoint.rbs +38 -0
  101. data/sig/dinie/runtime/errors.rbs +106 -0
  102. data/sig/dinie/runtime/http.rbs +59 -0
  103. data/sig/dinie/runtime/idempotency.rbs +15 -0
  104. data/sig/dinie/runtime/logger.rbs +89 -0
  105. data/sig/dinie/runtime/model.rbs +51 -0
  106. data/sig/dinie/runtime/multipart.rbs +25 -0
  107. data/sig/dinie/runtime/paginator.rbs +50 -0
  108. data/sig/dinie/runtime/rate_limit.rbs +46 -0
  109. data/sig/dinie/runtime/request_options.rbs +35 -0
  110. data/sig/dinie/runtime/retry.rbs +29 -0
  111. data/sig/dinie/runtime/token_manager.rbs +51 -0
  112. data/sig/dinie/runtime/webhooks.rbs +31 -0
  113. data/sig/dinie/version.rbs +7 -0
  114. 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