├── .gitignore ├── CHANGELOG.md ├── LICENSE.txt ├── README.md ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── publish.gradle └── src ├── main └── java │ └── org │ └── tokend │ └── sdk │ ├── api │ ├── TokenDApi.kt │ ├── accounts │ │ ├── AccountsApi.kt │ │ ├── AccountsService.kt │ │ └── model │ │ │ ├── CreateAccountRequestBody.kt │ │ │ └── limits │ │ │ ├── Limit.kt │ │ │ ├── LimitEntry.kt │ │ │ ├── Limits.kt │ │ │ ├── LimitsResponse.kt │ │ │ └── Statistics.kt │ ├── base │ │ ├── ApiCallback.kt │ │ ├── ApiRequest.kt │ │ ├── BaseApi.kt │ │ ├── MappedCallableApiRequest.kt │ │ ├── MappedRetrofitApiRequest.kt │ │ ├── SimpleRetrofitApiRequest.kt │ │ ├── model │ │ │ ├── ApiResponse.kt │ │ │ ├── AttributesEntity.kt │ │ │ ├── BaseResource.java │ │ │ ├── DataEntity.kt │ │ │ ├── DataPage.kt │ │ │ ├── DataPageWithNamedCursors.kt │ │ │ ├── ErrorBody.kt │ │ │ ├── ForbiddenException.kt │ │ │ ├── Link.kt │ │ │ ├── NameValue.kt │ │ │ ├── Page.kt │ │ │ ├── Policies.kt │ │ │ ├── RemoteFile.kt │ │ │ └── ServerError.kt │ │ └── params │ │ │ ├── PagingOrder.kt │ │ │ ├── PagingParams.kt │ │ │ ├── PagingParamsHolder.kt │ │ │ ├── PagingParamsV2.kt │ │ │ ├── PagingParamsV3.kt │ │ │ ├── PagingParamsWithNamedCursors.kt │ │ │ └── QueryParams.kt │ ├── blobs │ │ ├── BlobsApi.kt │ │ └── model │ │ │ ├── Blob.kt │ │ │ ├── BlobResponseData.kt │ │ │ └── BlobType.kt │ ├── charts │ │ ├── ChartsApi.kt │ │ ├── ChartsService.kt │ │ └── model │ │ │ └── AssetChartData.kt │ ├── custom │ │ ├── CustomRequestsApi.kt │ │ └── CustomRequestsService.kt │ ├── documents │ │ ├── DocumentsApi.kt │ │ ├── DocumentsService.kt │ │ └── model │ │ │ ├── DocumentType.kt │ │ │ ├── DocumentUploadPolicy.kt │ │ │ ├── DocumentUploadRequest.kt │ │ │ └── DocumentUrlRequest.kt │ ├── fees │ │ ├── FeesApi.kt │ │ ├── FeesService.kt │ │ ├── model │ │ │ ├── Fee.kt │ │ │ ├── Fees.kt │ │ │ └── FeesResponse.kt │ │ └── params │ │ │ └── FeeParams.kt │ ├── identity │ │ ├── IdentitiesApi.kt │ │ ├── IdentitiesService.kt │ │ ├── model │ │ │ ├── IdentityResource.java │ │ │ ├── IdentitySettingsResource.java │ │ │ └── MassEmailAccountKey.kt │ │ └── params │ │ │ └── IdentitiesPageParams.kt │ ├── integrations │ │ ├── IntegrationsApi.kt │ │ ├── booking │ │ │ ├── BookingApi.kt │ │ │ ├── BookingService.kt │ │ │ ├── model │ │ │ │ ├── CreateBookingRequestAttributes.kt │ │ │ │ ├── generated │ │ │ │ │ ├── inner │ │ │ │ │ │ ├── BookingDetails.java │ │ │ │ │ │ ├── Enum.java │ │ │ │ │ │ ├── PayloadDetails.java │ │ │ │ │ │ ├── PriceDetails.java │ │ │ │ │ │ ├── Time.java │ │ │ │ │ │ └── WorkHours.java │ │ │ │ │ └── resources │ │ │ │ │ │ ├── AllResources.java │ │ │ │ │ │ ├── BookingResource.java │ │ │ │ │ │ ├── BusinessResource.java │ │ │ │ │ │ └── EventResource.java │ │ │ │ └── scheduler │ │ │ │ │ ├── SchedulerPayloadResource.java │ │ │ │ │ └── generated │ │ │ │ │ ├── inner │ │ │ │ │ ├── QualifiedWeekday.java │ │ │ │ │ ├── Recurrence.java │ │ │ │ │ └── RecurrenceRule.java │ │ │ │ │ └── resources │ │ │ │ │ ├── AllResources.java │ │ │ │ │ ├── CalendarResource.java │ │ │ │ │ ├── EventRecurrenceResource.java │ │ │ │ │ ├── EventResource.java │ │ │ │ │ └── FreeBusyResource.java │ │ │ └── params │ │ │ │ ├── BookingParams.kt │ │ │ │ ├── BookingsPageParams.kt │ │ │ │ ├── BusinessesPageParams.kt │ │ │ │ ├── FreeBusyParams.kt │ │ │ │ └── FreeRoomsParams.kt │ │ ├── kycprovider │ │ │ ├── KycProviderApi.kt │ │ │ └── model │ │ │ │ └── generated │ │ │ │ └── resources │ │ │ │ ├── AllResources.java │ │ │ │ └── KycResource.java │ │ └── marketplace │ │ │ ├── MarketplaceApi.kt │ │ │ ├── MarketplaceService.kt │ │ │ ├── model │ │ │ ├── MarketplaceBuyRequestAttributes.kt │ │ │ ├── MarketplaceInvoiceAttributes.kt │ │ │ ├── MarketplaceInvoiceData.kt │ │ │ ├── MarketplaceOfferPrice.kt │ │ │ ├── MarketplaceOfferResource.java │ │ │ ├── MarketplacePaymentMethodResource.java │ │ │ └── MarketplacePaymentMethodType.kt │ │ │ └── params │ │ │ ├── MarketplaceOfferParams.kt │ │ │ └── MarketplaceOffersPageParams.kt │ ├── tfa │ │ ├── TfaApi.kt │ │ ├── TfaService.kt │ │ └── model │ │ │ ├── TfaFactor.kt │ │ │ └── TfaFactorCreationResult.kt │ ├── transactions │ │ └── model │ │ │ ├── SubmitTransactionResponse.kt │ │ │ └── TransactionFailedException.kt │ ├── v3 │ │ ├── TokenDApiV3.kt │ │ ├── accounts │ │ │ ├── AccountsApiV3.kt │ │ │ ├── AccountsServiceV3.kt │ │ │ └── params │ │ │ │ ├── AccountParamsV3.kt │ │ │ │ ├── AccountRoleParamsV3.kt │ │ │ │ ├── AccountRolesPageParamsV3.kt │ │ │ │ ├── AccountRulesPageParamsV3.kt │ │ │ │ └── AccountsPageParamsV3.kt │ │ ├── assetpairs │ │ │ ├── AssetPairsApi.kt │ │ │ ├── AssetPairsService.kt │ │ │ └── params │ │ │ │ ├── AssetPairParams.kt │ │ │ │ └── AssetPairsPageParams.kt │ │ ├── assets │ │ │ ├── AssetsApiV3.kt │ │ │ ├── AssetsServiceV3.kt │ │ │ ├── model │ │ │ │ └── AssetState.kt │ │ │ └── params │ │ │ │ ├── AssetParams.kt │ │ │ │ └── AssetsPageParams.kt │ │ ├── atomicswap │ │ │ ├── AtomicSwapsApi.kt │ │ │ ├── AtomicSwapsService.kt │ │ │ └── params │ │ │ │ ├── AtomicSwapAskParams.kt │ │ │ │ └── AtomicSwapAsksPageParams.kt │ │ ├── balances │ │ │ ├── BalancesApi.kt │ │ │ ├── BalancesService.kt │ │ │ └── params │ │ │ │ ├── BalanceParams.kt │ │ │ │ ├── BalancesPageParams.kt │ │ │ │ └── ConvertedBalancesParams.kt │ │ ├── base │ │ │ ├── JsonApiQueryMapBuilder.kt │ │ │ ├── JsonApiQueryParams.kt │ │ │ └── PageQueryParams.kt │ │ ├── fees │ │ │ ├── FeesApiV3.kt │ │ │ ├── FeesServiceV3.kt │ │ │ └── params │ │ │ │ ├── FeeCalculationParams.kt │ │ │ │ └── FeesPageParamsV3.kt │ │ ├── history │ │ │ ├── HistoryApi.kt │ │ │ ├── HistoryService.kt │ │ │ └── params │ │ │ │ ├── OperationParams.kt │ │ │ │ ├── OperationsPageParams.kt │ │ │ │ ├── ParticipantEffectsPageParams.kt │ │ │ │ └── ParticipantEffectsParams.kt │ │ ├── info │ │ │ └── HorizonInfoApiV3.kt │ │ ├── keyvalue │ │ │ ├── KeyValueStorageApiV3.kt │ │ │ └── KeyValueStorageServiceV3.kt │ │ ├── model │ │ │ └── generated │ │ │ │ ├── inner │ │ │ │ ├── BalanceStateAttributeAmounts.java │ │ │ │ ├── ClosePollOp.java │ │ │ │ ├── CreateAccountSpecificRuleData.java │ │ │ │ ├── CreateExternalSystemPoolOp.java │ │ │ │ ├── CreatePollRequestOp.java │ │ │ │ ├── CreateVoteOp.java │ │ │ │ ├── Enum.java │ │ │ │ ├── ExternalSystemData.java │ │ │ │ ├── ExternalSystemDataEntry.java │ │ │ │ ├── Fee.java │ │ │ │ ├── FeeAppliedTo.java │ │ │ │ ├── KeyValueEntryValue.java │ │ │ │ ├── LedgerInfo.java │ │ │ │ ├── ManageLimitsCreationOp.java │ │ │ │ ├── ManageLimitsRemovalOp.java │ │ │ │ ├── Mask.java │ │ │ │ ├── ParticularBalanceChangeEffect.java │ │ │ │ ├── PollData.java │ │ │ │ ├── RemoveExternalSystemPoolOp.java │ │ │ │ ├── RemoveVoteOp.java │ │ │ │ ├── UpdatePollEndTimeOp.java │ │ │ │ ├── UpdateSignerData.java │ │ │ │ └── VoteData.java │ │ │ │ └── resources │ │ │ │ ├── AccountKYCResource.java │ │ │ │ ├── AccountResource.java │ │ │ │ ├── AccountRoleResource.java │ │ │ │ ├── AccountRuleResource.java │ │ │ │ ├── AccountSpecificRuleResource.java │ │ │ │ ├── AllResources.java │ │ │ │ ├── AssetPairResource.java │ │ │ │ ├── AssetResource.java │ │ │ │ ├── AtomicSwapAskResource.java │ │ │ │ ├── AtomicSwapQuoteAssetResource.java │ │ │ │ ├── BalanceResource.java │ │ │ │ ├── BalanceStateResource.java │ │ │ │ ├── BalancesStatisticResource.java │ │ │ │ ├── BaseEffectResource.java │ │ │ │ ├── BaseOperationDetailsResource.java │ │ │ │ ├── BaseReviewableRequestDetailsResource.java │ │ │ │ ├── BindExternalSystemAccountIdOpResource.java │ │ │ │ ├── CalculatedFeeResource.java │ │ │ │ ├── CancelAtomicSwapAskOpResource.java │ │ │ │ ├── CancelChangeRoleRequestOpResource.java │ │ │ │ ├── CancelCloseDeferredPaymentRequestOpResource.java │ │ │ │ ├── CancelDataCreationRequestOpResource.java │ │ │ │ ├── CancelDataRemoveRequestOpResource.java │ │ │ │ ├── CancelDataUpdateRequestOpResource.java │ │ │ │ ├── CancelDeferredPaymentCreationRequestOpResource.java │ │ │ │ ├── CancelSaleRequestOpResource.java │ │ │ │ ├── ChangeRoleRequestResource.java │ │ │ │ ├── CheckSaleStateOpResource.java │ │ │ │ ├── CloseDeferredPaymentRequestResource.java │ │ │ │ ├── CloseSwapOpResource.java │ │ │ │ ├── ConvertedBalanceStateResource.java │ │ │ │ ├── ConvertedBalancesCollectionResource.java │ │ │ │ ├── CreateAccountOpResource.java │ │ │ │ ├── CreateAmlAlertRequestOpResource.java │ │ │ │ ├── CreateAmlAlertRequestResource.java │ │ │ │ ├── CreateAssetRequestResource.java │ │ │ │ ├── CreateAtomicSwapAskRequestOpResource.java │ │ │ │ ├── CreateAtomicSwapAskRequestResource.java │ │ │ │ ├── CreateAtomicSwapBidRequestOpResource.java │ │ │ │ ├── CreateAtomicSwapBidRequestResource.java │ │ │ │ ├── CreateChangeRoleRequestOpResource.java │ │ │ │ ├── CreateCloseDeferredPaymentRequestOpResource.java │ │ │ │ ├── CreateDataCreationRequestOpResource.java │ │ │ │ ├── CreateDataOpResource.java │ │ │ │ ├── CreateDataRemoveRequestOpResource.java │ │ │ │ ├── CreateDataUpdateRequestOpResource.java │ │ │ │ ├── CreateDeferredPaymentCreationRequestOpResource.java │ │ │ │ ├── CreateDeferredPaymentRequestResource.java │ │ │ │ ├── CreateIssuanceRequestOpResource.java │ │ │ │ ├── CreateIssuanceRequestResource.java │ │ │ │ ├── CreateKYCRecoveryRequestOpResource.java │ │ │ │ ├── CreateManageLimitsRequestOpResource.java │ │ │ │ ├── CreateManageOfferRequestOpResource.java │ │ │ │ ├── CreatePaymentRequestOpResource.java │ │ │ │ ├── CreatePaymentRequestResource.java │ │ │ │ ├── CreatePollRequestResource.java │ │ │ │ ├── CreatePreIssuanceRequestOpResource.java │ │ │ │ ├── CreatePreIssuanceRequestResource.java │ │ │ │ ├── CreateRedemptionRequestOpResource.java │ │ │ │ ├── CreateSaleRequestOpResource.java │ │ │ │ ├── CreateSaleRequestResource.java │ │ │ │ ├── CreateWithdrawRequestOpResource.java │ │ │ │ ├── CreateWithdrawRequestResource.java │ │ │ │ ├── DataCreationRequestResource.java │ │ │ │ ├── DataRemoveRequestResource.java │ │ │ │ ├── DataResource.java │ │ │ │ ├── DataUpdateRequestResource.java │ │ │ │ ├── DeferredPaymentResource.java │ │ │ │ ├── EffectBalanceChangeResource.java │ │ │ │ ├── EffectMatchedResource.java │ │ │ │ ├── EffectsChargedFromLockedResource.java │ │ │ │ ├── EffectsChargedResource.java │ │ │ │ ├── EffectsFundedResource.java │ │ │ │ ├── EffectsIssuedResource.java │ │ │ │ ├── EffectsLockedResource.java │ │ │ │ ├── EffectsUnlockedResource.java │ │ │ │ ├── EffectsWithdrawnResource.java │ │ │ │ ├── ExternalSystemIDResource.java │ │ │ │ ├── FeeRecordResource.java │ │ │ │ ├── HorizonStateResource.java │ │ │ │ ├── InitiateKYCRecoveryOpResource.java │ │ │ │ ├── KYCRecoveryRequestResource.java │ │ │ │ ├── KeyValueEntryResource.java │ │ │ │ ├── LedgerEntryChangeResource.java │ │ │ │ ├── LicenseInfoResource.java │ │ │ │ ├── LicenseOpResource.java │ │ │ │ ├── LimitsResource.java │ │ │ │ ├── LimitsWithStatsResource.java │ │ │ │ ├── ManageAccountRoleOpResource.java │ │ │ │ ├── ManageAccountRuleOpResource.java │ │ │ │ ├── ManageAccountSpecificRuleOpResource.java │ │ │ │ ├── ManageAssetOpResource.java │ │ │ │ ├── ManageAssetPairOpResource.java │ │ │ │ ├── ManageBalanceOpResource.java │ │ │ │ ├── ManageContractOpResource.java │ │ │ │ ├── ManageContractRequestOpResource.java │ │ │ │ ├── ManageCreatePollRequestOpResource.java │ │ │ │ ├── ManageExternalSystemAccountIDPoolEntryOpResource.java │ │ │ │ ├── ManageInvoiceOpResource.java │ │ │ │ ├── ManageKeyValueOpResource.java │ │ │ │ ├── ManageLimitsOpResource.java │ │ │ │ ├── ManageOfferOpResource.java │ │ │ │ ├── ManageOfferRequestResource.java │ │ │ │ ├── ManagePollOpResource.java │ │ │ │ ├── ManageSaleOpResource.java │ │ │ │ ├── ManageSignerOpResource.java │ │ │ │ ├── ManageSignerRoleOpResource.java │ │ │ │ ├── ManageSignerRuleOpResource.java │ │ │ │ ├── ManageVoteOpResource.java │ │ │ │ ├── MatchResource.java │ │ │ │ ├── OfferResource.java │ │ │ │ ├── OpenSwapOpResource.java │ │ │ │ ├── OperationResource.java │ │ │ │ ├── OperationsCreateAccountRoleResource.java │ │ │ │ ├── OperationsCreateAccountRuleResource.java │ │ │ │ ├── OperationsCreateSignerResource.java │ │ │ │ ├── OperationsCreateSignerRoleResource.java │ │ │ │ ├── OperationsCreateSignerRuleResource.java │ │ │ │ ├── OperationsRemoveAccountRoleResource.java │ │ │ │ ├── OperationsRemoveAccountRuleResource.java │ │ │ │ ├── OperationsRemoveSignerResource.java │ │ │ │ ├── OperationsRemoveSignerRoleResource.java │ │ │ │ ├── OperationsRemoveSignerRuleResource.java │ │ │ │ ├── OperationsUpdateAccountRoleResource.java │ │ │ │ ├── OperationsUpdateAccountRuleResource.java │ │ │ │ ├── OperationsUpdateSignerResource.java │ │ │ │ ├── OperationsUpdateSignerRoleResource.java │ │ │ │ ├── OperationsUpdateSignerRuleResource.java │ │ │ │ ├── OrderBookEntryResource.java │ │ │ │ ├── OrderBookResource.java │ │ │ │ ├── ParticipantsEffectResource.java │ │ │ │ ├── PaymentOpResource.java │ │ │ │ ├── PayoutOpResource.java │ │ │ │ ├── PollParticipationResource.java │ │ │ │ ├── PollResource.java │ │ │ │ ├── PublicKeyEntryResource.java │ │ │ │ ├── QuoteAssetResource.java │ │ │ │ ├── RedemptionRequestResource.java │ │ │ │ ├── RemoveAssetOpResource.java │ │ │ │ ├── RemoveAssetPairOpResource.java │ │ │ │ ├── RemoveDataOpResource.java │ │ │ │ ├── ReviewRequestOpResource.java │ │ │ │ ├── ReviewableRequestResource.java │ │ │ │ ├── SaleParticipationResource.java │ │ │ │ ├── SaleQuoteAssetResource.java │ │ │ │ ├── SaleResource.java │ │ │ │ ├── SaleWhitelistResource.java │ │ │ │ ├── SetFeeOpResource.java │ │ │ │ ├── SignerResource.java │ │ │ │ ├── SignerRoleResource.java │ │ │ │ ├── SignerRuleResource.java │ │ │ │ ├── StampOpResource.java │ │ │ │ ├── StatisticsResource.java │ │ │ │ ├── SwapResource.java │ │ │ │ ├── TransactionResource.java │ │ │ │ ├── UpdateAssetRequestResource.java │ │ │ │ ├── UpdateDataOpResource.java │ │ │ │ ├── UpdateLimitsRequestResource.java │ │ │ │ ├── UpdateSaleDetailsRequestResource.java │ │ │ │ └── VoteResource.java │ │ ├── offers │ │ │ ├── OffersApiV3.kt │ │ │ ├── OffersServiceV3.kt │ │ │ └── params │ │ │ │ ├── OfferParamsV3.kt │ │ │ │ └── OffersPageParamsV3.kt │ │ ├── orderbook │ │ │ ├── OrderBooksApi.kt │ │ │ ├── OrderBooksService.kt │ │ │ └── params │ │ │ │ ├── MatchesPageParams.kt │ │ │ │ ├── OrderBookPageParams.kt │ │ │ │ └── OrderBookParamsV3.kt │ │ ├── polls │ │ │ ├── PollsApi.kt │ │ │ ├── PollsService.kt │ │ │ ├── model │ │ │ │ └── PollState.kt │ │ │ └── params │ │ │ │ ├── PollParams.kt │ │ │ │ ├── PollsPageParams.kt │ │ │ │ ├── VoteParams.kt │ │ │ │ └── VotesPageParams.kt │ │ ├── requests │ │ │ ├── RequestsApiV3.kt │ │ │ ├── RequestsServiceV3.kt │ │ │ ├── model │ │ │ │ └── RequestState.kt │ │ │ └── params │ │ │ │ ├── AssetRequestPageParams.kt │ │ │ │ ├── ChangeRoleRequestPageParams.kt │ │ │ │ ├── RequestParamsV3.kt │ │ │ │ └── RequestsPageParamsV3.kt │ │ ├── sales │ │ │ ├── SalesApiV3.kt │ │ │ ├── SalesServiceV3.kt │ │ │ ├── model │ │ │ │ └── SaleState.kt │ │ │ └── params │ │ │ │ ├── SaleParamsV3.kt │ │ │ │ └── SalesPageParamsV3.kt │ │ ├── signers │ │ │ ├── SignersApiV3.kt │ │ │ ├── SignersServiceV3.kt │ │ │ └── params │ │ │ │ ├── SignerParamsV3.kt │ │ │ │ ├── SignerRoleParamsV3.kt │ │ │ │ ├── SignerRolesPageParamsV3.kt │ │ │ │ ├── SignerRuleParamsV3.kt │ │ │ │ └── SignerRulesPageParamsV3.kt │ │ ├── swaps │ │ │ ├── SwapsApi.kt │ │ │ ├── SwapsService.kt │ │ │ ├── model │ │ │ │ └── SwapState.kt │ │ │ └── params │ │ │ │ ├── SwapParams.kt │ │ │ │ └── SwapsPageParams.kt │ │ └── transactions │ │ │ ├── TransactionsApiV3.kt │ │ │ ├── TransactionsServiceV3.kt │ │ │ ├── model │ │ │ └── SubmitTransactionRequestBody.kt │ │ │ └── params │ │ │ └── TransactionsPageParams.kt │ └── wallets │ │ ├── WalletsApi.kt │ │ ├── WalletsService.kt │ │ └── model │ │ └── Exceptions.kt │ ├── factory │ ├── HttpClientFactory.kt │ ├── JsonApiTools.kt │ └── ServiceFactory.kt │ ├── keyserver │ ├── KeyServer.kt │ ├── WalletEncryption.kt │ ├── WalletKeyDerivation.kt │ ├── models │ │ ├── DecryptedWallet.kt │ │ ├── KeychainData.kt │ │ ├── LoginParams.kt │ │ ├── SignerData.kt │ │ ├── Wallet.kt │ │ ├── WalletCreationResult.kt │ │ ├── WalletData.kt │ │ ├── WalletRelationship.kt │ │ └── WalletSaveData.kt │ └── seedreader │ │ ├── KeychainDataSeedReader.kt │ │ ├── KeychainDataSeedsArrayReader.kt │ │ └── KeychainDataSingleSeedReader.kt │ ├── redirects │ ├── ClientRedirectPayload.kt │ └── ClientRedirectType.kt │ ├── signing │ ├── AccountRequestSigner.kt │ ├── RequestSigner.kt │ └── SignInterceptor.kt │ ├── tfa │ ├── Callbacks.kt │ ├── Exceptions.kt │ ├── PasswordTfaOtpGenerator.kt │ ├── TfaCallback.kt │ ├── TfaInterceptor.kt │ ├── TfaVerificationService.kt │ └── TfaVerifier.kt │ ├── uri │ └── TokenDUri.kt │ └── utils │ ├── ApiDateUtil.kt │ ├── BigDecimalUtil.kt │ ├── CookieJarProvider.kt │ ├── CustomHeadersInterceptor.kt │ ├── NamedCursorsPagedResourceLoader.kt │ ├── PagedResourceLoader.kt │ ├── SimpleNamedCursorsPagedResourceLoader.kt │ ├── SimplePagedResourceLoader.kt │ ├── extentions │ ├── Bitmask.kt │ ├── Encoding.kt │ ├── HorizonStateResource.kt │ ├── HttpException.kt │ ├── OperationResource.kt │ ├── ReviewableRequestResource.kt │ ├── SaleResource.kt │ └── XdrEnumBitmask.kt │ ├── statemachine │ ├── CharSequenceStateMachine.kt │ ├── CharState.kt │ └── CharTransition.kt │ └── streamer │ ├── ApiStreamerCallback.kt │ ├── PagedResourceStreamer.kt │ └── SimplePagedResourceStreamer.kt └── test └── java └── org └── tokend └── sdk ├── helpers ├── buildergen │ └── PageQueryParamsBuilderGenerator.kt └── resourcegen │ └── DockerResourceGenerator.kt └── test ├── BitmaskCollection.kt ├── CharSequenceStateMachineTest.kt ├── ClientRedirectPayloadTest.kt ├── Config.kt ├── JsonSerialization.kt ├── PagedResourceLoaderTest.kt ├── RemoteFileTest.kt ├── Util.kt ├── WalletEncryptionTest.kt ├── integration ├── BlobsTest.kt ├── CallbackThreadTest.kt ├── CustomRequestsTest.kt ├── DocumentsTest.kt ├── IdentityTest.kt └── KeyServerTest.kt └── jsonapi ├── PaginationTest.kt ├── QueryParamsTest.kt └── integration └── TransactionsIntegrationTest.kt /.gitignore: -------------------------------------------------------------------------------- 1 | # Mac 2 | .DS_Store 3 | 4 | # File-based project format 5 | *.iws 6 | 7 | # Files for the ART/Dalvik VM 8 | *.dex 9 | 10 | # Java class files 11 | *.class 12 | 13 | # Generated files 14 | bin/ 15 | gen/ 16 | out/ 17 | 18 | # Gradle files 19 | .gradle/ 20 | build/ 21 | 22 | # Local configuration file (sdk path, etc) 23 | local.properties 24 | 25 | # Proguard folder generated by Eclipse 26 | proguard/ 27 | 28 | # Log Files 29 | *.log 30 | 31 | # Android Studio Navigation editor temp files 32 | .navigation/ 33 | 34 | # Android Studio captures folder 35 | captures/ 36 | 37 | # IntelliJ 38 | *.iml 39 | .idea/ 40 | 41 | repoCredentials.gradle 42 | src/test/java/org/tokend/sdk/dev/ 43 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tokend/kotlin-sdk/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip 6 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/accounts/AccountsService.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.accounts 2 | 3 | import org.tokend.sdk.api.accounts.model.CreateAccountRequestBody 4 | import org.tokend.sdk.api.accounts.model.limits.LimitsResponse 5 | import retrofit2.Call 6 | import retrofit2.http.Body 7 | import retrofit2.http.GET 8 | import retrofit2.http.POST 9 | import retrofit2.http.Path 10 | 11 | interface AccountsService { 12 | @GET("accounts/{accountId}/limits") 13 | fun getLimits(@Path("accountId") accountId: String): Call 14 | 15 | @POST("accounts") 16 | fun createAccount(@Body body: CreateAccountRequestBody): Call 17 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/accounts/model/CreateAccountRequestBody.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.accounts.model 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | import org.tokend.sdk.api.base.model.DataEntity 5 | import org.tokend.sdk.keyserver.models.SignerData 6 | import org.tokend.sdk.keyserver.models.WalletRelationship 7 | 8 | class CreateAccountRequestBody( 9 | accountId: String, 10 | signers: Collection 11 | ) { 12 | @JsonProperty("included") 13 | val included = signers.map(WalletRelationship.Companion::signer) 14 | 15 | @JsonProperty("data") 16 | val data = mapOf( 17 | "id" to accountId, 18 | "relationships" to mapOf( 19 | "signers" to DataEntity(included.map { 20 | mapOf("id" to it.id, "type" to it.type) 21 | }) 22 | ) 23 | ) 24 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/accounts/model/limits/Limit.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.accounts.model.limits 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | import org.tokend.wallet.xdr.StatsOpType 5 | import java.math.BigDecimal 6 | 7 | class Limit( 8 | @JsonProperty("id") 9 | val id: Long, 10 | @JsonProperty("account_type") 11 | val accountType: Int, 12 | @JsonProperty("account_id") 13 | val accountId: String?, 14 | @JsonProperty("stats_op_type") 15 | val statsOpTypeI: Int, 16 | @JsonProperty("asset_code") 17 | val asset: String, 18 | @JsonProperty("is_convert_needed") 19 | val isConvertNeeded: Boolean, 20 | @JsonProperty("daily_out") 21 | val daily: BigDecimal, 22 | @JsonProperty("weekly_out") 23 | val weekly: BigDecimal, 24 | @JsonProperty("monthly_out") 25 | val monthly: BigDecimal, 26 | @JsonProperty("annual_out") 27 | val annual: BigDecimal 28 | ) { 29 | val statsOpType: StatsOpType 30 | get() = StatsOpType.values().find { it.value == statsOpTypeI }!! 31 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/accounts/model/limits/LimitEntry.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.accounts.model.limits 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | 5 | 6 | data class LimitEntry( 7 | @JsonProperty("limit") 8 | val limit: Limit, 9 | @JsonProperty("statistics") 10 | val statistics: Statistics 11 | ) -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/accounts/model/limits/LimitsResponse.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.accounts.model.limits 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | 5 | class LimitsResponse( 6 | @JsonProperty("limits") 7 | val entries: List? 8 | ) -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/accounts/model/limits/Statistics.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.accounts.model.limits 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | import org.tokend.wallet.xdr.StatsOpType 5 | import java.math.BigDecimal 6 | import java.util.* 7 | 8 | class Statistics( 9 | @JsonProperty("id") 10 | val id: Long, 11 | @JsonProperty("account_id") 12 | val accountId: String, 13 | @JsonProperty("stats_op_type") 14 | val statsOpTypeI: Int, 15 | @JsonProperty("asset_code") 16 | val asset: String, 17 | @JsonProperty("is_convert_needed") 18 | val isConvertNeeded: Boolean, 19 | @JsonProperty("daily_outcome") 20 | val daily: BigDecimal, 21 | @JsonProperty("weekly_outcome") 22 | val weekly: BigDecimal, 23 | @JsonProperty("monthly_outcome") 24 | val monthly: BigDecimal, 25 | @JsonProperty("annual_outcome") 26 | val annual: BigDecimal, 27 | @JsonProperty("updated_at") 28 | val updatedAtTimestamp: Long 29 | ) { 30 | val updatedAt: Date 31 | get() = Date(updatedAtTimestamp * 1000) 32 | 33 | val statsOpType: StatsOpType 34 | get() = StatsOpType.values().find { it.value == statsOpTypeI }!! 35 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/base/ApiCallback.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.base 2 | 3 | import org.tokend.sdk.api.base.model.ApiResponse 4 | 5 | /** 6 | * Result receiver for async API request. 7 | */ 8 | interface ApiCallback { 9 | fun onSuccess(response: ApiResponse) 10 | 11 | fun onError(error: Throwable) 12 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/base/SimpleRetrofitApiRequest.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.base 2 | 3 | import retrofit2.Call 4 | 5 | /** 6 | * API request based on Retrofit [Call] with error mapping. 7 | * @see MappedRetrofitApiRequest 8 | */ 9 | class SimpleRetrofitApiRequest( 10 | call: Call, 11 | errorMapper: ((Throwable) -> Throwable)? = null 12 | ) : MappedRetrofitApiRequest(call, { it }, errorMapper) -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/base/model/ApiResponse.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.base.model 2 | 3 | /** 4 | * API response holder. 5 | * @param value response value 6 | */ 7 | class ApiResponse( 8 | private val value: T? 9 | ) { 10 | /** 11 | * @return response value. 12 | * @throws [IllegalStateException] f response type is [Void] or if there is no value 13 | * @see hasValue 14 | */ 15 | fun get(): T { 16 | return value 17 | ?: throw IllegalStateException("Response has no value") 18 | } 19 | 20 | /** 21 | * @return true if there is a value, false otherwise. 22 | */ 23 | fun hasValue(): Boolean { 24 | return value != null && value !is Void && value !is Unit 25 | } 26 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/base/model/AttributesEntity.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.base.model 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | 5 | 6 | /** 7 | * Represents request body with [T] attributes. 8 | */ 9 | open class AttributesEntity( 10 | @get:JsonProperty("attributes") 11 | val attributes: T 12 | ) -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/base/model/DataEntity.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.base.model 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | import org.tokend.sdk.factory.JsonApiTools 5 | 6 | 7 | /** 8 | * Represents request body with [T] data. 9 | */ 10 | open class DataEntity( 11 | @get:JsonProperty("data") 12 | val data: T 13 | ) { 14 | 15 | fun toJson() = JsonApiTools.objectMapper.writeValueAsString(data) 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/base/model/ForbiddenException.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.base.model 2 | 3 | import java.io.IOException 4 | 5 | open class ForbiddenException(val type: String, detailMessage: String) : IOException(detailMessage) -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/base/model/Link.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.base.model 2 | 3 | 4 | import com.fasterxml.jackson.annotation.JsonIgnore 5 | import com.fasterxml.jackson.annotation.JsonProperty 6 | import java.net.URI 7 | import java.net.URISyntaxException 8 | 9 | /** 10 | * Represents links in responses. 11 | */ 12 | open class Link internal constructor( 13 | @get:JsonProperty("href") 14 | val href: String 15 | ) { 16 | @get:JsonIgnore 17 | val uri: URI 18 | get() { 19 | try { 20 | return URI(href) 21 | } catch (e: URISyntaxException) { 22 | throw RuntimeException(e) 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/base/model/NameValue.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.base.model 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | 5 | /** 6 | * Represents serializable holder of [T] value. 7 | */ 8 | data class NameValue( 9 | @JsonProperty("name") 10 | val name: String, 11 | @JsonProperty("value") 12 | val value: T 13 | ) -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/base/model/Page.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.base.model 2 | 3 | 4 | import com.fasterxml.jackson.annotation.JsonIgnore 5 | import com.fasterxml.jackson.annotation.JsonProperty 6 | 7 | /** 8 | * Response with list of specific [T] items 9 | */ 10 | open class Page { 11 | @get:JsonProperty("records") 12 | var records: List = emptyList() 13 | get() = (if (field.isEmpty() && this.embeddedPage != null) { 14 | this.embeddedPage.records 15 | } else field) ?: emptyList() 16 | 17 | @JsonProperty("links") 18 | private var links: Links? = null 19 | 20 | @JsonProperty("_embedded") 21 | private val embeddedPage: EmbeddedPage? = null 22 | 23 | @JsonProperty("_links") 24 | private val embeddedLinks: Links? = null 25 | 26 | @JsonIgnore 27 | fun getLinks(): Links? { 28 | return this.links ?: this.embeddedLinks 29 | } 30 | 31 | /** 32 | * Links connected to page response. 33 | */ 34 | class Links internal constructor( 35 | @JsonProperty("next") 36 | val next: Link?, 37 | @JsonProperty("prev") 38 | val prev: Link?, 39 | @JsonProperty("self") 40 | val self: Link? 41 | ) 42 | 43 | private class EmbeddedPage( 44 | @JsonProperty("records") 45 | val records: ArrayList? 46 | ) 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/base/model/Policies.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.base.model 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | 5 | /** 6 | * Holds policies by bitmask 7 | */ 8 | data class Policies( 9 | /** 10 | * Policies parsed as [NameValue] pairs 11 | */ 12 | @JsonProperty("flags") 13 | val flags: List>?, 14 | 15 | /** 16 | * Policies bitmask 17 | */ 18 | @JsonProperty("mask") 19 | val mask: Long 20 | ) { 21 | /** 22 | * @return true if given [policy] is set in bitmask, 23 | * false otherwise 24 | * 25 | * @see mask 26 | */ 27 | fun have(policy: Long): Boolean { 28 | return (mask and policy) == policy 29 | } 30 | 31 | /** 32 | * @return true if given [policy] is set in bitmask, 33 | * false otherwise 34 | * 35 | * @see mask 36 | */ 37 | fun have(policy: Int): Boolean { 38 | return have(policy.toLong()) 39 | } 40 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/base/model/ServerError.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.base.model 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | import com.fasterxml.jackson.databind.JsonNode 5 | import com.fasterxml.jackson.databind.node.ObjectNode 6 | 7 | /** 8 | * Represents Server error. 9 | */ 10 | open class ServerError { 11 | @JsonProperty("title") 12 | val title: String? = null 13 | 14 | @JsonProperty("status") 15 | val status: Int? = null 16 | 17 | @JsonProperty("detail") 18 | val detail: String? = null 19 | 20 | @JsonProperty("meta") 21 | val meta: JsonNode? = null 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/base/params/PagingOrder.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.base.params 2 | 3 | enum class PagingOrder { 4 | ASC, DESC; 5 | 6 | override fun toString(): String { 7 | return super.toString().toLowerCase() 8 | } 9 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/base/params/PagingParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.base.params 2 | 3 | /** 4 | * Converts common paging params to Query map. 5 | */ 6 | open class PagingParams 7 | @JvmOverloads 8 | constructor( 9 | override val order: PagingOrder? = null, 10 | override val limit: Int? = null, 11 | override val cursor: String? = null 12 | ) : QueryParams, PagingParamsHolder { 13 | 14 | override fun map(): Map { 15 | return mutableMapOf() 16 | .apply { 17 | order?.also { put("order", it) } 18 | limit?.also { put("limit", it) } 19 | cursor?.also { put("cursor", it) } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/base/params/PagingParamsHolder.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.base.params 2 | 3 | /** 4 | * Common paging params. 5 | */ 6 | interface PagingParamsHolder { 7 | val order: PagingOrder? 8 | val cursor: String? 9 | val limit: Int? 10 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/base/params/QueryParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.base.params 2 | 3 | /** 4 | * Parameters transformer for Query map. 5 | */ 6 | interface QueryParams { 7 | fun map(): Map 8 | } 9 | 10 | fun QueryParams?.map(): Map { 11 | return this?.map() ?: emptyMap() 12 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/blobs/model/BlobResponseData.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.blobs.model 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | 5 | class BlobResponseData( 6 | @JsonProperty("id") 7 | val id: String, 8 | @JsonProperty("type") 9 | val type: String, 10 | @JsonProperty("attributes") 11 | val attributes: Map 12 | ) { 13 | fun toBlob(): Blob = Blob( 14 | id = id, 15 | typeName = type, 16 | valueString = attributes.getValue("value") 17 | ) 18 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/blobs/model/BlobType.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.blobs.model 2 | 3 | enum class BlobType(val value: Int) { 4 | ASSET_DESCRIPTION(1), 5 | FUND_OVERVIEW(2), 6 | FUND_UPDATE(4), 7 | NAV_UPDATE(8), 8 | FUND_DOCUMENT(16), 9 | ALPHA(32), 10 | BRAVO(64), 11 | CHARLIE(128), 12 | DELTA(256), 13 | TOKEN_TERMS(512), 14 | TOKEN_METRICS(1024), 15 | KYC_FORM(2048), 16 | KYC_ID_DOCUMENT(4096), 17 | KYC_POA(8192), 18 | IDENTITY_MIND_REJECT(16384); 19 | 20 | companion object { 21 | @JvmStatic 22 | fun fromName(name: String): BlobType { 23 | return BlobType.valueOf(name.toLowerCase()) 24 | } 25 | 26 | @JvmStatic 27 | fun fromValue(value: Int): BlobType { 28 | return BlobType.values().find { it.value == value } 29 | ?: throw IllegalArgumentException("There is no blob type with value '$value'") 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/charts/ChartsApi.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.charts 2 | 3 | import org.tokend.sdk.api.charts.model.AssetChartData 4 | import org.tokend.sdk.api.base.ApiRequest 5 | import org.tokend.sdk.api.base.SimpleRetrofitApiRequest 6 | 7 | open class ChartsApi( 8 | protected val chartsService: ChartsService 9 | ) { 10 | /** 11 | * Will return [AssetChartData] for given asset code. 12 | */ 13 | open fun getChart(assetCode: String): ApiRequest { 14 | return SimpleRetrofitApiRequest( 15 | chartsService.getChart(assetCode) 16 | ) 17 | } 18 | 19 | /** 20 | * Will return [AssetChartData] for given asset pair. 21 | */ 22 | open fun getChart(baseAsset: String, 23 | quoteAsset: String): ApiRequest { 24 | return getChart("$baseAsset-$quoteAsset") 25 | } 26 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/charts/ChartsService.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.charts 2 | 3 | import org.tokend.sdk.api.charts.model.AssetChartData 4 | import retrofit2.Call 5 | import retrofit2.http.GET 6 | import retrofit2.http.Path 7 | 8 | interface ChartsService { 9 | @GET("charts/{asset}") 10 | fun getChart(@Path("asset") asset: String): Call 11 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/custom/CustomRequestsService.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.custom 2 | 3 | import okhttp3.ResponseBody 4 | import retrofit2.Call 5 | import retrofit2.http.* 6 | 7 | interface CustomRequestsService { 8 | @GET 9 | @JvmSuppressWildcards 10 | fun get(@Url url: String, 11 | @QueryMap query: Map, 12 | @HeaderMap headers: Map): Call 13 | 14 | @POST 15 | @JvmSuppressWildcards 16 | fun post(@Url url: String, 17 | @Body body: Any?, 18 | @QueryMap query: Map, 19 | @HeaderMap headers: Map): Call 20 | 21 | @PUT 22 | @JvmSuppressWildcards 23 | fun put(@Url url: String, 24 | @Body body: Any?, 25 | @QueryMap query: Map, 26 | @HeaderMap headers: Map): Call 27 | 28 | @PATCH 29 | @JvmSuppressWildcards 30 | fun patch(@Url url: String, 31 | @Body body: Any?, 32 | @QueryMap query: Map, 33 | @HeaderMap headers: Map): Call 34 | 35 | @DELETE 36 | @JvmSuppressWildcards 37 | fun delete(@Url url: String, 38 | @QueryMap query: Map, 39 | @HeaderMap headers: Map): Call 40 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/documents/DocumentsService.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.documents 2 | 3 | import okhttp3.MultipartBody 4 | import okhttp3.RequestBody 5 | import org.tokend.sdk.api.base.model.AttributesEntity 6 | import org.tokend.sdk.api.base.model.DataEntity 7 | import org.tokend.sdk.api.documents.model.DocumentUploadPolicy 8 | import org.tokend.sdk.api.documents.model.DocumentUploadRequest 9 | import org.tokend.sdk.api.documents.model.DocumentUrlRequest 10 | import retrofit2.Call 11 | import retrofit2.http.* 12 | 13 | interface DocumentsService { 14 | @POST("documents") 15 | fun requestUpload(@Body requestBody: DataEntity 16 | ): Call>> 17 | 18 | @POST 19 | @Multipart 20 | @JvmSuppressWildcards 21 | fun upload(@Url bucketUrl: String, 22 | @PartMap partMap: Map, 23 | @Part filePart: MultipartBody.Part): Call 24 | 25 | @GET("documents/{document}") 26 | fun getUrl(@Path("document") document: String): Call> 27 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/documents/model/DocumentType.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.documents.model 2 | 3 | enum class DocumentType { 4 | ASSET_LOGO, 5 | FUND_LOGO, 6 | FUND_DOCUMENT, 7 | NAV_REPORT, 8 | ALPHA, 9 | BRAVO, 10 | CHARLIE, 11 | DELTA, 12 | TOKEN_TERMS, 13 | TOKEN_METRICS, 14 | GENERAL_PUBLIC, 15 | ASSET_PHOTO, 16 | KYC_ID_DOCUMENT, 17 | KYC_POA, 18 | KYC_SELFIE, 19 | GENERAL_PRIVATE; 20 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/documents/model/DocumentUploadPolicy.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.documents.model 2 | 3 | typealias DocumentUploadPolicy = HashMap -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/documents/model/DocumentUploadRequest.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.documents.model 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | import org.tokend.sdk.api.base.model.DataEntity 5 | 6 | class DocumentUploadRequest( 7 | @JsonProperty("type") 8 | val type: String, 9 | contentType: String, 10 | ownerAccountId: String 11 | ) { 12 | class Attributes( 13 | @JsonProperty("content_type") 14 | val contentType: String 15 | ) 16 | 17 | class Relationships(ownerAccountId: String) { 18 | class Owner( 19 | @JsonProperty("id") 20 | val id: String 21 | ) 22 | 23 | @JsonProperty("owner") 24 | val owner = DataEntity(Owner(ownerAccountId)) 25 | } 26 | 27 | @JsonProperty("attributes") 28 | val attributes = Attributes(contentType) 29 | 30 | @JsonProperty("relationships") 31 | val relationships = Relationships(ownerAccountId) 32 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/documents/model/DocumentUrlRequest.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.documents.model 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | 5 | class DocumentUrlRequest( 6 | @JsonProperty("attributes") 7 | val attributes: Attributes 8 | ) { 9 | class Attributes( 10 | @JsonProperty("url") 11 | val url: String 12 | ) 13 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/fees/FeesService.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.fees 2 | 3 | import org.tokend.sdk.api.fees.model.Fee 4 | import org.tokend.sdk.api.fees.model.FeesResponse 5 | import retrofit2.Call 6 | import retrofit2.http.GET 7 | import retrofit2.http.Path 8 | import retrofit2.http.QueryMap 9 | 10 | interface FeesService { 11 | @GET("fees/{feeType}") 12 | @JvmSuppressWildcards 13 | fun getFee(@Path("feeType") feeType: Int, 14 | @QueryMap query: Map?): Call 15 | 16 | @GET("fees") 17 | fun getFees(): Call 18 | 19 | @GET("fees_overview") 20 | fun getExistingFees(): Call 21 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/fees/model/Fees.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.fees.model 2 | 3 | class Fees(val feesAssetMap: Map>) -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/fees/model/FeesResponse.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.fees.model 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | 5 | 6 | class FeesResponse( 7 | @JsonProperty("fees") 8 | val entries: Map>? 9 | ) -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/fees/params/FeeParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.fees.params 2 | 3 | import org.tokend.sdk.api.base.params.QueryParams 4 | import org.tokend.sdk.api.fees.FeesApi 5 | import org.tokend.sdk.utils.BigDecimalUtil 6 | import java.math.BigDecimal 7 | 8 | /** 9 | * Need to create a query to get specific fee. 10 | * @see [FeesApi.getByType] 11 | */ 12 | open class FeeParams( 13 | val asset: String, 14 | val accountId: String? = null, 15 | val amount: BigDecimal? = null, 16 | val subtype: Int? = null 17 | ) : QueryParams { 18 | override fun map(): Map { 19 | return mutableMapOf() 20 | .apply { 21 | asset.also { put("asset", it) } 22 | accountId?.also { put("account", it) } 23 | amount?.also { put("amount", BigDecimalUtil.toPlainString(amount)) } 24 | subtype?.also { put("subtype", it) } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/identity/model/IdentitySettingsResource.java: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.identity.model; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import com.fasterxml.jackson.databind.JsonNode; 6 | import com.github.jasminb.jsonapi.annotations.Relationship; 7 | import com.github.jasminb.jsonapi.annotations.Type; 8 | import org.tokend.sdk.api.base.model.BaseResource; 9 | import org.tokend.sdk.api.identity.model.IdentityResource; 10 | 11 | @Type("identity_settings") 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class IdentitySettingsResource extends BaseResource { 14 | @JsonProperty("key") 15 | private String key; 16 | 17 | @JsonProperty("value") 18 | private JsonNode value; 19 | 20 | @Relationship("identity") 21 | private IdentityResource identity; 22 | 23 | public String getKey() { 24 | return key; 25 | } 26 | 27 | public JsonNode getValue() { 28 | return value; 29 | } 30 | 31 | public IdentityResource getIdentity() { 32 | return identity; 33 | } 34 | 35 | @Override 36 | public boolean isFilled() { 37 | return key != null && value != null; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/identity/model/MassEmailAccountKey.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.identity.model 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | 5 | 6 | class MassEmailAccountKey( 7 | @JsonProperty("id") 8 | val accountId: String 9 | ) { 10 | @JsonProperty("type") 11 | val type = "accounts" 12 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/booking/model/CreateBookingRequestAttributes.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.integrations.booking.model 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | import java.util.* 5 | 6 | class CreateBookingRequestAttributes( 7 | @JsonProperty("type") 8 | val type: Int, 9 | @JsonProperty("source") 10 | val sourceAccount: String, 11 | @JsonProperty("participants") 12 | val participantsCount: Int, 13 | @JsonProperty("details") 14 | val details: Any, 15 | @JsonProperty("start_time") 16 | val startTime: Date? = null, 17 | @JsonProperty("end_time") 18 | val endTime: Date? = null, 19 | @JsonProperty("payload") 20 | val payload: String? = null, 21 | @JsonProperty("event_id") 22 | val eventId: Int? = null 23 | ) -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/booking/model/generated/inner/Enum.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.integrations.booking.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class Enum { 14 | 15 | @JsonProperty("name") 16 | private String name; 17 | 18 | public String getName() { 19 | return name; 20 | } 21 | 22 | @JsonProperty("value") 23 | private Integer value; 24 | 25 | public Integer getValue() { 26 | return value; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/booking/model/generated/inner/PayloadDetails.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.integrations.booking.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class PayloadDetails { 14 | 15 | @JsonProperty("capacity") 16 | private Integer capacity; 17 | 18 | public Integer getCapacity() { 19 | return capacity; 20 | } 21 | 22 | @JsonProperty("price") 23 | private PriceDetails price; 24 | 25 | public PriceDetails getPrice() { 26 | return price; 27 | } 28 | 29 | @JsonProperty("work_days") 30 | private Map workDays; 31 | 32 | public Map getWorkDays() { 33 | return workDays; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/booking/model/generated/inner/PriceDetails.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.integrations.booking.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class PriceDetails { 14 | 15 | @JsonProperty("amount") 16 | private BigDecimal amount; 17 | 18 | public BigDecimal getAmount() { 19 | return amount; 20 | } 21 | 22 | @JsonProperty("asset") 23 | private String asset; 24 | 25 | public String getAsset() { 26 | return asset; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/booking/model/generated/inner/Time.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.integrations.booking.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class Time { 14 | 15 | @JsonProperty("hours") 16 | private Integer hours; 17 | 18 | public Integer getHours() { 19 | return hours; 20 | } 21 | 22 | @JsonProperty("minutes") 23 | private Integer minutes; 24 | 25 | public Integer getMinutes() { 26 | return minutes; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/booking/model/generated/inner/WorkHours.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.integrations.booking.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class WorkHours { 14 | 15 | @JsonProperty("end") 16 | private Time end; 17 | 18 | public Time getEnd() { 19 | return end; 20 | } 21 | 22 | @JsonProperty("start") 23 | private Time start; 24 | 25 | public Time getStart() { 26 | return start; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/booking/model/generated/resources/AllResources.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.integrations.booking.model.generated.resources; 4 | 5 | 6 | public class AllResources { 7 | public static final Class[] ARRAY = { 8 | BusinessResource.class, 9 | EventResource.class, 10 | BookingResource.class 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/booking/model/scheduler/SchedulerPayloadResource.java: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.integrations.booking.model.scheduler; 2 | 3 | import com.github.jasminb.jsonapi.annotations.Type; 4 | import org.tokend.sdk.api.base.model.BaseResource; 5 | 6 | @Type("payloads") 7 | public class SchedulerPayloadResource extends BaseResource { 8 | @Override 9 | public boolean isFilled() { 10 | return true; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/booking/model/scheduler/generated/inner/QualifiedWeekday.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.integrations.booking.model.scheduler.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class QualifiedWeekday { 14 | 15 | @JsonProperty("n") 16 | private Integer n; 17 | 18 | public Integer getN() { 19 | return n; 20 | } 21 | 22 | @JsonProperty("wd") 23 | private Integer wd; 24 | 25 | public Integer getWd() { 26 | return wd; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/booking/model/scheduler/generated/resources/AllResources.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.integrations.booking.model.scheduler.generated.resources; 4 | 5 | 6 | public class AllResources { 7 | public static final Class[] ARRAY = { 8 | EventResource.class, 9 | FreeBusyResource.class, 10 | CalendarResource.class, 11 | EventRecurrenceResource.class 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/booking/params/BookingParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.integrations.booking.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | /** 6 | * @see BookingParams.Includes 7 | */ 8 | class BookingParams(include: Collection?) : JsonApiQueryParams(include) { 9 | class Includes { 10 | companion object { 11 | const val EVENT = "event" 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/booking/params/BookingsPageParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.integrations.booking.params 2 | 3 | import org.tokend.sdk.api.base.params.PagingParamsV2 4 | import org.tokend.sdk.api.v3.base.PageQueryParams 5 | 6 | /** 7 | * @see BookingParams.Includes 8 | */ 9 | class BookingsPageParams( 10 | val owner: String? = null, 11 | val state: Int? = null, 12 | val type: Int? = null, 13 | pagingParams: PagingParamsV2? = null, 14 | include: Collection? = null 15 | ) : PageQueryParams(pagingParams, include) { 16 | override fun map(): Map { 17 | return super.map().toMutableMap().apply { 18 | owner?.also { putFilter("owner", it) } 19 | state?.also { putFilter("state", it) } 20 | type?.also { putFilter("type", it) } 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/booking/params/BusinessesPageParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.integrations.booking.params 2 | 3 | import org.tokend.sdk.api.base.params.PagingParamsV2 4 | import org.tokend.sdk.api.v3.base.PageQueryParams 5 | 6 | class BusinessesPageParams( 7 | val owner: String? = null, 8 | pagingParams: PagingParamsV2? = null, 9 | include: Collection? = null 10 | ) : PageQueryParams(pagingParams, include) { 11 | override fun map(): Map { 12 | return super.map().toMutableMap().apply { 13 | owner?.also { putFilter("owner", it) } 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/booking/params/FreeBusyParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.integrations.booking.params 2 | 3 | import org.tokend.sdk.api.base.params.QueryParams 4 | import org.tokend.sdk.utils.ApiDateUtil 5 | import java.util.* 6 | 7 | class FreeBusyParams( 8 | val payload: String, 9 | val startTime: Date, 10 | val endTime: Date 11 | ) : QueryParams { 12 | override fun map(): Map = mutableMapOf().apply { 13 | put("start-time", startTime.time / 1000L) 14 | put("end-time", endTime.time / 1000L) 15 | put("payload", payload) 16 | } 17 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/booking/params/FreeRoomsParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.integrations.booking.params 2 | 3 | import org.tokend.sdk.api.base.params.QueryParams 4 | import org.tokend.sdk.utils.ApiDateUtil 5 | import java.util.* 6 | 7 | class FreeRoomsParams( 8 | private val startTime: Date, 9 | private val endTime: Date, 10 | private val participantsCount: Int, 11 | private val roomIds: Collection 12 | ) : QueryParams { 13 | override fun map(): Map { 14 | return mutableMapOf().apply { 15 | put("start-time", startTime.time / 1000L) 16 | put("end-time", endTime.time / 1000L) 17 | put("participants", participantsCount) 18 | put("payloads", roomIds.joinToString(",")) 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/kycprovider/model/generated/resources/AllResources.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.integrations.kycprovider.model.generated.resources; 4 | 5 | 6 | public class AllResources { 7 | public static final Class[] ARRAY = { 8 | KycResource.class 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/kycprovider/model/generated/resources/KycResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.integrations.kycprovider.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.integrations.kycprovider.model.generated.resources.*; 10 | import com.fasterxml.jackson.databind.*; 11 | import org.jetbrains.annotations.Nullable; 12 | import org.tokend.sdk.api.base.model.*; 13 | 14 | 15 | @Type("kyc") 16 | @JsonIgnoreProperties(ignoreUnknown = true) 17 | public class KycResource extends BaseResource { 18 | 19 | @JsonProperty("account_id") 20 | private String accountId; 21 | 22 | public String getAccountId() { 23 | return accountId; 24 | } 25 | 26 | @JsonProperty("details") 27 | @Nullable 28 | private JsonNode details; 29 | 30 | @Nullable 31 | public JsonNode getDetails() { 32 | return details; 33 | } 34 | 35 | @JsonProperty("role") 36 | private Integer role; 37 | 38 | public Integer getRole() { 39 | return role; 40 | } 41 | 42 | @Override 43 | public boolean isFilled() { 44 | return accountId != null && 45 | role != null 46 | ; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/marketplace/model/MarketplaceBuyRequestAttributes.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.integrations.marketplace.model 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | import java.math.BigDecimal 5 | 6 | class MarketplaceBuyRequestAttributes( 7 | @JsonProperty("amount") 8 | val amount: BigDecimal, 9 | @JsonProperty("offer_id") 10 | val offerId: Long, 11 | @JsonProperty("payment_method_id") 12 | val paymentMethodId: Long, 13 | @JsonProperty("sender_account_id") 14 | val senderAccountId: String?, 15 | @JsonProperty("sender_email") 16 | val senderEmail: String?, 17 | @JsonProperty("promocode") 18 | val promocode: String? 19 | ) { 20 | init { 21 | if (senderAccountId == null && senderEmail == null) { 22 | throw IllegalArgumentException("Sender account or email must be set") 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/marketplace/model/MarketplaceInvoiceAttributes.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.integrations.marketplace.model 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | import com.fasterxml.jackson.databind.JsonNode 5 | 6 | 7 | class MarketplaceInvoiceAttributes( 8 | @JsonProperty("type") 9 | val type: String, 10 | @JsonProperty("data") 11 | val data: JsonNode 12 | ) -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/marketplace/model/MarketplaceOfferPrice.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.integrations.marketplace.model 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | import java.math.BigDecimal 5 | 6 | open class MarketplaceOfferPrice( 7 | @JsonProperty("discount") 8 | open val discount: BigDecimal, 9 | @JsonProperty("price_asset") 10 | open val assetCode: String, 11 | @JsonProperty("total_price") 12 | open val totalPrice: BigDecimal 13 | ) -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/marketplace/model/MarketplacePaymentMethodResource.java: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.integrations.marketplace.model; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import com.github.jasminb.jsonapi.annotations.Type; 6 | import org.jetbrains.annotations.Nullable; 7 | import org.tokend.sdk.api.base.model.BaseResource; 8 | import org.tokend.sdk.api.v3.model.generated.inner.Enum; 9 | 10 | @Type("payment-method") 11 | @JsonIgnoreProperties(ignoreUnknown = true) 12 | public class MarketplacePaymentMethodResource extends BaseResource { 13 | private MarketplacePaymentMethodResource() { 14 | } 15 | 16 | @JsonProperty("asset") 17 | private String asset; 18 | 19 | @JsonProperty("destination") 20 | @Nullable 21 | private String destination; 22 | 23 | @JsonProperty("type") 24 | private Enum type; 25 | 26 | public String getAsset() { 27 | return asset; 28 | } 29 | 30 | @Nullable 31 | public String getDestination() { 32 | return destination; 33 | } 34 | 35 | public Enum getType() { 36 | return type; 37 | } 38 | 39 | @Override 40 | public boolean isFilled() { 41 | return asset != null && type != null; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/marketplace/model/MarketplacePaymentMethodType.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.integrations.marketplace.model 2 | 3 | enum class MarketplacePaymentMethodType(val value: Int) { 4 | FORBILL(1) { 5 | override fun toString() = "4BILL" 6 | }, 7 | COINPAYMENTS(2), 8 | INTERNAL(3); 9 | 10 | companion object { 11 | @JvmStatic 12 | fun fromValue(value: Int): MarketplacePaymentMethodType { 13 | return when (value) { 14 | FORBILL.value -> FORBILL 15 | COINPAYMENTS.value -> COINPAYMENTS 16 | INTERNAL.value -> INTERNAL 17 | else -> throw IllegalArgumentException("There is no payment method type with value '$value'") 18 | } 19 | } 20 | 21 | @JvmStatic 22 | fun fromName(name: String): MarketplacePaymentMethodType { 23 | return when (name.toUpperCase()) { 24 | FORBILL.toString() -> FORBILL 25 | COINPAYMENTS.toString() -> COINPAYMENTS 26 | INTERNAL.toString() -> INTERNAL 27 | else -> throw IllegalArgumentException("There is no payment method type with name '$name'") 28 | } 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/integrations/marketplace/params/MarketplaceOfferParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.integrations.marketplace.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | class MarketplaceOfferParams( 6 | include: Collection? = null 7 | ) : JsonApiQueryParams(include) { 8 | class Includes { 9 | companion object { 10 | const val PAYMENT_METHODS = "payment_methods" 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/tfa/TfaService.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.tfa 2 | 3 | import com.fasterxml.jackson.databind.JsonNode 4 | import org.tokend.sdk.api.base.model.AttributesEntity 5 | import org.tokend.sdk.api.base.model.DataEntity 6 | import org.tokend.sdk.api.tfa.model.TfaFactor 7 | import retrofit2.Call 8 | import retrofit2.http.* 9 | 10 | interface TfaService { 11 | @GET("wallets/{walletId}/factors") 12 | fun getFactors(@Path("walletId") walletId: String?): Call>> 13 | 14 | @POST("wallets/{walletId}/factors") 15 | @JvmSuppressWildcards 16 | fun createFactor(@Path("walletId") walletId: String?, 17 | @Body data: DataEntity): Call> 18 | 19 | @DELETE("wallets/{walletId}/factors/{id}") 20 | fun deleteFactor(@Path("walletId") walletId: String?, 21 | @Path("id") factorId: Long?): Call 22 | 23 | @PATCH("wallets/{walletId}/factors/{id}") 24 | @JvmSuppressWildcards 25 | fun updateFactor(@Path("walletId") walletId: String?, 26 | @Path("id") factorId: Long?, 27 | @Body data: DataEntity>): Call 28 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/tfa/model/TfaFactor.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.tfa.model 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | 5 | open class TfaFactor( 6 | @get:JsonProperty("id") 7 | val id: Long, 8 | @get:JsonProperty("type") 9 | val type: Type, 10 | @get:JsonProperty("attributes") 11 | val attributes: Attributes 12 | ) { 13 | enum class Type { 14 | @JsonProperty("totp") 15 | TOTP, 16 | 17 | @JsonProperty("password") 18 | PASSWORD, 19 | 20 | @JsonProperty("email") 21 | EMAIL, 22 | 23 | @JsonProperty("phone") 24 | PHONE, 25 | 26 | @JsonProperty("telegram") 27 | TELEGRAM, 28 | 29 | UNKNOWN; 30 | 31 | companion object { 32 | @JvmStatic 33 | fun fromLiteral(literal: String?): Type { 34 | return try { 35 | valueOf(literal?.toUpperCase() ?: "") 36 | } catch (_: Exception) { 37 | UNKNOWN 38 | } 39 | } 40 | } 41 | } 42 | 43 | open class Attributes( 44 | @JsonProperty("priority") 45 | val priority: Int 46 | ) 47 | 48 | override fun equals(other: Any?): Boolean { 49 | return other is TfaFactor 50 | && other.id == id 51 | } 52 | 53 | override fun hashCode(): Int { 54 | return id.hashCode() 55 | } 56 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/tfa/model/TfaFactorCreationResult.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.tfa.model 2 | 3 | /** 4 | * Result of the TFA factor creation 5 | */ 6 | data class TfaFactorCreationResult( 7 | /** 8 | * Created factor 9 | */ 10 | val newFactor: TfaFactor, 11 | 12 | /** 13 | * Special attributes required for factor confirmation 14 | */ 15 | val confirmationAttributes: Map 16 | ) -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/accounts/params/AccountParamsV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.accounts.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | /** 6 | * @see AccountParamsV3.Includes 7 | */ 8 | open class AccountParamsV3( 9 | include: Collection? = null 10 | ) : JsonApiQueryParams(include) { 11 | class Includes { 12 | companion object { 13 | const val FEES = "fees" 14 | const val BALANCES = "balances" 15 | const val BALANCES_ASSET = "balances.asset" 16 | const val BALANCES_STATE = "balances.state" 17 | const val REFERRER = "referrer" 18 | const val LIMITS = "limits" 19 | const val EXTERNAL_SYSTEM_IDS = "external_system_ids" 20 | const val ROLE = "role" 21 | const val ROLE_RULES = "role.rules" 22 | const val KYC_DATA = "kyc_data" 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/accounts/params/AccountRoleParamsV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.accounts.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | /** 6 | * @see AccountRoleParamsV3.Includes 7 | */ 8 | class AccountRoleParamsV3( 9 | include: Collection 10 | ) : JsonApiQueryParams(include) { 11 | class Includes { 12 | companion object { 13 | const val ACCOUNT_RULE = "rules" 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/accounts/params/AccountRolesPageParamsV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.accounts.params 2 | 3 | import org.tokend.sdk.api.base.params.PagingParamsV2 4 | import org.tokend.sdk.api.v3.base.PageQueryParams 5 | 6 | class AccountRolesPageParamsV3( 7 | include: Collection? = null, 8 | pagingParams: PagingParamsV2? = null 9 | ) : PageQueryParams(pagingParams, include) { 10 | 11 | open class Builder : PageQueryParams.Builder() { 12 | 13 | override fun withPagingParams(pagingParams: PagingParamsV2) = also { 14 | super.withPagingParams(pagingParams) 15 | } 16 | 17 | override fun withInclude(include: Collection?) = also { 18 | super.withInclude(include) 19 | } 20 | 21 | override fun withInclude(vararg include: String) = also { 22 | super.withInclude(*include) 23 | } 24 | 25 | override fun build(): AccountRolesPageParamsV3 { 26 | return AccountRolesPageParamsV3(include, pagingParams) 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/accounts/params/AccountRulesPageParamsV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.accounts.params 2 | 3 | import org.tokend.sdk.api.base.params.PagingParamsV2 4 | import org.tokend.sdk.api.v3.base.PageQueryParams 5 | 6 | open class AccountRulesPageParamsV3( 7 | include: Collection? = null, 8 | pagingParams: PagingParamsV2? = null 9 | ) : PageQueryParams(pagingParams, include) { 10 | 11 | open class Builder : PageQueryParams.Builder() { 12 | 13 | override fun withPagingParams(pagingParams: PagingParamsV2) = also { 14 | super.withPagingParams(pagingParams) 15 | } 16 | 17 | override fun withInclude(include: Collection?) = also { 18 | super.withInclude(include) 19 | } 20 | 21 | override fun withInclude(vararg include: String) = also { 22 | super.withInclude(*include) 23 | } 24 | 25 | override fun build(): AccountRulesPageParamsV3 { 26 | return AccountRulesPageParamsV3(include, pagingParams) 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/assetpairs/AssetPairsApi.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.assetpairs 2 | 3 | import com.github.jasminb.jsonapi.JSONAPIDocument 4 | import org.tokend.sdk.api.base.ApiRequest 5 | import org.tokend.sdk.api.base.MappedRetrofitApiRequest 6 | import org.tokend.sdk.api.base.model.DataPage 7 | import org.tokend.sdk.api.base.params.map 8 | import org.tokend.sdk.api.v3.model.generated.resources.AssetPairResource 9 | import org.tokend.sdk.api.v3.assetpairs.params.AssetPairParams 10 | import org.tokend.sdk.api.v3.assetpairs.params.AssetPairsPageParams 11 | 12 | open class AssetPairsApi( 13 | protected open val assetPairsService: AssetPairsService 14 | ) { 15 | /** 16 | * @return asset pairs list page 17 | */ 18 | open fun get(params: AssetPairsPageParams? = null): ApiRequest> { 19 | return MappedRetrofitApiRequest( 20 | assetPairsService.getAssetPairs(params.map()), 21 | DataPage.Companion::fromPageDocument 22 | ) 23 | } 24 | 25 | /** 26 | * @return asset pair by id 27 | */ 28 | open fun getById(assetPairId: String, 29 | params: AssetPairParams? = null): ApiRequest { 30 | return MappedRetrofitApiRequest( 31 | assetPairsService.getAssetPairById(assetPairId, params.map()), 32 | JSONAPIDocument::get 33 | ) 34 | } 35 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/assetpairs/AssetPairsService.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.assetpairs 2 | 3 | import com.github.jasminb.jsonapi.JSONAPIDocument 4 | import org.tokend.sdk.api.v3.model.generated.resources.AssetPairResource 5 | import retrofit2.Call 6 | import retrofit2.http.GET 7 | import retrofit2.http.Path 8 | import retrofit2.http.QueryMap 9 | 10 | interface AssetPairsService { 11 | @GET("v3/asset_pairs") 12 | @JvmSuppressWildcards 13 | fun getAssetPairs(@QueryMap query: Map): Call>> 14 | 15 | @GET("v3/asset_pairs/{id}") 16 | @JvmSuppressWildcards 17 | fun getAssetPairById(@Path("id") id: String, 18 | @QueryMap query: Map): Call> 19 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/assetpairs/params/AssetPairParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.assetpairs.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | /** 6 | * @see AssetPairParams.Includes 7 | */ 8 | open class AssetPairParams( 9 | include: Collection? = null 10 | ) : JsonApiQueryParams(include) { 11 | class Includes { 12 | companion object { 13 | const val BASE_ASSET = "base_asset" 14 | const val QUOTE_ASSET = "quote_asset" 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/assets/AssetsApiV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.assets 2 | 3 | import com.github.jasminb.jsonapi.JSONAPIDocument 4 | import org.tokend.sdk.api.base.ApiRequest 5 | import org.tokend.sdk.api.base.MappedRetrofitApiRequest 6 | import org.tokend.sdk.api.base.model.DataPage 7 | import org.tokend.sdk.api.base.params.map 8 | import org.tokend.sdk.api.v3.model.generated.resources.AssetResource 9 | import org.tokend.sdk.api.v3.assets.params.AssetParams 10 | import org.tokend.sdk.api.v3.assets.params.AssetsPageParams 11 | 12 | open class AssetsApiV3( 13 | protected open val assetsService: AssetsServiceV3 14 | ) { 15 | /** 16 | * @return assets list page 17 | */ 18 | open fun get(params: AssetsPageParams? = null): ApiRequest> { 19 | return MappedRetrofitApiRequest( 20 | assetsService.getAssets(params.map()), 21 | DataPage.Companion::fromPageDocument 22 | ) 23 | } 24 | 25 | /** 26 | * @return asset by it's ID 27 | */ 28 | open fun getById(assetId: String, 29 | params: AssetParams? = null): ApiRequest { 30 | return MappedRetrofitApiRequest( 31 | assetsService.getAssetById( 32 | assetId, 33 | params.map() 34 | ), 35 | JSONAPIDocument::get 36 | ) 37 | } 38 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/assets/AssetsServiceV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.assets 2 | 3 | import com.github.jasminb.jsonapi.JSONAPIDocument 4 | import org.tokend.sdk.api.v3.model.generated.resources.AssetResource 5 | import retrofit2.Call 6 | import retrofit2.http.GET 7 | import retrofit2.http.Path 8 | import retrofit2.http.QueryMap 9 | 10 | interface AssetsServiceV3 { 11 | @GET("v3/assets") 12 | @JvmSuppressWildcards 13 | fun getAssets(@QueryMap query: Map): Call>> 14 | 15 | @GET("v3/assets/{id}") 16 | @JvmSuppressWildcards 17 | fun getAssetById(@Path("id") id: String, 18 | @QueryMap query: Map): Call> 19 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/assets/model/AssetState.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.assets.model 2 | 3 | enum class AssetState(val value: Int) { 4 | ACTIVE(0), 5 | DELETED(1); 6 | 7 | companion object { 8 | @JvmStatic 9 | fun fromValue(value: Int): AssetState { 10 | return when (value) { 11 | ACTIVE.value -> ACTIVE 12 | DELETED.value -> DELETED 13 | else -> throw IllegalArgumentException("There is no asset state with value '$value'") 14 | } 15 | } 16 | 17 | @JvmStatic 18 | fun fromName(name: String): AssetState { 19 | return when (name.toUpperCase()) { 20 | ACTIVE.name -> ACTIVE 21 | DELETED.name -> DELETED 22 | else -> throw IllegalArgumentException("There is no asset state with name '$name'") 23 | } 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/assets/params/AssetParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.assets.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | /** 6 | * @see AssetParams.Includes 7 | */ 8 | open class AssetParams( 9 | include: Collection? = null 10 | ) : JsonApiQueryParams(include) { 11 | class Includes { 12 | companion object { 13 | const val OWNER = "owner" 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/atomicswap/AtomicSwapsService.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.atomicswap 2 | 3 | import com.github.jasminb.jsonapi.JSONAPIDocument 4 | import org.tokend.sdk.api.v3.model.generated.resources.AtomicSwapAskResource 5 | import retrofit2.Call 6 | import retrofit2.http.GET 7 | import retrofit2.http.Path 8 | import retrofit2.http.QueryMap 9 | 10 | interface AtomicSwapsService { 11 | @GET("v3/atomic_swap_asks") 12 | @JvmSuppressWildcards 13 | fun getAtomicSwapAsks(@QueryMap query: Map): 14 | Call>> 15 | 16 | @GET("v3/atomic_swap_asks/{id}") 17 | @JvmSuppressWildcards 18 | fun getAtomicSwapAskById(@Path("id") id: String, 19 | @QueryMap query: Map): 20 | Call> 21 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/atomicswap/params/AtomicSwapAskParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.atomicswap.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | /** 6 | * @see AtomicSwapAskParams.Includes 7 | */ 8 | open class AtomicSwapAskParams( 9 | include: Collection? = null 10 | ) : JsonApiQueryParams(include) { 11 | class Includes { 12 | companion object { 13 | const val BASE_BALANCE = "base_balance" 14 | const val OWNER = "owner" 15 | const val BASE_ASSET = "base_asset" 16 | const val QUOTE_ASSETS = "quote_assets" 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/balances/BalancesService.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.balances 2 | 3 | import com.github.jasminb.jsonapi.JSONAPIDocument 4 | import org.tokend.sdk.api.v3.model.generated.resources.BalanceResource 5 | import org.tokend.sdk.api.v3.model.generated.resources.ConvertedBalancesCollectionResource 6 | import retrofit2.Call 7 | import retrofit2.http.GET 8 | import retrofit2.http.Path 9 | import retrofit2.http.QueryMap 10 | 11 | interface BalancesService { 12 | @GET("v3/balances") 13 | @JvmSuppressWildcards 14 | fun getBalances(@QueryMap query: Map): Call>> 15 | 16 | @GET("v3/balances/{id}") 17 | @JvmSuppressWildcards 18 | fun getBalanceById(@Path("id") id: String, 19 | @QueryMap query: Map): Call> 20 | 21 | @GET("v3/accounts/{accountId}/converted_balances/{assetCode}") 22 | @JvmSuppressWildcards 23 | fun getConvertedBalances(@Path("accountId") id: String, 24 | @Path("assetCode") assetCode: String, 25 | @QueryMap query: Map 26 | ): Call> 27 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/balances/params/BalanceParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.balances.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | /** 6 | * @see BalanceParams.Includes 7 | */ 8 | open class BalanceParams( 9 | include: Collection? = null 10 | ) : JsonApiQueryParams(include) { 11 | class Includes { 12 | companion object { 13 | const val ACCOUNT = "account" 14 | const val ASSET = "asset" 15 | const val STATE = "state" 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/balances/params/ConvertedBalancesParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.balances.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | /** 6 | * @see ConvertedBalancesParams.Includes 7 | */ 8 | class ConvertedBalancesParams( 9 | include: Collection? 10 | ) : JsonApiQueryParams(include) { 11 | 12 | class Builder: JsonApiQueryParams.Builder() { 13 | override fun withInclude(include: Collection?) = also { 14 | super.withInclude(include) 15 | } 16 | 17 | override fun withInclude(vararg include: String) = also { 18 | super.withInclude(*include) 19 | } 20 | } 21 | 22 | class Includes { 23 | companion object { 24 | const val ASSET = "asset" 25 | const val STATES = "states" 26 | const val BALANCE = "balance" 27 | const val BALANCE_ASSET = "balance.asset" 28 | const val BALANCE_STATE = "balance.state" 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/base/JsonApiQueryMapBuilder.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.base 2 | 3 | import org.tokend.sdk.api.base.params.QueryParams 4 | 5 | /** 6 | * Builds query map for JSONAPI endpoint. 7 | * 8 | * You can use [JsonApiQueryMapBuilder.append] to append [PageQueryParams] for example 9 | */ 10 | class JsonApiQueryMapBuilder { 11 | private val map = mutableMapOf() 12 | 13 | fun filter(key: String, value: Any?) = 14 | param("filter[$key]", value) 15 | 16 | fun include(vararg resources: String) = 17 | param("include", resources.joinToString(separator = ",")) 18 | 19 | fun param(key: String, value: Any?) = apply { 20 | if (value != null) { 21 | map[key] = value 22 | } 23 | } 24 | 25 | fun append(extra: QueryParams) = 26 | append(extra.map()) 27 | 28 | fun append(extra: Map) = apply { 29 | map.putAll(extra) 30 | } 31 | 32 | fun build(): Map = map 33 | 34 | fun buildParams(): QueryParams = object : QueryParams{ 35 | override fun map() = map 36 | } 37 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/base/PageQueryParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.base 2 | 3 | import org.tokend.sdk.api.base.params.PagingParamsHolder 4 | import org.tokend.sdk.api.base.params.PagingParamsV2 5 | 6 | open class PageQueryParams( 7 | val pagingParams: PagingParamsV2? = null, 8 | include: Collection? = null 9 | ) : JsonApiQueryParams(include), PagingParamsHolder { 10 | override val order = pagingParams?.order 11 | override val cursor = pagingParams?.cursor 12 | override val limit = pagingParams?.limit 13 | 14 | override fun map(): Map { 15 | return super.map().toMutableMap().apply { 16 | pagingParams?.also { putAll(it.map()) } 17 | } 18 | } 19 | 20 | open class Builder : JsonApiQueryParams.Builder() { 21 | protected var pagingParams: PagingParamsV2? = null 22 | 23 | open fun withPagingParams(pagingParams: PagingParamsV2) = also { this.pagingParams = pagingParams } 24 | 25 | override fun withInclude(include: Collection?) = also { 26 | super.withInclude(include) 27 | } 28 | 29 | override fun withInclude(vararg include: String) = also { 30 | super.withInclude(*include) 31 | } 32 | 33 | override fun build(): PageQueryParams { 34 | return PageQueryParams(pagingParams, include) 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/fees/FeesApiV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.fees 2 | 3 | import com.github.jasminb.jsonapi.JSONAPIDocument 4 | import org.tokend.sdk.api.base.ApiRequest 5 | import org.tokend.sdk.api.base.MappedRetrofitApiRequest 6 | import org.tokend.sdk.api.base.model.DataPage 7 | import org.tokend.sdk.api.base.params.map 8 | import org.tokend.sdk.api.v3.model.generated.resources.CalculatedFeeResource 9 | import org.tokend.sdk.api.v3.model.generated.resources.FeeRecordResource 10 | import org.tokend.sdk.api.v3.fees.params.FeeCalculationParams 11 | import org.tokend.sdk.api.v3.fees.params.FeesPageParamsV3 12 | 13 | open class FeesApiV3( 14 | protected open val feesService: FeesServiceV3 15 | ) { 16 | open fun get(params: FeesPageParamsV3? = null): ApiRequest> { 17 | return MappedRetrofitApiRequest( 18 | feesService.getFees(params.map()), 19 | DataPage.Companion::fromPageDocument 20 | ) 21 | } 22 | 23 | open fun getCalculatedFee(accountId: String, params: FeeCalculationParams): ApiRequest { 24 | return MappedRetrofitApiRequest( 25 | feesService.getCalculatedFee(accountId, params.map()), 26 | JSONAPIDocument::get 27 | ) 28 | } 29 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/fees/FeesServiceV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.fees 2 | 3 | import com.github.jasminb.jsonapi.JSONAPIDocument 4 | import org.tokend.sdk.api.v3.model.generated.resources.CalculatedFeeResource 5 | import org.tokend.sdk.api.v3.model.generated.resources.FeeRecordResource 6 | import retrofit2.Call 7 | import retrofit2.http.GET 8 | import retrofit2.http.Path 9 | import retrofit2.http.QueryMap 10 | 11 | interface FeesServiceV3 { 12 | @GET("v3/fees") 13 | @JvmSuppressWildcards 14 | fun getFees(@QueryMap query: Map): Call>> 15 | 16 | @GET("v3/accounts/{id}/calculated_fees") 17 | @JvmSuppressWildcards 18 | fun getCalculatedFee(@Path("id") accountId: String, 19 | @QueryMap query: Map): Call> 20 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/fees/params/FeeCalculationParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.fees.params 2 | 3 | import org.tokend.sdk.utils.BigDecimalUtil 4 | import org.tokend.wallet.xdr.FeeType 5 | import java.math.BigDecimal 6 | 7 | class FeeCalculationParams( 8 | val asset: String, 9 | val type: FeeType, 10 | val subtype: Int, 11 | val amount: BigDecimal 12 | ) { 13 | fun map(): Map { 14 | return mutableMapOf().apply { 15 | put("asset", asset) 16 | put("fee_type", type.value) 17 | put("subtype", subtype) 18 | put("amount", BigDecimalUtil.toPlainString(amount)) 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/history/HistoryService.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.history 2 | 3 | import com.github.jasminb.jsonapi.JSONAPIDocument 4 | import org.tokend.sdk.api.v3.model.generated.resources.OperationResource 5 | import org.tokend.sdk.api.v3.model.generated.resources.ParticipantsEffectResource 6 | import retrofit2.Call 7 | import retrofit2.http.GET 8 | import retrofit2.http.QueryMap 9 | 10 | interface HistoryService { 11 | @GET("v3/history") 12 | @JvmSuppressWildcards 13 | fun getHistory(@QueryMap query: Map): Call>> 14 | 15 | @GET("v3/movements") 16 | @JvmSuppressWildcards 17 | fun getMovements(@QueryMap query: Map): Call>> 18 | 19 | @GET("v3/operations") 20 | @JvmSuppressWildcards 21 | fun getOperations(@QueryMap query: Map): Call>> 22 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/history/params/OperationParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.history.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | /** 6 | * @see OperationParams.Includes 7 | */ 8 | open class OperationParams( 9 | include: Collection? = null 10 | ) : JsonApiQueryParams(include) { 11 | 12 | class Includes { 13 | companion object { 14 | const val OPERATION_DETAILS = "operation.details" 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/history/params/ParticipantEffectsParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.history.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | /** 6 | * @see ParticipantEffectsParams.Includes 7 | */ 8 | open class ParticipantEffectsParams( 9 | include: Collection? = null 10 | ) : JsonApiQueryParams(include) { 11 | class Includes { 12 | companion object { 13 | const val OPERATION = "operation" 14 | const val OPERATION_DETAILS = "operation.details" 15 | const val EFFECT = "effect" 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/info/HorizonInfoApiV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.info 2 | 3 | import org.tokend.sdk.api.custom.CustomRequestsApi 4 | import org.tokend.sdk.api.v3.model.generated.resources.HorizonStateResource 5 | import org.tokend.sdk.utils.extentions.toNetworkParams 6 | 7 | open class HorizonInfoApiV3( 8 | protected open val customRequestsApi: CustomRequestsApi 9 | ) { 10 | /** 11 | * @see HorizonStateResource.toNetworkParams 12 | */ 13 | open fun getInfo() = 14 | customRequestsApi.get( 15 | url = "v3/info", 16 | responseClass = HorizonStateResource::class.java 17 | ) 18 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/keyvalue/KeyValueStorageApiV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.keyvalue 2 | 3 | import com.github.jasminb.jsonapi.JSONAPIDocument 4 | import org.tokend.sdk.api.base.ApiRequest 5 | import org.tokend.sdk.api.base.MappedRetrofitApiRequest 6 | import org.tokend.sdk.api.base.model.DataPage 7 | import org.tokend.sdk.api.base.params.PagingParamsV2 8 | import org.tokend.sdk.api.base.params.map 9 | import org.tokend.sdk.api.v3.model.generated.resources.KeyValueEntryResource 10 | 11 | open class KeyValueStorageApiV3( 12 | protected open val keyValueStorageService: KeyValueStorageServiceV3 13 | ) { 14 | /** 15 | * @return key-value entries list page 16 | */ 17 | @JvmOverloads 18 | open fun get(params: PagingParamsV2? = null): ApiRequest> { 19 | return MappedRetrofitApiRequest( 20 | keyValueStorageService.getEntries(params.map()), 21 | DataPage.Companion::fromPageDocument 22 | ) 23 | } 24 | 25 | /** 26 | * @return key-value entry by it's ID 27 | */ 28 | open fun getById(id: String): ApiRequest { 29 | return MappedRetrofitApiRequest( 30 | keyValueStorageService.getEntryById( 31 | id, 32 | emptyMap() 33 | ), 34 | JSONAPIDocument::get 35 | ) 36 | } 37 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/keyvalue/KeyValueStorageServiceV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.keyvalue 2 | 3 | import com.github.jasminb.jsonapi.JSONAPIDocument 4 | import org.tokend.sdk.api.v3.model.generated.resources.KeyValueEntryResource 5 | import retrofit2.Call 6 | import retrofit2.http.GET 7 | import retrofit2.http.Path 8 | import retrofit2.http.QueryMap 9 | 10 | interface KeyValueStorageServiceV3 { 11 | @GET("v3/key_values") 12 | @JvmSuppressWildcards 13 | fun getEntries(@QueryMap query: Map): Call>> 14 | 15 | @GET("v3/key_values/{id}") 16 | @JvmSuppressWildcards 17 | fun getEntryById(@Path("id") id: String, 18 | @QueryMap query: Map): Call> 19 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/BalanceStateAttributeAmounts.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class BalanceStateAttributeAmounts { 14 | 15 | @JsonProperty("available") 16 | private BigDecimal available; 17 | 18 | public BigDecimal getAvailable() { 19 | return available; 20 | } 21 | 22 | @JsonProperty("locked") 23 | private BigDecimal locked; 24 | 25 | public BigDecimal getLocked() { 26 | return locked; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/ClosePollOp.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class ClosePollOp { 14 | 15 | @JsonProperty("details") 16 | private JsonNode details; 17 | 18 | public JsonNode getDetails() { 19 | return details; 20 | } 21 | 22 | @JsonProperty("poll_id") 23 | private Long pollId; 24 | 25 | public Long getPollId() { 26 | return pollId; 27 | } 28 | 29 | @JsonProperty("poll_result") 30 | private org.tokend.sdk.api.v3.model.generated.inner.Enum pollResult; 31 | 32 | public org.tokend.sdk.api.v3.model.generated.inner.Enum getPollResult() { 33 | return pollResult; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/CreateAccountSpecificRuleData.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class CreateAccountSpecificRuleData { 14 | 15 | @JsonProperty("account_id") 16 | @Nullable 17 | private String accountId; 18 | 19 | @Nullable 20 | public String getAccountId() { 21 | return accountId; 22 | } 23 | 24 | @JsonProperty("forbids") 25 | private Boolean forbids; 26 | 27 | public Boolean forbids() { 28 | return forbids; 29 | } 30 | 31 | @JsonProperty("ledger_key") 32 | private JsonNode ledgerKey; 33 | 34 | public JsonNode getLedgerKey() { 35 | return ledgerKey; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/CreateExternalSystemPoolOp.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class CreateExternalSystemPoolOp { 14 | 15 | @JsonProperty("data") 16 | private String data; 17 | 18 | public String getData() { 19 | return data; 20 | } 21 | 22 | @JsonProperty("external_system_type") 23 | private Integer externalSystemType; 24 | 25 | public Integer getExternalSystemType() { 26 | return externalSystemType; 27 | } 28 | 29 | @JsonProperty("parent") 30 | private Long parent; 31 | 32 | public Long getParent() { 33 | return parent; 34 | } 35 | 36 | @JsonProperty("pool_id") 37 | private Long poolId; 38 | 39 | public Long getPoolId() { 40 | return poolId; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/CreateVoteOp.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class CreateVoteOp { 14 | 15 | @JsonProperty("poll_id") 16 | private Long pollId; 17 | 18 | public Long getPollId() { 19 | return pollId; 20 | } 21 | 22 | @JsonProperty("vote_data") 23 | private VoteData voteData; 24 | 25 | public VoteData getVoteData() { 26 | return voteData; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/Enum.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class Enum { 14 | 15 | @JsonProperty("name") 16 | private String name; 17 | 18 | public String getName() { 19 | return name; 20 | } 21 | 22 | @JsonProperty("value") 23 | private Integer value; 24 | 25 | public Integer getValue() { 26 | return value; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/ExternalSystemData.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class ExternalSystemData { 14 | 15 | @JsonProperty("data") 16 | private ExternalSystemDataEntry data; 17 | 18 | public ExternalSystemDataEntry getData() { 19 | return data; 20 | } 21 | 22 | @JsonProperty("type") 23 | private String type; 24 | 25 | public String getType() { 26 | return type; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/ExternalSystemDataEntry.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class ExternalSystemDataEntry { 14 | 15 | @JsonProperty("address") 16 | private String address; 17 | 18 | public String getAddress() { 19 | return address; 20 | } 21 | 22 | @JsonProperty("payload") 23 | @Nullable 24 | private String payload; 25 | 26 | @Nullable 27 | public String getPayload() { 28 | return payload; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/Fee.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class Fee { 14 | 15 | @JsonProperty("calculated_percent") 16 | private BigDecimal calculatedPercent; 17 | 18 | public BigDecimal getCalculatedPercent() { 19 | return calculatedPercent; 20 | } 21 | 22 | @JsonProperty("fixed") 23 | private BigDecimal fixed; 24 | 25 | public BigDecimal getFixed() { 26 | return fixed; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/KeyValueEntryValue.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class KeyValueEntryValue { 14 | 15 | @JsonProperty("str") 16 | @Nullable 17 | private String str; 18 | 19 | @Nullable 20 | public String getStr() { 21 | return str; 22 | } 23 | 24 | @JsonProperty("type") 25 | private org.tokend.sdk.api.v3.model.generated.inner.Enum type; 26 | 27 | public org.tokend.sdk.api.v3.model.generated.inner.Enum getType() { 28 | return type; 29 | } 30 | 31 | @JsonProperty("u32") 32 | @Nullable 33 | private Long u32; 34 | 35 | @Nullable 36 | public Long getU32() { 37 | return u32; 38 | } 39 | 40 | @JsonProperty("u64") 41 | @Nullable 42 | private Long u64; 43 | 44 | @Nullable 45 | public Long getU64() { 46 | return u64; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/LedgerInfo.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class LedgerInfo { 14 | 15 | @JsonProperty("last_ledger_increase_time") 16 | private Date lastLedgerIncreaseTime; 17 | 18 | public Date getLastLedgerIncreaseTime() { 19 | return lastLedgerIncreaseTime; 20 | } 21 | 22 | @JsonProperty("latest") 23 | private Long latest; 24 | 25 | public Long getLatest() { 26 | return latest; 27 | } 28 | 29 | @JsonProperty("oldest_on_start") 30 | private Long oldestOnStart; 31 | 32 | public Long getOldestOnStart() { 33 | return oldestOnStart; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/ManageLimitsRemovalOp.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class ManageLimitsRemovalOp { 14 | 15 | @JsonProperty("limits_id") 16 | private Long limitsId; 17 | 18 | public Long getLimitsId() { 19 | return limitsId; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/Mask.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class Mask { 14 | 15 | @JsonProperty("flags") 16 | @Nullable 17 | private List flags; 18 | 19 | @Nullable 20 | public List getFlags() { 21 | return flags; 22 | } 23 | 24 | @JsonProperty("value") 25 | @Nullable 26 | private Integer value; 27 | 28 | @Nullable 29 | public Integer getValue() { 30 | return value; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/ParticularBalanceChangeEffect.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class ParticularBalanceChangeEffect { 14 | 15 | @JsonProperty("amount") 16 | private BigDecimal amount; 17 | 18 | public BigDecimal getAmount() { 19 | return amount; 20 | } 21 | 22 | @JsonProperty("asset_code") 23 | private String assetCode; 24 | 25 | public String getAssetCode() { 26 | return assetCode; 27 | } 28 | 29 | @JsonProperty("balance_address") 30 | private String balanceAddress; 31 | 32 | public String getBalanceAddress() { 33 | return balanceAddress; 34 | } 35 | 36 | @JsonProperty("fee") 37 | private Fee fee; 38 | 39 | public Fee getFee() { 40 | return fee; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/PollData.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class PollData { 14 | 15 | @JsonProperty("type") 16 | private org.tokend.sdk.api.v3.model.generated.inner.Enum type; 17 | 18 | public org.tokend.sdk.api.v3.model.generated.inner.Enum getType() { 19 | return type; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/RemoveExternalSystemPoolOp.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class RemoveExternalSystemPoolOp { 14 | 15 | @JsonProperty("pool_id") 16 | private Long poolId; 17 | 18 | public Long getPoolId() { 19 | return poolId; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/RemoveVoteOp.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class RemoveVoteOp { 14 | 15 | @JsonProperty("poll_id") 16 | private Long pollId; 17 | 18 | public Long getPollId() { 19 | return pollId; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/UpdatePollEndTimeOp.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class UpdatePollEndTimeOp { 14 | 15 | @JsonProperty("new_end_time") 16 | private Date newEndTime; 17 | 18 | public Date getNewEndTime() { 19 | return newEndTime; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/UpdateSignerData.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class UpdateSignerData { 14 | 15 | @JsonProperty("details") 16 | private JsonNode details; 17 | 18 | public JsonNode getDetails() { 19 | return details; 20 | } 21 | 22 | @JsonProperty("identity") 23 | private Long identity; 24 | 25 | public Long getIdentity() { 26 | return identity; 27 | } 28 | 29 | @JsonProperty("role_id") 30 | private Long roleId; 31 | 32 | public Long getRoleId() { 33 | return roleId; 34 | } 35 | 36 | @JsonProperty("weight") 37 | private Long weight; 38 | 39 | public Long getWeight() { 40 | return weight; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/inner/VoteData.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.inner; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import com.fasterxml.jackson.databind.*; 10 | import org.jetbrains.annotations.Nullable; 11 | 12 | @JsonIgnoreProperties(ignoreUnknown = true) 13 | public class VoteData { 14 | 15 | @JsonProperty("poll_type") 16 | private org.tokend.sdk.api.v3.model.generated.inner.Enum pollType; 17 | 18 | public org.tokend.sdk.api.v3.model.generated.inner.Enum getPollType() { 19 | return pollType; 20 | } 21 | 22 | @JsonProperty("single_choice") 23 | @Nullable 24 | private Long singleChoice; 25 | 26 | @Nullable 27 | public Long getSingleChoice() { 28 | return singleChoice; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/AccountKYCResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("account-kyc") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class AccountKYCResource extends BaseResource { 19 | 20 | @JsonProperty("kyc_data") 21 | private JsonNode kycData; 22 | 23 | public JsonNode getKycData() { 24 | return kycData; 25 | } 26 | 27 | @Override 28 | public boolean isFilled() { 29 | return kycData != null 30 | ; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/AccountRoleResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("account-roles") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class AccountRoleResource extends BaseResource { 19 | 20 | @JsonProperty("details") 21 | private JsonNode details; 22 | 23 | public JsonNode getDetails() { 24 | return details; 25 | } 26 | 27 | @Override 28 | public boolean isFilled() { 29 | return details != null 30 | ; 31 | } 32 | 33 | @JsonIgnore 34 | @Relationship("rules") 35 | private List rules; 36 | 37 | public List getRules() { 38 | return rules; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/AtomicSwapQuoteAssetResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("atomic-swap-quote-assets") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class AtomicSwapQuoteAssetResource extends BaseResource { 19 | 20 | @JsonProperty("price") 21 | private BigDecimal price; 22 | 23 | public BigDecimal getPrice() { 24 | return price; 25 | } 26 | 27 | @JsonProperty("quote_asset") 28 | private String quoteAsset; 29 | 30 | public String getQuoteAsset() { 31 | return quoteAsset; 32 | } 33 | 34 | @Override 35 | public boolean isFilled() { 36 | return price != null && 37 | quoteAsset != null 38 | ; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/BalanceResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("balances") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class BalanceResource extends BaseResource { 19 | @Override 20 | public boolean isFilled() { return true; } 21 | 22 | @JsonIgnore 23 | @Relationship("asset") 24 | private AssetResource asset; 25 | 26 | public AssetResource getAsset() { 27 | return asset; 28 | } 29 | 30 | @JsonIgnore 31 | @Relationship("owner") 32 | private AccountResource owner; 33 | 34 | public AccountResource getOwner() { 35 | return owner; 36 | } 37 | 38 | @JsonIgnore 39 | @Relationship("state") 40 | private BalanceStateResource state; 41 | 42 | public BalanceStateResource getState() { 43 | return state; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/BalanceStateResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("balances-state") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class BalanceStateResource extends BaseResource { 19 | 20 | @JsonProperty("available") 21 | private BigDecimal available; 22 | 23 | public BigDecimal getAvailable() { 24 | return available; 25 | } 26 | 27 | @JsonProperty("locked") 28 | private BigDecimal locked; 29 | 30 | public BigDecimal getLocked() { 31 | return locked; 32 | } 33 | 34 | @Override 35 | public boolean isFilled() { 36 | return available != null && 37 | locked != null 38 | ; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/BaseEffectResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("base-effect") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class BaseEffectResource extends BaseResource { 19 | @Override 20 | public boolean isFilled() { return true; } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/BaseOperationDetailsResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("base-operation-details") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class BaseOperationDetailsResource extends BaseResource { 19 | @Override 20 | public boolean isFilled() { return true; } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/BaseReviewableRequestDetailsResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("base-reviewable-request-details") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class BaseReviewableRequestDetailsResource extends BaseResource { 19 | @Override 20 | public boolean isFilled() { return true; } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/BindExternalSystemAccountIdOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-bind-external-system-account-id") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class BindExternalSystemAccountIdOpResource extends BaseOperationDetailsResource { 19 | 20 | @JsonProperty("external_system_type") 21 | private Integer externalSystemType; 22 | 23 | public Integer getExternalSystemType() { 24 | return externalSystemType; 25 | } 26 | 27 | @Override 28 | public boolean isFilled() { 29 | return externalSystemType != null 30 | && super.isFilled() 31 | ; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/CalculatedFeeResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("calculated-fee") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class CalculatedFeeResource extends BaseResource { 19 | 20 | @JsonProperty("calculated_percent") 21 | private BigDecimal calculatedPercent; 22 | 23 | public BigDecimal getCalculatedPercent() { 24 | return calculatedPercent; 25 | } 26 | 27 | @JsonProperty("fixed") 28 | private BigDecimal fixed; 29 | 30 | public BigDecimal getFixed() { 31 | return fixed; 32 | } 33 | 34 | @Override 35 | public boolean isFilled() { 36 | return calculatedPercent != null && 37 | fixed != null 38 | ; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/CancelAtomicSwapAskOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-cancel-atomic-swap-ask") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class CancelAtomicSwapAskOpResource extends BaseOperationDetailsResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | 22 | @JsonIgnore 23 | @Relationship("ask") 24 | private AtomicSwapAskResource ask; 25 | 26 | public AtomicSwapAskResource getAsk() { 27 | return ask; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/CancelChangeRoleRequestOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-cancel-change-role-request") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class CancelChangeRoleRequestOpResource extends BaseResource { 19 | @Override 20 | public boolean isFilled() { return true; } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/CancelCloseDeferredPaymentRequestOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-cancel-close-deferred-payment-request") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class CancelCloseDeferredPaymentRequestOpResource extends BaseOperationDetailsResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | 22 | @JsonIgnore 23 | @Relationship("request") 24 | private ReviewableRequestResource request; 25 | 26 | public ReviewableRequestResource getRequest() { 27 | return request; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/CancelDataCreationRequestOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-cancel-data-creation-request") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class CancelDataCreationRequestOpResource extends BaseOperationDetailsResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | 22 | @JsonIgnore 23 | @Relationship("request") 24 | private ReviewableRequestResource request; 25 | 26 | public ReviewableRequestResource getRequest() { 27 | return request; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/CancelDataRemoveRequestOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-cancel-data-remove-request") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class CancelDataRemoveRequestOpResource extends BaseOperationDetailsResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | 22 | @JsonIgnore 23 | @Relationship("request") 24 | private ReviewableRequestResource request; 25 | 26 | public ReviewableRequestResource getRequest() { 27 | return request; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/CancelDataUpdateRequestOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-cancel-data-update-request") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class CancelDataUpdateRequestOpResource extends BaseOperationDetailsResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | 22 | @JsonIgnore 23 | @Relationship("request") 24 | private ReviewableRequestResource request; 25 | 26 | public ReviewableRequestResource getRequest() { 27 | return request; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/CancelDeferredPaymentCreationRequestOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-cancel-deferred-payment-creation-request") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class CancelDeferredPaymentCreationRequestOpResource extends BaseOperationDetailsResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | 22 | @JsonIgnore 23 | @Relationship("request") 24 | private ReviewableRequestResource request; 25 | 26 | public ReviewableRequestResource getRequest() { 27 | return request; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/CancelSaleRequestOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-cancel-sale-request") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class CancelSaleRequestOpResource extends BaseOperationDetailsResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/CheckSaleStateOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-check-sale-state") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class CheckSaleStateOpResource extends BaseOperationDetailsResource { 19 | 20 | @JsonProperty("effect") 21 | private org.tokend.sdk.api.v3.model.generated.inner.Enum effect; 22 | 23 | public org.tokend.sdk.api.v3.model.generated.inner.Enum getEffect() { 24 | return effect; 25 | } 26 | 27 | @Override 28 | public boolean isFilled() { 29 | return effect != null 30 | && super.isFilled() 31 | ; 32 | } 33 | 34 | @JsonIgnore 35 | @Relationship("sale") 36 | private SaleResource sale; 37 | 38 | public SaleResource getSale() { 39 | return sale; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/CloseSwapOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-close-swap") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class CloseSwapOpResource extends BaseOperationDetailsResource { 19 | 20 | @JsonProperty("secret") 21 | @Nullable 22 | private String secret; 23 | 24 | @Nullable 25 | public String getSecret() { 26 | return secret; 27 | } 28 | 29 | @Override 30 | public boolean isFilled() { 31 | return secret != null 32 | && super.isFilled() 33 | ; 34 | } 35 | 36 | @JsonIgnore 37 | @Relationship("swap") 38 | private SwapResource swap; 39 | 40 | public SwapResource getSwap() { 41 | return swap; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/ConvertedBalancesCollectionResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("converted-balances-collections") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class ConvertedBalancesCollectionResource extends BaseResource { 19 | @Override 20 | public boolean isFilled() { return true; } 21 | 22 | @JsonIgnore 23 | @Relationship("asset") 24 | private AssetResource asset; 25 | 26 | public AssetResource getAsset() { 27 | return asset; 28 | } 29 | 30 | @JsonIgnore 31 | @Relationship("states") 32 | private List states; 33 | 34 | public List getStates() { 35 | return states; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/CreateAccountOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-create-account") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class CreateAccountOpResource extends BaseOperationDetailsResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | 22 | @JsonIgnore 23 | @Relationship("account") 24 | private AccountResource account; 25 | 26 | public AccountResource getAccount() { 27 | return account; 28 | } 29 | 30 | @JsonIgnore 31 | @Relationship("role") 32 | private AccountRoleResource role; 33 | 34 | public AccountRoleResource getRole() { 35 | return role; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/CreateManageLimitsRequestOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-create-manage-limits-request") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class CreateManageLimitsRequestOpResource extends BaseOperationDetailsResource { 19 | 20 | @JsonProperty("creator_details") 21 | private JsonNode creatorDetails; 22 | 23 | public JsonNode getCreatorDetails() { 24 | return creatorDetails; 25 | } 26 | 27 | @Override 28 | public boolean isFilled() { 29 | return creatorDetails != null 30 | && super.isFilled() 31 | ; 32 | } 33 | 34 | @JsonIgnore 35 | @Relationship("request") 36 | private ReviewableRequestResource request; 37 | 38 | public ReviewableRequestResource getRequest() { 39 | return request; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/DataResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("datas") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class DataResource extends BaseResource { 19 | 20 | @JsonProperty("type") 21 | private Long type; 22 | 23 | public Long getType() { 24 | return type; 25 | } 26 | 27 | @JsonProperty("value") 28 | private JsonNode value; 29 | 30 | public JsonNode getValue() { 31 | return value; 32 | } 33 | 34 | @Override 35 | public boolean isFilled() { 36 | return type != null && 37 | value != null 38 | ; 39 | } 40 | 41 | @JsonIgnore 42 | @Relationship("owner") 43 | private AccountResource owner; 44 | 45 | public AccountResource getOwner() { 46 | return owner; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/EffectBalanceChangeResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("base-effect-balance-change") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class EffectBalanceChangeResource extends BaseEffectResource { 19 | 20 | @JsonProperty("amount") 21 | private BigDecimal amount; 22 | 23 | public BigDecimal getAmount() { 24 | return amount; 25 | } 26 | 27 | @JsonProperty("fee") 28 | private Fee fee; 29 | 30 | public Fee getFee() { 31 | return fee; 32 | } 33 | 34 | @Override 35 | public boolean isFilled() { 36 | return amount != null && 37 | fee != null 38 | && super.isFilled() 39 | ; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/EffectsChargedFromLockedResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("effects-charged-from-locked") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class EffectsChargedFromLockedResource extends EffectBalanceChangeResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/EffectsChargedResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("effects-charged") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class EffectsChargedResource extends EffectBalanceChangeResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/EffectsFundedResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("effects-funded") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class EffectsFundedResource extends EffectBalanceChangeResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/EffectsIssuedResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("effects-issued") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class EffectsIssuedResource extends EffectBalanceChangeResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/EffectsLockedResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("effects-locked") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class EffectsLockedResource extends EffectBalanceChangeResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/EffectsUnlockedResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("effects-unlocked") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class EffectsUnlockedResource extends EffectBalanceChangeResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/EffectsWithdrawnResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("effects-withdrawn") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class EffectsWithdrawnResource extends EffectBalanceChangeResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/InitiateKYCRecoveryOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-initiate-kyc-recovery") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class InitiateKYCRecoveryOpResource extends BaseOperationDetailsResource { 19 | 20 | @JsonProperty("signer") 21 | private String signer; 22 | 23 | public String getSigner() { 24 | return signer; 25 | } 26 | 27 | @Override 28 | public boolean isFilled() { 29 | return signer != null 30 | && super.isFilled() 31 | ; 32 | } 33 | 34 | @JsonIgnore 35 | @Relationship("account") 36 | private AccountResource account; 37 | 38 | public AccountResource getAccount() { 39 | return account; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/KeyValueEntryResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("key-value-entries") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class KeyValueEntryResource extends BaseResource { 19 | 20 | @JsonProperty("value") 21 | private KeyValueEntryValue value; 22 | 23 | public KeyValueEntryValue getValue() { 24 | return value; 25 | } 26 | 27 | @Override 28 | public boolean isFilled() { 29 | return value != null 30 | ; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/ManageContractOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-manage-contract") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class ManageContractOpResource extends BaseOperationDetailsResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/ManageContractRequestOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-manage-contract-request") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class ManageContractRequestOpResource extends BaseOperationDetailsResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/ManageInvoiceOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-manage-invoice") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class ManageInvoiceOpResource extends BaseOperationDetailsResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/ManageSaleOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-manage-sale") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class ManageSaleOpResource extends BaseOperationDetailsResource { 19 | 20 | @JsonProperty("action") 21 | private org.tokend.sdk.api.v3.model.generated.inner.Enum action; 22 | 23 | public org.tokend.sdk.api.v3.model.generated.inner.Enum getAction() { 24 | return action; 25 | } 26 | 27 | @JsonProperty("sale_id") 28 | private Long saleId; 29 | 30 | public Long getSaleId() { 31 | return saleId; 32 | } 33 | 34 | @Override 35 | public boolean isFilled() { 36 | return action != null && 37 | saleId != null 38 | && super.isFilled() 39 | ; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/OperationsCreateAccountRoleResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-create-account-role") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class OperationsCreateAccountRoleResource extends ManageAccountRoleOpResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/OperationsCreateAccountRuleResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-create-account-rule") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class OperationsCreateAccountRuleResource extends ManageAccountRuleOpResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/OperationsCreateSignerResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-create-signer") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class OperationsCreateSignerResource extends ManageSignerOpResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/OperationsCreateSignerRoleResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-create-signer-role") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class OperationsCreateSignerRoleResource extends ManageSignerRoleOpResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/OperationsCreateSignerRuleResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-create-signer-rule") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class OperationsCreateSignerRuleResource extends ManageSignerRuleOpResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/OperationsRemoveAccountRoleResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-remove-account-role") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class OperationsRemoveAccountRoleResource extends ManageAccountRoleOpResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/OperationsRemoveAccountRuleResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-remove-account-rule") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class OperationsRemoveAccountRuleResource extends ManageAccountRuleOpResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/OperationsRemoveSignerResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-remove-signer") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class OperationsRemoveSignerResource extends ManageSignerOpResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/OperationsRemoveSignerRoleResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-remove-signer-role") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class OperationsRemoveSignerRoleResource extends ManageSignerRoleOpResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/OperationsRemoveSignerRuleResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-remove-signer-rule") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class OperationsRemoveSignerRuleResource extends ManageSignerRuleOpResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/OperationsUpdateAccountRoleResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-update-account-role") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class OperationsUpdateAccountRoleResource extends ManageAccountRoleOpResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/OperationsUpdateAccountRuleResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-update-account-rule") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class OperationsUpdateAccountRuleResource extends ManageAccountRuleOpResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/OperationsUpdateSignerResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-update-signer") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class OperationsUpdateSignerResource extends ManageSignerOpResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/OperationsUpdateSignerRoleResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-update-signer-role") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class OperationsUpdateSignerRoleResource extends ManageSignerRoleOpResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/OperationsUpdateSignerRuleResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-update-signer-rule") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class OperationsUpdateSignerRuleResource extends ManageSignerRuleOpResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/PollParticipationResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("poll-outcome") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class PollParticipationResource extends BaseResource { 19 | @Override 20 | public boolean isFilled() { return true; } 21 | 22 | @JsonIgnore 23 | @Relationship("votes") 24 | private List votes; 25 | 26 | public List getVotes() { 27 | return votes; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/PublicKeyEntryResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("public-key-entries") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class PublicKeyEntryResource extends BaseResource { 19 | @Override 20 | public boolean isFilled() { return true; } 21 | 22 | @JsonIgnore 23 | @Relationship("accounts") 24 | private List accounts; 25 | 26 | public List getAccounts() { 27 | return accounts; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/RemoveAssetOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-remove-asset") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class RemoveAssetOpResource extends BaseOperationDetailsResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | 22 | @JsonIgnore 23 | @Relationship("asset") 24 | private AssetResource asset; 25 | 26 | public AssetResource getAsset() { 27 | return asset; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/RemoveAssetPairOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-remove-asset-pair") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class RemoveAssetPairOpResource extends BaseOperationDetailsResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | 22 | @JsonIgnore 23 | @Relationship("base") 24 | private AssetResource base; 25 | 26 | public AssetResource getBase() { 27 | return base; 28 | } 29 | 30 | @JsonIgnore 31 | @Relationship("quote") 32 | private AssetResource quote; 33 | 34 | public AssetResource getQuote() { 35 | return quote; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/RemoveDataOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-remove-data") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class RemoveDataOpResource extends BaseOperationDetailsResource { 19 | @Override 20 | public boolean isFilled() { return super.isFilled(); } 21 | 22 | @JsonIgnore 23 | @Relationship("data") 24 | private DataResource data; 25 | 26 | public DataResource getData() { 27 | return data; 28 | } 29 | 30 | @JsonIgnore 31 | @Relationship("owner") 32 | private AccountResource owner; 33 | 34 | public AccountResource getOwner() { 35 | return owner; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/SaleWhitelistResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("sale-whitelist") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class SaleWhitelistResource extends BaseResource { 19 | @Override 20 | public boolean isFilled() { return true; } 21 | 22 | @JsonIgnore 23 | @Relationship("participant") 24 | private AccountResource participant; 25 | 26 | public AccountResource getParticipant() { 27 | return participant; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/SignerRoleResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("signer-roles") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class SignerRoleResource extends BaseResource { 19 | 20 | @JsonProperty("details") 21 | private JsonNode details; 22 | 23 | public JsonNode getDetails() { 24 | return details; 25 | } 26 | 27 | @Override 28 | public boolean isFilled() { 29 | return details != null 30 | ; 31 | } 32 | 33 | @JsonIgnore 34 | @Relationship("owner") 35 | private AccountResource owner; 36 | 37 | public AccountResource getOwner() { 38 | return owner; 39 | } 40 | 41 | @JsonIgnore 42 | @Relationship("rules") 43 | private List rules; 44 | 45 | public List getRules() { 46 | return rules; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/StampOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-stamp") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class StampOpResource extends BaseOperationDetailsResource { 19 | 20 | @JsonProperty("ledger_hash") 21 | private String ledgerHash; 22 | 23 | public String getLedgerHash() { 24 | return ledgerHash; 25 | } 26 | 27 | @JsonProperty("license_hash") 28 | private String licenseHash; 29 | 30 | public String getLicenseHash() { 31 | return licenseHash; 32 | } 33 | 34 | @Override 35 | public boolean isFilled() { 36 | return ledgerHash != null && 37 | licenseHash != null 38 | && super.isFilled() 39 | ; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/UpdateDataOpResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("operations-update-data") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class UpdateDataOpResource extends BaseOperationDetailsResource { 19 | 20 | @JsonProperty("value") 21 | private JsonNode value; 22 | 23 | public JsonNode getValue() { 24 | return value; 25 | } 26 | 27 | @Override 28 | public boolean isFilled() { 29 | return value != null 30 | && super.isFilled() 31 | ; 32 | } 33 | 34 | @JsonIgnore 35 | @Relationship("data") 36 | private DataResource data; 37 | 38 | public DataResource getData() { 39 | return data; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/UpdateLimitsRequestResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("request-details-limits-update") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class UpdateLimitsRequestResource extends BaseReviewableRequestDetailsResource { 19 | 20 | @JsonProperty("creator_details") 21 | private JsonNode creatorDetails; 22 | 23 | public JsonNode getCreatorDetails() { 24 | return creatorDetails; 25 | } 26 | 27 | @Override 28 | public boolean isFilled() { 29 | return creatorDetails != null 30 | && super.isFilled() 31 | ; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/UpdateSaleDetailsRequestResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("request-details-update-sale-details") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class UpdateSaleDetailsRequestResource extends BaseReviewableRequestDetailsResource { 19 | 20 | @JsonProperty("creator_details") 21 | private JsonNode creatorDetails; 22 | 23 | public JsonNode getCreatorDetails() { 24 | return creatorDetails; 25 | } 26 | 27 | @Override 28 | public boolean isFilled() { 29 | return creatorDetails != null 30 | && super.isFilled() 31 | ; 32 | } 33 | 34 | @JsonIgnore 35 | @Relationship("sale") 36 | private SaleResource sale; 37 | 38 | public SaleResource getSale() { 39 | return sale; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/model/generated/resources/VoteResource.java: -------------------------------------------------------------------------------- 1 | // Auto-generated code. Do not edit. 2 | 3 | package org.tokend.sdk.api.v3.model.generated.resources; 4 | 5 | import java.math.*; 6 | import java.util.*; 7 | import com.fasterxml.jackson.annotation.*; 8 | import com.github.jasminb.jsonapi.annotations.*; 9 | import org.tokend.sdk.api.v3.model.generated.resources.*; 10 | import org.tokend.sdk.api.v3.model.generated.inner.*; 11 | import com.fasterxml.jackson.databind.*; 12 | import org.jetbrains.annotations.Nullable; 13 | import org.tokend.sdk.api.base.model.*; 14 | 15 | 16 | @Type("votes") 17 | @JsonIgnoreProperties(ignoreUnknown = true) 18 | public class VoteResource extends BaseResource { 19 | 20 | @JsonProperty("vote_data") 21 | private VoteData voteData; 22 | 23 | public VoteData getVoteData() { 24 | return voteData; 25 | } 26 | 27 | @Override 28 | public boolean isFilled() { 29 | return voteData != null 30 | ; 31 | } 32 | 33 | @JsonIgnore 34 | @Relationship("poll") 35 | private PollResource poll; 36 | 37 | public PollResource getPoll() { 38 | return poll; 39 | } 40 | 41 | @JsonIgnore 42 | @Relationship("voter") 43 | private AccountResource voter; 44 | 45 | public AccountResource getVoter() { 46 | return voter; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/offers/OffersApiV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.offers 2 | 3 | import com.github.jasminb.jsonapi.JSONAPIDocument 4 | import org.tokend.sdk.api.base.ApiRequest 5 | import org.tokend.sdk.api.base.MappedRetrofitApiRequest 6 | import org.tokend.sdk.api.base.model.DataPage 7 | import org.tokend.sdk.api.base.params.map 8 | import org.tokend.sdk.api.v3.model.generated.resources.OfferResource 9 | import org.tokend.sdk.api.v3.offers.params.OfferParamsV3 10 | import org.tokend.sdk.api.v3.offers.params.OffersPageParamsV3 11 | 12 | open class OffersApiV3( 13 | protected val offersService: OffersServiceV3 14 | ) { 15 | /** 16 | * @return offers list page 17 | */ 18 | open fun get(params: OffersPageParamsV3? = null): ApiRequest> { 19 | return MappedRetrofitApiRequest( 20 | offersService.getOffers(params.map()), 21 | DataPage.Companion::fromPageDocument 22 | ) 23 | } 24 | 25 | /** 26 | * @return offer by it's ID 27 | */ 28 | open fun getById(id: String, 29 | params: OfferParamsV3? = null): ApiRequest { 30 | return MappedRetrofitApiRequest( 31 | offersService.getOfferById( 32 | id, 33 | params.map() 34 | ), 35 | JSONAPIDocument::get 36 | ) 37 | } 38 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/offers/OffersServiceV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.offers 2 | 3 | import com.github.jasminb.jsonapi.JSONAPIDocument 4 | import org.tokend.sdk.api.v3.model.generated.resources.OfferResource 5 | import retrofit2.Call 6 | import retrofit2.http.GET 7 | import retrofit2.http.Path 8 | import retrofit2.http.QueryMap 9 | 10 | interface OffersServiceV3 { 11 | @GET("v3/offers") 12 | @JvmSuppressWildcards 13 | fun getOffers(@QueryMap query: Map): Call>> 14 | 15 | @GET("v3/offers/{id}") 16 | @JvmSuppressWildcards 17 | fun getOfferById(@Path("id") id: String, 18 | @QueryMap query: Map): Call> 19 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/offers/params/OfferParamsV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.offers.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | /** 6 | * @see OfferParamsV3.Includes 7 | */ 8 | open class OfferParamsV3( 9 | include: Collection? = null 10 | ) : JsonApiQueryParams(include) { 11 | class Includes { 12 | companion object { 13 | const val BASE_ASSET = "base_asset" 14 | const val QUOTE_ASSET = "quote_asset" 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/orderbook/OrderBooksService.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.orderbook 2 | 3 | import com.github.jasminb.jsonapi.JSONAPIDocument 4 | import org.tokend.sdk.api.v3.model.generated.resources.MatchResource 5 | import org.tokend.sdk.api.v3.model.generated.resources.OrderBookEntryResource 6 | import org.tokend.sdk.api.v3.model.generated.resources.OrderBookResource 7 | import retrofit2.Call 8 | import retrofit2.http.GET 9 | import retrofit2.http.Path 10 | import retrofit2.http.QueryMap 11 | 12 | interface OrderBooksService { 13 | @GET("v3/order_book/{id}") 14 | @JvmSuppressWildcards 15 | fun getById(@Path("id") id: String, 16 | @QueryMap query: Map): Call>> 17 | 18 | @GET("v3/order_books/{id}") 19 | @JvmSuppressWildcards 20 | fun getByIdNew(@Path("id") id: String, 21 | @QueryMap query: Map): Call> 22 | 23 | @GET("v3/matches") 24 | @JvmSuppressWildcards 25 | fun getMatches(@QueryMap query: Map): Call>> 26 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/polls/model/PollState.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.polls.model 2 | 3 | enum class PollState(val value: Int) { 4 | OPEN(1), 5 | PASSED(2), 6 | FAILED(3), 7 | CANCELLED(4); 8 | 9 | companion object { 10 | @JvmStatic 11 | fun fromValue(value: Int): PollState { 12 | return when (value) { 13 | OPEN.value -> OPEN 14 | PASSED.value -> PASSED 15 | FAILED.value -> FAILED 16 | CANCELLED.value -> CANCELLED 17 | else -> throw IllegalArgumentException("There is no state with value '$value'") 18 | } 19 | } 20 | 21 | @JvmStatic 22 | fun fromName(name: String): PollState { 23 | return when (name.toUpperCase()) { 24 | OPEN.name -> OPEN 25 | PASSED.name -> PASSED 26 | FAILED.name -> FAILED 27 | CANCELLED.name -> CANCELLED 28 | else -> throw IllegalArgumentException("There is no state with name '$name'") 29 | } 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/polls/params/PollParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.polls.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | /** 6 | * @see PollParams.Includes 7 | */ 8 | open class PollParams( 9 | include: Collection? = null 10 | ) : JsonApiQueryParams(include) { 11 | class Includes { 12 | companion object { 13 | const val PARTICIPATION = "participation" 14 | const val PARTICIPATION_VOTES = "participation.votes" 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/polls/params/VoteParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.polls.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | /** 6 | * @see VoteParams.Includes 7 | */ 8 | open class VoteParams( 9 | include: Collection? = null 10 | ) : JsonApiQueryParams(include) { 11 | class Includes { 12 | companion object { 13 | const val POLL = "poll" 14 | const val POLLS = "polls" 15 | const val ACCOUNT = "account" 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/polls/params/VotesPageParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.polls.params 2 | 3 | import org.tokend.sdk.api.base.params.PagingParamsV2 4 | import org.tokend.sdk.api.v3.base.PageQueryParams 5 | 6 | /** 7 | * @see VoteParams.Includes 8 | */ 9 | open class VotesPageParams( 10 | include: Collection? = null, 11 | pagingParams: PagingParamsV2? = null 12 | ) : PageQueryParams(pagingParams, include) { 13 | class Builder: PageQueryParams.Builder() { 14 | override fun withPagingParams(pagingParams: PagingParamsV2) = also { 15 | super.withPagingParams(pagingParams) 16 | } 17 | 18 | override fun withInclude(include: Collection?) = also { 19 | super.withInclude(include) 20 | } 21 | 22 | override fun withInclude(vararg include: String) = also { 23 | super.withInclude(*include) 24 | } 25 | 26 | override fun build(): VotesPageParams { 27 | return VotesPageParams(include, pagingParams) 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/requests/model/RequestState.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.requests.model 2 | 3 | enum class RequestState(val i: Int) { 4 | UNKNOWN(-1), 5 | PENDING(1), 6 | CANCELLED(2), 7 | APPROVED(3), 8 | REJECTED(4), 9 | PERMANENTLY_REJECTED(5); 10 | 11 | companion object { 12 | @JvmStatic 13 | fun fromI(i: Int): RequestState { 14 | return values().find { it.i == i } ?: UNKNOWN 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/requests/params/RequestParamsV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.requests.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | /** 6 | * @see RequestParamsV3.Includes 7 | */ 8 | open class RequestParamsV3( 9 | include: Collection? = null 10 | ) : JsonApiQueryParams(include) { 11 | class Includes { 12 | companion object { 13 | const val REQUEST_DETAILS = "request_details" 14 | const val REQUESTOR = "requestor" 15 | const val REVIEWER = "reviewer" 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/sales/SalesServiceV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.sales 2 | 3 | import com.github.jasminb.jsonapi.JSONAPIDocument 4 | import org.tokend.sdk.api.v3.model.generated.resources.SaleResource 5 | import retrofit2.Call 6 | import retrofit2.http.GET 7 | import retrofit2.http.Path 8 | import retrofit2.http.QueryMap 9 | 10 | interface SalesServiceV3 { 11 | @GET("v3/sales") 12 | @JvmSuppressWildcards 13 | fun getSales(@QueryMap query: Map): Call>> 14 | 15 | @GET("v3/sales/{id}") 16 | @JvmSuppressWildcards 17 | fun getSaleById(@Path("id") id: String, 18 | @QueryMap query: Map): Call> 19 | 20 | @GET("v3/accounts/{id}/sales") 21 | @JvmSuppressWildcards 22 | fun getSalesForAccount(@Path("id") accountId: String, 23 | @QueryMap query: Map): Call>> 24 | 25 | @GET("v3/accounts/{id}/sales/{sale_id}") 26 | @JvmSuppressWildcards 27 | fun getSaleByIdForAccount(@Path("id") accountId: String, 28 | @Path("sale_id") saleId: String, 29 | @QueryMap query: Map): Call> 30 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/sales/model/SaleState.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.sales.model 2 | 3 | enum class SaleState(val value: Int) { 4 | OPEN(1), 5 | CLOSED(2), 6 | CANCELED(3); 7 | 8 | companion object { 9 | @JvmStatic 10 | fun fromValue(value: Int): SaleState { 11 | return when (value) { 12 | OPEN.value -> OPEN 13 | CLOSED.value -> CLOSED 14 | CANCELED.value -> CANCELED 15 | else -> throw IllegalArgumentException("There is no state with value '$value'") 16 | } 17 | } 18 | 19 | @JvmStatic 20 | fun fromName(name: String): SaleState { 21 | return when (name.toUpperCase()) { 22 | OPEN.name -> OPEN 23 | CLOSED.name -> CLOSED 24 | CANCELED.name -> CANCELED 25 | else -> throw IllegalArgumentException("There is no state with name '$name'") 26 | } 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/sales/params/SaleParamsV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.sales.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | /** 6 | * @see SaleParamsV3.Includes 7 | */ 8 | open class SaleParamsV3( 9 | include: Collection? = null 10 | ) : JsonApiQueryParams(include) { 11 | class Includes { 12 | companion object { 13 | const val BASE_ASSET = "base_asset" 14 | const val QUOTE_ASSET = "quote_assets" 15 | const val DEFAULT_QUOTE_ASSET = "default_quote_asset" 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/signers/params/SignerParamsV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.signers.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | open class SignerParamsV3( 6 | include: Collection 7 | ) : JsonApiQueryParams(include) { 8 | class Includes { 9 | companion object { 10 | const val SIGNER_ROLE = "role" 11 | const val SIGNER_ROLE_RULES = "role.rules" 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/signers/params/SignerRoleParamsV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.signers.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | open class SignerRoleParamsV3( 6 | include: Collection 7 | ) : JsonApiQueryParams(include) { 8 | class Includes { 9 | companion object { 10 | const val SIGNER_RULES = "rules" 11 | const val OWNER = "owner" 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/signers/params/SignerRolesPageParamsV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.signers.params 2 | 3 | import org.tokend.sdk.api.base.params.PagingParamsV2 4 | import org.tokend.sdk.api.v3.base.PageQueryParams 5 | 6 | open class SignerRolesPageParamsV3( 7 | include: Collection? = null, 8 | pagingParams: PagingParamsV2? = null 9 | ) : PageQueryParams(pagingParams, include) { 10 | 11 | open class Builder : PageQueryParams.Builder() { 12 | 13 | override fun withPagingParams(pagingParams: PagingParamsV2) = also { 14 | super.withPagingParams(pagingParams) 15 | } 16 | 17 | override fun withInclude(include: Collection?) = also { 18 | super.withInclude(include) 19 | } 20 | 21 | override fun withInclude(vararg include: String) = also { 22 | super.withInclude(*include) 23 | } 24 | 25 | override fun build(): SignerRolesPageParamsV3 { 26 | return SignerRolesPageParamsV3(include, pagingParams) 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/signers/params/SignerRuleParamsV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.signers.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | /** 6 | * @see SignerRuleParamsV3.Includes 7 | */ 8 | class SignerRuleParamsV3( 9 | include: Collection 10 | ) : JsonApiQueryParams(include) { 11 | class Includes { 12 | companion object { 13 | const val RULES = "rules" 14 | const val OWNER = "owner" 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/signers/params/SignerRulesPageParamsV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.signers.params 2 | 3 | import org.tokend.sdk.api.base.params.PagingParamsV2 4 | import org.tokend.sdk.api.v3.base.PageQueryParams 5 | 6 | open class SignerRulesPageParamsV3( 7 | include: Collection? = null, 8 | pagingParams: PagingParamsV2? = null 9 | ) : PageQueryParams(pagingParams, include) { 10 | 11 | open class Builder : PageQueryParams.Builder() { 12 | 13 | override fun withPagingParams(pagingParams: PagingParamsV2) = also { 14 | super.withPagingParams(pagingParams) 15 | } 16 | 17 | override fun withInclude(include: Collection?) = also { 18 | super.withInclude(include) 19 | } 20 | 21 | override fun withInclude(vararg include: String) = also { 22 | super.withInclude(*include) 23 | } 24 | 25 | override fun build(): SignerRulesPageParamsV3 { 26 | return SignerRulesPageParamsV3(include, pagingParams) 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/swaps/SwapsApi.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.swaps 2 | 3 | import com.github.jasminb.jsonapi.JSONAPIDocument 4 | import org.tokend.sdk.api.base.ApiRequest 5 | import org.tokend.sdk.api.base.MappedRetrofitApiRequest 6 | import org.tokend.sdk.api.base.model.DataPage 7 | import org.tokend.sdk.api.base.params.map 8 | import org.tokend.sdk.api.v3.model.generated.resources.SwapResource 9 | import org.tokend.sdk.api.v3.swaps.params.SwapParams 10 | import org.tokend.sdk.api.v3.swaps.params.SwapsPageParams 11 | 12 | open class SwapsApi( 13 | protected open val swapsService: SwapsService 14 | ) { 15 | @JvmOverloads 16 | open fun get(params: SwapsPageParams? = null): ApiRequest> { 17 | return MappedRetrofitApiRequest( 18 | swapsService.getSwapsPage(params.map()), 19 | DataPage.Companion::fromPageDocument 20 | ) 21 | } 22 | 23 | @JvmOverloads 24 | open fun getById(id: String, 25 | params: SwapParams? = null): ApiRequest { 26 | return MappedRetrofitApiRequest( 27 | swapsService.getSwap(id, params.map()), 28 | JSONAPIDocument::get 29 | ) 30 | } 31 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/swaps/SwapsService.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.swaps 2 | 3 | import com.github.jasminb.jsonapi.JSONAPIDocument 4 | import org.tokend.sdk.api.v3.model.generated.resources.SwapResource 5 | import retrofit2.Call 6 | import retrofit2.http.GET 7 | import retrofit2.http.Path 8 | import retrofit2.http.QueryMap 9 | 10 | interface SwapsService { 11 | @GET("v3/swaps") 12 | @JvmSuppressWildcards 13 | fun getSwapsPage(@QueryMap query: Map): Call>> 14 | 15 | @GET("v3/swaps/{id}") 16 | @JvmSuppressWildcards 17 | fun getSwap(@Path("id") id: String, 18 | @QueryMap query: Map): Call> 19 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/swaps/model/SwapState.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.swaps.model 2 | 3 | enum class SwapState(val value: Int) { 4 | OPEN(1), 5 | CLOSED(2), 6 | CANCELED(3); 7 | 8 | companion object { 9 | @JvmStatic 10 | fun fromValue(value: Int): SwapState { 11 | return when (value) { 12 | OPEN.value -> OPEN 13 | CLOSED.value -> CLOSED 14 | CANCELED.value -> CANCELED 15 | else -> throw IllegalArgumentException("There is no state with value '$value'") 16 | } 17 | } 18 | 19 | @JvmStatic 20 | fun fromName(name: String): SwapState { 21 | return when (name.toUpperCase()) { 22 | OPEN.name -> OPEN 23 | CLOSED.name -> CLOSED 24 | CANCELED.name -> CANCELED 25 | else -> throw IllegalArgumentException("There is no state with name '$name'") 26 | } 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/swaps/params/SwapParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.swaps.params 2 | 3 | import org.tokend.sdk.api.v3.base.JsonApiQueryParams 4 | 5 | class SwapParams(include: Collection? = null) : JsonApiQueryParams(include) { 6 | class Includes { 7 | companion object { 8 | const val SOURCE_BALANCE = "source_balance" 9 | const val DESTINATION_BALANCE = "destination_balance" 10 | const val ASSET = "asset" 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/transactions/TransactionsServiceV3.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.transactions 2 | 3 | import com.github.jasminb.jsonapi.JSONAPIDocument 4 | import org.tokend.sdk.api.v3.model.generated.resources.TransactionResource 5 | import org.tokend.sdk.api.v3.transactions.model.SubmitTransactionRequestBody 6 | import retrofit2.Call 7 | import retrofit2.http.* 8 | 9 | interface TransactionsServiceV3 { 10 | @GET("v3/transactions") 11 | @JvmSuppressWildcards 12 | fun getTransactions(@QueryMap query: Map): Call>> 13 | 14 | @GET("v3/transactions/{id}") 15 | @JvmSuppressWildcards 16 | fun getTransactionById(@Path("id") id: String, 17 | @QueryMap query: Map): Call> 18 | 19 | @POST("v3/transactions") 20 | @JvmSuppressWildcards 21 | fun submitTransaction(@Body body: SubmitTransactionRequestBody): Call> 22 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/v3/transactions/model/SubmitTransactionRequestBody.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.v3.transactions.model 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | 5 | class SubmitTransactionRequestBody( 6 | @JsonProperty("tx") 7 | val envelopeBase64: String, 8 | @JsonProperty("wait_for_ingest") 9 | val waitForIngest: Boolean 10 | ) -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/api/wallets/model/Exceptions.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.api.wallets.model 2 | 3 | import org.tokend.sdk.api.base.model.ForbiddenException 4 | 5 | open class InvalidCredentialsException(val credential: Credential) : Exception() { 6 | enum class Credential { 7 | EMAIL, PASSWORD 8 | } 9 | } 10 | 11 | open class EmailNotVerifiedException(val walletId: String) 12 | : ForbiddenException("email_not_verified", "Email is not verified") 13 | 14 | open class EmailAlreadyTakenException : Exception() -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/keyserver/models/LoginParams.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.keyserver.models 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnore 4 | import com.fasterxml.jackson.annotation.JsonProperty 5 | import org.tokend.sdk.utils.extentions.decodeBase64 6 | import org.tokend.sdk.utils.extentions.encodeBase64String 7 | 8 | data class LoginParams( 9 | @JsonProperty("type") 10 | val type: String, 11 | @JsonProperty("id") 12 | val id: Long, 13 | @JsonProperty("attributes") 14 | val kdfAttributes: KdfAttributes 15 | ) 16 | 17 | data class KdfAttributes( 18 | @JsonProperty("algorithm") 19 | val algorithm: String, 20 | @JsonProperty("bits") 21 | val bits: Int, 22 | @JsonProperty("n") 23 | val n: Int, 24 | @JsonProperty("p") 25 | val p: Int, 26 | @JsonProperty("r") 27 | val r: Int, 28 | @JsonProperty("salt") 29 | var encodedSalt: String? 30 | ) { 31 | constructor( 32 | algorithm: String, 33 | bits: Int, 34 | n: Int, 35 | p: Int, 36 | r: Int, 37 | salt: ByteArray? 38 | ) : this(algorithm, bits, n, p, r, salt?.encodeBase64String()) 39 | 40 | @get:JsonIgnore 41 | var salt: ByteArray? 42 | get() = encodedSalt?.decodeBase64() 43 | set(value) { 44 | encodedSalt = value?.encodeBase64String() 45 | } 46 | 47 | @get:JsonIgnore 48 | val bytes: Int 49 | get() = bits / 8 50 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/keyserver/models/Wallet.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.keyserver.models 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnore 4 | import com.fasterxml.jackson.annotation.JsonProperty 5 | 6 | class Wallet( 7 | @JsonProperty("data") 8 | val data: WalletData, 9 | @JsonProperty("included") 10 | private val included: List 11 | ) { 12 | @get:JsonIgnore 13 | val session: WalletData.Session 14 | get() = included.first() 15 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/keyserver/models/WalletCreationResult.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.keyserver.models 2 | 3 | import org.tokend.wallet.Account 4 | 5 | data class WalletCreationResult( 6 | val dataToSave: WalletSaveData, 7 | val accounts: List, 8 | val loginParams: LoginParams, 9 | val isVerified: Boolean 10 | ) { 11 | val walletId: String 12 | get() = dataToSave.walletId 13 | 14 | val accountId: String 15 | get() = dataToSave.accountId 16 | 17 | val login: String 18 | get() = dataToSave.email 19 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/keyserver/models/WalletData.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.keyserver.models 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty 4 | import java.util.* 5 | 6 | class WalletData( 7 | @JsonProperty("id") 8 | val id: String, 9 | @JsonProperty("attributes") 10 | val attributes: Attributes, 11 | ) { 12 | class Attributes( 13 | @JsonProperty("account_id") 14 | val accountId: String, 15 | @JsonProperty("email") 16 | val email: String, 17 | @JsonProperty("keychain_data") 18 | val encodedKeychainData: String, 19 | @JsonProperty("verified") 20 | val isVerified: Boolean, 21 | ) 22 | 23 | class Session( 24 | @JsonProperty("id") 25 | val id: String, 26 | @JsonProperty("attributes") 27 | val attributes: Attributes, 28 | ) { 29 | class Attributes( 30 | @JsonProperty("encryption_key") 31 | val encryptionKey: String, 32 | @JsonProperty("expires_at") 33 | val expiresAt: Date 34 | ) 35 | } 36 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/keyserver/seedreader/KeychainDataSeedReader.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.keyserver.seedreader 2 | 3 | import org.tokend.sdk.utils.statemachine.CharSequenceStateMachine 4 | import org.tokend.sdk.utils.statemachine.CharState 5 | import org.tokend.sdk.utils.statemachine.CharTransition 6 | 7 | internal abstract class KeychainDataSeedReader : CharSequenceStateMachine() { 8 | override val startState = "start" 9 | 10 | override fun run(input: CharSequence): Boolean { 11 | return super.run(input).also { clearCurrentSeed() } 12 | } 13 | 14 | protected val currentSeed = ArrayList(SEED_BUFFER_SIZE) 15 | 16 | protected fun clearCurrentSeed() { 17 | currentSeed.fill('0') 18 | currentSeed.clear() 19 | } 20 | 21 | companion object { 22 | val START_TO_SEE_STATES = arrayOf( 23 | CharState.withTransitions("start", CharTransition('"' to "'")), 24 | CharState.withTransitions("'", CharTransition('s' to "'s")), 25 | CharState.withTransitions("'s", CharTransition('e' to "'se")), 26 | CharState.withTransitions("'se", CharTransition('e' to "'see")), 27 | CharState.withTransitions("'see", CharTransition('d' to "'seed")) 28 | ) 29 | 30 | const val SEED_BUFFER_SIZE = 400 31 | } 32 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/redirects/ClientRedirectType.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.redirects 2 | 3 | enum class ClientRedirectType( 4 | val value: Int, 5 | val literal: String 6 | ) { 7 | UNKNOWN(-1, "unknown"), 8 | EMAIL_VERIFICATION(1, "api-verify"); 9 | 10 | companion object { 11 | @JvmStatic 12 | fun fromValue(value: Int): ClientRedirectType { 13 | return values().find { it.value == value } ?: UNKNOWN 14 | } 15 | 16 | @JvmStatic 17 | fun fromName(name: String): ClientRedirectType { 18 | return values().find { it.literal == name } ?: UNKNOWN 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/signing/AccountRequestSigner.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.signing 2 | 3 | import org.tokend.sdk.utils.extentions.encodeBase64String 4 | import org.tokend.wallet.Account 5 | 6 | /** 7 | * Request signer based on given [Account]. 8 | * 9 | * @param [account] must be active signer. 10 | * 11 | * @see Knowledge base 12 | * @see Requests signing on Knowledge base 13 | */ 14 | class AccountRequestSigner 15 | @JvmOverloads 16 | constructor( 17 | private val account: Account, 18 | override val originalAccountId: String = "" 19 | ) : RequestSigner { 20 | override val accountId = account.accountId 21 | 22 | override fun signToBase64(data: ByteArray): String { 23 | return account.sign(data).encodeBase64String() 24 | } 25 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/signing/RequestSigner.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.signing 2 | 3 | interface RequestSigner { 4 | /** 5 | * Contains current signer's account ID. 6 | */ 7 | val accountId: String 8 | 9 | /** 10 | * Contains main (original) account ID (not signer account ID). 11 | */ 12 | val originalAccountId: String 13 | 14 | /** 15 | * Returns Base64 encoded signature of given data. 16 | */ 17 | fun signToBase64(data: ByteArray): String 18 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/tfa/Callbacks.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.tfa 2 | 3 | internal typealias EmptyCallback = () -> Unit 4 | internal typealias OptionalThrowableCallback = (Throwable?) -> Unit -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/tfa/PasswordTfaOtpGenerator.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.tfa 2 | 3 | import org.tokend.sdk.api.tfa.model.TfaFactor 4 | import org.tokend.sdk.keyserver.WalletEncryption 5 | import org.tokend.sdk.keyserver.WalletKeyDerivation 6 | import org.tokend.sdk.keyserver.models.KdfAttributes 7 | import org.tokend.sdk.keyserver.models.KeychainData 8 | import org.tokend.sdk.utils.extentions.encodeBase64String 9 | import org.tokend.wallet.Account 10 | 11 | /** 12 | * OTP generator for [TfaFactor.Type.PASSWORD] factor type. 13 | */ 14 | class PasswordTfaOtpGenerator { 15 | fun generate(tfaException: NeedTfaException, email: String, password: CharArray): String { 16 | val kdfAttributes = KdfAttributes("scrypt", 17 | 256, 4096, 1, 8, tfaException.salt) 18 | val key = WalletKeyDerivation.deriveWalletEncryptionKey(email, password, kdfAttributes) 19 | val keychainData = KeychainData.fromEncoded(tfaException.keychainData) 20 | val seed = try { 21 | WalletEncryption.decryptSecretSeed(keychainData, key) 22 | } catch (e: Exception) { 23 | return "" 24 | } finally { 25 | key.fill(0) 26 | } 27 | 28 | val account = Account.fromSecretSeed(seed) 29 | seed.fill('0') 30 | val signature = account.sign(tfaException.token.toByteArray()) 31 | 32 | return signature.encodeBase64String() 33 | } 34 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/tfa/TfaCallback.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.tfa 2 | 3 | /** 4 | * Used to provide TFA data to complete TFA-protected requests. 5 | */ 6 | interface TfaCallback { 7 | /** 8 | * Used to be called when TFA error occurred during API request and user's action 9 | * is required. 10 | * @param exception [NeedTfaException] with all required TFA error data 11 | * @param verifierInterface communication object between TFA error handler and TFA verifier 12 | */ 13 | fun onTfaRequired(exception: NeedTfaException, verifierInterface: TfaVerifier.Interface) 14 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/tfa/TfaVerificationService.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.tfa 2 | 3 | import org.tokend.sdk.api.base.model.AttributesEntity 4 | import org.tokend.sdk.api.base.model.DataEntity 5 | import retrofit2.Call 6 | import retrofit2.http.Body 7 | import retrofit2.http.PUT 8 | import retrofit2.http.Path 9 | 10 | interface TfaVerificationService { 11 | @PUT("wallets/{walletId}/factors/{id}/verification") 12 | @JvmSuppressWildcards 13 | fun verifyTfaFactor( 14 | @Path("walletId") walletId: String, 15 | @Path("id") factorId: Long, 16 | @Body data: DataEntity 17 | ): Call 18 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/utils/BigDecimalUtil.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.utils 2 | 3 | import java.math.BigDecimal 4 | 5 | object BigDecimalUtil { 6 | /** 7 | * Allows to safely parse BigDecimal from String with default value (0 by default) 8 | * @return parsed value or [default] if it can't be parsed 9 | */ 10 | fun valueOf(stringValue: String?, defaultValue: BigDecimal = BigDecimal.ZERO): BigDecimal { 11 | return try { 12 | if (stringValue.isNullOrBlank()) 13 | defaultValue 14 | else 15 | BigDecimal(stringValue) 16 | } catch (e: NumberFormatException) { 17 | defaultValue 18 | } 19 | } 20 | 21 | fun toPlainString(amount: BigDecimal?): String { 22 | return stripTrailingZeros(amount).toPlainString() 23 | } 24 | 25 | fun scaleAmount(value: BigDecimal, scale: Int): BigDecimal { 26 | val res = value.setScale(scale, BigDecimal.ROUND_DOWN) 27 | return stripTrailingZeros(res) 28 | } 29 | 30 | fun stripTrailingZeros(value: BigDecimal?): BigDecimal { 31 | return if (value == null || value.signum() == 0) { 32 | BigDecimal.ZERO 33 | } else { 34 | value.stripTrailingZeros() 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/utils/CookieJarProvider.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.utils 2 | 3 | import okhttp3.CookieJar 4 | 5 | interface CookieJarProvider { 6 | fun getCookieJar(): CookieJar 7 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/utils/CustomHeadersInterceptor.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.utils 2 | 3 | import okhttp3.Interceptor 4 | import okhttp3.Response 5 | 6 | class CustomHeadersInterceptor( 7 | private val headers: Map 8 | ) : Interceptor { 9 | override fun intercept(chain: Interceptor.Chain): Response { 10 | val requestBuilder = chain.request().newBuilder() 11 | 12 | headers.forEach { 13 | val value = it.value 14 | if (value != null) { 15 | requestBuilder.addHeader(it.key, value) 16 | } 17 | } 18 | 19 | return chain.proceed(requestBuilder.build()) 20 | } 21 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/utils/SimpleNamedCursorsPagedResourceLoader.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.utils 2 | 3 | import org.tokend.sdk.api.base.ApiRequest 4 | import org.tokend.sdk.api.base.model.DataPageWithNamedCursors 5 | 6 | /*** 7 | * Simple representation of [NamedCursorsPagedResourceLoader] 8 | */ 9 | class SimpleNamedCursorsPagedResourceLoader( 10 | private val requestProvider: (nextCursors: Map) -> ApiRequest> 11 | ): NamedCursorsPagedResourceLoader() { 12 | 13 | override fun getPageRequest(nextCursors: Map): ApiRequest> { 14 | return requestProvider.invoke(nextCursors) 15 | } 16 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/utils/SimplePagedResourceLoader.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.utils 2 | 3 | import org.tokend.sdk.api.base.ApiRequest 4 | import org.tokend.sdk.api.base.model.DataPage 5 | 6 | /*** 7 | * Simple representation of [PagedResourceLoader] 8 | * 9 | * @param distinct enables filter by distinct 10 | * based on [Object.equals] and [Object.hashCode] to avoid 11 | * duplicates on page-number-based pagination 12 | */ 13 | class SimplePagedResourceLoader( 14 | private val requestProvider: (nextCursor: String?) -> ApiRequest>, 15 | distinct: Boolean = true 16 | ) : PagedResourceLoader(distinct) { 17 | 18 | override fun getPageRequest(nextCursor: String?): ApiRequest> { 19 | return requestProvider.invoke(nextCursor) 20 | } 21 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/utils/extentions/Bitmask.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.utils.extentions 2 | 3 | /** 4 | * @return [or] bitmask for given collection 5 | */ 6 | fun Collection.bitmask(): Long = fold(0L) { acc, i -> acc or i } 7 | 8 | /** 9 | * @return [or] bitmask for given collection 10 | */ 11 | fun Collection.bitmask(): Int = fold(0) { acc, i -> acc or i } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/utils/extentions/Encoding.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.utils.extentions 2 | 3 | import org.spongycastle.util.encoders.Hex 4 | import org.tokend.wallet.utils.Base64 5 | 6 | fun String.decodeBase64(): ByteArray { 7 | return this.toByteArray(Charsets.UTF_8).decodeBase64() 8 | } 9 | 10 | fun ByteArray.decodeBase64(): ByteArray { 11 | return Base64.decode(this) 12 | } 13 | 14 | fun String.decodeHex(): ByteArray { 15 | return Hex.decode(this) 16 | } 17 | 18 | fun ByteArray.decodeHex(): ByteArray { 19 | return Hex.decode(this) 20 | } 21 | 22 | fun ByteArray.encodeBase64(): ByteArray { 23 | return Base64.encode(this) 24 | } 25 | 26 | fun ByteArray.encodeBase64String(): String { 27 | return String(Base64.encode(this), Charsets.UTF_8) 28 | } 29 | 30 | fun ByteArray.encodeHex(): ByteArray { 31 | return Hex.encode(this) 32 | } 33 | 34 | fun ByteArray.encodeHexString(): String { 35 | return String(Hex.encode(this), Charsets.UTF_8) 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/utils/extentions/HorizonStateResource.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.utils.extentions 2 | 3 | import org.tokend.sdk.api.v3.model.generated.resources.HorizonStateResource 4 | import org.tokend.wallet.NetworkParams 5 | import kotlin.math.log10 6 | 7 | fun HorizonStateResource.toNetworkParams(): NetworkParams { 8 | val precision = log10(precision.toDouble()).toInt() 9 | 10 | return NetworkParams( 11 | passphrase = this.networkPassphrase, 12 | precision = precision, 13 | ) 14 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/utils/extentions/OperationResource.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.utils.extentions 2 | 3 | import org.tokend.sdk.api.v3.model.generated.resources.BaseOperationDetailsResource 4 | import org.tokend.sdk.api.v3.model.generated.resources.OperationResource 5 | 6 | /** 7 | * @return the result of an unchecked cast of [OperationResource.details] to [T] 8 | */ 9 | fun OperationResource.getTypedDetails(): T { 10 | return details as T 11 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/utils/extentions/ReviewableRequestResource.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.utils.extentions 2 | 3 | import org.tokend.sdk.api.v3.model.generated.resources.BaseReviewableRequestDetailsResource 4 | import org.tokend.sdk.api.v3.model.generated.resources.ReviewableRequestResource 5 | 6 | /** 7 | * @return the result of an unchecked cast of [ReviewableRequestResource.requestDetails] to [T] 8 | */ 9 | fun ReviewableRequestResource.getTypedRequestDetails(): T { 10 | return this.requestDetails as T 11 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/utils/extentions/SaleResource.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.utils.extentions 2 | 3 | import org.tokend.sdk.api.v3.model.generated.resources.SaleResource 4 | import org.tokend.sdk.api.v3.sales.model.SaleState 5 | import java.util.* 6 | 7 | fun SaleResource.isAvailable(): Boolean { 8 | return !isUpcoming() || !isEnded() 9 | } 10 | 11 | fun SaleResource.isUpcoming(): Boolean { 12 | return startTime.after(Date()) 13 | } 14 | 15 | fun SaleResource.isEnded(): Boolean { 16 | return isClosed() || isCanceled() 17 | } 18 | 19 | fun SaleResource.isClosed(): Boolean { 20 | return saleState.value == SaleState.CLOSED.value 21 | } 22 | 23 | fun SaleResource.isCanceled(): Boolean { 24 | return saleState.value == SaleState.CANCELED.value 25 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/utils/extentions/XdrEnumBitmask.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.utils.extentions 2 | 3 | import org.tokend.sdk.api.v3.model.generated.inner.Mask 4 | 5 | 6 | /** 7 | * @return true if given [value] is set in bitmask, 8 | * false otherwise 9 | */ 10 | fun Mask.has(value: Int): Boolean { 11 | return ((this.value ?: 0) and value) == value 12 | } 13 | 14 | /** 15 | * @see [has] 16 | */ 17 | fun Mask.has(value: Long): Boolean { 18 | return has(value.toInt()) 19 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/utils/statemachine/CharSequenceStateMachine.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.utils.statemachine 2 | 3 | internal abstract class CharSequenceStateMachine { 4 | protected abstract val states: Set 5 | protected abstract val startState: String 6 | 7 | /** 8 | * @return true if the machine has reached the final state 9 | */ 10 | open fun run(input: CharSequence): Boolean { 11 | val statesMap = states.associateBy(CharState::name) 12 | val startState = statesMap.getValue(startState) 13 | var state = startState 14 | 15 | input.forEach { char -> 16 | state = state.doTransition(char)?.let { newState -> 17 | statesMap[newState] 18 | ?: throw IllegalStateException("State '$newState' not found") 19 | } ?: startState 20 | 21 | if (state.isFinal) { 22 | return true 23 | } 24 | } 25 | 26 | return false 27 | } 28 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/utils/statemachine/CharTransition.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.utils.statemachine 2 | 3 | internal class CharTransition( 4 | val predicate: (Char) -> Boolean, 5 | val newState: String, 6 | val callback: (Char) -> Unit = {} 7 | ) { 8 | constructor( 9 | char: Char, 10 | newState: String, 11 | callback: (Char) -> Unit = {} 12 | ) : this( 13 | predicate = { it == char }, 14 | newState = newState, 15 | callback = callback 16 | ) 17 | 18 | constructor( 19 | transition: Pair, 20 | callback: (Char) -> Unit = {} 21 | ) : this( 22 | char = transition.first, 23 | newState = transition.second, 24 | callback = callback 25 | ) 26 | } -------------------------------------------------------------------------------- /src/main/java/org/tokend/sdk/utils/streamer/ApiStreamerCallback.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.utils.streamer 2 | 3 | interface ApiStreamerCallback { 4 | fun onNext(items: List) 5 | 6 | fun onError(error: Throwable) 7 | } -------------------------------------------------------------------------------- /src/test/java/org/tokend/sdk/test/BitmaskCollection.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.test 2 | 3 | import org.junit.Assert 4 | import org.junit.Test 5 | import org.tokend.sdk.utils.extentions.bitmask 6 | 7 | class BitmaskCollection { 8 | @Test 9 | fun bitmaskCollection() { 10 | val collection = listOf( 11 | 0b00001, 12 | 0b00010, 13 | 0b00100, 14 | 0b10000 15 | ) 16 | 17 | Assert.assertEquals(0b10111, collection.map { it.toLong() }.bitmask()) 18 | Assert.assertEquals(0b10111, collection.bitmask()) 19 | } 20 | } -------------------------------------------------------------------------------- /src/test/java/org/tokend/sdk/test/ClientRedirectPayloadTest.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.test 2 | 3 | import org.junit.Assert 4 | import org.junit.Test 5 | import org.tokend.sdk.redirects.ClientRedirectPayload 6 | import org.tokend.sdk.redirects.ClientRedirectType 7 | 8 | class ClientRedirectPayloadTest { 9 | @Test 10 | fun parse() { 11 | val url = "https://api.tokend.io/r/eyJ0eXBlIjoiYXBpLXZlcmlmeSIsIm1ldGEiOnsidG9rZW4iOiJ4aHhLUUZEYUZwTFNqRmJjWG9FRiIsIndhbGxldF9pZCI6IjkzMWRmODc4ODVjZGI4YWE4MDU4ODY4OTFhNDhmZDEzNTA2ODU3YWZlNjhmZjJjNDg0NjRiYTBjZjkzYTI0MTgifX0" 12 | val parsed = ClientRedirectPayload.fromUrl(url)!! 13 | Assert.assertEquals(ClientRedirectType.EMAIL_VERIFICATION, parsed.type) 14 | Assert.assertEquals( 15 | "xhxKQFDaFpLSjFbcXoEF", 16 | parsed.meta["token"].asText() 17 | ) 18 | Assert.assertEquals( 19 | "931df87885cdb8aa805886891a48fd13506857afe68ff2c48464ba0cf93a2418", 20 | parsed.meta["wallet_id"].asText() 21 | ) 22 | } 23 | } -------------------------------------------------------------------------------- /src/test/java/org/tokend/sdk/test/Config.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.test 2 | 3 | import org.tokend.wallet.Account 4 | 5 | object Config { 6 | const val API_URL = "http://localhost:8000/_/api/" 7 | const val ADMIN_SEED = "SAMJKTZVW5UOHCDK5INYJNORF2HRKYI72M5XSZCBYAHQHR34FFR4Z6G4" 8 | val ADMIN_ACCOUNT = Account.fromSecretSeed(ADMIN_SEED.toCharArray()) 9 | } -------------------------------------------------------------------------------- /src/test/java/org/tokend/sdk/test/Util.kt: -------------------------------------------------------------------------------- 1 | package org.tokend.sdk.test 2 | 3 | import org.tokend.sdk.api.TokenDApi 4 | import org.tokend.sdk.signing.AccountRequestSigner 5 | import org.tokend.sdk.tfa.TfaCallback 6 | import org.tokend.wallet.Account 7 | 8 | object Util { 9 | fun getApi(url: String = Config.API_URL, 10 | tfaCallback: TfaCallback? = null): TokenDApi { 11 | return TokenDApi(url, tfaCallback = tfaCallback) 12 | } 13 | 14 | fun getSignedApi(account: Account = Config.ADMIN_ACCOUNT, 15 | url: String = Config.API_URL, 16 | tfaCallback: TfaCallback? = null): TokenDApi { 17 | return TokenDApi(url, AccountRequestSigner(account), tfaCallback) 18 | } 19 | } --------------------------------------------------------------------------------