diff --git a/CHANGELOG.md b/CHANGELOG.md index 13d99d67..14b3668a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,51 @@ # Changelog +## [1.11.0] - 2026-SEP-01 + +### Added + +#### New API Endpoints + +**ApiKey Service** +- **`rotateApiKey()`**: Rotate the invoking API key (`POST /v1/api-keys/rotate`) +- **`ApiKeyRotation.decrypt()`**: Decrypt `encrypted_credentials` with JDK HKDF-SHA256 + AES-256-GCM (no extra libraries) + +**Financing Service** +- **`getConversionFees()`**: Get organization conversion fee tiers and month-to-date volume (`GET /v1/conversion/fees`) +- **`getCrossMarginLiquidation()`**: Get detailed XM liquidation data (`GET /v1/entities/{entity_id}/cross_margin/liquidation`) +- **`listCrossMarginLiquidations()`**: List XM liquidation history (`GET /v1/entities/{entity_id}/cross_margin/liquidations`) +- **`getEntityRewardsRate()`**: Get entity rewards rate and tiers (beta) (`GET /v1/entities/{entity_id}/rewards/rate`) +- **`getPortfolioRewardsRate()`**: Get portfolio rewards rate and tiers (beta) (`GET /v1/portfolios/{portfolio_id}/rewards/rate`) + +**Futures Service** +- **`getDerivativesCurrencySummary()`**: Get per-currency international derivatives balances (`GET /v1/portfolios/{portfolio_id}/derivatives/currency_summary`) +- **`getDerivativePositions()`**: List active derivative positions for a portfolio (`GET /v1/portfolios/{portfolio_id}/derivatives/positions`) + +#### New & Updated Models +- **`ConversionFee`**, **`ConversionFeeTier`**: Stablecoin conversion fee schedule types +- **`XMLiquidationDetail`**, **`XMLiquidationSummary`**, **`XMLiquidatedAsset`**: Cross-margin liquidation types +- **`BetaRewardsRateTier`**: Rewards rate tier (beta) +- **`DerivativePosition`**, **`DerivativesCurrencyBalance`**, **`OptionsDetails`**, **`OptionProductDetails`**: Derivatives product and position types +- **`CustomStablecoinAsset`**, **`ComboLeg`**, **`PriceIncrementStep`**: Supporting product/reward types +- **`Order`**: Added `isBuyExact` +- **`CreateOrderRequest`**, **`GetOrderPreviewRequest`**, **`GetOrderPreviewResponse`**: Added `isBuyExact` +- **`Product`**: Added `optionProductDetails` +- **`TravelRuleParty`**: Added `vaspAddress` +- **`WalletStakeInputs`**: Added `endDate` +- **`WalletUnstakeInputs`**: Added `validatorAddress` +- **`CustomStablecoinRewardDetails`**: Added `asset` + +#### New Enums +- **`XMLiquidationStatus`**, **`BetaRewardsRateTierType`**, **`DerivativeProductType`**, **`OptionType`**, **`SettlementModel`**, **`SettlementPeriod`** +- **`ProductType`**: Added `OPTION` +- **`TransactionType`**: Added `MERGE_STAKE` + +### Notes + +- Minor release: new endpoints including API key rotation, plus regenerated models from the latest OpenAPI spec via **OpenAPI Generator 7.25.0**. +- Model generation skips per-operation typed error-code and subcode enums until the SDK consumes them. +- Rewards rate endpoints are marked beta in the spec. + ## [1.10.3] - 2026-JUL-28 ### Added diff --git a/README.md b/README.md index cdbf8c13..9a8c3e60 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,7 @@ The SDK is organized into service interfaces under `com.coinbase.prime.*`, each | `AddressBookService` | `com.coinbase.prime.addressbook` | | `AdvancedTransferService` | `com.coinbase.prime.advancedtransfer` | | `AllocationsService` | `com.coinbase.prime.allocations` | +| `ApiKeyService` | `com.coinbase.prime.apikey` | | `AssetsService` | `com.coinbase.prime.assets` | | `BalancesService` | `com.coinbase.prime.balances` | | `CommissionService` | `com.coinbase.prime.commission` | @@ -140,6 +141,20 @@ mvn exec:java -Dexec.mainClass="com.coinbase.examples.transactions.ListPortfolio - `com.coinbase.examples.wallets.ListWalletAddresses ` - List addresses for a wallet - `com.coinbase.examples.wallets.GetWalletDepositInstructions [deposit-type]` - Get deposit instructions (deposit-type: CRYPTO, WIRE, SEN, SWIFT, SEPA) +**API Key:** +- `com.coinbase.examples.apikey.RotateApiKey` - Rotate the invoking API key (starts a real rotation). Decrypts `encrypted_credentials` via `ApiKeyRotation.decrypt` using the current `signingKey`. + +**Financing:** +- `com.coinbase.examples.financing.GetConversionFees` - Get organization conversion fee tiers +- `com.coinbase.examples.financing.GetCrossMarginLiquidation` - Get XM liquidation details +- `com.coinbase.examples.financing.ListCrossMarginLiquidations` - List XM liquidation history +- `com.coinbase.examples.financing.GetEntityRewardsRate` - Get entity rewards rate (beta) +- `com.coinbase.examples.financing.GetPortfolioRewardsRate` - Get portfolio rewards rate (beta) + +**Futures:** +- `com.coinbase.examples.futures.GetDerivativesCurrencySummary` - Get portfolio derivatives currency summary +- `com.coinbase.examples.futures.GetDerivativePositions` - List portfolio derivative positions + **Other:** - `com.coinbase.examples.Main` - Comprehensive example with multiple API calls @@ -170,7 +185,7 @@ The SDK tracks the published Prime OpenAPI definition in **apiSpec/prime-public- make fetch-spec ``` -Models, enums, per-operation request/response types, services, and `PrimeServiceFactory` are **hand-maintained** to match that spec. Example programs under `com.coinbase.examples` ship in the same module and compile with **`mvn compile`**—keep them in sync when the SDK API changes. +Models and enums under `com.coinbase.prime.model` are regenerated from that spec via `tools/model-generator`. Per-operation request/response types, services, and `PrimeServiceFactory` are hand-maintained. Typed error-code / subcode schemas from the spec are skipped for now. Example programs under `com.coinbase.examples` ship in the same module and compile with **`mvn compile`**—keep them in sync when the SDK API changes. ## Changelog diff --git a/apiSpec/prime-public-spec.yaml b/apiSpec/prime-public-spec.yaml index d21e61e0..df368bc9 100644 --- a/apiSpec/prime-public-spec.yaml +++ b/apiSpec/prime-public-spec.yaml @@ -8,6 +8,1368 @@ servers: - url: https://api.prime.coinbase.com/ tags: - name: PrimeRESTAPI +- name: Error Codes + description: Global reference of error codes and subcodes returned by the Prime + REST API. + x-error-codes: + - name: RESOURCE_NOT_FOUND + httpStatus: 404 + description: The requested resource could not be found. + - name: VALIDATION_ERROR + httpStatus: 400 + description: One or more request fields are invalid or incompatible. + - name: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: A required request field was not provided. + - name: FAILED_PRECONDITION + httpStatus: 400 + description: The request could not be completed because a required precondition + was not met. + - name: AUTHENTICATION_FAILED + httpStatus: 401 + description: The request could not be authenticated. Check that the credentials + supplied with the request are valid. + - name: PERMISSION_DENIED + httpStatus: 403 + description: You do not have permission to perform this action with the current + API key. + - name: RATE_LIMIT_EXCEEDED + httpStatus: 429 + description: You have exceeded the request rate limit. Reduce your request rate + and retry after a backoff period. + - name: INTERNAL_ERROR + httpStatus: 500 + description: "An unexpected internal error occurred while processing the request.\ + \ If this persists, contact support." + - name: NOT_IMPLEMENTED + httpStatus: 501 + description: This endpoint or operation is not yet implemented. + - name: SERVICE_UNAVAILABLE + httpStatus: 503 + description: The service is temporarily unavailable. Retry the request after a + backoff period. + x-subcodes: + - name: AUTH_AUTHORIZATION_FAILED + errorCode: INTERNAL_ERROR + httpStatus: 500 + description: "An unexpected error occurred while authorizing the request. If this\ + \ persists, contact support." + - name: AUTH_RESOURCE_ACCESS_DENIED + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: You do not have permission to access this resource with the current + API key. + - name: AUTH_RESOURCE_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: "No resource was found matching the request, or you do not have access\ + \ to it." + - name: AUTH_UNAUTHENTICATED + errorCode: AUTHENTICATION_FAILED + httpStatus: 401 + description: The request could not be authenticated. Check that the credentials + supplied with the request are valid. + - name: ENDPOINT_NOT_IMPLEMENTED + errorCode: NOT_IMPLEMENTED + httpStatus: 501 + description: This endpoint is not yet implemented. + - name: SERVER_MAINTENANCE_MODE_ACTIVE + errorCode: SERVICE_UNAVAILABLE + httpStatus: 503 + description: The API is currently in maintenance mode and not accepting this request. + Maintenance windows can be extended; check https://status.prime.coinbase.com + before retrying. + - name: SERVER_RATE_LIMIT_EXCEEDED + errorCode: RATE_LIMIT_EXCEEDED + httpStatus: 429 + description: You have exceeded the request rate limit for this endpoint. Reduce + your request rate and retry after a backoff period. + - name: MTLS_CERTIFICATE_REQUIRED + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: A valid client certificate was not presented with the request. + - name: MTLS_CERTIFICATE_REVOKED + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: The presented client certificate has been revoked. + - name: MTLS_CERTIFICATE_INVALID + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: The presented client certificate is not a valid identity for this + organization or environment. + - name: ENTITY_ID_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The entity_id field is required but was not provided. + - name: ENTITY_ID_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The entity_id is not a valid UUID. + - name: ENTITY_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: No entity was found matching the provided entity_id. + - name: ENTITY_BALANCES_LIMIT_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The limit parameter for entity balances is out of the valid range. + - name: ENTITY_BALANCES_INVALID_ARGUMENT + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The entity balances request contains an invalid cursor or filter. + - name: ENTITY_BALANCES_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: No balances were found for the requested entity. + - name: PORTFOLIO_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: No portfolio was found matching the provided portfolio_id. + - name: PORTFOLIO_ID_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The portfolio_id field is required but was not provided. + - name: PORTFOLIO_TYPE_UNSUPPORTED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The portfolio's type does not support this operation. + - name: PORTFOLIO_ID_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The portfolio_id is not a valid UUID. + - name: PORTFOLIO_USERS_CURSOR_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The pagination cursor does not match any user in the result set. + - name: PORTFOLIO_USERS_LIMIT_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The limit parameter for portfolio users is out of the valid range. + - name: PORTFOLIO_BALANCES_INVALID_ARGUMENT + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The portfolio balances request contains an invalid cursor or filter. + - name: PORTFOLIO_BALANCES_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: No balances were found for the requested portfolio. + - name: ALLOCATION_ID_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The allocation_id field is required but was not provided. + - name: ALLOCATION_ID_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The allocation_id field is not a valid UUID. + - name: ALLOCATION_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: "The requested allocation could not be found, either because it does\ + \ not exist or because the orders being allocated could not be retrieved." + - name: ALLOCATION_NETTING_ID_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The netting_id field is required but was not provided. + - name: ALLOCATION_NETTING_ID_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The netting_id field is not a valid UUID. + - name: ALLOCATION_REQUEST_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "One or more allocation request fields, such as product_id, order_ids,\ + \ allocation_legs, or size_type, are missing or invalid." + - name: ALLOCATION_START_DATE_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The start_date field is required when listing portfolio allocations. + - name: ALLOCATION_PRECONDITION_FAILED + errorCode: FAILED_PRECONDITION + httpStatus: 400 + description: The allocation could not be processed because buying power or account + information for the source or destination portfolio could not be retrieved. + - name: ALLOCATION_SOURCE_PORTFOLIO_ID_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The source_portfolio_id field is required to identify the portfolio + the allocation is coming from. + - name: ALLOCATION_DESTINATION_PORTFOLIO_ID_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: One or more entries in allocation_legs is missing a destination_portfolio_id. + - name: ALLOCATION_ORDERS_MIXED_SIDES + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The orders referenced in order_ids include both buy and sell sides. + All orders in a single allocation request must share the same side. + - name: ALLOCATION_ORDERS_MIXED_PRODUCTS + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The orders referenced in order_ids span more than one product. All + orders in a single allocation request must be for the same product_id. + - name: ALLOCATION_ORDER_NOT_TERMINAL + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "At least one order in order_ids has not reached a terminal state,\ + \ so it cannot be allocated until it finishes processing." + - name: ALLOCATION_ORDER_TOO_OLD + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: At least one order in order_ids exceeds the maximum age allowed for + allocation and can no longer be allocated. + - name: ALLOCATION_ORDER_ALREADY_ALLOCATED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: At least one order in order_ids has already been allocated and cannot + be allocated again. + - name: ALLOCATION_LIMIT_EXCEEDED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The limit field exceeds the maximum number of allocations that can + be returned in a single request. + - name: TRANSACTION_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: "The requested transaction could not be found for this portfolio,\ + \ or a transaction referenced in transaction_ids does not belong to it." + - name: TRANSACTION_TRAVEL_RULE_DATA_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: No travel rule data is available for the specified transaction. + - name: TRANSACTION_TYPE_UNSUPPORTED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The transaction does not support the requested operation, such as\ + \ submitting travel rule data for a transaction that is not a deposit." + - name: TRANSACTION_TRAVEL_RULE_PARTY_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The originator or beneficiary information provided for the travel + rule submission is missing or fails identity validation. + - name: TRANSACTION_ID_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The transaction_id field is required but was not provided. + - name: TRANSACTION_ID_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The transaction_id field is not a valid UUID. + - name: TRANSACTION_LIMIT_EXCEEDED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The limit field exceeds the maximum number of transactions that can + be returned in a single request. + - name: TRANSACTION_SERVICE_UNAVAILABLE + errorCode: SERVICE_UNAVAILABLE + httpStatus: 503 + description: The transaction data needed to fulfill this request is temporarily + unavailable. + - name: TRANSACTION_CURSOR_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The cursor field is not a valid pagination token. Omit it or use + the cursor value returned from a previous response. + - name: TRANSACTION_TRAVEL_RULE_STATUS_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The travel_rule_status filter contains a value that is not recognized. + - name: TRANSACTION_FILTER_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The combination of request filters is invalid, such as specifying\ + \ symbols together with the ONCHAIN_TRANSACTION type." + - name: TRANSACTION_IDS_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "One or more values in transaction_ids are missing, exceed the maximum\ + \ allowed count, or are not valid UUIDs." + - name: TRANSACTION_PARAMS_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "One or more request parameters, such as portfolio_id, transaction_ids,\ + \ cursor, or limit, failed validation." + - name: FINANCING_START_DATE_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The start_date field is required but was not provided. + - name: FINANCING_END_DATE_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The end_date field is required but was not provided. + - name: FINANCING_START_DATE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The start_date value is not a valid RFC 3339 timestamp. + - name: FINANCING_END_DATE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The end_date value is not a valid RFC 3339 timestamp. + - name: FINANCING_PORTFOLIO_MARGIN_NOT_ENABLED + errorCode: AUTHENTICATION_FAILED + httpStatus: 401 + description: "Portfolio margin is not enabled for the requested portfolio or entity,\ + \ so this financing endpoint cannot return data." + - name: FINANCING_ACCRUALS_INVALID_ARGUMENT + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "One or more parameters in the interest accruals request are invalid,\ + \ such as entity_id, portfolio_id, start_date, or end_date." + - name: FINANCING_ACCRUALS_DATE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The start_date to end_date range provided for interest accruals is + not valid for the requested portfolio. + - name: BUYING_POWER_BASE_CURRENCY_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The base_currency field is required but was not provided. + - name: BUYING_POWER_QUOTE_CURRENCY_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The quote_currency field is required but was not provided. + - name: BUYING_POWER_CURRENCY_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The requested currency pair is not valid or not supported for buying + power. + - name: BUYING_POWER_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: No buying power data was found for the requested portfolio and currency + pair. + - name: BUYING_POWER_PERMISSION_DENIED + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: You do not have permission to view buying power for the requested + portfolio and currency pair. + - name: BUYING_POWER_FAILED_PRECONDITION + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The buying power request failed a precondition, such as the portfolio\ + \ not being in a state that supports the requested currency pair." + - name: CROSS_MARGIN_NOT_ENABLED + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: Cross margin is not enabled for the requested entity. + - name: CROSS_MARGIN_INVALID_ARGUMENT + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The cross margin or funding settings request contains an invalid\ + \ argument, such as a portfolio_id, entity_id, or liquidation_id that does not\ + \ belong to the specified entity." + - name: CROSS_MARGIN_FAILED_PRECONDITION + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The cross margin or funding settings request failed a precondition,\ + \ such as the entity or portfolio not being in a state that supports the requested\ + \ operation." + - name: LOCATE_DATE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The locate_date value is not a valid YYYY-MM-DD date. + - name: LOCATE_REQUEST_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The stock locate request is invalid — for example, both locate_date\ + \ and locate_ids are missing, or the requested locate_date is in the past or\ + \ too far in the future." + - name: LOCATE_IDS_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: One or more values in locate_ids are not valid UUIDs. + - name: LOCATE_FAILED_PRECONDITION + errorCode: FAILED_PRECONDITION + httpStatus: 400 + description: "The stock locate request failed a precondition, such as no availability\ + \ for the requested currency or portfolio margin not being enabled." + - name: LOCATE_DATE_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The locate_date field is required but was not provided. + - name: MARGIN_SUMMARY_RANGE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The requested start_date to end_date range exceeds the maximum trailing + period of 3 months for margin summaries. + - name: FINANCING_SERVICE_UNAVAILABLE + errorCode: SERVICE_UNAVAILABLE + httpStatus: 503 + description: Financing data cannot be retrieved right now. This is a service-wide + condition unrelated to your request or account. + - name: MARGIN_CONVERSION_REQUEST_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "One or more parameters in the margin conversions request are invalid,\ + \ such as portfolio_id, start_date, or end_date." + - name: LOCATE_AVAILABILITY_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: No locate availability data was found for the requested entity and + date. + - name: MARGIN_INFORMATION_REQUEST_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "One or more parameters in the margin information request are invalid,\ + \ such as entity_id." + - name: MARGIN_CONVERSION_FAILED_PRECONDITION + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The margin conversions request failed a precondition, such as the\ + \ portfolio not being in a state that supports margin conversions." + - name: MARGIN_SUMMARY_FAILED_PRECONDITION + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The margin summaries request failed a precondition, such as the\ + \ entity not being in a state that supports margin summaries." + - name: FUNDING_SETTINGS_EXCESS_TARGET_AMOUNT_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The excess_funds_target_amount field is missing, is not a valid\ + \ decimal number, or is negative." + - name: FINANCING_WITHDRAWAL_POWER_INVALID_ARGUMENT + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "One or more parameters in the withdrawal power request are invalid,\ + \ such as portfolio_id or symbol." + - name: FINANCING_WITHDRAWAL_POWER_SYMBOL_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The symbol field is required but was not provided. + - name: FINANCING_PTC_DISABLED_FOR_PM_ENTITY + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: Post-trade credit information is not available for this portfolio + because its entity has portfolio margin enabled. + - name: FINANCING_FAILED_PRECONDITION + errorCode: FAILED_PRECONDITION + httpStatus: 400 + description: "The interest accruals request failed a precondition, such as an\ + \ invalid date range for the requested entity or portfolio." + - name: FINANCING_ACCRUALS_RANGE_EXCEEDED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The requested start_date to end_date range exceeds the maximum trailing + period of 12 months for interest accruals. + - name: TIERED_PRICING_EFFECTIVE_AT_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The effective_at value is not a valid RFC 3339 timestamp. + - name: TIERED_PRICING_REQUEST_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "One or more parameters in the tiered pricing request are invalid,\ + \ such as entity_id or effective_at." + - name: TIERED_PRICING_FAILED_PRECONDITION + errorCode: FAILED_PRECONDITION + httpStatus: 400 + description: "The tiered pricing request failed a precondition, such as the entity\ + \ not being enabled for tiered pricing." + - name: LOCATE_SYMBOL_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The symbol field is required but was not provided. + - name: LOCATE_AMOUNT_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The amount field is required but was not provided. + - name: REWARDS_API_FEATURE_DISABLED + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: The Rewards Rate API is not enabled for this entity or portfolio. + - name: REWARDS_REQUEST_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The rewards rate request is invalid. + - name: REWARDS_ENTITY_NOT_ENROLLED + errorCode: FAILED_PRECONDITION + httpStatus: 400 + description: The entity is not enrolled in Prime Rewards. + - name: CANDLE_REQUEST_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The request for candle data is invalid because a field, such as\ + \ start_time or end_time, is missing or malformed." + - name: CANDLE_TIME_RANGE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The requested start_time and end_time combination is not a valid + candle time range for the given granularity. + - name: PRODUCT_FUTURES_NOT_ENABLED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: Futures products are not enabled for the specified portfolio_id. + - name: PRODUCT_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: No products were found matching the requested criteria. + - name: PRODUCT_LIMIT_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The limit field must be a positive number. + - name: PRODUCT_OPTIONS_NOT_ENABLED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: Options products are not enabled for the specified portfolio_id. + - name: ACTIVITY_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: "The requested activity could not be found, either because the activity_id\ + \ does not exist or it does not belong to the specified portfolio_id." + - name: ACTIVITY_REQUEST_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The activity request contains an invalid argument, such as a malformed\ + \ filter or identifier." + - name: ACTIVITY_ACCESS_DENIED + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: You do not have permission to access the requested activity data + for the given entity or portfolio. + - name: ACTIVITY_CATEGORY_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The categories field contains a value that is not a supported activity + category. + - name: ACTIVITY_TIME_RANGE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The start_time or end_time field is not a valid RFC 3339 timestamp,\ + \ or end_time is earlier than start_time." + - name: ACTIVITY_STATUS_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The statuses field contains a value that is not a supported activity + status. + - name: ACTIVITY_PORTFOLIO_ID_MISMATCH + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The requested activity exists but does not belong to the portfolio_id + provided in the request. + - name: ASSET_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: "The requested asset could not be found, for example because the\ + \ currency symbol or asset identifier does not correspond to a supported asset." + - name: ASSET_REQUEST_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The asset lookup request contains an invalid argument, such as an\ + \ unsupported currency symbol or malformed asset identifier." + - name: ASSET_SERVICE_UNAVAILABLE + errorCode: SERVICE_UNAVAILABLE + httpStatus: 503 + description: Asset information could not be retrieved at this time. + - name: ADDRESS_BOOK_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: The requested address book entry could not be found for the given + portfolio_id. + - name: ADDRESS_BOOK_INVALID_ARGUMENT + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The address book request contains an invalid argument, such as a\ + \ malformed address or currency_symbol." + - name: ADDRESS_BOOK_FAILED_PRECONDITION + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The address book entry could not be created or retrieved because + a precondition was not met. + - name: ADDRESS_BOOK_ADDRESS_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The address field is required to create an address book entry. + - name: ADDRESS_BOOK_CURRENCY_SYMBOL_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The currency_symbol field is required to create an address book entry. + - name: ADDRESS_BOOK_NAME_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The name field is required to create an address book entry. + - name: PAYMENT_METHOD_ID_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The payment_method_id field is required but was not provided. + - name: PAYMENT_METHOD_ID_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The payment_method_id field is not a valid identifier. + - name: PAYMENT_METHOD_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: "The requested payment method could not be found, either because\ + \ the payment_method_id does not exist or it does not belong to the specified\ + \ entity_id." + - name: PAYMENT_METHOD_REQUEST_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The payment method request contains an invalid argument. + - name: ENTITY_POSITION_LIMIT_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The limit field must be greater than 0 and no greater than the maximum + allowed value. + - name: ENTITY_POSITION_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: No position data was found for the given entity or portfolio. + - name: ENTITY_POSITION_INVALID_ARGUMENT + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The position request contains an invalid argument, such as a malformed\ + \ portfolio_id or other filter." + - name: FCM_BALANCE_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: No futures balance data was found for the given entity_id. + - name: FCM_INVALID_ARGUMENT + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The request contained an invalid argument for this futures operation,\ + \ such as an unrecognized entity_id or an invalid amount or currency." + - name: FCM_EQUITY_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: No end-of-day equity data was found for the futures account associated + with the given entity_id. + - name: FCM_RISK_LIMITS_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: No risk limit data was found for the futures account associated with + the given entity_id. + - name: FCM_SWEEP_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: "No sweep request was found for the given entity_id, including when\ + \ there is no pending sweep available to cancel." + - name: FCM_SWEEP_CURRENCY_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The currency field is required when scheduling a futures sweep. + - name: FCM_TARGET_DERIVATIVES_EXCESS_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The target_derivatives_excess field must be a valid, non-negative\ + \ decimal value." + - name: FCM_ACCOUNT_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: No futures (FCM) account is configured for the given entity_id. + - name: API_KEY_INVALID_DURATION + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The duration_seconds field exceeds the maximum allowed rotation timespan + of 30 days. + - name: API_KEY_ALREADY_ROTATED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: A rotation has already been initiated for this API key. Only one + rotation may be pending at a time. + - name: MARKET_DATA_INVALID_ARGUMENT + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The request contained an invalid argument, such as an unrecognized\ + \ entity_id, cursor, or sort_direction." + - name: MARKET_DATA_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: No market data was found for the given entity_id. + - name: WALLET_ID_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The wallet_id field is required but was not included in the request. + - name: WALLET_ID_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The wallet_id field is not a valid UUID. + - name: WALLET_TYPE_NOT_SUPPORTED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The wallet's type does not support this operation. + - name: WALLET_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: "No wallet was found matching the provided wallet_id, or it does\ + \ not belong to the specified portfolio." + - name: WALLET_SERVICE_UNAVAILABLE + errorCode: SERVICE_UNAVAILABLE + httpStatus: 503 + description: "The service needed to fetch or process wallet data is temporarily\ + \ unavailable, or wallet balances could not be resolved." + - name: WALLET_DEPOSIT_TYPE_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The deposit_type field is required but was not provided. + - name: WALLET_METADATA_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The metadata field is not a valid JSON object, or a nested value\ + \ within it is not a JSON object with string values." + - name: WALLET_NETWORK_REQUIRED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: A network must be specified for crypto deposits because the wallet + does not have a default network configured. + - name: WALLET_NOT_DEPOSITABLE + errorCode: FAILED_PRECONDITION + httpStatus: 400 + description: The wallet cannot accept deposits. + - name: WALLET_DEPOSIT_REQUEST_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The deposit request is invalid or not supported for this wallet. + - name: WALLET_REQUEST_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The request contains an invalid argument for this wallet operation. + - name: WALLET_ONCHAIN_SYMBOLS_NOT_ALLOWED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The symbols filter cannot be set when the wallet type is ONCHAIN. + - name: WALLET_FAILED_PRECONDITION + errorCode: FAILED_PRECONDITION + httpStatus: 400 + description: "The wallet request failed a precondition, such as the wallet not\ + \ being able to accept the requested action." + - name: WALLET_NETWORK_ID_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The network_id field is required but was not provided. + - name: WALLET_NETWORK_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The network identifier is malformed. It must be in the format {network_id}-{network_type}\ + \ (e.g. base-mainnet), with no spaces, and each part no longer than 20 characters." + - name: WALLET_ONCHAIN_SETUP_UNAVAILABLE + errorCode: FAILED_PRECONDITION + httpStatus: 400 + description: "Onchain wallet setup for this network family has not been completed\ + \ yet, and must be done through the Prime web application before creating this\ + \ wallet via the API." + - name: WALLET_NAME_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The name field is required but was not provided. + - name: WALLET_SYMBOL_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The symbol field is required for wallet types other than ONCHAIN. + - name: WALLET_NETWORK_FAMILY_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The network_family field is required when wallet_type is ONCHAIN. + - name: WALLET_NETWORK_FAMILY_NOT_ALLOWED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The network_family field must not be set when wallet_type is not + ONCHAIN. + - name: WALLET_BALANCES_LIMIT_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The limit field is outside the allowed range for this request. + - name: WALLET_VISIBILITY_STATUSES_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The visibility_statuses filter contains more values than are allowed. + - name: WALLET_NETWORK_TYPE_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The type field on the network object is required but was not provided. + - name: WALLET_NETWORK_TYPE_NOT_SUPPORTED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The network type portion of network_id is not a supported value for + this environment. + - name: WALLET_EXTERNAL_ID_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The external_id field is not valid UTF-8, or exceeds 255 bytes." + - name: WALLET_AMOUNT_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The amount field is required but was not provided. + - name: WALLET_IDEMPOTENCY_KEY_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The idempotency_key field is required but was not provided. + - name: WALLET_IDEMPOTENCY_KEY_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The idempotency_key field is not a valid UUID. + - name: WALLET_CURRENCY_SYMBOL_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The currency_symbol field is required but was not provided. + - name: WALLET_TRANSFER_DESTINATION_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The destination wallet ID is required for an internal wallet transfer. + - name: WALLET_TRANSFER_DESTINATION_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The destination wallet ID is not a valid UUID, or is the same as\ + \ the source wallet_id." + - name: WALLET_PORTFOLIO_CREDIT_FROZEN + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: "The portfolio's credit is frozen, preventing this transaction. Contact\ + \ support to resolve this." + - name: WALLET_DESTINATION_TYPE_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The destination_type field is required but was not provided. + - name: WALLET_DESTINATION_TYPE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The destination_type field is not a supported value for this operation. + - name: WALLET_COUNTERPARTY_ID_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The counterparty_id field is required when destination_type is a + counterparty destination. + - name: ORDER_ID_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The order_id field is missing from the request. + - name: ORDER_ID_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The order_id provided is not a valid UUID. + - name: ORDER_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: No order was found matching the provided order_id. + - name: ORDER_REQUEST_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The order request failed validation, such as an invalid stp_id,\ + \ price, size, or commission_rate." + - name: ORDER_STATUS_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The requested order_status values include non-terminal statuses\ + \ (such as OPEN or PENDING), which this endpoint does not support. Use the Open\ + \ Orders endpoint, or the Websocket/FIX API, to retrieve non-terminal orders." + - name: ORDER_LIMIT_EXCEEDED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The query would return more results than this endpoint allows. Narrow + the query or use the Websocket API for a full stream of results. + - name: ORDER_FILLS_LIMIT_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The limit field for a fills query is outside the allowed range of + 1 to 3000. + - name: ORDER_FILLS_START_DATE_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The start_date field is required for this fills query. + - name: ORDER_FILLS_START_DATE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The start_date field is not a valid timestamp. + - name: ORDER_FILLS_END_DATE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The end_date field is not a valid timestamp. + - name: ORDER_TYPE_BLOCK_UNSUPPORTED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: Orders of type BLOCK cannot be created or previewed through this + endpoint. + - name: ORDER_TYPE_RFQ_UNSUPPORTED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: Orders of type RFQ cannot be created or previewed through this endpoint. + Use the RFQ (/rfq) and accept quote (/accept_quote) endpoints instead. + - name: ORDER_FOK_NOT_ENABLED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The FILL_OR_KILL time-in-force is not enabled for this portfolio. + - name: ORDER_STOP_LIMIT_NOT_ENABLED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: STOP_LIMIT orders are not enabled for this portfolio. + - name: ORDER_PEG_NOT_ENABLED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: PEG orders are not enabled for this portfolio. + - name: ORDER_DUPLICATE_CLIENT_ORDER_ID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: An order with this client_order_id already exists. Use a unique client_order_id + for each new order. + - name: ORDER_REJECTED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The order was rejected during processing and was not placed. + - name: ORDER_PRODUCT_ID_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The product_id is not a valid or currently tradable product for this + request. + - name: ORDER_TYPE_NOT_ALLOWED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The requested order type is not allowed on this endpoint (for example,\ + \ BLOCK or RFQ orders submitted via CreateOrder)." + - name: ORDER_TIF_NOT_ENABLED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The requested time_in_force (such as FILL_OR_KILL) is not enabled + for this portfolio. + - name: ORDER_FAILED_PRECONDITION + errorCode: FAILED_PRECONDITION + httpStatus: 400 + description: "The order request could not be completed because a required precondition\ + \ was not met, for example an account needed to process the order could not\ + \ be found or created." + - name: ORDER_SERVICE_UNAVAILABLE + errorCode: SERVICE_UNAVAILABLE + httpStatus: 503 + description: The trading service needed to process this order request is temporarily + unavailable. + - name: ORDER_RFQ_NOT_ENABLED + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: This portfolio is not allowed to submit RFQ (request-for-quote) requests. + - name: ORDER_CANCEL_NOT_ALLOWED + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: This order is not allowed to be canceled. + - name: ORDER_FULLY_FILLED + errorCode: FAILED_PRECONDITION + httpStatus: 400 + description: The order is fully filled and can no longer be canceled. + - name: ORDER_BEING_REPLACED + errorCode: FAILED_PRECONDITION + httpStatus: 400 + description: The order is currently being replaced (edited) and cannot be canceled + while that is in progress. + - name: ORDER_CANCEL_DUPLICATE + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: A cancel request for this order has already been submitted and is + still being processed. + - name: ORDER_SESSION_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The FCM trading session associated with this order is not valid for + the requested cancel operation. + - name: ORDER_PRODUCT_ID_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The product_id field is required for this request. + - name: ORDER_CLIENT_ORDER_ID_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The client_order_id field is required to accept a quote. + - name: ORDER_QUOTE_ID_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The quote_id field is required to accept a quote. + - name: ORDER_SIDE_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The side field is required and was not provided. + - name: ORDER_RESOURCE_NOT_FOUND + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: No order matching the given order_id was found for this portfolio. + - name: ORDER_SIDE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The side field is not a supported order side. Specify BUY or SELL. + - name: ORDER_SIZE_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The order size is missing. Specify either base_quantity or quote_value. + - name: ORDER_SIZE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The order size is invalid, either because it could not be parsed\ + \ as a number or because both base_quantity and quote_value were specified." + - name: ORDER_DISPLAY_SIZE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The display size is invalid, either because both display size fields\ + \ were specified or because the display size field does not match the currency\ + \ of the order size." + - name: ORDER_PRICE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The order price is invalid, either because limit_price could not\ + \ be parsed as a number or because a limit price was supplied for a market order." + - name: ORDER_STOP_PRICE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The stop_price for a STOP_LIMIT order is missing or could not be + parsed as a number. + - name: ORDER_TIME_IN_FORCE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The time_in_force value is not compatible with the requested order + type or post-only flag. + - name: ORDER_TIME_RANGE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The order is missing a start_time or end_time required for its order + type or time-in-force. + - name: ORDER_PEG_OFFSET_TYPE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The peg_offset_type is not a supported value for a PEG order. + - name: ORDER_CLIENT_QUOTE_ID_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The client_quote_id field is required for a quote request. + - name: ORDER_QUOTE_DURATION_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The quote_duration_ms field is outside the allowed range. + - name: ORDER_RFQ_SIQ_NOT_ENABLED + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: Size-in-quote RFQ requests are not enabled for this portfolio. + - name: CONVERSION_FEE_FEATURE_DISABLED + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: The conversion fees API is not enabled for this entity. + - name: CONVERSION_FEE_NOT_ENABLED_FOR_ORG + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: Stablecoin conversion fee configuration has not been set up for this + entity's owning organization. + - name: CONVERSION_DESTINATION_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The destination field is not a valid UUID. + - name: CONVERSION_IDEMPOTENCY_KEY_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The idempotency_key field is not a valid UUID. + - name: CONVERSION_AMOUNT_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The amount field is not a valid decimal number. + - name: CONVERSION_SOURCE_SYMBOL_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The source_symbol field is required but was not provided. + - name: CONVERSION_DESTINATION_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The destination field is required but was not provided. + - name: CONVERSION_REQUEST_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The conversion request was rejected as invalid, for example due\ + \ to an unsupported asset pair or a duplicate transaction." + - name: CONVERSION_FAILED_PRECONDITION + errorCode: FAILED_PRECONDITION + httpStatus: 400 + description: "The conversion could not be completed because a required condition\ + \ was not met, such as insufficient available balance in the source wallet." + - name: CONVERSION_PERMISSION_DENIED + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: You do not have permission to convert funds using the specified wallet_id + or portfolio. + - name: CONVERSION_WALLET_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: "The wallet identified by wallet_id or destination could not be found,\ + \ or does not belong to the specified portfolio_id." + - name: STAKING_REQUEST_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The staking, unstaking, or claim-rewards request contained an invalid\ + \ parameter, such as an unsupported amount, address, option, or allocation." + - name: STAKING_CURRENCY_UNSUPPORTED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The requested currency or wallet's asset is not supported for this + staking operation. + - name: STAKING_NOT_ENABLED + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: Wallet-level staking has not been enabled for this portfolio. + - name: STAKING_PRECONDITION_FAILED + errorCode: FAILED_PRECONDITION + httpStatus: 400 + description: "The requested staking, unstaking, or claim-rewards action is not\ + \ currently allowed for this wallet." + - name: STAKING_SERVICE_UNAVAILABLE + errorCode: SERVICE_UNAVAILABLE + httpStatus: 503 + description: The staking service could not process the request after repeated + attempts. + - name: STAKING_VALIDATOR_ALLOCATIONS_NOT_ENABLED + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: The validator_allocations field is not enabled for this portfolio. + - name: STAKING_AMOUNT_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The amount field is required but was not provided. + - name: STAKING_AMOUNT_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The amount field is not a valid positive decimal number, or does\ + \ not match the sum of the provided validator allocation amounts." + - name: STAKING_INSUFFICIENT_BALANCE + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The wallet has no stakeable, unbondable, or claimable balance available\ + \ for this operation." + - name: STAKING_WALLET_OR_PORTFOLIO_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The wallet_id does not exist, is not a valid identifier, or does\ + \ not belong to the given portfolio_id." + - name: STAKING_AMOUNT_EXCEEDS_UNBONDABLE_BALANCE + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The requested unstake amount is greater than the wallet's, validator's,\ + \ or portfolio's available unbondable balance." + - name: STAKING_WALLET_COLD_ADDRESS_NOT_FOUND + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The wallet does not have a cold address on record, which is required\ + \ to complete this staking operation." + - name: STAKING_NO_VALIDATORS_AVAILABLE + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: No Coinbase-operated validators are currently available for the requested + currency. + - name: STAKING_END_DATE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The end_date field is not a valid date in YYYY-MM-DD format. + - name: STAKING_DELEGATED_ADDRESS_NOT_FOUND + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The wallet has no delegated-to address on record, which is required\ + \ for this currency's staking flow." + - name: STAKING_CUSTOM_AMOUNT_NOT_SUPPORTED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: A custom amount cannot be specified for this currency and action + combination. + - name: STAKING_VALIDATOR_ADDRESS_NOT_SUPPORTED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: A custom validator_address cannot be specified for this currency. + - name: STAKING_VALIDATOR_ALLOCATIONS_UNSUPPORTED_CURRENCY + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The validator_allocations field is only supported for ETH unstaking. + - name: STAKING_VALIDATOR_ALLOCATION_INCOMPLETE + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: Each entry in validator_allocations must include both a validator_address + and an amount. + - name: STAKING_VALIDATOR_NOT_ELIGIBLE + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The specified validator_address does not belong to this wallet or + is not eligible for validator allocations. + - name: STAKING_DESTINATION_ADDRESS_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The resolved destination address for this staking, unstaking, or\ + \ claim-rewards action is empty or malformed." + - name: STAKING_ACTION_TYPE_UNSUPPORTED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The action_type field is not a supported staking action (initiate,\ + \ unstake, or claim rewards)." + - name: STAKING_UNSTAKE_NOT_AVAILABLE + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: A full unstake is not currently available for this wallet. + - name: STAKING_NO_ELIGIBLE_WALLETS + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: No wallet eligible for staking or unstaking was found for the given + portfolio_id and currency_symbol. + - name: STAKING_BALANCE_NOT_FOUND + errorCode: FAILED_PRECONDITION + httpStatus: 400 + description: No balance could be found for the requested currency_symbol on this + portfolio. + - name: STAKING_AMOUNT_EXCEEDS_BONDABLE_BALANCE + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The requested amount to stake exceeds the portfolio's available bondable + balance for the given currency. + - name: STAKING_PROVIDER_UNSTAKE_NOT_ENABLED + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: Provider-level unstaking (unstaking all validators for a given validator_provider) + is not enabled for this portfolio. + - name: STAKING_PROVIDER_NO_UNBONDABLE_BALANCE + errorCode: FAILED_PRECONDITION + httpStatus: 400 + description: No unbondable balance is currently available for the specified validator_provider + on this portfolio and currency. + - name: STAKING_IDEMPOTENCY_KEY_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The idempotency_key field is required for this staking or unstaking + operation. + - name: STAKING_IDEMPOTENCY_KEY_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The idempotency_key provided is not a valid UUID. + - name: STAKING_CURRENCY_SYMBOL_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The currency_symbol field is required for this staking or unstaking + operation. + - name: STAKING_AMOUNT_VALIDATOR_PROVIDER_CONFLICT + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The amount and validator_provider fields are mutually exclusive; + specify at most one. + - name: STAKING_VALIDATOR_PROVIDER_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The validator_provider field is required for a provider-scoped unstake + request. + - name: STAKING_VALIDATOR_PROVIDER_NOT_SUPPORTED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The validator_provider value provided is not a supported provider. + - name: COMMISSION_PRODUCT_ID_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The product_id is not a recognized trading pair. + - name: COMMISSION_TRADING_NOT_ENABLED + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The portfolio_id belongs to a portfolio that is not enabled for\ + \ trading, so a trading commission rate cannot be calculated for it." + - name: ADVANCED_TRANSFER_NOT_ENABLED + errorCode: PERMISSION_DENIED + httpStatus: 403 + description: "Advanced Transfers are not enabled for this portfolio, or the specific\ + \ transfer configuration requested is not enabled for this portfolio." + - name: ADVANCED_TRANSFER_REQUEST_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The advanced transfer request is malformed or fails validation,\ + \ such as a missing portfolio_id, a missing or unsupported transfer type, or\ + \ an invalid fund movement." + - name: ADVANCED_TRANSFER_ID_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The advanced_transfer_id provided does not correspond to a transfer + that can be cancelled. + - name: ADVANCED_TRANSFER_CANCEL_PRECONDITION_FAILED + errorCode: FAILED_PRECONDITION + httpStatus: 400 + description: The advanced transfer cannot be cancelled because it is no longer + in a cancellable state. + - name: ADVANCED_TRANSFER_PRECONDITION_FAILED + errorCode: FAILED_PRECONDITION + httpStatus: 400 + description: "The advanced transfer cannot be processed because a precondition\ + \ was not met, such as no wallet being available in the portfolio for one of\ + \ the fund movement currencies." + - name: ADVANCED_TRANSFER_SERVICE_UNAVAILABLE + errorCode: SERVICE_UNAVAILABLE + httpStatus: 503 + description: The service needed to process this advanced transfer request is currently + unavailable or has reached a rate limit. + - name: ADVANCED_TRANSFER_DATE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The settlement_date, settlement_time, or trade_date field is not\ + \ in the expected format." + - name: ADVANCED_TRANSFER_NOT_FOUND + errorCode: RESOURCE_NOT_FOUND + httpStatus: 404 + description: A resource referenced by the advanced transfer request could not + be found. + - name: ADVANCED_TRANSFER_TOO_MANY_FUND_MOVEMENTS + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The advanced transfer includes more fund movements than the maximum + number of legs allowed per transfer. + - name: ADVANCED_TRANSFER_COUNTERPARTY_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The fund movements in this advanced transfer do not all settle against + the same counterparty; all legs must share a single counterparty. + - name: ADVANCED_TRANSFER_AMOUNT_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The amount on one or more fund movements is not a valid positive + decimal value. + - name: ADVANCED_TRANSFER_COUNTERPARTY_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: One or more fund movements is missing its counterparty identifier. + - name: ONCHAIN_TRANSACTION_REQUEST_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The onchain transaction request failed validation because of an\ + \ invalid parameter, an unsupported wallet type, or a malformed evm_params value." + - name: ONCHAIN_ADDRESS_GROUP_REQUEST_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The onchain address group create, update, or delete request contained\ + \ invalid data and could not be processed." + - name: ONCHAIN_TRANSACTION_RAW_UNSIGNED_TXN_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The raw_unsigned_txn field is required but was not provided. + - name: ONCHAIN_TRANSACTION_RAW_UNSIGNED_TXN_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The raw_unsigned_txn field is not a valid hex-encoded string. + - name: ONCHAIN_TRANSACTION_EVM_PARAMS_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The evm_params field is required when the destination wallet is on + an EVM-based network. + - name: ONCHAIN_TRANSACTION_EVM_PARAMS_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The evm_params field was provided but the destination wallet is\ + \ on a non-EVM network, such as Solana, where EVM-specific parameters are not\ + \ supported." + - name: ONCHAIN_TRANSACTION_REPLACED_TRANSACTION_ID_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The replaced_transaction_id field is not a valid transaction identifier. + - name: ONCHAIN_TRANSACTION_DISABLE_DYNAMIC_NONCE_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: The disable_dynamic_nonce field must be false when replaced_transaction_id + is set to replace an existing transaction. + - name: ONCHAIN_TRANSACTION_CHAIN_ID_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The chain_id field is required within evm_params for transactions + on EVM-based networks. + - name: ONCHAIN_TRANSACTION_CHAIN_ID_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The chain_id field is not a valid integer, or it must be 1 when\ + \ using the Flashbots RPC endpoint." + - name: ONCHAIN_TRANSACTION_NETWORK_NAME_REQUIRED + errorCode: REQUIRED_FIELD_MISSING + httpStatus: 400 + description: The network_name field is required when submitting a transaction + through a custom RPC endpoint. + - name: ONCHAIN_TRANSACTION_RPC_URL_INVALID + errorCode: VALIDATION_ERROR + httpStatus: 400 + description: "The custom RPC endpoint provided cannot be used, either because\ + \ the wallet is not on an EVM-based network or because the call to that endpoint\ + \ failed." paths: /v1/activities/{activity_id}: get: @@ -31,6 +1393,38 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetActivityResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetActivityForbiddenErrorResponse' + "404": + description: The requested activity was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetActivityNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/allocations: post: tags: @@ -51,6 +1445,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.CreateAllocationResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateAllocationBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateAllocationForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateAllocationNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/allocations/net: post: @@ -72,7 +1504,145 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.CreateNetAllocationResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateNetAllocationBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateNetAllocationForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateNetAllocationNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' + x-codegen-request-body-name: body + /v1/api-keys/rotate: + post: + tags: + - API Key Management + summary: Rotate API Key + description: Generates a new API key with the same configuration as the invoking + key. + operationId: PrimeRESTAPI_RotateAPIKey + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.RotateAPIKeyRequest' + required: true + responses: + "200": + description: A successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.RotateAPIKeyResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.RotateAPIKeyBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.RotateAPIKeyForbiddenErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "500": + description: Internal server error. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.InternalServerErrorResponse' + "501": + description: This endpoint is not implemented. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.NotImplementedErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body + /v1/conversion/fees: + get: + tags: + - Financing + summary: Get Conversion Fees + description: "Get your organization's stablecoin conversion fee tiers and month-to-date\ + \ net conversion volume per currency. The organization is resolved from the\ + \ authenticated API key, which must be organization-scoped." + operationId: PrimeRESTAPI_GetConversionFees + responses: + "200": + description: A successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetConversionFeesResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetConversionFeesForbiddenErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "500": + description: Internal server error. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.InternalServerErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/accruals: get: tags: @@ -110,6 +1680,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetInterestAccrualsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetInterestAccrualsBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetInterestAccrualsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetInterestAccrualsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/activities: get: tags: @@ -154,7 +1762,6 @@ paths: items: type: string enum: - - OTHER_ACTIVITY_CATEGORY - ACTIVITY_CATEGORY_ORDER - ACTIVITY_CATEGORY_TRANSACTION - ACTIVITY_CATEGORY_ACCOUNT @@ -170,7 +1777,6 @@ paths: items: type: string enum: - - OTHER_ACTIVITY_STATUS - ACTIVITY_STATUS_CANCELLED - ACTIVITY_STATUS_PROCESSING - ACTIVITY_STATUS_COMPLETED @@ -220,6 +1826,43 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityActivitiesResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityActivitiesBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityActivitiesForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityActivitiesNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "500": + description: Internal server error. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.InternalServerErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/aggregate_positions: get: tags: @@ -252,6 +1895,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.ListAggregateEntityPositionsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAggregateEntityPositionsBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAggregateEntityPositionsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAggregateEntityPositionsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/assets: get: tags: @@ -273,6 +1947,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityAssetsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityAssetsBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityAssetsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityAssetsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/balances: get: tags: @@ -329,6 +2034,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityBalancesResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityBalancesBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityBalancesForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityBalancesNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/cross_margin: get: tags: @@ -350,71 +2086,291 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginOverviewResponse' - /v1/entities/{entity_id}/cross_margin/risk_parameters: + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginOverviewBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginOverviewForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginOverviewNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' + /v1/entities/{entity_id}/cross_margin/liquidation: get: tags: - Financing - summary: Get Cross Margin Risk Parameters - description: Gets the current Cross Margin (XM) risk parameters for an entity. - operationId: PrimeRESTAPI_GetCrossMarginRiskParameters + summary: Get Cross Margin Liquidation + description: Gets detailed liquidation data for an XM customer. Returns the + active or most recent liquidation by default. + operationId: PrimeRESTAPI_GetXMLiquidation parameters: - name: entity_id in: path - description: XM customer Prime Entity ID. + description: XM customer Prime Entity ID required: true schema: type: string + - name: liquidation_id + in: query + description: "Financing liquidation UUID. If omitted, returns the active or\ + \ most recent liquidation." + schema: + type: string responses: "200": description: A successful response. content: application/json: schema: - $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginRiskParametersResponse' - /v1/entities/{entity_id}/funding_settings: - post: + $ref: '#/components/schemas/coinbase.public_rest_api.GetXMLiquidationResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetXMLiquidationBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetXMLiquidationForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetXMLiquidationNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' + /v1/entities/{entity_id}/cross_margin/liquidations: + get: tags: - Financing - summary: Update Funding Settings - description: Sets FCM funding configuration for the entity and submits the desired - configuration to Prime API for approval. - operationId: PrimeRESTAPI_UpdateFundingSettings + summary: List Cross Margin Liquidations + description: Lists historical liquidation records for an XM customer + operationId: PrimeRESTAPI_ListXMLiquidations parameters: - name: entity_id in: path - description: Prime Entity ID + description: XM customer Prime Entity ID required: true schema: type: string - requestBody: - content: - application/json: - schema: - required: - - automatic_conversion_enabled - - automatic_excess_return_enabled - - automatic_loan_enabled - - designated_funding_portfolio_id - - excess_funds_target_amount - type: object - properties: - designated_funding_portfolio_id: - type: string - description: Set the Derivatives Funding Portfolio that will be - used to fund FCM margin calls and receive excess margin sweeps. - Only one portfolio per entity. - example: a0724c0c-0f9e-4525-baf4-1aa8fce77eb2 - automatic_conversion_enabled: - type: boolean - description: "When true, USDC in your Derivatives Funding Portfolio\ - \ will be converted to USD to meet FCM margin calls (Auto-Convert\ - \ USDC)." + - name: cursor + in: query + description: Cursor for pagination + schema: + type: string + - name: limit + in: query + description: Number of results to return per page + schema: + type: integer + format: int32 + - name: sort_direction + in: query + description: Sort direction for results + schema: + type: string + default: DESC + enum: + - DESC + - ASC + - name: status + in: query + description: |- + Filter results by liquidation status + + - XM_LIQUIDATION_STATUS_PRE_LIQUIDATION: Liquidation is in the pre-liquidation phase + - XM_LIQUIDATION_STATUS_LIQUIDATING: Liquidation is actively in progress + - XM_LIQUIDATION_STATUS_LIQUIDATED: Liquidation has completed successfully + - XM_LIQUIDATION_STATUS_CANCELED: Liquidation was canceled + - XM_LIQUIDATION_STATUS_FAILED: Liquidation failed + schema: + type: string + enum: + - XM_LIQUIDATION_STATUS_PRE_LIQUIDATION + - XM_LIQUIDATION_STATUS_LIQUIDATING + - XM_LIQUIDATION_STATUS_LIQUIDATED + - XM_LIQUIDATION_STATUS_CANCELED + - XM_LIQUIDATION_STATUS_FAILED + - name: start_time + in: query + description: Filter results to liquidations created at or after this time + schema: + type: string + format: date-time + - name: end_time + in: query + description: Filter results to liquidations created at or before this time + schema: + type: string + format: date-time + responses: + "200": + description: A successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListXMLiquidationsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListXMLiquidationsBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListXMLiquidationsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListXMLiquidationsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' + /v1/entities/{entity_id}/cross_margin/risk_parameters: + get: + tags: + - Financing + summary: Get Cross Margin Risk Parameters + description: Gets the current Cross Margin (XM) risk parameters for an entity. + operationId: PrimeRESTAPI_GetCrossMarginRiskParameters + parameters: + - name: entity_id + in: path + description: XM customer Prime Entity ID. + required: true + schema: + type: string + responses: + "200": + description: A successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginRiskParametersResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginRiskParametersBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginRiskParametersForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginRiskParametersNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' + /v1/entities/{entity_id}/funding_settings: + post: + tags: + - Financing + summary: Update Funding Settings + description: Sets FCM funding configuration for the entity and submits the desired + configuration to Prime API for approval. + operationId: PrimeRESTAPI_UpdateFundingSettings + parameters: + - name: entity_id + in: path + description: Prime Entity ID + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + required: + - automatic_conversion_enabled + - automatic_excess_return_enabled + - designated_funding_portfolio_id + - excess_funds_target_amount + type: object + properties: + designated_funding_portfolio_id: + type: string + description: Set the Derivatives Funding Portfolio that will be + used to fund FCM margin calls and receive excess margin sweeps. + Only one portfolio per entity. + example: a0724c0c-0f9e-4525-baf4-1aa8fce77eb2 + automatic_conversion_enabled: + type: boolean + description: "When true, USDC in your Derivatives Funding Portfolio\ + \ will be converted to USD to meet FCM margin calls (Auto-Convert\ + \ USDC)." automatic_loan_enabled: type: boolean - description: "When true, Coinbase affiliates may initiate loans\ - \ on your behalf to meet FCM margin calls, per your Lending agreement.\ - \ Available to Portfolio Margin or Cross Margin clients only.\ - \ (Auto-Initiate Loans)" + description: "Deprecated: Auto-Initiate Loans is now always enabled\ + \ for Financing customers. Any value sent for this field is ignored." automatic_excess_return_enabled: type: boolean description: "When true, any FCM account balance above your margin\ @@ -434,6 +2390,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.UpdateFundingSettingsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UpdateFundingSettingsBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UpdateFundingSettingsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UpdateFundingSettingsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/entities/{entity_id}/futures/auto_sweep: post: @@ -469,6 +2463,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.SetAutoSweepResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.SetAutoSweepBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.SetAutoSweepForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.SetAutoSweepNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/entities/{entity_id}/futures/balance_summary: get: @@ -491,6 +2516,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmBalanceResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmBalanceBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmBalanceForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmBalanceNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/futures/equity: get: tags: @@ -512,6 +2568,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmEquityResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmEquityBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmEquityForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmEquityNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/futures/margin_call_details: get: tags: @@ -533,6 +2620,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmMarginCallDetailsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmMarginCallDetailsBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmMarginCallDetailsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmMarginCallDetailsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/futures/positions: get: tags: @@ -559,6 +2677,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetPositionsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPositionsBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPositionsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPositionsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/futures/risk_limits: get: tags: @@ -580,6 +2736,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmRiskLimitsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmRiskLimitsBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmRiskLimitsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmRiskLimitsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/futures/settings: get: tags: @@ -601,6 +2788,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmSettingsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmSettingsBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmSettingsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmSettingsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' post: tags: - Futures @@ -633,6 +2851,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.SetFcmSettingsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.SetFcmSettingsBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.SetFcmSettingsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.SetFcmSettingsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/entities/{entity_id}/futures/sweeps: get: @@ -656,6 +2905,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetFuturesSweepsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFuturesSweepsBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFuturesSweepsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFuturesSweepsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' post: tags: - Futures @@ -694,6 +2974,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.ScheduleFuturesSweepResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ScheduleFuturesSweepBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ScheduleFuturesSweepForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ScheduleFuturesSweepNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body delete: tags: @@ -717,6 +3028,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.CancelFuturesSweepResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelFuturesSweepBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelFuturesSweepForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelFuturesSweepNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/invoices: get: tags: @@ -741,7 +3083,6 @@ paths: items: type: string enum: - - INVOICE_STATE_UNSPECIFIED - INVOICE_STATE_IMPORTED - INVOICE_STATE_BILLED - INVOICE_STATE_PARTIALLY_PAID @@ -778,6 +3119,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetInvoicesResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetInvoicesBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetInvoicesForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetInvoicesNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/locates_availability: get: tags: @@ -810,6 +3182,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetLocateAvailabilitiesResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetLocateAvailabilitiesBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetLocateAvailabilitiesForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetLocateAvailabilitiesNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/margin: get: tags: @@ -832,6 +3235,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginInformationResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginInformationBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginInformationForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginInformationNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/margin_summaries: get: tags: @@ -864,6 +3305,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginSummariesResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginSummariesBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginSummariesForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginSummariesNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/market_data: get: tags: @@ -906,6 +3385,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetMarketDataResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarketDataBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarketDataForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarketDataNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/payment-methods: get: tags: @@ -926,6 +3436,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodsBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/payment-methods/{payment_method_id}: get: tags: @@ -951,6 +3492,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodDetailsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodDetailsBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodDetailsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodDetailsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/positions: get: tags: @@ -983,6 +3555,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityPositionsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityPositionsBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityPositionsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityPositionsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/tf_obligations: get: tags: @@ -1004,6 +3607,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.ListTFObligationsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListTFObligationsBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListTFObligationsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListTFObligationsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/tf_tiered_fees: get: tags: @@ -1031,6 +3665,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetTFTieredPricingFeesResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTFTieredPricingFeesBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTFTieredPricingFeesForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTFTieredPricingFeesNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/entities/{entity_id}/users: get: tags: @@ -1072,6 +3737,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityUsersResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityUsersBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityUsersForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityUsersNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/financing/eligible-assets: get: tags: @@ -1101,6 +3797,38 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfoliosResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfoliosForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfoliosNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}: get: tags: @@ -1122,16 +3850,47 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioResponse' - /v1/portfolios/{portfolio_id}/accept_quote: - post: - tags: - - Orders - summary: Accept Quote - description: |- - Accepts the quote received by the quote request and creates an order with the provided quote ID. - - Always required: portfolio_id, product_id, side, quote_id, client_quote_id. - operationId: PrimeRESTAPI_AcceptQuote + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' + /v1/portfolios/{portfolio_id}/accept_quote: + post: + tags: + - Orders + summary: Accept Quote + description: |- + Accepts the quote received by the quote request and creates an order with the provided quote ID. + + Always required: portfolio_id, product_id, side, quote_id, client_quote_id. + operationId: PrimeRESTAPI_AcceptQuote parameters: - name: portfolio_id in: path @@ -1166,7 +3925,6 @@ paths: description: A quote id that was returned from the quote request example: f69a20b1-4ac4-420e-90b5-814a12565bfa settl_currency: - title: "next: 7" type: string required: true responses: @@ -1176,6 +3934,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.AcceptQuoteResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.AcceptQuoteBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.AcceptQuoteForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.AcceptQuoteNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/accruals: get: @@ -1209,6 +3998,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioInterestAccrualsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioInterestAccrualsBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioInterestAccrualsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioInterestAccrualsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/activities: get: tags: @@ -1243,7 +4070,6 @@ paths: items: type: string enum: - - OTHER_ACTIVITY_CATEGORY - ACTIVITY_CATEGORY_ORDER - ACTIVITY_CATEGORY_TRANSACTION - ACTIVITY_CATEGORY_ACCOUNT @@ -1259,7 +4085,6 @@ paths: items: type: string enum: - - OTHER_ACTIVITY_STATUS - ACTIVITY_STATUS_CANCELLED - ACTIVITY_STATUS_PROCESSING - ACTIVITY_STATUS_COMPLETED @@ -1309,6 +4134,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivitiesResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivitiesBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivitiesForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivitiesNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/activities/{activity_id}: get: tags: @@ -1336,6 +4199,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivityResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivityBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivityForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivityNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/address_book: get: tags: @@ -1389,6 +4290,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAddressBookResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAddressBookBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAddressBookForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAddressBookNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' post: tags: - Address Book @@ -1438,6 +4370,43 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.CreatePortfolioAddressBookEntryResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreatePortfolioAddressBookEntryBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreatePortfolioAddressBookEntryForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreatePortfolioAddressBookEntryNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "500": + description: Internal server error. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.InternalServerErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/advanced_transfers: get: @@ -1520,6 +4489,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.ListAdvancedTransfersResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAdvancedTransfersBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAdvancedTransfersForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAdvancedTransfersNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' post: tags: - Advanced Transfer @@ -1555,6 +4562,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.CreateAdvancedTransferResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateAdvancedTransferBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateAdvancedTransferForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateAdvancedTransferNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/advanced_transfers/{advanced_transfer_id}/cancel: post: @@ -1593,6 +4638,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.CancelAdvancedTransferResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelAdvancedTransferBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelAdvancedTransferForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelAdvancedTransferNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/advanced_transfers/{advanced_transfer_id}/transactions: get: @@ -1623,6 +4706,38 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.ListAdvancedTransferTransactionsResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAdvancedTransferTransactionsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAdvancedTransferTransactionsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/allocations: get: tags: @@ -1699,6 +4814,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAllocationsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAllocationsBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAllocationsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAllocationsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/allocations/net/{netting_id}: get: tags: @@ -1726,6 +4872,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationsByClientNettingIdResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationsByClientNettingIdBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationsByClientNettingIdForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationsByClientNettingIdNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/allocations/{allocation_id}: get: tags: @@ -1753,6 +4930,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/balances: get: tags: @@ -1798,6 +5006,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioBalancesResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioBalancesBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioBalancesForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioBalancesNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/buying_power: get: tags: @@ -1835,14 +5074,50 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetBuyingPowerResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetBuyingPowerBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetBuyingPowerForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetBuyingPowerNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/candles: get: tags: - Products - summary: Get Public Product Candles (Beta) - description: "Get rates for a single product by product ID, grouped in buckets.\ - \ This feature is in beta please reach out to your Coinbase Prime account\ - \ manager for more information." + summary: Get Public Product Candles + description: "Get rates for a single product by product ID, grouped in buckets." operationId: PrimeRESTAPI_GetCandles parameters: - name: portfolio_id @@ -1894,6 +5169,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetCandlesResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCandlesBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCandlesForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCandlesNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/commission: get: tags: @@ -1919,6 +5225,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCommissionResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCommissionBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCommissionForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCommissionNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/counterparty: get: tags: @@ -1940,6 +5277,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCounterpartyIDResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCounterpartyIDBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCounterpartyIDForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCounterpartyIDNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/credit: get: tags: @@ -1961,6 +5329,149 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetPostTradeCreditResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPostTradeCreditBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPostTradeCreditForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPostTradeCreditNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' + /v1/portfolios/{portfolio_id}/derivatives/currency_summary: + get: + tags: + - Futures + summary: Get Portfolio Derivatives Currency Summary + description: "Retrieve per-currency international derivatives balances for a\ + \ given portfolio. US Futures balances roll up to a single clearing account\ + \ per entity rather than per portfolio, and are available from the entity\ + \ futures balance summary and risk limits endpoints instead." + operationId: PrimeRESTAPI_GetDerivativesCurrencySummary + parameters: + - name: portfolio_id + in: path + description: Portfolio ID + required: true + schema: + type: string + responses: + "200": + description: A successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativesCurrencySummaryResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativesCurrencySummaryBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativesCurrencySummaryForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativesCurrencySummaryNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' + /v1/portfolios/{portfolio_id}/derivatives/positions: + get: + tags: + - Futures + summary: List Portfolio Derivative Positions + description: Retrieve all active derivative positions for a given portfolio. + operationId: PrimeRESTAPI_GetDerivativePositions + parameters: + - name: portfolio_id + in: path + description: Portfolio ID + required: true + schema: + type: string + - name: product_id + in: query + description: Product ID. Optional + schema: + type: string + responses: + "200": + description: A successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativePositionsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativePositionsBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativePositionsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativePositionsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/fills: get: tags: @@ -2017,6 +5528,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioFillsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioFillsBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioFillsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioFillsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/locates: get: tags: @@ -2057,6 +5599,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetExistingLocatesResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetExistingLocatesBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetExistingLocatesForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetExistingLocatesNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' post: tags: - Financing @@ -2103,6 +5676,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.CreateNewLocatesResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateNewLocatesBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateNewLocatesForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateNewLocatesNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/margin_conversions: get: @@ -2137,6 +5741,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginConversionsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginConversionsBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginConversionsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginConversionsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/onchain_address_group: put: tags: @@ -2170,6 +5812,43 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.ActivityCreationResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UpdateOnchainAddressGroupBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UpdateOnchainAddressGroupForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UpdateOnchainAddressGroupNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "500": + description: Internal server error. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.InternalServerErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body post: tags: @@ -2203,6 +5882,43 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.ActivityCreationResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainAddressGroupBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainAddressGroupForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainAddressGroupNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "500": + description: Internal server error. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.InternalServerErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/onchain_address_group/{address_group_id}: delete: @@ -2229,18 +5945,55 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.ActivityCreationResponse' - /v1/portfolios/{portfolio_id}/onchain_address_groups: - get: - tags: - - Onchain Address Book - summary: List Onchain Address Groups - description: Lists all onchain address groups for a given portfolio ID - operationId: PrimeRESTAPI_ListOnchainAddressGroups - parameters: - - name: portfolio_id - in: path - description: Portfolio ID - required: true + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.DeleteOnchainAddressGroupBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.DeleteOnchainAddressGroupForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.DeleteOnchainAddressGroupNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "500": + description: Internal server error. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.InternalServerErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' + /v1/portfolios/{portfolio_id}/onchain_address_groups: + get: + tags: + - Onchain Address Book + summary: List Onchain Address Groups + description: Lists all onchain address groups for a given portfolio ID + operationId: PrimeRESTAPI_ListOnchainAddressGroups + parameters: + - name: portfolio_id + in: path + description: Portfolio ID + required: true schema: type: string responses: @@ -2250,6 +6003,43 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.ListOnchainAddressGroupsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListOnchainAddressGroupsBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListOnchainAddressGroupsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListOnchainAddressGroupsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "500": + description: Internal server error. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.InternalServerErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/open_orders: get: tags: @@ -2356,6 +6146,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetOpenOrdersResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOpenOrdersBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOpenOrdersForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOpenOrdersNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/order: post: tags: @@ -2460,7 +6281,12 @@ paths: \ would be placed on venues, opposite to limit_price (PEG orders\ \ only)" type: string - description: "next: 23" + is_buy_exact: + type: boolean + description: "Buy Exact order flag. When true, fees for a BUY order\ + \ sized in quote_value are charged on top of the requested quote_value\ + \ instead of being carved out of it. Only valid for BUY orders\ + \ sized in quote_value on SPOT products." required: true responses: "200": @@ -2469,6 +6295,43 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.CreateOrderResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOrderBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOrderForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOrderNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "500": + description: Internal server error. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.InternalServerErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/order_preview: post: @@ -2566,7 +6429,12 @@ paths: \ would be placed on venues, opposite to limit_price (PEG orders\ \ only)" type: string - description: "next: 21" + is_buy_exact: + type: boolean + description: "Buy Exact order flag. When true, fees for a BUY order\ + \ sized in quote_value are charged on top of the requested quote_value\ + \ instead of being carved out of it. Only valid for BUY orders\ + \ sized in quote_value on SPOT products." required: true responses: "200": @@ -2575,6 +6443,43 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.PostOrderPreviewResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.OrderPreviewBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.OrderPreviewForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.OrderPreviewNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "500": + description: Internal server error. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.InternalServerErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/orders: get: @@ -2706,6 +6611,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetOrdersResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrdersBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrdersForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrdersNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/orders/{order_id}: get: tags: @@ -2733,6 +6669,38 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderResponse' + "400": + description: "Bad request. portfolio_id or order_id is missing, invalid,\ + \ or the order was not found." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderForbiddenErrorResponse' + "404": + description: The requested portfolio or resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/orders/{order_id}/cancel: post: tags: @@ -2760,13 +6728,43 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.CancelOrderResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelOrderBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelOrderForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelOrderNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/orders/{order_id}/edit: put: tags: - Orders - summary: Edit Order (Beta) - description: Edit an open order. This feature is in beta please reach out to - your Coinbase Prime account manager for more information. + summary: Edit Order + description: Edit an open order. operationId: PrimeRESTAPI_EditOrder parameters: - name: portfolio_id @@ -2834,6 +6832,18 @@ paths: description: Specifies the stop price at which the order activates. The order is activated if the last trade price on Coinbase Exchange crosses the stop price specified on the order + offset: + type: string + description: New peg offset value for PEG orders. 0 means peg to + BBO. Only non-negative values are allowed. The order's peg_offset_type + is immutable and is reused server-side to interpret this value + (PEG orders only) + wig_level: + type: string + description: "New WIG (Would if Good) level for PEG orders - the\ + \ best price a pegged order would be placed on venues, opposite\ + \ to limit_price. Cannot be added or removed post-placement (PEG\ + \ orders only)" required: true responses: "200": @@ -2842,6 +6852,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.EditOrderResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.EditOrderBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.EditOrderForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.EditOrderNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/orders/{order_id}/edit_history: get: @@ -2870,6 +6911,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderEditHistoryResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderEditHistoryBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderEditHistoryForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderEditHistoryNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/orders/{order_id}/fills: get: tags: @@ -2919,12 +6991,43 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderFillsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderFillsBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderFillsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderFillsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/products: get: tags: - Products summary: List Portfolio Products - description: List tradable products for a given portfolio. + description: List products for a given portfolio. operationId: PrimeRESTAPI_GetPortfolioProducts parameters: - name: portfolio_id @@ -2940,7 +7043,8 @@ paths: type: string - name: limit in: query - description: Number of items to retrieve + description: Number of items to retrieve. Must be between 0 (defaulted to + 10) and 1000. schema: type: integer format: int32 @@ -2961,11 +7065,13 @@ paths: - UNKNOWN_PRODUCT_TYPE: Unknown product type - SPOT: Spot product - FUTURE: Future product + - OPTION: Option product schema: type: string enum: - SPOT - FUTURE + - OPTION - name: contract_expiry_type in: query description: |- @@ -2976,9 +7082,7 @@ paths: - CONTRACT_EXPIRY_TYPE_PERPETUAL: Perpetual futures contract (no expiry) schema: type: string - default: CONTRACT_EXPIRY_TYPE_UNSPECIFIED enum: - - CONTRACT_EXPIRY_TYPE_UNSPECIFIED - CONTRACT_EXPIRY_TYPE_EXPIRING - CONTRACT_EXPIRY_TYPE_PERPETUAL - name: expiring_contract_status @@ -3003,6 +7107,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioProductsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioProductsBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioProductsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioProductsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/rfq: post: tags: @@ -3078,6 +7213,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.QuoteResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateQuoteRequestBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateQuoteRequestForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateQuoteRequestNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/staking/initiate: post: @@ -3086,7 +7252,8 @@ paths: summary: Request to stake currency in a portfolio description: "Creates an execution request to stake funds across a portfolio.\ \ This will stake funds in one or more wallets in the portfolio, with a total\ - \ bondable balance up to the requested stake amount." + \ bondable balance up to the requested stake amount. This feature is gated.\ + \ Please contact your account manager or primeops@coinbase.com to enable." operationId: PrimeRESTAPI_PortfolioStakingInitiate parameters: - name: portfolio_id @@ -3126,6 +7293,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingInitiateResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingInitiateBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingInitiateForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingInitiateNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/staking/transaction-validators/query: post: @@ -3176,22 +7374,61 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.ListTransactionValidatorsResponse' - x-codegen-request-body-name: body - /v1/portfolios/{portfolio_id}/staking/unstake: - post: - tags: - - Staking - summary: Request to unstake currency across a portfolio - description: "Creates an execution request to unstake funds across a portfolio.\ - \ This will unstake funds in one or more wallets in the portfolio, with a\ - \ total bonded balance up to the requested unstake amount." - operationId: PrimeRESTAPI_PortfolioStakingUnstake - parameters: - - name: portfolio_id - in: path - description: The portfolio ID - required: true - schema: + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListTransactionValidatorsBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListTransactionValidatorsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListTransactionValidatorsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' + x-codegen-request-body-name: body + /v1/portfolios/{portfolio_id}/staking/unstake: + post: + tags: + - Staking + summary: Request to unstake currency across a portfolio + description: "Creates an execution request to unstake funds across a portfolio.\ + \ This will unstake funds in one or more wallets in the portfolio, with a\ + \ total bonded balance up to the requested unstake amount. This feature is\ + \ gated. Please contact your account manager or primeops@coinbase.com to enable." + operationId: PrimeRESTAPI_PortfolioStakingUnstake + parameters: + - name: portfolio_id + in: path + description: The portfolio ID + required: true + schema: type: string requestBody: content: @@ -3225,6 +7462,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingUnstakeResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingUnstakeBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingUnstakeForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingUnstakeNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/transactions: get: @@ -3287,6 +7555,7 @@ paths: - ONCHAIN_TRANSACTION: On-chain transaction initiated with Prime Onchain Wallet - PORTFOLIO_STAKE: Portfolio-level staking operation - PORTFOLIO_UNSTAKE: Portfolio-level unstaking operation + - MERGE_STAKE: On-chain transaction consolidating funds from different addresses belonging to the same wallet. style: form explode: true schema: @@ -3329,6 +7598,7 @@ paths: - ONCHAIN_TRANSACTION - PORTFOLIO_STAKE - PORTFOLIO_UNSTAKE + - MERGE_STAKE - name: start_time in: query description: "UTC timestamp from which to filter the response (inclusive,\ @@ -3380,7 +7650,6 @@ paths: items: type: string enum: - - TRAVEL_RULE_STATUS_UNSPECIFIED - TRAVEL_RULE_STATUS_PENDING - TRAVEL_RULE_STATUS_SUBMITTED responses: @@ -3390,6 +7659,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioTransactionsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioTransactionsBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioTransactionsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioTransactionsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/transactions/{transaction_id}: get: tags: @@ -3417,6 +7724,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/transactions/{transaction_id}/travel_rule: get: tags: @@ -3444,6 +7789,43 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionTravelRuleDataResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionTravelRuleDataBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionTravelRuleDataForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionTravelRuleDataNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "500": + description: Internal server error. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.InternalServerErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/transactions/{transaction_id}/travel_rule/deposit: post: tags: @@ -3491,6 +7873,43 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.SubmitDepositTravelRuleDataResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.SubmitDepositTravelRuleDataBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.SubmitDepositTravelRuleDataForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.SubmitDepositTravelRuleDataNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "500": + description: Internal server error. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.InternalServerErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/users: get: @@ -3533,6 +7952,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioUsersResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioUsersBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioUsersForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioUsersNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/wallets: get: tags: @@ -3608,6 +8058,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletsBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' post: tags: - Wallets @@ -3655,6 +8143,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/wallets/{wallet_id}: get: @@ -3683,6 +8202,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/wallets/{wallet_id}/addresses: get: tags: @@ -3727,6 +8284,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.ListWalletAddressesResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListWalletAddressesBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListWalletAddressesForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListWalletAddressesNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' post: tags: - Wallets @@ -3769,6 +8364,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.BlockchainAddress' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletDepositAddressBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletDepositAddressForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletDepositAddressNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/wallets/{wallet_id}/balance: get: @@ -3797,6 +8430,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletBalanceResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletBalanceBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletBalanceForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletBalanceNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/wallets/{wallet_id}/conversion: post: tags: @@ -3857,6 +8528,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.CreateConversionResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateConversionBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateConversionForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateConversionNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/wallets/{wallet_id}/deposit_instructions: get: @@ -3921,7 +8623,45 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletDepositInstructionsResponse' - /v1/portfolios/{portfolio_id}/wallets/{wallet_id}/onchain_transaction: + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletDepositInstructionsBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletDepositInstructionsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletDepositInstructionsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' + /v1/portfolios/{portfolio_id}/wallets/{wallet_id}/onchain_transaction: post: tags: - Transactions @@ -3968,14 +8708,45 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainTransactionResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainTransactionBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainTransactionForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainTransactionNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/wallets/{wallet_id}/staking/claim_rewards: post: tags: - Staking summary: Claim Wallet Staking Rewards (Alpha) - description: Request to claim staking rewards. This feature is in alpha. Please - reach out to your Coinbase Prime account manager for more information + description: Request to claim staking rewards. This feature is only for ETH + Pectra (0x02) validators. operationId: PrimeRESTAPI_StakingClaimRewards parameters: - name: portfolio_id @@ -4016,6 +8787,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.StakingClaimRewardsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingClaimRewardsBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingClaimRewardsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingClaimRewardsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/wallets/{wallet_id}/staking/initiate: post: @@ -4063,6 +8872,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.StakingInitiateResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingInitiateBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingInitiateForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingInitiateNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/wallets/{wallet_id}/staking/status: get: @@ -4092,6 +8939,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetStakingStatusResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetStakingStatusBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetStakingStatusForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetStakingStatusNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/wallets/{wallet_id}/staking/unstake: post: tags: @@ -4139,6 +9017,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.StakingUnstakeResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingUnstakeBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingUnstakeForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingUnstakeNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/wallets/{wallet_id}/staking/unstake/preview: post: @@ -4183,6 +9099,31 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.PreviewUnstakeResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.PreviewUnstakeBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.PreviewUnstakeForbiddenErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/wallets/{wallet_id}/staking/unstake/status: get: @@ -4212,6 +9153,37 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetUnstakingStatusResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetUnstakingStatusBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetUnstakingStatusForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetUnstakingStatusNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/wallets/{wallet_id}/transactions: get: tags: @@ -4274,6 +9246,7 @@ paths: - ONCHAIN_TRANSACTION: On-chain transaction initiated with Prime Onchain Wallet - PORTFOLIO_STAKE: Portfolio-level staking operation - PORTFOLIO_UNSTAKE: Portfolio-level unstaking operation + - MERGE_STAKE: On-chain transaction consolidating funds from different addresses belonging to the same wallet. style: form explode: true schema: @@ -4316,6 +9289,7 @@ paths: - ONCHAIN_TRANSACTION - PORTFOLIO_STAKE - PORTFOLIO_UNSTAKE + - MERGE_STAKE - name: start_time in: query description: "UTC timestamp from which to filter the response (inclusive,\ @@ -4357,6 +9331,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletTransactionsResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletTransactionsBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletTransactionsForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletTransactionsNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/wallets/{wallet_id}/transfers: post: tags: @@ -4409,6 +9421,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletTransferResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletTransferBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletTransferForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletTransferNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/wallets/{wallet_id}/web3_balances: get: @@ -4468,6 +9518,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.ListWeb3WalletBalancesResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListWeb3WalletBalancesBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListWeb3WalletBalancesForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListWeb3WalletBalancesNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v1/portfolios/{portfolio_id}/wallets/{wallet_id}/withdrawals: post: tags: @@ -4526,6 +9614,50 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletWithdrawalResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletWithdrawalBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletWithdrawalForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletWithdrawalNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "500": + description: Internal server error. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.InternalServerErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' x-codegen-request-body-name: body /v1/portfolios/{portfolio_id}/withdrawal_power: get: @@ -4555,6 +9687,44 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetWithdrawalPowerResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWithdrawalPowerBadRequestErrorResponse' + "401": + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWithdrawalPowerForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWithdrawalPowerNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' /v2/entities/{entity_id}/cross_margin/prime: get: tags: @@ -4576,17 +9746,156 @@ paths: application/json: schema: $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginPrimeOverviewResponse' -components: - schemas: - coinbase.brokerage.proxy.events.materialized.api.LimitOrderEdit: - title: LimitOrderEdit represents an order edit that is accepted - type: object - properties: - price: - title: New price for the edited order + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginPrimeOverviewBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginPrimeOverviewForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginPrimeOverviewNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' + /v1/entities/{entity_id}/rewards/rate: + get: + tags: + - Financing + summary: Get Entity Rewards Rate (Beta) + description: Returns the current rewards rate and available rate tiers for the + entity. + operationId: PrimeBeta_GetEntityRewardsRate + parameters: + - name: entity_id + in: path + description: The ID of the Prime entity whose rewards rate information is + requested. + required: true + schema: type: string - size: - title: New size for the edited order + responses: + "200": + description: A successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.beta.GetRewardsRateResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityRewardsRateBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityRewardsRateForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityRewardsRateNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' + /v1/portfolios/{portfolio_id}/rewards/rate: + get: + tags: + - Financing + summary: Get Portfolio Rewards Rate (Beta) + description: Returns the current rewards rate and available rate tiers for the + portfolio. + operationId: PrimeBeta_GetPortfolioRewardsRate + parameters: + - name: portfolio_id + in: path + description: The ID of the Prime portfolio whose rewards rate information + is requested. + required: true + schema: + type: string + responses: + "200": + description: A successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.beta.GetRewardsRateResponse' + "400": + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioRewardsRateBadRequestErrorResponse' + "403": + description: Permission denied. The API key lacks the required scope for + this resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioRewardsRateForbiddenErrorResponse' + "404": + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioRewardsRateNotFoundErrorResponse' + "429": + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + "503": + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' +components: + schemas: + coinbase.brokerage.proxy.events.materialized.api.LimitOrderEdit: + title: LimitOrderEdit represents an order edit that is accepted + type: object + properties: + price: + title: New price for the edited order + type: string + size: + title: New size for the edited order type: string display_size: title: New display size for the edited order @@ -4691,9 +10000,7 @@ components: description: counterparty id coinbase.custody.api.AddressBookType: type: string - default: ADDRESS_BOOK_TYPE_UNSPECIFIED enum: - - ADDRESS_BOOK_TYPE_UNSPECIFIED - ADDRESS_BOOK_TYPE_ADDRESS - ADDRESS_BOOK_TYPE_COUNTERPARTY_ID coinbase.custody.api.DisplayUser: @@ -5135,9 +10442,7 @@ components: - PERCENT coinbase.public_rest_api.AllocationStatus: type: string - default: ALLOCATION_STATUS_UNSPECIFIED enum: - - ALLOCATION_STATUS_UNSPECIFIED - ALLOCATION_STATUS_ALLOCATION_PENDING - ALLOCATION_STATUS_ALLOCATION_ACCEPTED - ALLOCATION_STATUS_ALLOCATION_ALLOCATED @@ -5305,9 +10610,7 @@ components: example: "0.241437903" coinbase.public_rest_api.Benchmark: type: string - default: BENCHMARK_UNSET enum: - - BENCHMARK_UNSET - ZERO - SOFR_360 - SOFR_365 @@ -5319,7 +10622,10 @@ components: type: string settlement_date: type: string - description: The intended time of Transfer settlement in YYYYMMDD format + description: "The intended time of Transfer settlement in YYYYMMDD format.\ + \ The Settlement Date represents the date contractually agreed upon by\ + \ the transacting parties; actual settlement will occur upon completion\ + \ of the transfer, which may differ from such agreed date." trade_date: type: string description: Optional date of the original Trade in YYYYMMMDD format @@ -5440,6 +10746,18 @@ components: - THIRTY_MINUTES - TWO_HOURS - FOUR_HOURS + coinbase.public_rest_api.ComboLeg: + type: object + properties: + product_id: + type: string + description: "The product identifier for the options instrument (e.g., \"\ + BTC-28MAR25-50000-C\")." + quantity: + type: string + side: + $ref: '#/components/schemas/coinbase.public_rest_api.OrderSide' + description: ComboLeg describes a single leg within an options combo order. coinbase.public_rest_api.Commission: type: object properties: @@ -5491,9 +10809,7 @@ components: - CONTRACT_EXPIRY_TYPE_UNSPECIFIED: Unspecified contract expiry type - CONTRACT_EXPIRY_TYPE_EXPIRING: Expiring futures contract - CONTRACT_EXPIRY_TYPE_PERPETUAL: Perpetual futures contract (no expiry) - default: CONTRACT_EXPIRY_TYPE_UNSPECIFIED enum: - - CONTRACT_EXPIRY_TYPE_UNSPECIFIED - CONTRACT_EXPIRY_TYPE_EXPIRING - CONTRACT_EXPIRY_TYPE_PERPETUAL coinbase.public_rest_api.Conversion: @@ -5544,6 +10860,50 @@ components: type: string description: Conversion rate example: "0.1" + coinbase.public_rest_api.ConversionFee: + type: object + properties: + from_currency: + type: string + description: Source currency ticker. + example: USDC + to_currency: + type: string + description: Destination currency ticker. + example: USD + net_conversion_volume_mtd: + type: string + description: "Month-to-date net conversion volume denominated in from_currency,\ + \ aggregated at the owning organization level. Positive = net from->to,\ + \ negative = net to->from." + example: "12345678.90" + fee_tiers: + type: array + description: |- + Progressive fee tiers applicable to this organization for this pair. + Tiers are ordered from lowest to highest threshold. + items: + $ref: '#/components/schemas/coinbase.public_rest_api.ConversionFeeTier' + description: |- + Per-pair conversion fee row: month-to-date net conversion volume and + the applicable progressive fee tiers for an organization. + coinbase.public_rest_api.ConversionFeeTier: + type: object + properties: + min_threshold: + type: string + description: Inclusive lower bound for the tier in USD. + example: "10000000" + max_threshold: + type: string + description: "Exclusive upper bound for the tier in USD. Empty string for\ + \ the highest, unbounded tier." + example: "150000000" + rate_bps: + type: string + description: Tier rate in basis points. + example: "5.0" + description: A single fee tier in the progressive stablecoin conversion schedule. coinbase.public_rest_api.Counterparty: type: object properties: @@ -5723,6 +11083,12 @@ components: type: string description: Unique identifier for the created transaction example: 0bf7bf1e-bafa-4d7e-9312-fa0bf3b63f27 + coinbase.public_rest_api.CreateOptionComboResponse: + type: object + properties: + combo_id: + title: combo id returned by deribit + type: string coinbase.public_rest_api.CreateOrderResponse: type: object properties: @@ -6136,6 +11502,13 @@ components: description: Basis offset credit rate. example: "0.92" description: XM 2.0 risk parameters for an asset tier. + coinbase.public_rest_api.CustomStablecoinAsset: + title: Currency metadata of the custom stablecoin asset for the reward program + type: object + properties: + symbol: + type: string + description: "The asset symbol (e.g. USDC, USDF)" coinbase.public_rest_api.CustomStablecoinRewardDetails: title: Details for a custom stablecoin reward payout transaction type: object @@ -6146,6 +11519,8 @@ components: end_date: type: string description: ISO-formatted end date of the reward period (e.g. 2025-02-28T00:00:00Z) + asset: + $ref: '#/components/schemas/coinbase.public_rest_api.CustomStablecoinAsset' coinbase.public_rest_api.DefiBalance: type: object properties: @@ -6159,6 +11534,126 @@ components: net_usd_value: title: Total USD value type: string + coinbase.public_rest_api.DerivativePosition: + type: object + properties: + product_id: + type: string + description: Product ID + example: BTC-31JAN24-CDE + side: + $ref: '#/components/schemas/coinbase.public_rest_api.FcmPositionSide' + number_of_contracts: + type: string + description: Number of contracts + example: "10" + daily_realized_pnl: + type: string + description: Daily realized PNL + example: "10.12" + unrealized_pnl: + type: string + description: Unrealized PNL + example: "10.12" + current_price: + type: string + description: Current price of position + example: "10.12" + avg_entry_price: + type: string + description: Average entry price + example: "10.12" + expiration_time: + type: string + description: Expiration time of position + format: date-time + example: 2021-01-01T00:00:00Z + product_type: + $ref: '#/components/schemas/coinbase.public_rest_api.DerivativeProductType' + currency: + type: string + description: Settlement currency + example: USD + options_details: + $ref: '#/components/schemas/coinbase.public_rest_api.OptionsDetails' + venue_id: + type: string + description: Venue ID of the position + example: CDE + description: A single derivative position across all derivative product types. + coinbase.public_rest_api.DerivativeProductType: + type: string + description: |- + The general type of a derivative product. + + - DERIVATIVE_PRODUCT_TYPE_UNSPECIFIED: Unknown product type. + - DERIVATIVE_PRODUCT_TYPE_SPOT: Spot product. + - DERIVATIVE_PRODUCT_TYPE_FUTURE: Future product. + - DERIVATIVE_PRODUCT_TYPE_EQUITY: Equity product. + - DERIVATIVE_PRODUCT_TYPE_PREDICTION_MARKET: Prediction market product. + - DERIVATIVE_PRODUCT_TYPE_OPTION: Option product. + - DERIVATIVE_PRODUCT_TYPE_BASIS: Basis product. + - DERIVATIVE_PRODUCT_TYPE_EQUITY_OPTION: Equity option product. + - DERIVATIVE_PRODUCT_TYPE_FUTURE_COMBO: Future combo product. + - DERIVATIVE_PRODUCT_TYPE_OPTION_COMBO: Option combo product. + enum: + - DERIVATIVE_PRODUCT_TYPE_SPOT + - DERIVATIVE_PRODUCT_TYPE_FUTURE + - DERIVATIVE_PRODUCT_TYPE_EQUITY + - DERIVATIVE_PRODUCT_TYPE_PREDICTION_MARKET + - DERIVATIVE_PRODUCT_TYPE_OPTION + - DERIVATIVE_PRODUCT_TYPE_BASIS + - DERIVATIVE_PRODUCT_TYPE_EQUITY_OPTION + - DERIVATIVE_PRODUCT_TYPE_FUTURE_COMBO + - DERIVATIVE_PRODUCT_TYPE_OPTION_COMBO + coinbase.public_rest_api.DerivativesCurrencyBalance: + type: object + properties: + currency: + type: string + description: Settlement currency + example: BTC + balance: + type: string + description: Cash balance for the currency + example: "1000.00" + unrealized_pnl: + type: string + description: Unrealized PNL + example: "10.12" + realized_pnl: + type: string + description: Realized PNL + example: "10.12" + initial_margin: + type: string + description: Initial margin + example: "10.12" + maintenance_margin: + type: string + description: Maintenance margin + example: "10.12" + margin_balance: + type: string + description: Margin balance for the currency + example: "10.12" + option_value: + type: string + description: Option value for the currency + example: "10.12" + margin_excess: + type: string + description: Margin excess for the currency (negative indicates a margin + deficit) + example: "10.12" + margin_utilization: + type: string + description: "Margin utilization for the currency, as a percentage" + example: "42.50" + margin_health_state: + $ref: '#/components/schemas/coinbase.public_rest_api.FcmMarginHealthState' + description: Balances for a single settlement currency within an international + derivatives portfolio. coinbase.public_rest_api.DestinationAlloc: type: object properties: @@ -6281,9 +11776,7 @@ components: $ref: '#/components/schemas/coinbase.public_rest_api.SecondaryPermission' coinbase.public_rest_api.EstimateType: type: string - default: UNSPECIFIED enum: - - UNSPECIFIED - LIVE - INTERIM coinbase.public_rest_api.EstimatedNetworkFees: @@ -6415,27 +11908,21 @@ components: example: "1000.00" coinbase.public_rest_api.FcmFuturesSweepStatus: type: string - default: FCM_FUTURES_SWEEP_STATUS_UNSPECIFIED enum: - - FCM_FUTURES_SWEEP_STATUS_UNSPECIFIED - FCM_FUTURES_SWEEP_STATUS_PENDING - FCM_FUTURES_SWEEP_STATUS_CLOSED - FCM_FUTURES_SWEEP_STATUS_CANCELED - FCM_FUTURES_SWEEP_STATUS_PROCESSING coinbase.public_rest_api.FcmMarginCallState: type: string - default: FCM_MARGIN_CALL_STATE_UNSPECIFIED enum: - - FCM_MARGIN_CALL_STATE_UNSPECIFIED - FCM_MARGIN_CALL_STATE_CLOSED - FCM_MARGIN_CALL_STATE_ROLLED_OVER - FCM_MARGIN_CALL_STATE_DEFAULT - FCM_MARGIN_CALL_STATE_OFFICIAL coinbase.public_rest_api.FcmMarginCallType: type: string - default: FCM_MARGIN_CALL_TYPE_UNSPECIFIED enum: - - FCM_MARGIN_CALL_TYPE_UNSPECIFIED - FCM_MARGIN_CALL_TYPE_URGENT - FCM_MARGIN_CALL_TYPE_REGULAR coinbase.public_rest_api.FcmMarginHealthState: @@ -6448,9 +11935,7 @@ components: - FCM_MARGIN_HEALTH_STATE_RESTRICTED: Account margin is restricted. - FCM_MARGIN_HEALTH_STATE_PRE_LIQUIDATION: Account is approaching liquidation. - FCM_MARGIN_HEALTH_STATE_LIQUIDATION: Account is in liquidation. - default: FCM_MARGIN_HEALTH_STATE_UNSPECIFIED enum: - - FCM_MARGIN_HEALTH_STATE_UNSPECIFIED - FCM_MARGIN_HEALTH_STATE_HEALTHY - FCM_MARGIN_HEALTH_STATE_RESTRICTED - FCM_MARGIN_HEALTH_STATE_PRE_LIQUIDATION @@ -6491,9 +11976,7 @@ components: example: 2021-01-01T00:00:00Z coinbase.public_rest_api.FcmPositionSide: type: string - default: FCM_POSITION_SIDE_UNSPECIFIED enum: - - FCM_POSITION_SIDE_UNSPECIFIED - LONG - SHORT coinbase.public_rest_api.FcmScheduledMaintenance: @@ -6519,9 +12002,7 @@ components: - FCM_TRADING_SESSION_CLOSED_REASON_REGULAR_MARKET_CLOSE: Regular market close - FCM_TRADING_SESSION_CLOSED_REASON_EXCHANGE_MAINTENANCE: Exchange maintenance - FCM_TRADING_SESSION_CLOSED_REASON_VENDOR_MAINTENANCE: Vendor maintenance - default: FCM_TRADING_SESSION_CLOSED_REASON_UNDEFINED enum: - - FCM_TRADING_SESSION_CLOSED_REASON_UNDEFINED - FCM_TRADING_SESSION_CLOSED_REASON_REGULAR_MARKET_CLOSE - FCM_TRADING_SESSION_CLOSED_REASON_EXCHANGE_MAINTENANCE - FCM_TRADING_SESSION_CLOSED_REASON_VENDOR_MAINTENANCE @@ -6573,9 +12054,7 @@ components: - FCM_TRADING_SESSION_STATE_OPEN: Trading session is open - FCM_TRADING_SESSION_STATE_CLOSE: Trading session is closed - FCM_TRADING_SESSION_STATE_HALTED: Trading session is halted - default: FCM_TRADING_SESSION_STATE_UNDEFINED enum: - - FCM_TRADING_SESSION_STATE_UNDEFINED - FCM_TRADING_SESSION_STATE_PRE_OPEN - FCM_TRADING_SESSION_STATE_PRE_OPEN_NO_CANCEL - FCM_TRADING_SESSION_STATE_OPEN @@ -6737,6 +12216,15 @@ components: type: array items: $ref: '#/components/schemas/coinbase.public_rest_api.Candle' + coinbase.public_rest_api.GetConversionFeesResponse: + type: object + properties: + fees: + type: array + items: + $ref: '#/components/schemas/coinbase.public_rest_api.ConversionFee' + description: "Response for GetConversionFees: one ConversionFee row per supported\ + \ pair." coinbase.public_rest_api.GetCrossMarginOverviewResponse: type: object properties: @@ -6784,6 +12272,28 @@ components: description: Margin period of risk (number of days). format: double example: 5.0 + coinbase.public_rest_api.GetDerivativePositionsResponse: + type: object + properties: + positions: + type: array + items: + $ref: '#/components/schemas/coinbase.public_rest_api.DerivativePosition' + description: Response containing the portfolio's active derivative positions. + coinbase.public_rest_api.GetDerivativesCurrencySummaryResponse: + type: object + properties: + portfolio_id: + type: string + description: Portfolio ID + example: 00000000-0000-0000-0000-000000000000 + balances: + type: array + items: + $ref: '#/components/schemas/coinbase.public_rest_api.DerivativesCurrencyBalance' + description: |- + Response containing the portfolio's international derivatives balances, broken out + per settlement currency. coinbase.public_rest_api.GetEntityActivitiesResponse: required: - activities @@ -7358,13 +12868,17 @@ components: properties: withdrawal_power: $ref: '#/components/schemas/coinbase.public_rest_api.WithdrawalPower' + coinbase.public_rest_api.GetXMLiquidationResponse: + title: GetXMLiquidationResponse contains detailed information about an XM liquidation + type: object + properties: + liquidation: + $ref: '#/components/schemas/coinbase.public_rest_api.XMLiquidationDetail' coinbase.public_rest_api.HierarchyType: title: "HierarchyType are the enums for various hierarchies within Prime, ex\ \ Entity, Organization, Portfolio" type: string - default: HIERARCHY_TYPE_UNSPECIFIED enum: - - HIERARCHY_TYPE_UNSPECIFIED - HIERARCHY_TYPE_PORTFOLIO - HIERARCHY_TYPE_ENTITY coinbase.public_rest_api.Invoice: @@ -7423,9 +12937,7 @@ components: coinbase.public_rest_api.InvoiceState: title: States type: string - default: INVOICE_STATE_UNSPECIFIED enum: - - INVOICE_STATE_UNSPECIFIED - INVOICE_STATE_IMPORTED - INVOICE_STATE_BILLED - INVOICE_STATE_PARTIALLY_PAID @@ -7433,9 +12945,7 @@ components: coinbase.public_rest_api.InvoiceType: title: Types type: string - default: INVOICE_TYPE_UNSPECIFIED enum: - - INVOICE_TYPE_UNSPECIFIED - INVOICE_TYPE_AUC_FEE - INVOICE_TYPE_MINIMUM_FEE - INVOICE_TYPE_WITHDRAWAL_FEE @@ -7573,6 +13083,18 @@ components: support. items: $ref: '#/components/schemas/coinbase.public_rest_api.DefiBalance' + coinbase.public_rest_api.ListXMLiquidationsResponse: + title: ListXMLiquidationsResponse contains a paginated list of XM liquidation + summaries + type: object + properties: + liquidations: + type: array + description: List of XM liquidation summaries + items: + $ref: '#/components/schemas/coinbase.public_rest_api.XMLiquidationSummary' + pagination: + $ref: '#/components/schemas/coinbase.public_rest_api.PaginatedResponse' coinbase.public_rest_api.LoanInfo: type: object properties: @@ -7598,9 +13120,7 @@ components: example: "1000" coinbase.public_rest_api.LoanType: type: string - default: LOAN_TYPE_UNSET enum: - - LOAN_TYPE_UNSET - BILATERAL_LENDING - TRADE_FINANCE - PORTFOLIO_MARGIN @@ -7632,9 +13152,7 @@ components: $ref: '#/components/schemas/coinbase.public_rest_api.MarginAddOnType' coinbase.public_rest_api.MarginAddOnType: type: string - default: MARGIN_ADD_ON_TYPE_UNSPECIFIED enum: - - MARGIN_ADD_ON_TYPE_UNSPECIFIED - SINGLE_COIN_STRESS - CONCENTRATION_STRESS - MACRO_STRESS @@ -7976,16 +13494,12 @@ components: example: "0.001" coinbase.public_rest_api.NetworkFamily: type: string - default: NETWORK_FAMILY_UNSPECIFIED enum: - - NETWORK_FAMILY_UNSPECIFIED - NETWORK_FAMILY_EVM - NETWORK_FAMILY_SOLANA coinbase.public_rest_api.NetworkType: type: string - default: NETWORK_TYPE_UNSPECIFIED enum: - - NETWORK_TYPE_UNSPECIFIED - NETWORK_TYPE_EVM - NETWORK_TYPE_SOLANA coinbase.public_rest_api.OnchainTransactionDetails: @@ -8026,6 +13540,105 @@ components: example: insufficient_funds signing_status: $ref: '#/components/schemas/coinbase.public_rest_api.SigningStatus' + coinbase.public_rest_api.OptionProductDetails: + title: OptionProductDetails contains details specific to option products + type: object + properties: + option_type: + $ref: '#/components/schemas/coinbase.public_rest_api.OptionType' + strike: + title: Strike price of the option + type: string + description: Strike price of the option + example: "2400" + contract_root_unit: + title: Contract root unit (underlying asset) + type: string + description: Contract root unit (underlying asset) + example: ETH + settlement_currency: + title: Currency the option settles in + type: string + description: Currency the option settles in + example: ETH + contract_code: + title: Contract code identifier + type: string + description: Contract code identifier + example: eth_usd + group_description: + title: Descriptive name for the product group + type: string + description: Descriptive name for the product group + example: Deribit ETH Inverse Options + contract_size: + title: Contract size + type: string + description: Contract size + example: "1" + contract_expiry: + title: Contract expiry timestamp + type: string + description: Contract expiry timestamp + format: date-time + settlement_period: + $ref: '#/components/schemas/coinbase.public_rest_api.SettlementPeriod' + settlement_model: + $ref: '#/components/schemas/coinbase.public_rest_api.SettlementModel' + counter_currency: + title: Currency the option is quoted against + type: string + description: Currency the option is quoted against + example: ETH + lot_size: + title: Smallest tradable quantity of the contract + type: string + description: Smallest tradable quantity of the contract + example: "10" + price_increment_steps: + type: array + description: Tiered price increments that override price_increment above + a threshold; empty when a single price_increment applies + items: + $ref: '#/components/schemas/coinbase.public_rest_api.PriceIncrementStep' + coinbase.public_rest_api.OptionType: + type: string + description: |- + The type of an option position. + + - OPTION_TYPE_UNSPECIFIED: Unspecified option type. + - OPTION_TYPE_CALL: Call option. + - OPTION_TYPE_PUT: Put option. + enum: + - OPTION_TYPE_CALL + - OPTION_TYPE_PUT + coinbase.public_rest_api.OptionsDetails: + type: object + properties: + delta: + type: string + description: Delta greek + example: "0.5" + gamma: + type: string + description: Gamma greek + example: "0.1" + theta: + type: string + description: Theta greek + example: "-0.05" + vega: + type: string + description: Vega greek + example: "0.2" + strike: + type: string + description: Strike price + example: "50000.00" + option_type: + $ref: '#/components/schemas/coinbase.public_rest_api.OptionType' + description: "Options-specific details for a derivative position, including\ + \ greeks." coinbase.public_rest_api.Order: type: object properties: @@ -8206,6 +13819,11 @@ components: $ref: '#/components/schemas/coinbase.public_rest_api.ProductType' commission_detail_total: $ref: '#/components/schemas/coinbase.public_rest_api.CommissionDetailTotal' + is_buy_exact: + type: boolean + description: Indicates if this was a buy exact order (fees charged on top + of quote size for BUY orders sized in quote) + example: false coinbase.public_rest_api.OrderEdit: type: object properties: @@ -8576,9 +14194,7 @@ components: $ref: '#/components/schemas/coinbase.public_rest_api.PositionReferenceType' coinbase.public_rest_api.PositionReferenceType: type: string - default: POSITION_REFERENCE_TYPE_UNSPECIFIED enum: - - POSITION_REFERENCE_TYPE_UNSPECIFIED - ENTITY - PORTFOLIO coinbase.public_rest_api.PostOrderPreviewResponse: @@ -8681,6 +14297,10 @@ components: description: The maximum order size that will show up on venue order books (in base currency). example: "10.5" + is_buy_exact: + type: boolean + description: Buy Exact order flag + example: false coinbase.public_rest_api.PostTradeCreditInformation: type: object properties: @@ -8753,6 +14373,25 @@ components: $ref: '#/components/schemas/coinbase.public_rest_api.ValidatorUnstakePreview' description: PreviewUnstakeResponse contains the response data from previewing an unstaking operation. + coinbase.public_rest_api.PriceIncrementStep: + type: object + properties: + price_threshold: + title: Prices strictly greater than this threshold use this step's price + increment + type: string + description: Prices strictly greater than this threshold use this step's + price increment; a price equal to it takes the next lower step + example: "0.005" + price_increment: + title: Minimum price increment applied above the threshold + type: string + description: Minimum price increment applied to prices above the threshold + example: "0.0005" + description: |- + PriceIncrementStep overrides the product's price_increment for prices above a + threshold. A price takes the increment of the highest step whose threshold it + strictly exceeds, and the product's price_increment when it exceeds none. coinbase.public_rest_api.PrimeXMHealthStatus: type: string description: |2- @@ -8826,9 +14465,7 @@ components: description: |2- - MARGIN_REQUIREMENT_TYPE_DMR_PLUS_PMR: Integrated (netted) cross-margin requirement for spot assets and all derivatives contracts. - MARGIN_REQUIREMENT_TYPE_IPMR_PLUS_IFMR: Combined cross-margin requirement: Integrated Portfolio Margin (IPMR) plus Ineligible Futures Margin (IFMR). - default: MARGIN_REQUIREMENT_TYPE_UNSPECIFIED enum: - - MARGIN_REQUIREMENT_TYPE_UNSPECIFIED - MARGIN_REQUIREMENT_TYPE_DMR_PLUS_PMR - MARGIN_REQUIREMENT_TYPE_IPMR_PLUS_IFMR coinbase.public_rest_api.PrimeXMMarginThreshold: @@ -8846,9 +14483,7 @@ components: description: |2- - MARGIN_THRESHOLD_EQUITY_RATIO: Threshold based on equity ratio EQ / MR; triggers when EQ / MR >= threshold_value. - MARGIN_THRESHOLD_DEFICIT_RATIO: Threshold based on deficit ratio (MR - EQ) / XMML; triggers when (MR - EQ) / XMML > threshold_value. - default: MARGIN_THRESHOLD_TYPE_UNSPECIFIED enum: - - MARGIN_THRESHOLD_TYPE_UNSPECIFIED - MARGIN_THRESHOLD_EQUITY_RATIO - MARGIN_THRESHOLD_DEFICIT_RATIO - MARGIN_THRESHOLD_NONE @@ -8941,6 +14576,8 @@ components: $ref: '#/components/schemas/coinbase.public_rest_api.FcmTradingSessionDetails' future_product_details: $ref: '#/components/schemas/coinbase.public_rest_api.FutureProductDetails' + option_product_details: + $ref: '#/components/schemas/coinbase.public_rest_api.OptionProductDetails' coinbase.public_rest_api.ProductPermissions: type: string enum: @@ -8954,9 +14591,11 @@ components: - UNKNOWN_PRODUCT_TYPE: Unknown product type - SPOT: Spot product - FUTURE: Future product + - OPTION: Option product enum: - SPOT - FUTURE + - OPTION coinbase.public_rest_api.QuoteResponse: title: Copied from https://github.cbhq.net/institutional/trading/blob/3e6da61aceb64c7cbe6f0c0f8fbdb98fd3e868dc/proxy/trading/protos/coinbase/brokerage/proxy/trading/api/orderentry.proto#L366-L370 type: object @@ -9006,9 +14645,7 @@ components: description: Maximum quote size for RFQ coinbase.public_rest_api.RateType: type: string - default: RATE_TYPE_UNSET enum: - - RATE_TYPE_UNSET - BPS - APR_360 - APR_365 @@ -9071,16 +14708,37 @@ components: - RISK_MANAGEMENT_TYPE_UNSPECIFIED: Unspecified risk management type - RISK_MANAGEMENT_TYPE_MANAGED_BY_FCM: Risk is managed by FCM (Futures Commission Merchant) - RISK_MANAGEMENT_TYPE_MANAGED_BY_VENUE: Risk is managed by the venue - default: RISK_MANAGEMENT_TYPE_UNSPECIFIED enum: - - RISK_MANAGEMENT_TYPE_UNSPECIFIED - RISK_MANAGEMENT_TYPE_MANAGED_BY_FCM - RISK_MANAGEMENT_TYPE_MANAGED_BY_VENUE - coinbase.public_rest_api.RpcConfig: + coinbase.public_rest_api.RotateAPIKeyRequest: type: object properties: - skip_broadcast: - type: boolean + duration_seconds: + type: integer + description: "How long the old key remains active after the new key is approved,\ + \ in seconds. Set to 0 for immediate expiry on approval. Cannot extend\ + \ beyond the original key's expiry." + format: int64 + example: 3600 + coinbase.public_rest_api.RotateAPIKeyResponse: + type: object + properties: + encrypted_credentials: + type: string + description: Base64-encoded encrypted payload containing the new API key + credentials. Decrypt using your current secret_key with HKDF-SHA256 + + AES-256-GCM. + activity_id: + type: string + description: The Prime activity ID tracking the consensus approval for this + rotation. Use with the Activities endpoints to monitor approval status. + example: e8bbed13-fa33-41de-86d5-4335d8f08166 + coinbase.public_rest_api.RpcConfig: + type: object + properties: + skip_broadcast: + type: boolean description: "If true, transaction will not be broadcast to the network" example: false url: @@ -9124,6 +14782,32 @@ components: type: boolean description: Success example: true + coinbase.public_rest_api.SettlementModel: + title: SettlementModel represents the currency a derivative contract settles + in + type: string + description: |- + - SETTLEMENT_MODEL_UNSPECIFIED: Unspecified settlement model + - SETTLEMENT_MODEL_LINEAR: Settles in the quote currency + - SETTLEMENT_MODEL_INVERSE: Settles in the base currency + enum: + - SETTLEMENT_MODEL_LINEAR + - SETTLEMENT_MODEL_INVERSE + coinbase.public_rest_api.SettlementPeriod: + title: SettlementPeriod represents how often a derivative contract expires and + settles + type: string + description: |- + - SETTLEMENT_PERIOD_UNSPECIFIED: Unspecified settlement period + - SETTLEMENT_PERIOD_PERPETUAL: Contract never expires + - SETTLEMENT_PERIOD_DAY: Contract expires daily + - SETTLEMENT_PERIOD_WEEK: Contract expires weekly + - SETTLEMENT_PERIOD_MONTH: Contract expires monthly + enum: + - SETTLEMENT_PERIOD_PERPETUAL + - SETTLEMENT_PERIOD_DAY + - SETTLEMENT_PERIOD_WEEK + - SETTLEMENT_PERIOD_MONTH coinbase.public_rest_api.ShortCollateral: type: object properties: @@ -9160,9 +14844,7 @@ components: - ASC coinbase.public_rest_api.StakeType: type: string - default: STAKE_TYPE_UNSPECIFIED enum: - - STAKE_TYPE_UNSPECIFIED - STAKE_TYPE_INITIAL_DEPOSIT - STAKE_TYPE_TOP_UP coinbase.public_rest_api.StakingClaimRewardsResponse: @@ -9554,6 +15236,7 @@ components: - ONCHAIN_TRANSACTION: On-chain transaction initiated with Prime Onchain Wallet - PORTFOLIO_STAKE: Portfolio-level staking operation - PORTFOLIO_UNSTAKE: Portfolio-level unstaking operation + - MERGE_STAKE: On-chain transaction consolidating funds from different addresses belonging to the same wallet. enum: - DEPOSIT - WITHDRAWAL @@ -9590,6 +15273,7 @@ components: - ONCHAIN_TRANSACTION - PORTFOLIO_STAKE - PORTFOLIO_UNSTAKE + - MERGE_STAKE coinbase.public_rest_api.TransactionValidator: required: - transaction_id @@ -9698,13 +15382,13 @@ components: description: |- Account identifier for travel rule compliance. If not provided, defaults to portfolio ID. + vasp_address: + $ref: '#/components/schemas/coinbase.public_rest_api.DetailedAddress' description: Represents a party in a travel rule transfer (originator or beneficiary). coinbase.public_rest_api.TravelRuleStatus: title: Travel rule compliance status for a transaction type: string - default: TRAVEL_RULE_STATUS_UNSPECIFIED enum: - - TRAVEL_RULE_STATUS_UNSPECIFIED - TRAVEL_RULE_STATUS_PENDING - TRAVEL_RULE_STATUS_SUBMITTED coinbase.public_rest_api.TravelRuleWalletType: @@ -9714,16 +15398,12 @@ components: - TRAVEL_RULE_WALLET_TYPE_UNSPECIFIED: Default unspecified wallet type - TRAVEL_RULE_WALLET_TYPE_VASP: Centralized exchange wallet - TRAVEL_RULE_WALLET_TYPE_SELF_CUSTODIED: Self-hosted/custodial wallet - default: TRAVEL_RULE_WALLET_TYPE_UNSPECIFIED enum: - - TRAVEL_RULE_WALLET_TYPE_UNSPECIFIED - TRAVEL_RULE_WALLET_TYPE_VASP - TRAVEL_RULE_WALLET_TYPE_SELF_CUSTODIED coinbase.public_rest_api.UnstakeType: type: string - default: UNSTAKE_TYPE_UNSPECIFIED enum: - - UNSTAKE_TYPE_UNSPECIFIED - UNSTAKE_TYPE_PARTIAL - UNSTAKE_TYPE_FULL coinbase.public_rest_api.UnstakingStatus: @@ -9830,14 +15510,9 @@ components: Used for granular ETH V2 validator-level staking or unstaking operations. coinbase.public_rest_api.ValidatorProvider: type: string - description: |- - ValidatorProvider enumerates the ETH validator service providers that PPA accepts on - PortfolioStakingUnstakeRequest.validator_provider. The enum names map 1:1 to the display - names returned by ISS GetUsedValidators (service_provider field) and shown in the Prime - UI. Keep in sync with staking/internal/asset/ethereum.mapServiceProviderToDisplayName. - default: VALIDATOR_PROVIDER_UNSPECIFIED + description: ValidatorProvider enumerates the ETH validator service providers + accepted for unstaking. enum: - - VALIDATOR_PROVIDER_UNSPECIFIED - VALIDATOR_PROVIDER_COINBASE_CLOUD - VALIDATOR_PROVIDER_MAVAN - VALIDATOR_PROVIDER_FIGMENT @@ -9860,9 +15535,7 @@ components: $ref: '#/components/schemas/coinbase.public_rest_api.StakingStatus' coinbase.public_rest_api.ValidatorStatus: type: string - default: VALIDATOR_STATUS_UNSPECIFIED enum: - - VALIDATOR_STATUS_UNSPECIFIED - VALIDATOR_STATUS_PENDING - VALIDATOR_STATUS_ACTIVE - VALIDATOR_STATUS_EXITING @@ -10026,6 +15699,10 @@ components: type: string description: "Optional validator address, defaults to Coinbase validator.\ \ For SOL, must be the vote account address. Ignored for ETH." + end_date: + type: string + description: Optional delegation end date in ISO date format (e.g. 2026-07-15). + Required for AVAX; minimum 14-day delegation period applies. description: |- WalletStakeInputs contains the custom inputs for staking operations on a wallet. Requirements and supported fields vary by asset type. @@ -10072,14 +15749,16 @@ components: for more information items: $ref: '#/components/schemas/coinbase.public_rest_api.ValidatorAllocation' + validator_address: + type: string + description: Optional validator address to unstake from. Only supported + for a subset of protocols. description: |- WalletUnstakeInputs contains the custom inputs for unstaking operations on a wallet. Requirements and supported fields vary by asset type. coinbase.public_rest_api.WalletVisibility: type: string - default: WALLET_VISIBILITY_UNSPECIFIED enum: - - WALLET_VISIBILITY_UNSPECIFIED - WALLET_VISIBILITY_VISIBLE - WALLET_VISIBILITY_HIDDEN coinbase.public_rest_api.Web3Asset: @@ -10143,9 +15822,7 @@ components: - CALL_STATUS_AGED: Margin call is open and it is expired - CALL_STATUS_SETTLED: Margin call is fully settled - CALL_STATUS_CANCELED: Margin call was canceled by Credit Risk - default: XM_CALL_STATUS_UNSPECIFIED enum: - - XM_CALL_STATUS_UNSPECIFIED - CALL_STATUS_OPEN - CALL_STATUS_AGED - CALL_STATUS_SETTLED @@ -10157,9 +15834,7 @@ components: - CALL_TYPE_STANDARD: Evaluated at standard margin call evaluation time - CALL_TYPE_URGENT: Evaluated in realtime - CALL_TYPE_DEBIT: Evaluated at debit call evaluation time - default: XM_CALL_TYPE_UNSPECIFIED enum: - - XM_CALL_TYPE_UNSPECIFIED - CALL_TYPE_STANDARD - CALL_TYPE_URGENT - CALL_TYPE_DEBIT @@ -10171,9 +15846,7 @@ components: - TRADES_AND_WITHDRAWALS: Allowed to trade and withdraw. See XM Margin Methodology for full description of when trading and withdrawals are enabled or disabled. - TRADES_ONLY: Allowed to trade but not withdraw. See XM Margin Methodology for full description of when trading and withdrawals are enabled or disabled. - SESSION_LOCKED: Not allowed to trade or withdraw. See XM Margin Methodology for full description of when trading and withdrawals are enabled or disabled. - default: XM_CONTROL_STATUS_UNSPECIFIED enum: - - XM_CONTROL_STATUS_UNSPECIFIED - TRADES_AND_WITHDRAWALS - TRADES_ONLY - SESSION_LOCKED @@ -10188,14 +15861,77 @@ components: - ENTITY_OPEN_URGENT_CALL: There is an urgent margin call. There may also be standard margin calls or debit calls, but there are no expired calls. - ENTITY_AGED_CALL: At least one open margin call (standard or urgent) or debit call is aged. This will trigger the SESSION_LOCKED control status. - ENTITY_OPEN_DEBIT_CALL: There is a debit call. There are no standard margin calls, urgent margin calls, or expired calls. - default: XM_ENTITY_CALL_STATUS_UNSPECIFIED enum: - - XM_ENTITY_CALL_STATUS_UNSPECIFIED - ENTITY_NO_CALL - ENTITY_OPEN_STANDARD_CALL - ENTITY_OPEN_URGENT_CALL - ENTITY_AGED_CALL - ENTITY_OPEN_DEBIT_CALL + coinbase.public_rest_api.XMLiquidatedAsset: + title: XMLiquidatedAsset provides per-asset detail for a liquidation + type: object + properties: + asset: + type: string + description: Asset currency + example: BTC + liquidated_amount: + type: string + description: Amount (nominal) of the asset that has been liquidated + example: "0.1" + liquidated_notional: + type: string + description: USD notional value of the liquidated amount + example: "11453.17" + remaining_amount: + type: string + description: Amount (nominal) of the asset remaining to be liquidated + example: "0.05" + remaining_notional: + type: string + description: USD notional value of the remaining amount + example: "5726.59" + coinbase.public_rest_api.XMLiquidationDetail: + title: XMLiquidationDetail provides detailed information about a single XM liquidation + type: object + properties: + liquidation_id: + type: string + description: Financing liquidation UUID + example: 63a2577a-930d-413b-81e4-9e77765da8f9 + status: + $ref: '#/components/schemas/coinbase.public_rest_api.XMLiquidationStatus' + shortfall_amount: + type: string + description: USD notional shortfall amount that triggered the liquidation + example: "32083.26" + pre_liquidation_start_time: + type: string + description: Timestamp when the pre-liquidation phase started + format: date-time + margin_summary: + $ref: '#/components/schemas/coinbase.public_rest_api.XMSummary' + liquidation_start_time: + type: string + description: Timestamp when active liquidation started + format: date-time + filled_amount: + type: string + description: USD notional amount that has been filled so far + example: "15000.00" + remaining_amount: + type: string + description: USD notional amount remaining to be liquidated + example: "17083.26" + liquidation_finish_time: + type: string + description: Timestamp when the liquidation finished + format: date-time + asset_breakdown: + type: array + description: Per-asset breakdown of liquidated amounts + items: + $ref: '#/components/schemas/coinbase.public_rest_api.XMLiquidatedAsset' coinbase.public_rest_api.XMLiquidationStatus: title: XMLiquidationStatus is the current status of an XM liquidation type: string @@ -10205,14 +15941,42 @@ components: - XM_LIQUIDATION_STATUS_LIQUIDATED: Liquidation has completed successfully - XM_LIQUIDATION_STATUS_CANCELED: Liquidation was canceled - XM_LIQUIDATION_STATUS_FAILED: Liquidation failed - default: XM_LIQUIDATION_STATUS_UNSET enum: - - XM_LIQUIDATION_STATUS_UNSET - XM_LIQUIDATION_STATUS_PRE_LIQUIDATION - XM_LIQUIDATION_STATUS_LIQUIDATING - XM_LIQUIDATION_STATUS_LIQUIDATED - XM_LIQUIDATION_STATUS_CANCELED - XM_LIQUIDATION_STATUS_FAILED + coinbase.public_rest_api.XMLiquidationSummary: + title: XMLiquidationSummary provides a summary of a single XM liquidation + type: object + properties: + liquidation_id: + type: string + description: Financing liquidation UUID + example: 63a2577a-930d-413b-81e4-9e77765da8f9 + status: + $ref: '#/components/schemas/coinbase.public_rest_api.XMLiquidationStatus' + shortfall_amount: + type: string + description: USD notional shortfall amount that triggered the liquidation + example: "32083.26" + filled_amount: + type: string + description: USD notional amount that has been filled so far + example: "15000.00" + remaining_amount: + type: string + description: USD notional amount remaining to be liquidated + example: "17083.26" + created_at: + type: string + description: Timestamp when the liquidation was created + format: date-time + completed_at: + type: string + description: Timestamp when the liquidation was completed + format: date-time coinbase.public_rest_api.XMLoan: title: XMLoan contains details about a Cross Margin loan type: object @@ -10297,9 +16061,7 @@ components: - WARNING_THRESHOLD: Margin level is breaching the warning threshold (WT) which will result in the issuance of a Margin Call if this is still the case by the scheduled next Margin Call (as defined in the margin methodology). WT is differentiated from DT in that it means margin health is approaching the UMCT - URGENT_MARGIN_CALL_THRESHOLD: Margin level is breaching the UMCT and, as defined in the margin methodology, this will trigger an urgent margin call - LIQUIDATION_THRESHOLD: Margin level is breaching the liquidation threshold (LT) and, as defined in the margin methodology, this will trigger the SESSION_LOCKED control status and liquidation may commence. - default: XM_MARGIN_LEVEL_UNSPECIFIED enum: - - XM_MARGIN_LEVEL_UNSPECIFIED - HEALTHY_THRESHOLD - DEFICIT_THRESHOLD - WARNING_THRESHOLD @@ -10311,9 +16073,7 @@ components: description: |- - CBE: Coinbase Exchange, trading venue that can receive the XM loan - FCM: Coinbase’s Futures Commission Merchant, trading venue that can receive the XM loan - default: XM_PARTY_UNSPECIFIED enum: - - XM_PARTY_UNSPECIFIED - CBE - FCM coinbase.public_rest_api.XMPosition: @@ -10513,140 +16273,6 @@ components: example: "-36.71" risk_netting_info: $ref: '#/components/schemas/coinbase.public_rest_api.XMRiskNettingInfo' - google.protobuf.Any: - type: object - properties: - '@type': - type: string - description: |- - A URL/resource name that uniquely identifies the type of the serialized - protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must represent - the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a canonical form - (e.g., leading "." is not accepted). - - In practice, teams usually precompile into the binary all types that they - expect it to use in the context of Any. However, for URLs which use the - scheme `http`, `https`, or no scheme, one can optionally set up a type - server that maps type URLs to message definitions as follows: - - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the official - protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. As of May 2023, there are no widely used type server - implementations and no plans to implement one. - - Schemes other than `http`, `https` (or the empty scheme) might be - used with implementation specific semantics. - additionalProperties: - type: object - description: |- - `Any` contains an arbitrary serialized protocol buffer message along with a - URL that describes the type of the serialized message. - - Protobuf library provides support to pack/unpack Any values in the form - of utility functions or additional generated methods of the Any type. - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - // or ... - if (any.isSameTypeAs(Foo.getDefaultInstance())) { - foo = any.unpack(Foo.getDefaultInstance()); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - 'type.googleapis.com/full.type.name' as the type URL and the unpack - methods only use the fully qualified type name after the last '/' - in the type URL, for example "foo.bar.com/x/y.z" will yield type - name "y.z". - - JSON - ==== - The JSON representation of an `Any` value uses the regular - representation of the deserialized, embedded message, with an - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - representation, that representation will be embedded adding a field - `value` which holds the custom JSON in addition to the `@type` - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - google.rpc.Status: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - $ref: '#/components/schemas/google.protobuf.Any' google.type.Date: title: |- Represents a whole or partial calendar date, such as a birthday. The time of @@ -10686,6 +16312,6650 @@ components: * [google.type.TimeOfDay][google.type.TimeOfDay] * [google.type.DateTime][google.type.DateTime] * [google.protobuf.Timestamp][google.protobuf.Timestamp] + coinbase.public_rest_api.beta.GetRewardsRateResponse: + type: object + properties: + current_rate: + type: string + description: The current effective rewards rate. + example: "0.045" + available_rates: + type: array + description: "All available rewards rates, including qualifying bounds for\ + \ each rate." + items: + $ref: '#/components/schemas/coinbase.public_rest_api.beta.RewardsRateTier' + description: GetRewardsRateResponse returns the current rewards rate and the + available rates. + coinbase.public_rest_api.beta.RewardsRateTier: + type: object + properties: + rate: + type: string + description: Rate for this tier. + example: "0.045" + lower_limit: + type: string + description: Lower bound of the tier's qualifying criteria (e.g. balance + floor). + example: "0" + upper_limit: + type: string + description: Upper bound of the tier's qualifying criteria. + example: "1000000" + criteria_type: + $ref: '#/components/schemas/coinbase.public_rest_api.beta.RewardsRateTierType' + description: RewardsRateTier is a single tier in the rewards rate card. + coinbase.public_rest_api.beta.RewardsRateTierType: + type: string + description: RewardsRateTierType describes what a rewards rate tier is scoped + by. + enum: + - REWARDS_RATE_TIER_TYPE_BALANCE + - REWARDS_RATE_TIER_TYPE_OPEN_INTEREST + - REWARDS_RATE_TIER_TYPE_PERCENT_VOLUME + coinbase.public_rest_api.AcceptQuoteBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.AcceptQuoteBadRequestSubcode' + trace_id: + type: string + description: AcceptQuoteBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.AcceptQuoteBadRequestSubcode: + type: string + enum: + - ENTITY_ID_INVALID + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - BUYING_POWER_CURRENCY_INVALID + - BUYING_POWER_FAILED_PRECONDITION + - ORDER_REQUEST_INVALID + - ORDER_DUPLICATE_CLIENT_ORDER_ID + - ORDER_REJECTED + - ORDER_PRODUCT_ID_INVALID + - ORDER_PRODUCT_ID_REQUIRED + - ORDER_CLIENT_ORDER_ID_REQUIRED + - ORDER_QUOTE_ID_REQUIRED + - ORDER_SIDE_REQUIRED + - ORDER_SIDE_INVALID + coinbase.public_rest_api.AcceptQuoteForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.AcceptQuoteForbiddenSubcode' + trace_id: + type: string + description: AcceptQuoteForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.AcceptQuoteForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - BUYING_POWER_PERMISSION_DENIED + coinbase.public_rest_api.AcceptQuoteNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.AcceptQuoteNotFoundSubcode' + trace_id: + type: string + description: AcceptQuoteNotFoundErrorResponse documents the HTTP 404 error body. + coinbase.public_rest_api.AcceptQuoteNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_NOT_FOUND + - PORTFOLIO_NOT_FOUND + - BUYING_POWER_NOT_FOUND + coinbase.public_rest_api.BadRequestErrorCode: + type: string + enum: + - VALIDATION_ERROR + - REQUIRED_FIELD_MISSING + - FAILED_PRECONDITION + coinbase.public_rest_api.CancelAdvancedTransferBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelAdvancedTransferBadRequestSubcode' + trace_id: + type: string + description: CancelAdvancedTransferBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.CancelAdvancedTransferBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_INVALID + - ADVANCED_TRANSFER_REQUEST_INVALID + - ADVANCED_TRANSFER_ID_INVALID + - ADVANCED_TRANSFER_CANCEL_PRECONDITION_FAILED + coinbase.public_rest_api.CancelAdvancedTransferForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelAdvancedTransferForbiddenSubcode' + trace_id: + type: string + description: CancelAdvancedTransferForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.CancelAdvancedTransferForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - ADVANCED_TRANSFER_NOT_ENABLED + coinbase.public_rest_api.CancelAdvancedTransferNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelAdvancedTransferNotFoundSubcode' + trace_id: + type: string + description: CancelAdvancedTransferNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.CancelAdvancedTransferNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - TRANSACTION_NOT_FOUND + coinbase.public_rest_api.CancelFuturesSweepBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelFuturesSweepBadRequestSubcode' + trace_id: + type: string + description: CancelFuturesSweepBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.CancelFuturesSweepBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - FCM_INVALID_ARGUMENT + coinbase.public_rest_api.CancelFuturesSweepForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelFuturesSweepForbiddenSubcode' + trace_id: + type: string + description: CancelFuturesSweepForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.CancelFuturesSweepForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.CancelFuturesSweepNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelFuturesSweepNotFoundSubcode' + trace_id: + type: string + description: CancelFuturesSweepNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.CancelFuturesSweepNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - FCM_SWEEP_NOT_FOUND + coinbase.public_rest_api.CancelOrderBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelOrderBadRequestSubcode' + trace_id: + type: string + description: CancelOrderBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.CancelOrderBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - ORDER_ID_REQUIRED + - ORDER_ID_INVALID + - ORDER_PRODUCT_ID_INVALID + - ORDER_FULLY_FILLED + - ORDER_BEING_REPLACED + - ORDER_CANCEL_DUPLICATE + - ORDER_SESSION_INVALID + coinbase.public_rest_api.CancelOrderForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelOrderForbiddenSubcode' + trace_id: + type: string + description: CancelOrderForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.CancelOrderForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - ORDER_CANCEL_NOT_ALLOWED + coinbase.public_rest_api.CancelOrderNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelOrderNotFoundSubcode' + trace_id: + type: string + description: CancelOrderNotFoundErrorResponse documents the HTTP 404 error body. + coinbase.public_rest_api.CancelOrderNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ORDER_NOT_FOUND + coinbase.public_rest_api.CreateAdvancedTransferBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateAdvancedTransferBadRequestSubcode' + trace_id: + type: string + description: CreateAdvancedTransferBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.CreateAdvancedTransferBadRequestSubcode: + type: string + enum: + - ADVANCED_TRANSFER_REQUEST_INVALID + - ADVANCED_TRANSFER_PRECONDITION_FAILED + - ADVANCED_TRANSFER_DATE_INVALID + - ADVANCED_TRANSFER_TOO_MANY_FUND_MOVEMENTS + - ADVANCED_TRANSFER_COUNTERPARTY_INVALID + - ADVANCED_TRANSFER_AMOUNT_INVALID + - ADVANCED_TRANSFER_COUNTERPARTY_REQUIRED + coinbase.public_rest_api.CreateAdvancedTransferForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateAdvancedTransferForbiddenSubcode' + trace_id: + type: string + description: CreateAdvancedTransferForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.CreateAdvancedTransferForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - ADVANCED_TRANSFER_NOT_ENABLED + coinbase.public_rest_api.CreateAdvancedTransferNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateAdvancedTransferNotFoundSubcode' + trace_id: + type: string + description: CreateAdvancedTransferNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.CreateAdvancedTransferNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ADVANCED_TRANSFER_NOT_FOUND + coinbase.public_rest_api.CreateAllocationBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateAllocationBadRequestSubcode' + trace_id: + type: string + description: CreateAllocationBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.CreateAllocationBadRequestSubcode: + type: string + enum: + - PORTFOLIO_TYPE_UNSUPPORTED + - PORTFOLIO_ID_INVALID + - ALLOCATION_ID_REQUIRED + - ALLOCATION_NETTING_ID_REQUIRED + - ALLOCATION_REQUEST_INVALID + - ALLOCATION_PRECONDITION_FAILED + - ALLOCATION_SOURCE_PORTFOLIO_ID_REQUIRED + - ALLOCATION_DESTINATION_PORTFOLIO_ID_REQUIRED + - ALLOCATION_ORDERS_MIXED_SIDES + - ALLOCATION_ORDERS_MIXED_PRODUCTS + - ALLOCATION_ORDER_NOT_TERMINAL + - ALLOCATION_ORDER_TOO_OLD + - ALLOCATION_ORDER_ALREADY_ALLOCATED + coinbase.public_rest_api.CreateAllocationForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateAllocationForbiddenSubcode' + trace_id: + type: string + description: CreateAllocationForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.CreateAllocationForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.CreateAllocationNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateAllocationNotFoundSubcode' + trace_id: + type: string + description: CreateAllocationNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.CreateAllocationNotFoundSubcode: + type: string + enum: + - PORTFOLIO_NOT_FOUND + - ALLOCATION_NOT_FOUND + coinbase.public_rest_api.CreateConversionBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateConversionBadRequestSubcode' + trace_id: + type: string + description: CreateConversionBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.CreateConversionBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_INVALID + - WALLET_ID_INVALID + - CONVERSION_DESTINATION_INVALID + - CONVERSION_IDEMPOTENCY_KEY_INVALID + - CONVERSION_AMOUNT_INVALID + - CONVERSION_SOURCE_SYMBOL_REQUIRED + - CONVERSION_DESTINATION_REQUIRED + - CONVERSION_REQUEST_INVALID + - CONVERSION_FAILED_PRECONDITION + coinbase.public_rest_api.CreateConversionForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateConversionForbiddenSubcode' + trace_id: + type: string + description: CreateConversionForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.CreateConversionForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - CONVERSION_PERMISSION_DENIED + coinbase.public_rest_api.CreateConversionNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateConversionNotFoundSubcode' + trace_id: + type: string + description: CreateConversionNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.CreateConversionNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - CONVERSION_WALLET_NOT_FOUND + coinbase.public_rest_api.CreateNetAllocationBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateNetAllocationBadRequestSubcode' + trace_id: + type: string + description: CreateNetAllocationBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.CreateNetAllocationBadRequestSubcode: + type: string + enum: + - PORTFOLIO_TYPE_UNSUPPORTED + - PORTFOLIO_ID_INVALID + - ALLOCATION_ID_REQUIRED + - ALLOCATION_NETTING_ID_REQUIRED + - ALLOCATION_REQUEST_INVALID + - ALLOCATION_PRECONDITION_FAILED + - ALLOCATION_SOURCE_PORTFOLIO_ID_REQUIRED + - ALLOCATION_DESTINATION_PORTFOLIO_ID_REQUIRED + - ALLOCATION_ORDERS_MIXED_SIDES + - ALLOCATION_ORDERS_MIXED_PRODUCTS + - ALLOCATION_ORDER_NOT_TERMINAL + - ALLOCATION_ORDER_TOO_OLD + - ALLOCATION_ORDER_ALREADY_ALLOCATED + coinbase.public_rest_api.CreateNetAllocationForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateNetAllocationForbiddenSubcode' + trace_id: + type: string + description: CreateNetAllocationForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.CreateNetAllocationForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.CreateNetAllocationNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateNetAllocationNotFoundSubcode' + trace_id: + type: string + description: CreateNetAllocationNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.CreateNetAllocationNotFoundSubcode: + type: string + enum: + - PORTFOLIO_NOT_FOUND + - ALLOCATION_NOT_FOUND + coinbase.public_rest_api.CreateNewLocatesBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateNewLocatesBadRequestSubcode' + trace_id: + type: string + description: CreateNewLocatesBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.CreateNewLocatesBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - LOCATE_DATE_INVALID + - LOCATE_REQUEST_INVALID + - LOCATE_FAILED_PRECONDITION + - LOCATE_DATE_REQUIRED + - LOCATE_SYMBOL_REQUIRED + - LOCATE_AMOUNT_REQUIRED + coinbase.public_rest_api.CreateNewLocatesForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateNewLocatesForbiddenSubcode' + trace_id: + type: string + description: CreateNewLocatesForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.CreateNewLocatesForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.CreateNewLocatesNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateNewLocatesNotFoundSubcode' + trace_id: + type: string + description: CreateNewLocatesNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.CreateNewLocatesNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.CreateOnchainAddressGroupBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainAddressGroupBadRequestSubcode' + trace_id: + type: string + description: CreateOnchainAddressGroupBadRequestErrorResponse documents the + HTTP 400 error body. + coinbase.public_rest_api.CreateOnchainAddressGroupBadRequestSubcode: + type: string + enum: + - ONCHAIN_ADDRESS_GROUP_REQUEST_INVALID + coinbase.public_rest_api.CreateOnchainAddressGroupForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainAddressGroupForbiddenSubcode' + trace_id: + type: string + description: CreateOnchainAddressGroupForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.CreateOnchainAddressGroupForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.CreateOnchainAddressGroupNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainAddressGroupNotFoundSubcode' + trace_id: + type: string + description: CreateOnchainAddressGroupNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.CreateOnchainAddressGroupNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.CreateOnchainTransactionBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainTransactionBadRequestSubcode' + trace_id: + type: string + description: CreateOnchainTransactionBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.CreateOnchainTransactionBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - WALLET_ID_REQUIRED + - WALLET_ID_INVALID + - WALLET_TYPE_NOT_SUPPORTED + - ONCHAIN_TRANSACTION_REQUEST_INVALID + - ONCHAIN_TRANSACTION_RAW_UNSIGNED_TXN_REQUIRED + - ONCHAIN_TRANSACTION_RAW_UNSIGNED_TXN_INVALID + - ONCHAIN_TRANSACTION_EVM_PARAMS_REQUIRED + - ONCHAIN_TRANSACTION_EVM_PARAMS_INVALID + - ONCHAIN_TRANSACTION_REPLACED_TRANSACTION_ID_INVALID + - ONCHAIN_TRANSACTION_DISABLE_DYNAMIC_NONCE_INVALID + - ONCHAIN_TRANSACTION_CHAIN_ID_REQUIRED + - ONCHAIN_TRANSACTION_CHAIN_ID_INVALID + - ONCHAIN_TRANSACTION_NETWORK_NAME_REQUIRED + - ONCHAIN_TRANSACTION_RPC_URL_INVALID + coinbase.public_rest_api.CreateOnchainTransactionForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainTransactionForbiddenSubcode' + trace_id: + type: string + description: CreateOnchainTransactionForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.CreateOnchainTransactionForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.CreateOnchainTransactionNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainTransactionNotFoundSubcode' + trace_id: + type: string + description: CreateOnchainTransactionNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.CreateOnchainTransactionNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - WALLET_NOT_FOUND + coinbase.public_rest_api.CreateOrderBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOrderBadRequestSubcode' + trace_id: + type: string + description: CreateOrderBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.CreateOrderBadRequestSubcode: + type: string + enum: + - ENTITY_ID_INVALID + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - BUYING_POWER_CURRENCY_INVALID + - BUYING_POWER_FAILED_PRECONDITION + - ORDER_REQUEST_INVALID + - ORDER_STOP_LIMIT_NOT_ENABLED + - ORDER_PEG_NOT_ENABLED + - ORDER_DUPLICATE_CLIENT_ORDER_ID + - ORDER_REJECTED + - ORDER_PRODUCT_ID_INVALID + - ORDER_TYPE_NOT_ALLOWED + - ORDER_TIF_NOT_ENABLED + - ORDER_FAILED_PRECONDITION + - ORDER_SIDE_INVALID + - ORDER_SIZE_REQUIRED + - ORDER_SIZE_INVALID + - ORDER_DISPLAY_SIZE_INVALID + - ORDER_PRICE_INVALID + - ORDER_STOP_PRICE_INVALID + - ORDER_TIME_IN_FORCE_INVALID + - ORDER_TIME_RANGE_INVALID + - ORDER_PEG_OFFSET_TYPE_INVALID + coinbase.public_rest_api.CreateOrderForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOrderForbiddenSubcode' + trace_id: + type: string + description: CreateOrderForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.CreateOrderForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - BUYING_POWER_PERMISSION_DENIED + coinbase.public_rest_api.CreateOrderNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOrderNotFoundSubcode' + trace_id: + type: string + description: CreateOrderNotFoundErrorResponse documents the HTTP 404 error body. + coinbase.public_rest_api.CreateOrderNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_NOT_FOUND + - PORTFOLIO_NOT_FOUND + - BUYING_POWER_NOT_FOUND + coinbase.public_rest_api.CreatePortfolioAddressBookEntryBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreatePortfolioAddressBookEntryBadRequestSubcode' + trace_id: + type: string + description: CreatePortfolioAddressBookEntryBadRequestErrorResponse documents + the HTTP 400 error body. + coinbase.public_rest_api.CreatePortfolioAddressBookEntryBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - ADDRESS_BOOK_INVALID_ARGUMENT + - ADDRESS_BOOK_FAILED_PRECONDITION + - ADDRESS_BOOK_ADDRESS_REQUIRED + - ADDRESS_BOOK_CURRENCY_SYMBOL_REQUIRED + - ADDRESS_BOOK_NAME_REQUIRED + coinbase.public_rest_api.CreatePortfolioAddressBookEntryForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreatePortfolioAddressBookEntryForbiddenSubcode' + trace_id: + type: string + description: CreatePortfolioAddressBookEntryForbiddenErrorResponse documents + the HTTP 403 error body. + coinbase.public_rest_api.CreatePortfolioAddressBookEntryForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.CreatePortfolioAddressBookEntryNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreatePortfolioAddressBookEntryNotFoundSubcode' + trace_id: + type: string + description: CreatePortfolioAddressBookEntryNotFoundErrorResponse documents + the HTTP 404 error body. + coinbase.public_rest_api.CreatePortfolioAddressBookEntryNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ADDRESS_BOOK_NOT_FOUND + coinbase.public_rest_api.CreateQuoteRequestBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateQuoteRequestBadRequestSubcode' + trace_id: + type: string + description: CreateQuoteRequestBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.CreateQuoteRequestBadRequestSubcode: + type: string + enum: + - ENTITY_ID_INVALID + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - BUYING_POWER_CURRENCY_INVALID + - BUYING_POWER_FAILED_PRECONDITION + - ORDER_REQUEST_INVALID + - ORDER_PRODUCT_ID_INVALID + - ORDER_FAILED_PRECONDITION + - ORDER_PRODUCT_ID_REQUIRED + - ORDER_SIDE_REQUIRED + - ORDER_RESOURCE_NOT_FOUND + - ORDER_SIDE_INVALID + - ORDER_SIZE_INVALID + - ORDER_PRICE_INVALID + - ORDER_CLIENT_QUOTE_ID_REQUIRED + - ORDER_QUOTE_DURATION_INVALID + coinbase.public_rest_api.CreateQuoteRequestForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateQuoteRequestForbiddenSubcode' + trace_id: + type: string + description: CreateQuoteRequestForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.CreateQuoteRequestForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - BUYING_POWER_PERMISSION_DENIED + - ORDER_RFQ_NOT_ENABLED + - ORDER_RFQ_SIQ_NOT_ENABLED + coinbase.public_rest_api.CreateQuoteRequestNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateQuoteRequestNotFoundSubcode' + trace_id: + type: string + description: CreateQuoteRequestNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.CreateQuoteRequestNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_NOT_FOUND + - PORTFOLIO_NOT_FOUND + - BUYING_POWER_NOT_FOUND + coinbase.public_rest_api.CreateWalletBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletBadRequestSubcode' + trace_id: + type: string + description: CreateWalletBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.CreateWalletBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_INVALID + - WALLET_TYPE_NOT_SUPPORTED + - WALLET_REQUEST_INVALID + - WALLET_ONCHAIN_SYMBOLS_NOT_ALLOWED + - WALLET_FAILED_PRECONDITION + - WALLET_NETWORK_ID_REQUIRED + - WALLET_NETWORK_INVALID + - WALLET_ONCHAIN_SETUP_UNAVAILABLE + - WALLET_NAME_REQUIRED + - WALLET_SYMBOL_REQUIRED + - WALLET_NETWORK_FAMILY_REQUIRED + - WALLET_NETWORK_FAMILY_NOT_ALLOWED + - WALLET_NETWORK_TYPE_REQUIRED + coinbase.public_rest_api.CreateWalletDepositAddressBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletDepositAddressBadRequestSubcode' + trace_id: + type: string + description: CreateWalletDepositAddressBadRequestErrorResponse documents the + HTTP 400 error body. + coinbase.public_rest_api.CreateWalletDepositAddressBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - WALLET_ID_REQUIRED + - WALLET_ID_INVALID + - WALLET_NOT_DEPOSITABLE + - WALLET_DEPOSIT_REQUEST_INVALID + - WALLET_FAILED_PRECONDITION + - WALLET_NETWORK_ID_REQUIRED + - WALLET_NETWORK_INVALID + - WALLET_NETWORK_TYPE_NOT_SUPPORTED + coinbase.public_rest_api.CreateWalletDepositAddressForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletDepositAddressForbiddenSubcode' + trace_id: + type: string + description: CreateWalletDepositAddressForbiddenErrorResponse documents the + HTTP 403 error body. + coinbase.public_rest_api.CreateWalletDepositAddressForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.CreateWalletDepositAddressNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletDepositAddressNotFoundSubcode' + trace_id: + type: string + description: CreateWalletDepositAddressNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.CreateWalletDepositAddressNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - WALLET_NOT_FOUND + coinbase.public_rest_api.CreateWalletForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletForbiddenSubcode' + trace_id: + type: string + description: CreateWalletForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.CreateWalletForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.CreateWalletNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletNotFoundSubcode' + trace_id: + type: string + description: CreateWalletNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.CreateWalletNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ASSET_NOT_FOUND + - WALLET_NOT_FOUND + coinbase.public_rest_api.CreateWalletTransferBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletTransferBadRequestSubcode' + trace_id: + type: string + description: CreateWalletTransferBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.CreateWalletTransferBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - WALLET_ID_REQUIRED + - WALLET_ID_INVALID + - WALLET_REQUEST_INVALID + - WALLET_FAILED_PRECONDITION + - WALLET_AMOUNT_REQUIRED + - WALLET_IDEMPOTENCY_KEY_REQUIRED + - WALLET_IDEMPOTENCY_KEY_INVALID + - WALLET_CURRENCY_SYMBOL_REQUIRED + - WALLET_TRANSFER_DESTINATION_REQUIRED + - WALLET_TRANSFER_DESTINATION_INVALID + coinbase.public_rest_api.CreateWalletTransferForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletTransferForbiddenSubcode' + trace_id: + type: string + description: CreateWalletTransferForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.CreateWalletTransferForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - WALLET_PORTFOLIO_CREDIT_FROZEN + coinbase.public_rest_api.CreateWalletTransferNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletTransferNotFoundSubcode' + trace_id: + type: string + description: CreateWalletTransferNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.CreateWalletTransferNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - WALLET_NOT_FOUND + coinbase.public_rest_api.CreateWalletWithdrawalBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletWithdrawalBadRequestSubcode' + trace_id: + type: string + description: CreateWalletWithdrawalBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.CreateWalletWithdrawalBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - WALLET_ID_REQUIRED + - WALLET_ID_INVALID + - WALLET_REQUEST_INVALID + - WALLET_FAILED_PRECONDITION + - WALLET_NETWORK_INVALID + - WALLET_AMOUNT_REQUIRED + - WALLET_IDEMPOTENCY_KEY_REQUIRED + - WALLET_IDEMPOTENCY_KEY_INVALID + - WALLET_CURRENCY_SYMBOL_REQUIRED + - WALLET_DESTINATION_TYPE_REQUIRED + - WALLET_DESTINATION_TYPE_INVALID + - WALLET_COUNTERPARTY_ID_REQUIRED + coinbase.public_rest_api.CreateWalletWithdrawalForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletWithdrawalForbiddenSubcode' + trace_id: + type: string + description: CreateWalletWithdrawalForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.CreateWalletWithdrawalForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - WALLET_PORTFOLIO_CREDIT_FROZEN + coinbase.public_rest_api.CreateWalletWithdrawalNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletWithdrawalNotFoundSubcode' + trace_id: + type: string + description: CreateWalletWithdrawalNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.CreateWalletWithdrawalNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ASSET_NOT_FOUND + - WALLET_NOT_FOUND + coinbase.public_rest_api.DeleteOnchainAddressGroupBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.DeleteOnchainAddressGroupBadRequestSubcode' + trace_id: + type: string + description: DeleteOnchainAddressGroupBadRequestErrorResponse documents the + HTTP 400 error body. + coinbase.public_rest_api.DeleteOnchainAddressGroupBadRequestSubcode: + type: string + enum: + - ONCHAIN_ADDRESS_GROUP_REQUEST_INVALID + coinbase.public_rest_api.DeleteOnchainAddressGroupForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.DeleteOnchainAddressGroupForbiddenSubcode' + trace_id: + type: string + description: DeleteOnchainAddressGroupForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.DeleteOnchainAddressGroupForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.DeleteOnchainAddressGroupNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.DeleteOnchainAddressGroupNotFoundSubcode' + trace_id: + type: string + description: DeleteOnchainAddressGroupNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.DeleteOnchainAddressGroupNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.EditOrderBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.EditOrderBadRequestSubcode' + trace_id: + type: string + description: EditOrderBadRequestErrorResponse documents the HTTP 400 error body. + coinbase.public_rest_api.EditOrderBadRequestSubcode: + type: string + enum: + - ENTITY_ID_INVALID + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - BUYING_POWER_CURRENCY_INVALID + - BUYING_POWER_FAILED_PRECONDITION + - ORDER_REQUEST_INVALID + - ORDER_DUPLICATE_CLIENT_ORDER_ID + - ORDER_REJECTED + - ORDER_PRODUCT_ID_INVALID + - ORDER_RESOURCE_NOT_FOUND + - ORDER_SIDE_INVALID + coinbase.public_rest_api.EditOrderForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.EditOrderForbiddenSubcode' + trace_id: + type: string + description: EditOrderForbiddenErrorResponse documents the HTTP 403 error body. + coinbase.public_rest_api.EditOrderForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - BUYING_POWER_PERMISSION_DENIED + coinbase.public_rest_api.EditOrderNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.EditOrderNotFoundSubcode' + trace_id: + type: string + description: EditOrderNotFoundErrorResponse documents the HTTP 404 error body. + coinbase.public_rest_api.EditOrderNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_NOT_FOUND + - BUYING_POWER_NOT_FOUND + coinbase.public_rest_api.ForbiddenErrorCode: + type: string + enum: + - PERMISSION_DENIED + coinbase.public_rest_api.GetActivityForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetActivityForbiddenSubcode' + trace_id: + type: string + description: GetActivityForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetActivityForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetActivityNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetActivityNotFoundSubcode' + trace_id: + type: string + description: GetActivityNotFoundErrorResponse documents the HTTP 404 error body. + coinbase.public_rest_api.GetActivityNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ACTIVITY_NOT_FOUND + coinbase.public_rest_api.GetAllocationBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationBadRequestSubcode' + trace_id: + type: string + description: GetAllocationBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.GetAllocationBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - ALLOCATION_ID_REQUIRED + - ALLOCATION_ID_INVALID + - ALLOCATION_NETTING_ID_REQUIRED + - ALLOCATION_NETTING_ID_INVALID + - ALLOCATION_REQUEST_INVALID + coinbase.public_rest_api.GetAllocationForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationForbiddenSubcode' + trace_id: + type: string + description: GetAllocationForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetAllocationForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetAllocationNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationNotFoundSubcode' + trace_id: + type: string + description: GetAllocationNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetAllocationNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ALLOCATION_NOT_FOUND + coinbase.public_rest_api.GetAllocationsByClientNettingIdBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationsByClientNettingIdBadRequestSubcode' + trace_id: + type: string + description: GetAllocationsByClientNettingIdBadRequestErrorResponse documents + the HTTP 400 error body. + coinbase.public_rest_api.GetAllocationsByClientNettingIdBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - ALLOCATION_ID_REQUIRED + - ALLOCATION_ID_INVALID + - ALLOCATION_NETTING_ID_REQUIRED + - ALLOCATION_NETTING_ID_INVALID + - ALLOCATION_REQUEST_INVALID + coinbase.public_rest_api.GetAllocationsByClientNettingIdForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationsByClientNettingIdForbiddenSubcode' + trace_id: + type: string + description: GetAllocationsByClientNettingIdForbiddenErrorResponse documents + the HTTP 403 error body. + coinbase.public_rest_api.GetAllocationsByClientNettingIdForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetAllocationsByClientNettingIdNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationsByClientNettingIdNotFoundSubcode' + trace_id: + type: string + description: GetAllocationsByClientNettingIdNotFoundErrorResponse documents + the HTTP 404 error body. + coinbase.public_rest_api.GetAllocationsByClientNettingIdNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ALLOCATION_NOT_FOUND + coinbase.public_rest_api.GetBuyingPowerBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetBuyingPowerBadRequestSubcode' + trace_id: + type: string + description: GetBuyingPowerBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.GetBuyingPowerBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - BUYING_POWER_BASE_CURRENCY_REQUIRED + - BUYING_POWER_QUOTE_CURRENCY_REQUIRED + - BUYING_POWER_CURRENCY_INVALID + - BUYING_POWER_FAILED_PRECONDITION + coinbase.public_rest_api.GetBuyingPowerForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetBuyingPowerForbiddenSubcode' + trace_id: + type: string + description: GetBuyingPowerForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetBuyingPowerForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - BUYING_POWER_PERMISSION_DENIED + coinbase.public_rest_api.GetBuyingPowerNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetBuyingPowerNotFoundSubcode' + trace_id: + type: string + description: GetBuyingPowerNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetBuyingPowerNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - BUYING_POWER_NOT_FOUND + coinbase.public_rest_api.GetCandlesBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCandlesBadRequestSubcode' + trace_id: + type: string + description: GetCandlesBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.GetCandlesBadRequestSubcode: + type: string + enum: + - CANDLE_REQUEST_INVALID + - CANDLE_TIME_RANGE_INVALID + coinbase.public_rest_api.GetCandlesForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCandlesForbiddenSubcode' + trace_id: + type: string + description: GetCandlesForbiddenErrorResponse documents the HTTP 403 error body. + coinbase.public_rest_api.GetCandlesForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetCandlesNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCandlesNotFoundSubcode' + trace_id: + type: string + description: GetCandlesNotFoundErrorResponse documents the HTTP 404 error body. + coinbase.public_rest_api.GetCandlesNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetConversionFeesForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetConversionFeesForbiddenSubcode' + trace_id: + type: string + description: GetConversionFeesForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.GetConversionFeesForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - CONVERSION_FEE_FEATURE_DISABLED + - CONVERSION_FEE_NOT_ENABLED_FOR_ORG + coinbase.public_rest_api.GetCrossMarginOverviewBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginOverviewBadRequestSubcode' + trace_id: + type: string + description: GetCrossMarginOverviewBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetCrossMarginOverviewBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_ID_INVALID + - CROSS_MARGIN_INVALID_ARGUMENT + - CROSS_MARGIN_FAILED_PRECONDITION + coinbase.public_rest_api.GetCrossMarginOverviewForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginOverviewForbiddenSubcode' + trace_id: + type: string + description: GetCrossMarginOverviewForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.GetCrossMarginOverviewForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - CROSS_MARGIN_NOT_ENABLED + coinbase.public_rest_api.GetCrossMarginOverviewNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginOverviewNotFoundSubcode' + trace_id: + type: string + description: GetCrossMarginOverviewNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.GetCrossMarginOverviewNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_NOT_FOUND + coinbase.public_rest_api.GetCrossMarginPrimeOverviewBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginPrimeOverviewBadRequestSubcode' + trace_id: + type: string + description: GetCrossMarginPrimeOverviewBadRequestErrorResponse documents the + HTTP 400 error body. + coinbase.public_rest_api.GetCrossMarginPrimeOverviewBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_ID_INVALID + - CROSS_MARGIN_INVALID_ARGUMENT + - CROSS_MARGIN_FAILED_PRECONDITION + coinbase.public_rest_api.GetCrossMarginPrimeOverviewForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginPrimeOverviewForbiddenSubcode' + trace_id: + type: string + description: GetCrossMarginPrimeOverviewForbiddenErrorResponse documents the + HTTP 403 error body. + coinbase.public_rest_api.GetCrossMarginPrimeOverviewForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - CROSS_MARGIN_NOT_ENABLED + coinbase.public_rest_api.GetCrossMarginPrimeOverviewNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginPrimeOverviewNotFoundSubcode' + trace_id: + type: string + description: GetCrossMarginPrimeOverviewNotFoundErrorResponse documents the + HTTP 404 error body. + coinbase.public_rest_api.GetCrossMarginPrimeOverviewNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_NOT_FOUND + coinbase.public_rest_api.GetCrossMarginRiskParametersBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginRiskParametersBadRequestSubcode' + trace_id: + type: string + description: GetCrossMarginRiskParametersBadRequestErrorResponse documents the + HTTP 400 error body. + coinbase.public_rest_api.GetCrossMarginRiskParametersBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_ID_INVALID + - CROSS_MARGIN_INVALID_ARGUMENT + - CROSS_MARGIN_FAILED_PRECONDITION + coinbase.public_rest_api.GetCrossMarginRiskParametersForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginRiskParametersForbiddenSubcode' + trace_id: + type: string + description: GetCrossMarginRiskParametersForbiddenErrorResponse documents the + HTTP 403 error body. + coinbase.public_rest_api.GetCrossMarginRiskParametersForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - CROSS_MARGIN_NOT_ENABLED + coinbase.public_rest_api.GetCrossMarginRiskParametersNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginRiskParametersNotFoundSubcode' + trace_id: + type: string + description: GetCrossMarginRiskParametersNotFoundErrorResponse documents the + HTTP 404 error body. + coinbase.public_rest_api.GetCrossMarginRiskParametersNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_NOT_FOUND + coinbase.public_rest_api.GetDerivativePositionsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativePositionsBadRequestSubcode' + trace_id: + type: string + description: GetDerivativePositionsBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetDerivativePositionsBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + coinbase.public_rest_api.GetDerivativePositionsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativePositionsForbiddenSubcode' + trace_id: + type: string + description: GetDerivativePositionsForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.GetDerivativePositionsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetDerivativePositionsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativePositionsNotFoundSubcode' + trace_id: + type: string + description: GetDerivativePositionsNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.GetDerivativePositionsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_POSITION_NOT_FOUND + coinbase.public_rest_api.GetDerivativesCurrencySummaryBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativesCurrencySummaryBadRequestSubcode' + trace_id: + type: string + description: GetDerivativesCurrencySummaryBadRequestErrorResponse documents + the HTTP 400 error body. + coinbase.public_rest_api.GetDerivativesCurrencySummaryBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + coinbase.public_rest_api.GetDerivativesCurrencySummaryForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativesCurrencySummaryForbiddenSubcode' + trace_id: + type: string + description: GetDerivativesCurrencySummaryForbiddenErrorResponse documents the + HTTP 403 error body. + coinbase.public_rest_api.GetDerivativesCurrencySummaryForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetDerivativesCurrencySummaryNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativesCurrencySummaryNotFoundSubcode' + trace_id: + type: string + description: GetDerivativesCurrencySummaryNotFoundErrorResponse documents the + HTTP 404 error body. + coinbase.public_rest_api.GetDerivativesCurrencySummaryNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - FCM_BALANCE_NOT_FOUND + coinbase.public_rest_api.GetEntityActivitiesBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityActivitiesBadRequestSubcode' + trace_id: + type: string + description: GetEntityActivitiesBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.GetEntityActivitiesBadRequestSubcode: + type: string + enum: + - ENTITY_ID_INVALID + - ACTIVITY_REQUEST_INVALID + - ACTIVITY_CATEGORY_INVALID + - ACTIVITY_TIME_RANGE_INVALID + - ACTIVITY_STATUS_INVALID + coinbase.public_rest_api.GetEntityActivitiesForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityActivitiesForbiddenSubcode' + trace_id: + type: string + description: GetEntityActivitiesForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.GetEntityActivitiesForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - ACTIVITY_ACCESS_DENIED + coinbase.public_rest_api.GetEntityActivitiesNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityActivitiesNotFoundSubcode' + trace_id: + type: string + description: GetEntityActivitiesNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.GetEntityActivitiesNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetEntityAssetsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityAssetsBadRequestSubcode' + trace_id: + type: string + description: GetEntityAssetsBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.GetEntityAssetsBadRequestSubcode: + type: string + enum: + - ASSET_REQUEST_INVALID + coinbase.public_rest_api.GetEntityAssetsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityAssetsForbiddenSubcode' + trace_id: + type: string + description: GetEntityAssetsForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetEntityAssetsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetEntityAssetsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityAssetsNotFoundSubcode' + trace_id: + type: string + description: GetEntityAssetsNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetEntityAssetsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ASSET_NOT_FOUND + coinbase.public_rest_api.GetEntityPaymentMethodDetailsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodDetailsBadRequestSubcode' + trace_id: + type: string + description: GetEntityPaymentMethodDetailsBadRequestErrorResponse documents + the HTTP 400 error body. + coinbase.public_rest_api.GetEntityPaymentMethodDetailsBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_ID_INVALID + - PAYMENT_METHOD_ID_REQUIRED + - PAYMENT_METHOD_ID_INVALID + - PAYMENT_METHOD_REQUEST_INVALID + coinbase.public_rest_api.GetEntityPaymentMethodDetailsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodDetailsForbiddenSubcode' + trace_id: + type: string + description: GetEntityPaymentMethodDetailsForbiddenErrorResponse documents the + HTTP 403 error body. + coinbase.public_rest_api.GetEntityPaymentMethodDetailsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetEntityPaymentMethodDetailsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodDetailsNotFoundSubcode' + trace_id: + type: string + description: GetEntityPaymentMethodDetailsNotFoundErrorResponse documents the + HTTP 404 error body. + coinbase.public_rest_api.GetEntityPaymentMethodDetailsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - PAYMENT_METHOD_NOT_FOUND + coinbase.public_rest_api.GetEntityPaymentMethodsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodsBadRequestSubcode' + trace_id: + type: string + description: GetEntityPaymentMethodsBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetEntityPaymentMethodsBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_ID_INVALID + - PAYMENT_METHOD_REQUEST_INVALID + coinbase.public_rest_api.GetEntityPaymentMethodsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodsForbiddenSubcode' + trace_id: + type: string + description: GetEntityPaymentMethodsForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.GetEntityPaymentMethodsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetEntityPaymentMethodsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodsNotFoundSubcode' + trace_id: + type: string + description: GetEntityPaymentMethodsNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.GetEntityPaymentMethodsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - PAYMENT_METHOD_NOT_FOUND + coinbase.public_rest_api.GetEntityRewardsRateBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityRewardsRateBadRequestSubcode' + trace_id: + type: string + description: GetEntityRewardsRateBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetEntityRewardsRateBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_ID_INVALID + - REWARDS_REQUEST_INVALID + - REWARDS_ENTITY_NOT_ENROLLED + coinbase.public_rest_api.GetEntityRewardsRateForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityRewardsRateForbiddenSubcode' + trace_id: + type: string + description: GetEntityRewardsRateForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.GetEntityRewardsRateForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - REWARDS_API_FEATURE_DISABLED + coinbase.public_rest_api.GetEntityRewardsRateNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityRewardsRateNotFoundSubcode' + trace_id: + type: string + description: GetEntityRewardsRateNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.GetEntityRewardsRateNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetEntityUsersBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityUsersBadRequestSubcode' + trace_id: + type: string + description: GetEntityUsersBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.GetEntityUsersBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_ID_INVALID + coinbase.public_rest_api.GetEntityUsersForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityUsersForbiddenSubcode' + trace_id: + type: string + description: GetEntityUsersForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetEntityUsersForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetEntityUsersNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityUsersNotFoundSubcode' + trace_id: + type: string + description: GetEntityUsersNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetEntityUsersNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetExistingLocatesBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetExistingLocatesBadRequestSubcode' + trace_id: + type: string + description: GetExistingLocatesBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.GetExistingLocatesBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - LOCATE_DATE_INVALID + - LOCATE_REQUEST_INVALID + - LOCATE_IDS_INVALID + - LOCATE_FAILED_PRECONDITION + coinbase.public_rest_api.GetExistingLocatesForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetExistingLocatesForbiddenSubcode' + trace_id: + type: string + description: GetExistingLocatesForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.GetExistingLocatesForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetExistingLocatesNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetExistingLocatesNotFoundSubcode' + trace_id: + type: string + description: GetExistingLocatesNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.GetExistingLocatesNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetFcmBalanceBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmBalanceBadRequestSubcode' + trace_id: + type: string + description: GetFcmBalanceBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.GetFcmBalanceBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - FCM_INVALID_ARGUMENT + coinbase.public_rest_api.GetFcmBalanceForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmBalanceForbiddenSubcode' + trace_id: + type: string + description: GetFcmBalanceForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetFcmBalanceForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetFcmBalanceNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmBalanceNotFoundSubcode' + trace_id: + type: string + description: GetFcmBalanceNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetFcmBalanceNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - FCM_BALANCE_NOT_FOUND + coinbase.public_rest_api.GetFcmEquityBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmEquityBadRequestSubcode' + trace_id: + type: string + description: GetFcmEquityBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.GetFcmEquityBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + coinbase.public_rest_api.GetFcmEquityForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmEquityForbiddenSubcode' + trace_id: + type: string + description: GetFcmEquityForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetFcmEquityForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetFcmEquityNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmEquityNotFoundSubcode' + trace_id: + type: string + description: GetFcmEquityNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetFcmEquityNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - FCM_EQUITY_NOT_FOUND + coinbase.public_rest_api.GetFcmMarginCallDetailsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmMarginCallDetailsBadRequestSubcode' + trace_id: + type: string + description: GetFcmMarginCallDetailsBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetFcmMarginCallDetailsBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - FCM_INVALID_ARGUMENT + coinbase.public_rest_api.GetFcmMarginCallDetailsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmMarginCallDetailsForbiddenSubcode' + trace_id: + type: string + description: GetFcmMarginCallDetailsForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.GetFcmMarginCallDetailsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetFcmMarginCallDetailsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmMarginCallDetailsNotFoundSubcode' + trace_id: + type: string + description: GetFcmMarginCallDetailsNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.GetFcmMarginCallDetailsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetFcmRiskLimitsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmRiskLimitsBadRequestSubcode' + trace_id: + type: string + description: GetFcmRiskLimitsBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.GetFcmRiskLimitsBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + coinbase.public_rest_api.GetFcmRiskLimitsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmRiskLimitsForbiddenSubcode' + trace_id: + type: string + description: GetFcmRiskLimitsForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetFcmRiskLimitsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetFcmRiskLimitsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmRiskLimitsNotFoundSubcode' + trace_id: + type: string + description: GetFcmRiskLimitsNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetFcmRiskLimitsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - FCM_RISK_LIMITS_NOT_FOUND + coinbase.public_rest_api.GetFcmSettingsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmSettingsBadRequestSubcode' + trace_id: + type: string + description: GetFcmSettingsBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.GetFcmSettingsBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + coinbase.public_rest_api.GetFcmSettingsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmSettingsForbiddenSubcode' + trace_id: + type: string + description: GetFcmSettingsForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetFcmSettingsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetFcmSettingsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmSettingsNotFoundSubcode' + trace_id: + type: string + description: GetFcmSettingsNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetFcmSettingsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - FCM_ACCOUNT_NOT_FOUND + coinbase.public_rest_api.GetFuturesSweepsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFuturesSweepsBadRequestSubcode' + trace_id: + type: string + description: GetFuturesSweepsBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.GetFuturesSweepsBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - FCM_INVALID_ARGUMENT + coinbase.public_rest_api.GetFuturesSweepsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFuturesSweepsForbiddenSubcode' + trace_id: + type: string + description: GetFuturesSweepsForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetFuturesSweepsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetFuturesSweepsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFuturesSweepsNotFoundSubcode' + trace_id: + type: string + description: GetFuturesSweepsNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetFuturesSweepsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - FCM_SWEEP_NOT_FOUND + coinbase.public_rest_api.GetInterestAccrualsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetInterestAccrualsBadRequestSubcode' + trace_id: + type: string + description: GetInterestAccrualsBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.GetInterestAccrualsBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_ID_INVALID + - PORTFOLIO_ID_INVALID + - FINANCING_START_DATE_REQUIRED + - FINANCING_END_DATE_REQUIRED + - FINANCING_START_DATE_INVALID + - FINANCING_END_DATE_INVALID + - FINANCING_ACCRUALS_INVALID_ARGUMENT + - FINANCING_FAILED_PRECONDITION + - FINANCING_ACCRUALS_RANGE_EXCEEDED + coinbase.public_rest_api.GetInterestAccrualsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetInterestAccrualsForbiddenSubcode' + trace_id: + type: string + description: GetInterestAccrualsForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.GetInterestAccrualsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetInterestAccrualsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetInterestAccrualsNotFoundSubcode' + trace_id: + type: string + description: GetInterestAccrualsNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.GetInterestAccrualsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetInvoicesBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetInvoicesBadRequestSubcode' + trace_id: + type: string + description: GetInvoicesBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.GetInvoicesBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_ID_INVALID + coinbase.public_rest_api.GetInvoicesForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetInvoicesForbiddenSubcode' + trace_id: + type: string + description: GetInvoicesForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetInvoicesForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetInvoicesNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetInvoicesNotFoundSubcode' + trace_id: + type: string + description: GetInvoicesNotFoundErrorResponse documents the HTTP 404 error body. + coinbase.public_rest_api.GetInvoicesNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_NOT_FOUND + coinbase.public_rest_api.GetLocateAvailabilitiesBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetLocateAvailabilitiesBadRequestSubcode' + trace_id: + type: string + description: GetLocateAvailabilitiesBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetLocateAvailabilitiesBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_ID_INVALID + - LOCATE_DATE_INVALID + - LOCATE_REQUEST_INVALID + - LOCATE_FAILED_PRECONDITION + - LOCATE_DATE_REQUIRED + coinbase.public_rest_api.GetLocateAvailabilitiesForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetLocateAvailabilitiesForbiddenSubcode' + trace_id: + type: string + description: GetLocateAvailabilitiesForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.GetLocateAvailabilitiesForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetLocateAvailabilitiesNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetLocateAvailabilitiesNotFoundSubcode' + trace_id: + type: string + description: GetLocateAvailabilitiesNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.GetLocateAvailabilitiesNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - LOCATE_AVAILABILITY_NOT_FOUND + coinbase.public_rest_api.GetMarginConversionsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginConversionsBadRequestSubcode' + trace_id: + type: string + description: GetMarginConversionsBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetMarginConversionsBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - FINANCING_START_DATE_REQUIRED + - FINANCING_END_DATE_REQUIRED + - FINANCING_START_DATE_INVALID + - FINANCING_END_DATE_INVALID + - MARGIN_CONVERSION_REQUEST_INVALID + - MARGIN_CONVERSION_FAILED_PRECONDITION + coinbase.public_rest_api.GetMarginConversionsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginConversionsForbiddenSubcode' + trace_id: + type: string + description: GetMarginConversionsForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.GetMarginConversionsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetMarginConversionsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginConversionsNotFoundSubcode' + trace_id: + type: string + description: GetMarginConversionsNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.GetMarginConversionsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetMarginInformationBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginInformationBadRequestSubcode' + trace_id: + type: string + description: GetMarginInformationBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetMarginInformationBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_ID_INVALID + - MARGIN_INFORMATION_REQUEST_INVALID + coinbase.public_rest_api.GetMarginInformationForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginInformationForbiddenSubcode' + trace_id: + type: string + description: GetMarginInformationForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.GetMarginInformationForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetMarginInformationNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginInformationNotFoundSubcode' + trace_id: + type: string + description: GetMarginInformationNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.GetMarginInformationNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetMarginSummariesBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginSummariesBadRequestSubcode' + trace_id: + type: string + description: GetMarginSummariesBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.GetMarginSummariesBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_ID_INVALID + - FINANCING_START_DATE_INVALID + - FINANCING_END_DATE_INVALID + - MARGIN_SUMMARY_RANGE_INVALID + - MARGIN_SUMMARY_FAILED_PRECONDITION + coinbase.public_rest_api.GetMarginSummariesForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginSummariesForbiddenSubcode' + trace_id: + type: string + description: GetMarginSummariesForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.GetMarginSummariesForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetMarginSummariesNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginSummariesNotFoundSubcode' + trace_id: + type: string + description: GetMarginSummariesNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.GetMarginSummariesNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetMarketDataBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarketDataBadRequestSubcode' + trace_id: + type: string + description: GetMarketDataBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.GetMarketDataBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_ID_INVALID + - MARKET_DATA_INVALID_ARGUMENT + coinbase.public_rest_api.GetMarketDataForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarketDataForbiddenSubcode' + trace_id: + type: string + description: GetMarketDataForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetMarketDataForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetMarketDataNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarketDataNotFoundSubcode' + trace_id: + type: string + description: GetMarketDataNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetMarketDataNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - MARKET_DATA_NOT_FOUND + coinbase.public_rest_api.GetOpenOrdersBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOpenOrdersBadRequestSubcode' + trace_id: + type: string + description: GetOpenOrdersBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.GetOpenOrdersBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - ORDER_LIMIT_EXCEEDED + coinbase.public_rest_api.GetOpenOrdersForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOpenOrdersForbiddenSubcode' + trace_id: + type: string + description: GetOpenOrdersForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetOpenOrdersForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetOpenOrdersNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOpenOrdersNotFoundSubcode' + trace_id: + type: string + description: GetOpenOrdersNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetOpenOrdersNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetOrderBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderBadRequestSubcode' + trace_id: + type: string + description: GetOrderBadRequestErrorResponse documents the HTTP 400 error body. + coinbase.public_rest_api.GetOrderBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - ORDER_ID_REQUIRED + - ORDER_ID_INVALID + - ORDER_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetOrderEditHistoryBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderEditHistoryBadRequestSubcode' + trace_id: + type: string + description: GetOrderEditHistoryBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.GetOrderEditHistoryBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - ORDER_ID_REQUIRED + - ORDER_ID_INVALID + - ORDER_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetOrderEditHistoryForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderEditHistoryForbiddenSubcode' + trace_id: + type: string + description: GetOrderEditHistoryForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.GetOrderEditHistoryForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetOrderEditHistoryNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderEditHistoryNotFoundSubcode' + trace_id: + type: string + description: GetOrderEditHistoryNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.GetOrderEditHistoryNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetOrderFillsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderFillsBadRequestSubcode' + trace_id: + type: string + description: GetOrderFillsBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.GetOrderFillsBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - ORDER_REQUEST_INVALID + - ORDER_LIMIT_EXCEEDED + - ORDER_FILLS_LIMIT_INVALID + coinbase.public_rest_api.GetOrderFillsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderFillsForbiddenSubcode' + trace_id: + type: string + description: GetOrderFillsForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetOrderFillsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetOrderFillsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderFillsNotFoundSubcode' + trace_id: + type: string + description: GetOrderFillsNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetOrderFillsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetOrderForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderForbiddenSubcode' + trace_id: + type: string + description: GetOrderForbiddenErrorResponse documents the HTTP 403 error body. + coinbase.public_rest_api.GetOrderForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetOrderNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderNotFoundSubcode' + trace_id: + type: string + description: GetOrderNotFoundErrorResponse documents the HTTP 404 error body. + coinbase.public_rest_api.GetOrderNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetOrdersBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrdersBadRequestSubcode' + trace_id: + type: string + description: GetOrdersBadRequestErrorResponse documents the HTTP 400 error body. + coinbase.public_rest_api.GetOrdersBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - ORDER_STATUS_INVALID + coinbase.public_rest_api.GetOrdersForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrdersForbiddenSubcode' + trace_id: + type: string + description: GetOrdersForbiddenErrorResponse documents the HTTP 403 error body. + coinbase.public_rest_api.GetOrdersForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetOrdersNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrdersNotFoundSubcode' + trace_id: + type: string + description: GetOrdersNotFoundErrorResponse documents the HTTP 404 error body. + coinbase.public_rest_api.GetOrdersNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetPortfolioActivitiesBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivitiesBadRequestSubcode' + trace_id: + type: string + description: GetPortfolioActivitiesBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetPortfolioActivitiesBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_INVALID + - ACTIVITY_REQUEST_INVALID + - ACTIVITY_CATEGORY_INVALID + - ACTIVITY_TIME_RANGE_INVALID + - ACTIVITY_STATUS_INVALID + coinbase.public_rest_api.GetPortfolioActivitiesForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivitiesForbiddenSubcode' + trace_id: + type: string + description: GetPortfolioActivitiesForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.GetPortfolioActivitiesForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetPortfolioActivitiesNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivitiesNotFoundSubcode' + trace_id: + type: string + description: GetPortfolioActivitiesNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.GetPortfolioActivitiesNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetPortfolioActivityBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivityBadRequestSubcode' + trace_id: + type: string + description: GetPortfolioActivityBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetPortfolioActivityBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_INVALID + - ACTIVITY_PORTFOLIO_ID_MISMATCH + coinbase.public_rest_api.GetPortfolioActivityForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivityForbiddenSubcode' + trace_id: + type: string + description: GetPortfolioActivityForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.GetPortfolioActivityForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetPortfolioActivityNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivityNotFoundSubcode' + trace_id: + type: string + description: GetPortfolioActivityNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.GetPortfolioActivityNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ACTIVITY_NOT_FOUND + coinbase.public_rest_api.GetPortfolioAddressBookBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAddressBookBadRequestSubcode' + trace_id: + type: string + description: GetPortfolioAddressBookBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetPortfolioAddressBookBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - ADDRESS_BOOK_INVALID_ARGUMENT + - ADDRESS_BOOK_FAILED_PRECONDITION + coinbase.public_rest_api.GetPortfolioAddressBookForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAddressBookForbiddenSubcode' + trace_id: + type: string + description: GetPortfolioAddressBookForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.GetPortfolioAddressBookForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetPortfolioAddressBookNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAddressBookNotFoundSubcode' + trace_id: + type: string + description: GetPortfolioAddressBookNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.GetPortfolioAddressBookNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ADDRESS_BOOK_NOT_FOUND + coinbase.public_rest_api.GetPortfolioAllocationsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAllocationsBadRequestSubcode' + trace_id: + type: string + description: GetPortfolioAllocationsBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetPortfolioAllocationsBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - ALLOCATION_REQUEST_INVALID + - ALLOCATION_START_DATE_REQUIRED + - ALLOCATION_LIMIT_EXCEEDED + coinbase.public_rest_api.GetPortfolioAllocationsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAllocationsForbiddenSubcode' + trace_id: + type: string + description: GetPortfolioAllocationsForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.GetPortfolioAllocationsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetPortfolioAllocationsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAllocationsNotFoundSubcode' + trace_id: + type: string + description: GetPortfolioAllocationsNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.GetPortfolioAllocationsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetPortfolioBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioBadRequestSubcode' + trace_id: + type: string + description: GetPortfolioBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.GetPortfolioBadRequestSubcode: + type: string + enum: + - ENTITY_ID_INVALID + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + coinbase.public_rest_api.GetPortfolioBalancesBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioBalancesBadRequestSubcode' + trace_id: + type: string + description: GetPortfolioBalancesBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetPortfolioBalancesBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - PORTFOLIO_BALANCES_INVALID_ARGUMENT + - ASSET_REQUEST_INVALID + coinbase.public_rest_api.GetPortfolioBalancesForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioBalancesForbiddenSubcode' + trace_id: + type: string + description: GetPortfolioBalancesForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.GetPortfolioBalancesForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetPortfolioBalancesNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioBalancesNotFoundSubcode' + trace_id: + type: string + description: GetPortfolioBalancesNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.GetPortfolioBalancesNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - PORTFOLIO_BALANCES_NOT_FOUND + - ASSET_NOT_FOUND + coinbase.public_rest_api.GetPortfolioCommissionBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCommissionBadRequestSubcode' + trace_id: + type: string + description: GetPortfolioCommissionBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetPortfolioCommissionBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - COMMISSION_PRODUCT_ID_INVALID + - COMMISSION_TRADING_NOT_ENABLED + coinbase.public_rest_api.GetPortfolioCommissionForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCommissionForbiddenSubcode' + trace_id: + type: string + description: GetPortfolioCommissionForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.GetPortfolioCommissionForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetPortfolioCommissionNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCommissionNotFoundSubcode' + trace_id: + type: string + description: GetPortfolioCommissionNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.GetPortfolioCommissionNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetPortfolioCounterpartyIDBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCounterpartyIDBadRequestSubcode' + trace_id: + type: string + description: GetPortfolioCounterpartyIDBadRequestErrorResponse documents the + HTTP 400 error body. + coinbase.public_rest_api.GetPortfolioCounterpartyIDBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_TYPE_UNSUPPORTED + - PORTFOLIO_ID_INVALID + coinbase.public_rest_api.GetPortfolioCounterpartyIDForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCounterpartyIDForbiddenSubcode' + trace_id: + type: string + description: GetPortfolioCounterpartyIDForbiddenErrorResponse documents the + HTTP 403 error body. + coinbase.public_rest_api.GetPortfolioCounterpartyIDForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetPortfolioCounterpartyIDNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCounterpartyIDNotFoundSubcode' + trace_id: + type: string + description: GetPortfolioCounterpartyIDNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.GetPortfolioCounterpartyIDNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - PORTFOLIO_NOT_FOUND + coinbase.public_rest_api.GetPortfolioFillsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioFillsBadRequestSubcode' + trace_id: + type: string + description: GetPortfolioFillsBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.GetPortfolioFillsBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - ORDER_REQUEST_INVALID + - ORDER_LIMIT_EXCEEDED + - ORDER_FILLS_LIMIT_INVALID + - ORDER_FILLS_START_DATE_REQUIRED + - ORDER_FILLS_START_DATE_INVALID + - ORDER_FILLS_END_DATE_INVALID + coinbase.public_rest_api.GetPortfolioFillsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioFillsForbiddenSubcode' + trace_id: + type: string + description: GetPortfolioFillsForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.GetPortfolioFillsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetPortfolioFillsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioFillsNotFoundSubcode' + trace_id: + type: string + description: GetPortfolioFillsNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetPortfolioFillsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetPortfolioForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioForbiddenSubcode' + trace_id: + type: string + description: GetPortfolioForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetPortfolioForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetPortfolioInterestAccrualsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioInterestAccrualsBadRequestSubcode' + trace_id: + type: string + description: GetPortfolioInterestAccrualsBadRequestErrorResponse documents the + HTTP 400 error body. + coinbase.public_rest_api.GetPortfolioInterestAccrualsBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - FINANCING_START_DATE_REQUIRED + - FINANCING_END_DATE_REQUIRED + - FINANCING_START_DATE_INVALID + - FINANCING_END_DATE_INVALID + - FINANCING_ACCRUALS_INVALID_ARGUMENT + - FINANCING_ACCRUALS_DATE_INVALID + coinbase.public_rest_api.GetPortfolioInterestAccrualsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioInterestAccrualsForbiddenSubcode' + trace_id: + type: string + description: GetPortfolioInterestAccrualsForbiddenErrorResponse documents the + HTTP 403 error body. + coinbase.public_rest_api.GetPortfolioInterestAccrualsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetPortfolioInterestAccrualsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioInterestAccrualsNotFoundSubcode' + trace_id: + type: string + description: GetPortfolioInterestAccrualsNotFoundErrorResponse documents the + HTTP 404 error body. + coinbase.public_rest_api.GetPortfolioInterestAccrualsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - PORTFOLIO_NOT_FOUND + coinbase.public_rest_api.GetPortfolioNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioNotFoundSubcode' + trace_id: + type: string + description: GetPortfolioNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetPortfolioNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_NOT_FOUND + - PORTFOLIO_NOT_FOUND + coinbase.public_rest_api.GetPortfolioProductsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioProductsBadRequestSubcode' + trace_id: + type: string + description: GetPortfolioProductsBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetPortfolioProductsBadRequestSubcode: + type: string + enum: + - ENTITY_ID_INVALID + - PORTFOLIO_ID_INVALID + - PRODUCT_FUTURES_NOT_ENABLED + - PRODUCT_LIMIT_INVALID + - PRODUCT_OPTIONS_NOT_ENABLED + coinbase.public_rest_api.GetPortfolioProductsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioProductsForbiddenSubcode' + trace_id: + type: string + description: GetPortfolioProductsForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.GetPortfolioProductsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetPortfolioProductsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioProductsNotFoundSubcode' + trace_id: + type: string + description: GetPortfolioProductsNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.GetPortfolioProductsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_NOT_FOUND + - PORTFOLIO_NOT_FOUND + - PRODUCT_NOT_FOUND + coinbase.public_rest_api.GetPortfolioRewardsRateBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioRewardsRateBadRequestSubcode' + trace_id: + type: string + description: GetPortfolioRewardsRateBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetPortfolioRewardsRateBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - REWARDS_REQUEST_INVALID + - REWARDS_ENTITY_NOT_ENROLLED + coinbase.public_rest_api.GetPortfolioRewardsRateForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioRewardsRateForbiddenSubcode' + trace_id: + type: string + description: GetPortfolioRewardsRateForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.GetPortfolioRewardsRateForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - REWARDS_API_FEATURE_DISABLED + coinbase.public_rest_api.GetPortfolioRewardsRateNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioRewardsRateNotFoundSubcode' + trace_id: + type: string + description: GetPortfolioRewardsRateNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.GetPortfolioRewardsRateNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetPortfolioTransactionsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioTransactionsBadRequestSubcode' + trace_id: + type: string + description: GetPortfolioTransactionsBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetPortfolioTransactionsBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - TRANSACTION_LIMIT_EXCEEDED + - TRANSACTION_CURSOR_INVALID + - TRANSACTION_TRAVEL_RULE_STATUS_INVALID + - TRANSACTION_FILTER_INVALID + - TRANSACTION_PARAMS_INVALID + coinbase.public_rest_api.GetPortfolioTransactionsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioTransactionsForbiddenSubcode' + trace_id: + type: string + description: GetPortfolioTransactionsForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.GetPortfolioTransactionsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetPortfolioTransactionsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioTransactionsNotFoundSubcode' + trace_id: + type: string + description: GetPortfolioTransactionsNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.GetPortfolioTransactionsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ASSET_NOT_FOUND + coinbase.public_rest_api.GetPortfolioUsersBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioUsersBadRequestSubcode' + trace_id: + type: string + description: GetPortfolioUsersBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.GetPortfolioUsersBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - PORTFOLIO_USERS_CURSOR_INVALID + - PORTFOLIO_USERS_LIMIT_INVALID + coinbase.public_rest_api.GetPortfolioUsersForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioUsersForbiddenSubcode' + trace_id: + type: string + description: GetPortfolioUsersForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.GetPortfolioUsersForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetPortfolioUsersNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioUsersNotFoundSubcode' + trace_id: + type: string + description: GetPortfolioUsersNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetPortfolioUsersNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - PORTFOLIO_NOT_FOUND + coinbase.public_rest_api.GetPortfoliosForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfoliosForbiddenSubcode' + trace_id: + type: string + description: GetPortfoliosForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetPortfoliosForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetPortfoliosNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfoliosNotFoundSubcode' + trace_id: + type: string + description: GetPortfoliosNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetPortfoliosNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_NOT_FOUND + coinbase.public_rest_api.GetPositionsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPositionsBadRequestSubcode' + trace_id: + type: string + description: GetPositionsBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.GetPositionsBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_POSITION_INVALID_ARGUMENT + coinbase.public_rest_api.GetPositionsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPositionsForbiddenSubcode' + trace_id: + type: string + description: GetPositionsForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetPositionsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetPositionsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPositionsNotFoundSubcode' + trace_id: + type: string + description: GetPositionsNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetPositionsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_NOT_FOUND + - ENTITY_POSITION_NOT_FOUND + - FCM_ACCOUNT_NOT_FOUND + coinbase.public_rest_api.GetPostTradeCreditBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPostTradeCreditBadRequestSubcode' + trace_id: + type: string + description: GetPostTradeCreditBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.GetPostTradeCreditBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_INVALID + coinbase.public_rest_api.GetPostTradeCreditForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPostTradeCreditForbiddenSubcode' + trace_id: + type: string + description: GetPostTradeCreditForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.GetPostTradeCreditForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetPostTradeCreditNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPostTradeCreditNotFoundSubcode' + trace_id: + type: string + description: GetPostTradeCreditNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.GetPostTradeCreditNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - FINANCING_PTC_DISABLED_FOR_PM_ENTITY + coinbase.public_rest_api.GetStakingStatusBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetStakingStatusBadRequestSubcode' + trace_id: + type: string + description: GetStakingStatusBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.GetStakingStatusBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - WALLET_ID_REQUIRED + - WALLET_ID_INVALID + - WALLET_TYPE_NOT_SUPPORTED + - STAKING_REQUEST_INVALID + - STAKING_CURRENCY_UNSUPPORTED + coinbase.public_rest_api.GetStakingStatusForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetStakingStatusForbiddenSubcode' + trace_id: + type: string + description: GetStakingStatusForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetStakingStatusForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetStakingStatusNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetStakingStatusNotFoundSubcode' + trace_id: + type: string + description: GetStakingStatusNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetStakingStatusNotFoundSubcode: + type: string + enum: + - WALLET_NOT_FOUND + coinbase.public_rest_api.GetTFTieredPricingFeesBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTFTieredPricingFeesBadRequestSubcode' + trace_id: + type: string + description: GetTFTieredPricingFeesBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetTFTieredPricingFeesBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_ID_INVALID + - TIERED_PRICING_EFFECTIVE_AT_INVALID + - TIERED_PRICING_REQUEST_INVALID + - TIERED_PRICING_FAILED_PRECONDITION + coinbase.public_rest_api.GetTFTieredPricingFeesForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTFTieredPricingFeesForbiddenSubcode' + trace_id: + type: string + description: GetTFTieredPricingFeesForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.GetTFTieredPricingFeesForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetTFTieredPricingFeesNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTFTieredPricingFeesNotFoundSubcode' + trace_id: + type: string + description: GetTFTieredPricingFeesNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.GetTFTieredPricingFeesNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetTransactionBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionBadRequestSubcode' + trace_id: + type: string + description: GetTransactionBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.GetTransactionBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - TRANSACTION_ID_REQUIRED + - TRANSACTION_ID_INVALID + coinbase.public_rest_api.GetTransactionForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionForbiddenSubcode' + trace_id: + type: string + description: GetTransactionForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetTransactionForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetTransactionNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionNotFoundSubcode' + trace_id: + type: string + description: GetTransactionNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetTransactionNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - TRANSACTION_NOT_FOUND + coinbase.public_rest_api.GetTransactionTravelRuleDataBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionTravelRuleDataBadRequestSubcode' + trace_id: + type: string + description: GetTransactionTravelRuleDataBadRequestErrorResponse documents the + HTTP 400 error body. + coinbase.public_rest_api.GetTransactionTravelRuleDataBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - TRANSACTION_ID_REQUIRED + - TRANSACTION_ID_INVALID + coinbase.public_rest_api.GetTransactionTravelRuleDataForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionTravelRuleDataForbiddenSubcode' + trace_id: + type: string + description: GetTransactionTravelRuleDataForbiddenErrorResponse documents the + HTTP 403 error body. + coinbase.public_rest_api.GetTransactionTravelRuleDataForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetTransactionTravelRuleDataNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionTravelRuleDataNotFoundSubcode' + trace_id: + type: string + description: GetTransactionTravelRuleDataNotFoundErrorResponse documents the + HTTP 404 error body. + coinbase.public_rest_api.GetTransactionTravelRuleDataNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - TRANSACTION_NOT_FOUND + - TRANSACTION_TRAVEL_RULE_DATA_NOT_FOUND + coinbase.public_rest_api.GetUnstakingStatusBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetUnstakingStatusBadRequestSubcode' + trace_id: + type: string + description: GetUnstakingStatusBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.GetUnstakingStatusBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - WALLET_ID_REQUIRED + - WALLET_ID_INVALID + - WALLET_TYPE_NOT_SUPPORTED + - STAKING_REQUEST_INVALID + - STAKING_CURRENCY_UNSUPPORTED + coinbase.public_rest_api.GetUnstakingStatusForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetUnstakingStatusForbiddenSubcode' + trace_id: + type: string + description: GetUnstakingStatusForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.GetUnstakingStatusForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetUnstakingStatusNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetUnstakingStatusNotFoundSubcode' + trace_id: + type: string + description: GetUnstakingStatusNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.GetUnstakingStatusNotFoundSubcode: + type: string + enum: + - WALLET_NOT_FOUND + coinbase.public_rest_api.GetWalletBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletBadRequestSubcode' + trace_id: + type: string + description: GetWalletBadRequestErrorResponse documents the HTTP 400 error body. + coinbase.public_rest_api.GetWalletBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - WALLET_ID_REQUIRED + - WALLET_ID_INVALID + coinbase.public_rest_api.GetWalletBalanceBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletBalanceBadRequestSubcode' + trace_id: + type: string + description: GetWalletBalanceBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.GetWalletBalanceBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - WALLET_ID_REQUIRED + - WALLET_ID_INVALID + - WALLET_TYPE_NOT_SUPPORTED + coinbase.public_rest_api.GetWalletBalanceForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletBalanceForbiddenSubcode' + trace_id: + type: string + description: GetWalletBalanceForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetWalletBalanceForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetWalletBalanceNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletBalanceNotFoundSubcode' + trace_id: + type: string + description: GetWalletBalanceNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetWalletBalanceNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - WALLET_NOT_FOUND + coinbase.public_rest_api.GetWalletDepositInstructionsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletDepositInstructionsBadRequestSubcode' + trace_id: + type: string + description: GetWalletDepositInstructionsBadRequestErrorResponse documents the + HTTP 400 error body. + coinbase.public_rest_api.GetWalletDepositInstructionsBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - ASSET_REQUEST_INVALID + - WALLET_ID_REQUIRED + - WALLET_ID_INVALID + - WALLET_DEPOSIT_TYPE_REQUIRED + - WALLET_METADATA_INVALID + - WALLET_NETWORK_REQUIRED + - WALLET_NOT_DEPOSITABLE + - WALLET_DEPOSIT_REQUEST_INVALID + - WALLET_FAILED_PRECONDITION + coinbase.public_rest_api.GetWalletDepositInstructionsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletDepositInstructionsForbiddenSubcode' + trace_id: + type: string + description: GetWalletDepositInstructionsForbiddenErrorResponse documents the + HTTP 403 error body. + coinbase.public_rest_api.GetWalletDepositInstructionsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetWalletDepositInstructionsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletDepositInstructionsNotFoundSubcode' + trace_id: + type: string + description: GetWalletDepositInstructionsNotFoundErrorResponse documents the + HTTP 404 error body. + coinbase.public_rest_api.GetWalletDepositInstructionsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - PORTFOLIO_NOT_FOUND + - ASSET_NOT_FOUND + - WALLET_NOT_FOUND + coinbase.public_rest_api.GetWalletForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletForbiddenSubcode' + trace_id: + type: string + description: GetWalletForbiddenErrorResponse documents the HTTP 403 error body. + coinbase.public_rest_api.GetWalletForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetWalletNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletNotFoundSubcode' + trace_id: + type: string + description: GetWalletNotFoundErrorResponse documents the HTTP 404 error body. + coinbase.public_rest_api.GetWalletNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - WALLET_NOT_FOUND + coinbase.public_rest_api.GetWalletTransactionsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletTransactionsBadRequestSubcode' + trace_id: + type: string + description: GetWalletTransactionsBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.GetWalletTransactionsBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - TRANSACTION_CURSOR_INVALID + - TRANSACTION_PARAMS_INVALID + - WALLET_ID_REQUIRED + - WALLET_ID_INVALID + coinbase.public_rest_api.GetWalletTransactionsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletTransactionsForbiddenSubcode' + trace_id: + type: string + description: GetWalletTransactionsForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.GetWalletTransactionsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetWalletTransactionsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletTransactionsNotFoundSubcode' + trace_id: + type: string + description: GetWalletTransactionsNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.GetWalletTransactionsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - WALLET_NOT_FOUND + coinbase.public_rest_api.GetWalletsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletsBadRequestSubcode' + trace_id: + type: string + description: GetWalletsBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.GetWalletsBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - WALLET_REQUEST_INVALID + - WALLET_ONCHAIN_SYMBOLS_NOT_ALLOWED + coinbase.public_rest_api.GetWalletsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletsForbiddenSubcode' + trace_id: + type: string + description: GetWalletsForbiddenErrorResponse documents the HTTP 403 error body. + coinbase.public_rest_api.GetWalletsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetWalletsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletsNotFoundSubcode' + trace_id: + type: string + description: GetWalletsNotFoundErrorResponse documents the HTTP 404 error body. + coinbase.public_rest_api.GetWalletsNotFoundSubcode: + type: string + enum: + - ASSET_NOT_FOUND + - WALLET_NOT_FOUND + coinbase.public_rest_api.GetWithdrawalPowerBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWithdrawalPowerBadRequestSubcode' + trace_id: + type: string + description: GetWithdrawalPowerBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.GetWithdrawalPowerBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - FINANCING_WITHDRAWAL_POWER_INVALID_ARGUMENT + - FINANCING_WITHDRAWAL_POWER_SYMBOL_REQUIRED + coinbase.public_rest_api.GetWithdrawalPowerForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWithdrawalPowerForbiddenSubcode' + trace_id: + type: string + description: GetWithdrawalPowerForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.GetWithdrawalPowerForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.GetWithdrawalPowerNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWithdrawalPowerNotFoundSubcode' + trace_id: + type: string + description: GetWithdrawalPowerNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.GetWithdrawalPowerNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.GetXMLiquidationBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetXMLiquidationBadRequestSubcode' + trace_id: + type: string + description: GetXMLiquidationBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.GetXMLiquidationBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_ID_INVALID + - CROSS_MARGIN_INVALID_ARGUMENT + - CROSS_MARGIN_FAILED_PRECONDITION + coinbase.public_rest_api.GetXMLiquidationForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetXMLiquidationForbiddenSubcode' + trace_id: + type: string + description: GetXMLiquidationForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.GetXMLiquidationForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - CROSS_MARGIN_NOT_ENABLED + coinbase.public_rest_api.GetXMLiquidationNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.GetXMLiquidationNotFoundSubcode' + trace_id: + type: string + description: GetXMLiquidationNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.GetXMLiquidationNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_NOT_FOUND + coinbase.public_rest_api.InternalServerErrorCode: + type: string + enum: + - INTERNAL_ERROR + coinbase.public_rest_api.InternalServerErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.InternalServerErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.InternalServerSubcode' + trace_id: + type: string + description: InternalServerErrorResponse documents the HTTP 500 error body. + coinbase.public_rest_api.InternalServerSubcode: + type: string + enum: + - AUTH_AUTHORIZATION_FAILED + coinbase.public_rest_api.ListAdvancedTransferTransactionsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAdvancedTransferTransactionsForbiddenSubcode' + trace_id: + type: string + description: ListAdvancedTransferTransactionsForbiddenErrorResponse documents + the HTTP 403 error body. + coinbase.public_rest_api.ListAdvancedTransferTransactionsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - ADVANCED_TRANSFER_NOT_ENABLED + coinbase.public_rest_api.ListAdvancedTransferTransactionsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAdvancedTransferTransactionsNotFoundSubcode' + trace_id: + type: string + description: ListAdvancedTransferTransactionsNotFoundErrorResponse documents + the HTTP 404 error body. + coinbase.public_rest_api.ListAdvancedTransferTransactionsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - TRANSACTION_NOT_FOUND + coinbase.public_rest_api.ListAdvancedTransfersBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAdvancedTransfersBadRequestSubcode' + trace_id: + type: string + description: ListAdvancedTransfersBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.ListAdvancedTransfersBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - ADVANCED_TRANSFER_REQUEST_INVALID + coinbase.public_rest_api.ListAdvancedTransfersForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAdvancedTransfersForbiddenSubcode' + trace_id: + type: string + description: ListAdvancedTransfersForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.ListAdvancedTransfersForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - ADVANCED_TRANSFER_NOT_ENABLED + coinbase.public_rest_api.ListAdvancedTransfersNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAdvancedTransfersNotFoundSubcode' + trace_id: + type: string + description: ListAdvancedTransfersNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.ListAdvancedTransfersNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.ListAggregateEntityPositionsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAggregateEntityPositionsBadRequestSubcode' + trace_id: + type: string + description: ListAggregateEntityPositionsBadRequestErrorResponse documents the + HTTP 400 error body. + coinbase.public_rest_api.ListAggregateEntityPositionsBadRequestSubcode: + type: string + enum: + - ENTITY_ID_INVALID + - ENTITY_POSITION_LIMIT_INVALID + - ENTITY_POSITION_INVALID_ARGUMENT + coinbase.public_rest_api.ListAggregateEntityPositionsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAggregateEntityPositionsForbiddenSubcode' + trace_id: + type: string + description: ListAggregateEntityPositionsForbiddenErrorResponse documents the + HTTP 403 error body. + coinbase.public_rest_api.ListAggregateEntityPositionsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.ListAggregateEntityPositionsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAggregateEntityPositionsNotFoundSubcode' + trace_id: + type: string + description: ListAggregateEntityPositionsNotFoundErrorResponse documents the + HTTP 404 error body. + coinbase.public_rest_api.ListAggregateEntityPositionsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_POSITION_NOT_FOUND + coinbase.public_rest_api.ListEntityBalancesBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityBalancesBadRequestSubcode' + trace_id: + type: string + description: ListEntityBalancesBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.ListEntityBalancesBadRequestSubcode: + type: string + enum: + - ENTITY_ID_INVALID + - ENTITY_BALANCES_LIMIT_INVALID + - ENTITY_BALANCES_INVALID_ARGUMENT + coinbase.public_rest_api.ListEntityBalancesForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityBalancesForbiddenSubcode' + trace_id: + type: string + description: ListEntityBalancesForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.ListEntityBalancesForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.ListEntityBalancesNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityBalancesNotFoundSubcode' + trace_id: + type: string + description: ListEntityBalancesNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.ListEntityBalancesNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_BALANCES_NOT_FOUND + - ASSET_NOT_FOUND + coinbase.public_rest_api.ListEntityPositionsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityPositionsBadRequestSubcode' + trace_id: + type: string + description: ListEntityPositionsBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.ListEntityPositionsBadRequestSubcode: + type: string + enum: + - ENTITY_ID_INVALID + - ENTITY_POSITION_LIMIT_INVALID + - ENTITY_POSITION_INVALID_ARGUMENT + coinbase.public_rest_api.ListEntityPositionsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityPositionsForbiddenSubcode' + trace_id: + type: string + description: ListEntityPositionsForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.ListEntityPositionsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.ListEntityPositionsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityPositionsNotFoundSubcode' + trace_id: + type: string + description: ListEntityPositionsNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.ListEntityPositionsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_POSITION_NOT_FOUND + coinbase.public_rest_api.ListOnchainAddressGroupsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListOnchainAddressGroupsBadRequestSubcode' + trace_id: + type: string + description: ListOnchainAddressGroupsBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.ListOnchainAddressGroupsBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + coinbase.public_rest_api.ListOnchainAddressGroupsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListOnchainAddressGroupsForbiddenSubcode' + trace_id: + type: string + description: ListOnchainAddressGroupsForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.ListOnchainAddressGroupsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.ListOnchainAddressGroupsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListOnchainAddressGroupsNotFoundSubcode' + trace_id: + type: string + description: ListOnchainAddressGroupsNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.ListOnchainAddressGroupsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.ListTFObligationsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListTFObligationsBadRequestSubcode' + trace_id: + type: string + description: ListTFObligationsBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.ListTFObligationsBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_ID_INVALID + coinbase.public_rest_api.ListTFObligationsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListTFObligationsForbiddenSubcode' + trace_id: + type: string + description: ListTFObligationsForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.ListTFObligationsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.ListTFObligationsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListTFObligationsNotFoundSubcode' + trace_id: + type: string + description: ListTFObligationsNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.ListTFObligationsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.ListTransactionValidatorsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListTransactionValidatorsBadRequestSubcode' + trace_id: + type: string + description: ListTransactionValidatorsBadRequestErrorResponse documents the + HTTP 400 error body. + coinbase.public_rest_api.ListTransactionValidatorsBadRequestSubcode: + type: string + enum: + - TRANSACTION_TYPE_UNSUPPORTED + - TRANSACTION_IDS_INVALID + - TRANSACTION_PARAMS_INVALID + coinbase.public_rest_api.ListTransactionValidatorsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListTransactionValidatorsForbiddenSubcode' + trace_id: + type: string + description: ListTransactionValidatorsForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.ListTransactionValidatorsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.ListTransactionValidatorsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListTransactionValidatorsNotFoundSubcode' + trace_id: + type: string + description: ListTransactionValidatorsNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.ListTransactionValidatorsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - TRANSACTION_NOT_FOUND + coinbase.public_rest_api.ListWalletAddressesBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListWalletAddressesBadRequestSubcode' + trace_id: + type: string + description: ListWalletAddressesBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.ListWalletAddressesBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - WALLET_ID_REQUIRED + - WALLET_ID_INVALID + - WALLET_NOT_DEPOSITABLE + - WALLET_DEPOSIT_REQUEST_INVALID + - WALLET_FAILED_PRECONDITION + - WALLET_NETWORK_INVALID + - WALLET_NETWORK_TYPE_NOT_SUPPORTED + coinbase.public_rest_api.ListWalletAddressesForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListWalletAddressesForbiddenSubcode' + trace_id: + type: string + description: ListWalletAddressesForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.ListWalletAddressesForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.ListWalletAddressesNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListWalletAddressesNotFoundSubcode' + trace_id: + type: string + description: ListWalletAddressesNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.ListWalletAddressesNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - WALLET_NOT_FOUND + coinbase.public_rest_api.ListWeb3WalletBalancesBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListWeb3WalletBalancesBadRequestSubcode' + trace_id: + type: string + description: ListWeb3WalletBalancesBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.ListWeb3WalletBalancesBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - WALLET_ID_REQUIRED + - WALLET_ID_INVALID + - WALLET_TYPE_NOT_SUPPORTED + - WALLET_BALANCES_LIMIT_INVALID + - WALLET_VISIBILITY_STATUSES_INVALID + coinbase.public_rest_api.ListWeb3WalletBalancesForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListWeb3WalletBalancesForbiddenSubcode' + trace_id: + type: string + description: ListWeb3WalletBalancesForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.ListWeb3WalletBalancesForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.ListWeb3WalletBalancesNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListWeb3WalletBalancesNotFoundSubcode' + trace_id: + type: string + description: ListWeb3WalletBalancesNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.ListWeb3WalletBalancesNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - WALLET_NOT_FOUND + coinbase.public_rest_api.ListXMLiquidationsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListXMLiquidationsBadRequestSubcode' + trace_id: + type: string + description: ListXMLiquidationsBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.ListXMLiquidationsBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_ID_INVALID + - CROSS_MARGIN_INVALID_ARGUMENT + - CROSS_MARGIN_FAILED_PRECONDITION + coinbase.public_rest_api.ListXMLiquidationsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListXMLiquidationsForbiddenSubcode' + trace_id: + type: string + description: ListXMLiquidationsForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.ListXMLiquidationsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - CROSS_MARGIN_NOT_ENABLED + coinbase.public_rest_api.ListXMLiquidationsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ListXMLiquidationsNotFoundSubcode' + trace_id: + type: string + description: ListXMLiquidationsNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.ListXMLiquidationsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_NOT_FOUND + coinbase.public_rest_api.NotFoundErrorCode: + type: string + enum: + - RESOURCE_NOT_FOUND + coinbase.public_rest_api.NotImplementedErrorCode: + type: string + enum: + - NOT_IMPLEMENTED + coinbase.public_rest_api.NotImplementedErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotImplementedErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.NotImplementedSubcode' + trace_id: + type: string + description: NotImplementedErrorResponse documents the HTTP 501 error body. + coinbase.public_rest_api.NotImplementedSubcode: + type: string + enum: + - ENDPOINT_NOT_IMPLEMENTED + coinbase.public_rest_api.OrderPreviewBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.OrderPreviewBadRequestSubcode' + trace_id: + type: string + description: OrderPreviewBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.OrderPreviewBadRequestSubcode: + type: string + enum: + - ENTITY_ID_INVALID + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - BUYING_POWER_CURRENCY_INVALID + - BUYING_POWER_FAILED_PRECONDITION + - ORDER_REQUEST_INVALID + - ORDER_TYPE_BLOCK_UNSUPPORTED + - ORDER_TYPE_RFQ_UNSUPPORTED + - ORDER_FOK_NOT_ENABLED + - ORDER_STOP_LIMIT_NOT_ENABLED + - ORDER_PEG_NOT_ENABLED + - ORDER_DUPLICATE_CLIENT_ORDER_ID + - ORDER_REJECTED + - ORDER_PRODUCT_ID_INVALID + - ORDER_FAILED_PRECONDITION + - ORDER_SIDE_INVALID + - ORDER_SIZE_REQUIRED + - ORDER_SIZE_INVALID + - ORDER_DISPLAY_SIZE_INVALID + - ORDER_PRICE_INVALID + - ORDER_STOP_PRICE_INVALID + - ORDER_TIME_IN_FORCE_INVALID + - ORDER_TIME_RANGE_INVALID + - ORDER_PEG_OFFSET_TYPE_INVALID + coinbase.public_rest_api.OrderPreviewForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.OrderPreviewForbiddenSubcode' + trace_id: + type: string + description: OrderPreviewForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.OrderPreviewForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - BUYING_POWER_PERMISSION_DENIED + coinbase.public_rest_api.OrderPreviewNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.OrderPreviewNotFoundSubcode' + trace_id: + type: string + description: OrderPreviewNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.OrderPreviewNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_NOT_FOUND + - PORTFOLIO_NOT_FOUND + - BUYING_POWER_NOT_FOUND + coinbase.public_rest_api.PortfolioStakingInitiateBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingInitiateBadRequestSubcode' + trace_id: + type: string + description: PortfolioStakingInitiateBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.PortfolioStakingInitiateBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - WALLET_EXTERNAL_ID_INVALID + - STAKING_REQUEST_INVALID + - STAKING_CURRENCY_UNSUPPORTED + - STAKING_AMOUNT_REQUIRED + - STAKING_AMOUNT_INVALID + - STAKING_NO_ELIGIBLE_WALLETS + - STAKING_BALANCE_NOT_FOUND + - STAKING_AMOUNT_EXCEEDS_BONDABLE_BALANCE + - STAKING_IDEMPOTENCY_KEY_REQUIRED + - STAKING_IDEMPOTENCY_KEY_INVALID + - STAKING_CURRENCY_SYMBOL_REQUIRED + coinbase.public_rest_api.PortfolioStakingInitiateForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingInitiateForbiddenSubcode' + trace_id: + type: string + description: PortfolioStakingInitiateForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.PortfolioStakingInitiateForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.PortfolioStakingInitiateNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingInitiateNotFoundSubcode' + trace_id: + type: string + description: PortfolioStakingInitiateNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.PortfolioStakingInitiateNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.PortfolioStakingUnstakeBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingUnstakeBadRequestSubcode' + trace_id: + type: string + description: PortfolioStakingUnstakeBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.PortfolioStakingUnstakeBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - WALLET_EXTERNAL_ID_INVALID + - STAKING_REQUEST_INVALID + - STAKING_CURRENCY_UNSUPPORTED + - STAKING_AMOUNT_REQUIRED + - STAKING_AMOUNT_INVALID + - STAKING_AMOUNT_EXCEEDS_UNBONDABLE_BALANCE + - STAKING_NO_ELIGIBLE_WALLETS + - STAKING_BALANCE_NOT_FOUND + - STAKING_PROVIDER_NO_UNBONDABLE_BALANCE + - STAKING_IDEMPOTENCY_KEY_REQUIRED + - STAKING_IDEMPOTENCY_KEY_INVALID + - STAKING_CURRENCY_SYMBOL_REQUIRED + - STAKING_AMOUNT_VALIDATOR_PROVIDER_CONFLICT + - STAKING_VALIDATOR_PROVIDER_REQUIRED + - STAKING_VALIDATOR_PROVIDER_NOT_SUPPORTED + coinbase.public_rest_api.PortfolioStakingUnstakeForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingUnstakeForbiddenSubcode' + trace_id: + type: string + description: PortfolioStakingUnstakeForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.PortfolioStakingUnstakeForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - STAKING_PROVIDER_UNSTAKE_NOT_ENABLED + coinbase.public_rest_api.PortfolioStakingUnstakeNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingUnstakeNotFoundSubcode' + trace_id: + type: string + description: PortfolioStakingUnstakeNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.PortfolioStakingUnstakeNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.PreviewUnstakeBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.PreviewUnstakeBadRequestSubcode' + trace_id: + type: string + description: PreviewUnstakeBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.PreviewUnstakeBadRequestSubcode: + type: string + enum: + - STAKING_CURRENCY_UNSUPPORTED + - STAKING_AMOUNT_REQUIRED + - STAKING_AMOUNT_INVALID + - STAKING_INSUFFICIENT_BALANCE + - STAKING_WALLET_OR_PORTFOLIO_INVALID + - STAKING_AMOUNT_EXCEEDS_UNBONDABLE_BALANCE + - STAKING_WALLET_COLD_ADDRESS_NOT_FOUND + coinbase.public_rest_api.PreviewUnstakeForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.PreviewUnstakeForbiddenSubcode' + trace_id: + type: string + description: PreviewUnstakeForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.PreviewUnstakeForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.RotateAPIKeyBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.RotateAPIKeyBadRequestSubcode' + trace_id: + type: string + description: RotateAPIKeyBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.RotateAPIKeyBadRequestSubcode: + type: string + enum: + - API_KEY_INVALID_DURATION + - API_KEY_ALREADY_ROTATED + coinbase.public_rest_api.RotateAPIKeyForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.RotateAPIKeyForbiddenSubcode' + trace_id: + type: string + description: RotateAPIKeyForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.RotateAPIKeyForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.ScheduleFuturesSweepBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ScheduleFuturesSweepBadRequestSubcode' + trace_id: + type: string + description: ScheduleFuturesSweepBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.ScheduleFuturesSweepBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - FCM_INVALID_ARGUMENT + - FCM_SWEEP_CURRENCY_REQUIRED + coinbase.public_rest_api.ScheduleFuturesSweepForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ScheduleFuturesSweepForbiddenSubcode' + trace_id: + type: string + description: ScheduleFuturesSweepForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.ScheduleFuturesSweepForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.ScheduleFuturesSweepNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ScheduleFuturesSweepNotFoundSubcode' + trace_id: + type: string + description: ScheduleFuturesSweepNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.ScheduleFuturesSweepNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.ServiceUnavailableErrorCode: + type: string + enum: + - SERVICE_UNAVAILABLE + coinbase.public_rest_api.ServiceUnavailableErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableSubcode' + trace_id: + type: string + description: ServiceUnavailableErrorResponse documents the HTTP 503 error body. + coinbase.public_rest_api.ServiceUnavailableSubcode: + type: string + enum: + - SERVER_MAINTENANCE_MODE_ACTIVE + - ORDER_SERVICE_UNAVAILABLE + - WALLET_SERVICE_UNAVAILABLE + - ASSET_SERVICE_UNAVAILABLE + - FINANCING_SERVICE_UNAVAILABLE + - TRANSACTION_SERVICE_UNAVAILABLE + - STAKING_SERVICE_UNAVAILABLE + - ADVANCED_TRANSFER_SERVICE_UNAVAILABLE + coinbase.public_rest_api.SetAutoSweepBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.SetAutoSweepBadRequestSubcode' + trace_id: + type: string + description: SetAutoSweepBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.SetAutoSweepBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - FCM_INVALID_ARGUMENT + coinbase.public_rest_api.SetAutoSweepForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.SetAutoSweepForbiddenSubcode' + trace_id: + type: string + description: SetAutoSweepForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.SetAutoSweepForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.SetAutoSweepNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.SetAutoSweepNotFoundSubcode' + trace_id: + type: string + description: SetAutoSweepNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.SetAutoSweepNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + coinbase.public_rest_api.SetFcmSettingsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.SetFcmSettingsBadRequestSubcode' + trace_id: + type: string + description: SetFcmSettingsBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.SetFcmSettingsBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - FCM_INVALID_ARGUMENT + - FCM_TARGET_DERIVATIVES_EXCESS_INVALID + coinbase.public_rest_api.SetFcmSettingsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.SetFcmSettingsForbiddenSubcode' + trace_id: + type: string + description: SetFcmSettingsForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.SetFcmSettingsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.SetFcmSettingsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.SetFcmSettingsNotFoundSubcode' + trace_id: + type: string + description: SetFcmSettingsNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.SetFcmSettingsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - FCM_ACCOUNT_NOT_FOUND + coinbase.public_rest_api.StakingClaimRewardsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingClaimRewardsBadRequestSubcode' + trace_id: + type: string + description: StakingClaimRewardsBadRequestErrorResponse documents the HTTP 400 + error body. + coinbase.public_rest_api.StakingClaimRewardsBadRequestSubcode: + type: string + enum: + - ENTITY_ID_INVALID + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - ASSET_REQUEST_INVALID + - WALLET_ID_REQUIRED + - WALLET_ID_INVALID + - WALLET_TYPE_NOT_SUPPORTED + - STAKING_REQUEST_INVALID + - STAKING_CURRENCY_UNSUPPORTED + - STAKING_PRECONDITION_FAILED + - STAKING_AMOUNT_REQUIRED + - STAKING_AMOUNT_INVALID + - STAKING_INSUFFICIENT_BALANCE + - STAKING_WALLET_OR_PORTFOLIO_INVALID + - STAKING_AMOUNT_EXCEEDS_UNBONDABLE_BALANCE + - STAKING_WALLET_COLD_ADDRESS_NOT_FOUND + - STAKING_NO_VALIDATORS_AVAILABLE + - STAKING_CUSTOM_AMOUNT_NOT_SUPPORTED + - STAKING_VALIDATOR_ADDRESS_NOT_SUPPORTED + - STAKING_DESTINATION_ADDRESS_INVALID + - STAKING_ACTION_TYPE_UNSUPPORTED + - STAKING_UNSTAKE_NOT_AVAILABLE + coinbase.public_rest_api.StakingClaimRewardsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingClaimRewardsForbiddenSubcode' + trace_id: + type: string + description: StakingClaimRewardsForbiddenErrorResponse documents the HTTP 403 + error body. + coinbase.public_rest_api.StakingClaimRewardsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.StakingClaimRewardsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingClaimRewardsNotFoundSubcode' + trace_id: + type: string + description: StakingClaimRewardsNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.StakingClaimRewardsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_NOT_FOUND + - PORTFOLIO_NOT_FOUND + - ASSET_NOT_FOUND + - WALLET_NOT_FOUND + coinbase.public_rest_api.StakingInitiateBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingInitiateBadRequestSubcode' + trace_id: + type: string + description: StakingInitiateBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.StakingInitiateBadRequestSubcode: + type: string + enum: + - ENTITY_ID_INVALID + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - WALLET_ID_REQUIRED + - WALLET_ID_INVALID + - WALLET_TYPE_NOT_SUPPORTED + - WALLET_EXTERNAL_ID_INVALID + - STAKING_REQUEST_INVALID + - STAKING_CURRENCY_UNSUPPORTED + - STAKING_PRECONDITION_FAILED + - STAKING_AMOUNT_REQUIRED + - STAKING_AMOUNT_INVALID + - STAKING_INSUFFICIENT_BALANCE + - STAKING_WALLET_OR_PORTFOLIO_INVALID + - STAKING_AMOUNT_EXCEEDS_UNBONDABLE_BALANCE + - STAKING_WALLET_COLD_ADDRESS_NOT_FOUND + - STAKING_NO_VALIDATORS_AVAILABLE + - STAKING_END_DATE_INVALID + - STAKING_CUSTOM_AMOUNT_NOT_SUPPORTED + - STAKING_VALIDATOR_ADDRESS_NOT_SUPPORTED + - STAKING_DESTINATION_ADDRESS_INVALID + - STAKING_ACTION_TYPE_UNSUPPORTED + - STAKING_UNSTAKE_NOT_AVAILABLE + coinbase.public_rest_api.StakingInitiateForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingInitiateForbiddenSubcode' + trace_id: + type: string + description: StakingInitiateForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.StakingInitiateForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - STAKING_NOT_ENABLED + coinbase.public_rest_api.StakingInitiateNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingInitiateNotFoundSubcode' + trace_id: + type: string + description: StakingInitiateNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.StakingInitiateNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_NOT_FOUND + - PORTFOLIO_NOT_FOUND + - ACTIVITY_NOT_FOUND + - WALLET_NOT_FOUND + coinbase.public_rest_api.StakingUnstakeBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingUnstakeBadRequestSubcode' + trace_id: + type: string + description: StakingUnstakeBadRequestErrorResponse documents the HTTP 400 error + body. + coinbase.public_rest_api.StakingUnstakeBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - WALLET_ID_REQUIRED + - WALLET_ID_INVALID + - WALLET_TYPE_NOT_SUPPORTED + - WALLET_EXTERNAL_ID_INVALID + - STAKING_REQUEST_INVALID + - STAKING_CURRENCY_UNSUPPORTED + - STAKING_PRECONDITION_FAILED + - STAKING_AMOUNT_REQUIRED + - STAKING_AMOUNT_INVALID + - STAKING_INSUFFICIENT_BALANCE + - STAKING_WALLET_OR_PORTFOLIO_INVALID + - STAKING_AMOUNT_EXCEEDS_UNBONDABLE_BALANCE + - STAKING_WALLET_COLD_ADDRESS_NOT_FOUND + - STAKING_DELEGATED_ADDRESS_NOT_FOUND + - STAKING_CUSTOM_AMOUNT_NOT_SUPPORTED + - STAKING_VALIDATOR_ADDRESS_NOT_SUPPORTED + - STAKING_VALIDATOR_ALLOCATIONS_UNSUPPORTED_CURRENCY + - STAKING_VALIDATOR_ALLOCATION_INCOMPLETE + - STAKING_VALIDATOR_NOT_ELIGIBLE + - STAKING_DESTINATION_ADDRESS_INVALID + - STAKING_ACTION_TYPE_UNSUPPORTED + - STAKING_UNSTAKE_NOT_AVAILABLE + coinbase.public_rest_api.StakingUnstakeForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingUnstakeForbiddenSubcode' + trace_id: + type: string + description: StakingUnstakeForbiddenErrorResponse documents the HTTP 403 error + body. + coinbase.public_rest_api.StakingUnstakeForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + - STAKING_NOT_ENABLED + - STAKING_VALIDATOR_ALLOCATIONS_NOT_ENABLED + coinbase.public_rest_api.StakingUnstakeNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingUnstakeNotFoundSubcode' + trace_id: + type: string + description: StakingUnstakeNotFoundErrorResponse documents the HTTP 404 error + body. + coinbase.public_rest_api.StakingUnstakeNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - WALLET_NOT_FOUND + coinbase.public_rest_api.SubmitDepositTravelRuleDataBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.SubmitDepositTravelRuleDataBadRequestSubcode' + trace_id: + type: string + description: SubmitDepositTravelRuleDataBadRequestErrorResponse documents the + HTTP 400 error body. + coinbase.public_rest_api.SubmitDepositTravelRuleDataBadRequestSubcode: + type: string + enum: + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - TRANSACTION_TYPE_UNSUPPORTED + - TRANSACTION_TRAVEL_RULE_PARTY_INVALID + - TRANSACTION_ID_REQUIRED + - TRANSACTION_ID_INVALID + coinbase.public_rest_api.SubmitDepositTravelRuleDataForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.SubmitDepositTravelRuleDataForbiddenSubcode' + trace_id: + type: string + description: SubmitDepositTravelRuleDataForbiddenErrorResponse documents the + HTTP 403 error body. + coinbase.public_rest_api.SubmitDepositTravelRuleDataForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.SubmitDepositTravelRuleDataNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.SubmitDepositTravelRuleDataNotFoundSubcode' + trace_id: + type: string + description: SubmitDepositTravelRuleDataNotFoundErrorResponse documents the + HTTP 404 error body. + coinbase.public_rest_api.SubmitDepositTravelRuleDataNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - TRANSACTION_NOT_FOUND + coinbase.public_rest_api.TooManyRequestsErrorCode: + type: string + enum: + - RATE_LIMIT_EXCEEDED + coinbase.public_rest_api.TooManyRequestsErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsSubcode' + trace_id: + type: string + description: TooManyRequestsErrorResponse documents the HTTP 429 error body. + coinbase.public_rest_api.TooManyRequestsSubcode: + type: string + enum: + - SERVER_RATE_LIMIT_EXCEEDED + coinbase.public_rest_api.UnauthorizedErrorCode: + type: string + enum: + - AUTHENTICATION_FAILED + coinbase.public_rest_api.UnauthorizedErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedSubcode' + trace_id: + type: string + description: UnauthorizedErrorResponse documents the HTTP 401 error body. + coinbase.public_rest_api.UnauthorizedSubcode: + type: string + enum: + - AUTH_UNAUTHENTICATED + - FINANCING_PORTFOLIO_MARGIN_NOT_ENABLED + coinbase.public_rest_api.UpdateFundingSettingsBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.UpdateFundingSettingsBadRequestSubcode' + trace_id: + type: string + description: UpdateFundingSettingsBadRequestErrorResponse documents the HTTP + 400 error body. + coinbase.public_rest_api.UpdateFundingSettingsBadRequestSubcode: + type: string + enum: + - ENTITY_ID_REQUIRED + - ENTITY_ID_INVALID + - PORTFOLIO_ID_REQUIRED + - PORTFOLIO_ID_INVALID + - CROSS_MARGIN_INVALID_ARGUMENT + - CROSS_MARGIN_FAILED_PRECONDITION + - FUNDING_SETTINGS_EXCESS_TARGET_AMOUNT_INVALID + coinbase.public_rest_api.UpdateFundingSettingsForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.UpdateFundingSettingsForbiddenSubcode' + trace_id: + type: string + description: UpdateFundingSettingsForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.UpdateFundingSettingsForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.UpdateFundingSettingsNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.UpdateFundingSettingsNotFoundSubcode' + trace_id: + type: string + description: UpdateFundingSettingsNotFoundErrorResponse documents the HTTP 404 + error body. + coinbase.public_rest_api.UpdateFundingSettingsNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND + - ENTITY_NOT_FOUND + coinbase.public_rest_api.UpdateOnchainAddressGroupBadRequestErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.BadRequestErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.UpdateOnchainAddressGroupBadRequestSubcode' + trace_id: + type: string + description: UpdateOnchainAddressGroupBadRequestErrorResponse documents the + HTTP 400 error body. + coinbase.public_rest_api.UpdateOnchainAddressGroupBadRequestSubcode: + type: string + enum: + - ONCHAIN_ADDRESS_GROUP_REQUEST_INVALID + coinbase.public_rest_api.UpdateOnchainAddressGroupForbiddenErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.ForbiddenErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.UpdateOnchainAddressGroupForbiddenSubcode' + trace_id: + type: string + description: UpdateOnchainAddressGroupForbiddenErrorResponse documents the HTTP + 403 error body. + coinbase.public_rest_api.UpdateOnchainAddressGroupForbiddenSubcode: + type: string + enum: + - AUTH_RESOURCE_ACCESS_DENIED + - MTLS_CERTIFICATE_REQUIRED + - MTLS_CERTIFICATE_REVOKED + - MTLS_CERTIFICATE_INVALID + coinbase.public_rest_api.UpdateOnchainAddressGroupNotFoundErrorResponse: + type: object + properties: + code: + $ref: '#/components/schemas/coinbase.public_rest_api.NotFoundErrorCode' + message: + type: string + subcode: + $ref: '#/components/schemas/coinbase.public_rest_api.UpdateOnchainAddressGroupNotFoundSubcode' + trace_id: + type: string + description: UpdateOnchainAddressGroupNotFoundErrorResponse documents the HTTP + 404 error body. + coinbase.public_rest_api.UpdateOnchainAddressGroupNotFoundSubcode: + type: string + enum: + - AUTH_RESOURCE_NOT_FOUND public_rest_apiCreateAllocationRequest: type: object properties: @@ -10740,6 +23010,2081 @@ components: netting_id: type: string description: The ID to identify an in-flight net allocation. + responses: + Unauthorized: + description: "Authentication failed. The request signature, key, or timestamp\ + \ is invalid." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UnauthorizedErrorResponse' + GetActivityForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetActivityForbiddenErrorResponse' + GetActivityNotFound: + description: The requested activity was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetActivityNotFoundErrorResponse' + TooManyRequests: + description: Too many requests. Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.TooManyRequestsErrorResponse' + ServiceUnavailable: + description: Service unavailable. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ServiceUnavailableErrorResponse' + CreateAllocationBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateAllocationBadRequestErrorResponse' + CreateAllocationForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateAllocationForbiddenErrorResponse' + CreateAllocationNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateAllocationNotFoundErrorResponse' + CreateNetAllocationBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateNetAllocationBadRequestErrorResponse' + CreateNetAllocationForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateNetAllocationForbiddenErrorResponse' + CreateNetAllocationNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateNetAllocationNotFoundErrorResponse' + RotateAPIKeyBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.RotateAPIKeyBadRequestErrorResponse' + RotateAPIKeyForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.RotateAPIKeyForbiddenErrorResponse' + InternalServer: + description: Internal server error. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.InternalServerErrorResponse' + GetConversionFeesForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetConversionFeesForbiddenErrorResponse' + GetInterestAccrualsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetInterestAccrualsBadRequestErrorResponse' + GetInterestAccrualsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetInterestAccrualsForbiddenErrorResponse' + GetInterestAccrualsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetInterestAccrualsNotFoundErrorResponse' + GetEntityActivitiesBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityActivitiesBadRequestErrorResponse' + GetEntityActivitiesForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityActivitiesForbiddenErrorResponse' + GetEntityActivitiesNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityActivitiesNotFoundErrorResponse' + ListAggregateEntityPositionsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAggregateEntityPositionsBadRequestErrorResponse' + ListAggregateEntityPositionsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAggregateEntityPositionsForbiddenErrorResponse' + ListAggregateEntityPositionsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAggregateEntityPositionsNotFoundErrorResponse' + GetEntityAssetsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityAssetsBadRequestErrorResponse' + GetEntityAssetsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityAssetsForbiddenErrorResponse' + GetEntityAssetsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityAssetsNotFoundErrorResponse' + ListEntityBalancesBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityBalancesBadRequestErrorResponse' + ListEntityBalancesForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityBalancesForbiddenErrorResponse' + ListEntityBalancesNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityBalancesNotFoundErrorResponse' + GetCrossMarginOverviewBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginOverviewBadRequestErrorResponse' + GetCrossMarginOverviewForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginOverviewForbiddenErrorResponse' + GetCrossMarginOverviewNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginOverviewNotFoundErrorResponse' + GetXMLiquidationBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetXMLiquidationBadRequestErrorResponse' + GetXMLiquidationForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetXMLiquidationForbiddenErrorResponse' + GetXMLiquidationNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetXMLiquidationNotFoundErrorResponse' + ListXMLiquidationsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListXMLiquidationsBadRequestErrorResponse' + ListXMLiquidationsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListXMLiquidationsForbiddenErrorResponse' + ListXMLiquidationsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListXMLiquidationsNotFoundErrorResponse' + GetCrossMarginRiskParametersBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginRiskParametersBadRequestErrorResponse' + GetCrossMarginRiskParametersForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginRiskParametersForbiddenErrorResponse' + GetCrossMarginRiskParametersNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginRiskParametersNotFoundErrorResponse' + UpdateFundingSettingsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UpdateFundingSettingsBadRequestErrorResponse' + UpdateFundingSettingsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UpdateFundingSettingsForbiddenErrorResponse' + UpdateFundingSettingsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UpdateFundingSettingsNotFoundErrorResponse' + SetAutoSweepBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.SetAutoSweepBadRequestErrorResponse' + SetAutoSweepForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.SetAutoSweepForbiddenErrorResponse' + SetAutoSweepNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.SetAutoSweepNotFoundErrorResponse' + GetFcmBalanceBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmBalanceBadRequestErrorResponse' + GetFcmBalanceForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmBalanceForbiddenErrorResponse' + GetFcmBalanceNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmBalanceNotFoundErrorResponse' + GetFcmEquityBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmEquityBadRequestErrorResponse' + GetFcmEquityForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmEquityForbiddenErrorResponse' + GetFcmEquityNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmEquityNotFoundErrorResponse' + GetFcmMarginCallDetailsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmMarginCallDetailsBadRequestErrorResponse' + GetFcmMarginCallDetailsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmMarginCallDetailsForbiddenErrorResponse' + GetFcmMarginCallDetailsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmMarginCallDetailsNotFoundErrorResponse' + GetPositionsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPositionsBadRequestErrorResponse' + GetPositionsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPositionsForbiddenErrorResponse' + GetPositionsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPositionsNotFoundErrorResponse' + GetFcmRiskLimitsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmRiskLimitsBadRequestErrorResponse' + GetFcmRiskLimitsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmRiskLimitsForbiddenErrorResponse' + GetFcmRiskLimitsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmRiskLimitsNotFoundErrorResponse' + GetFcmSettingsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmSettingsBadRequestErrorResponse' + GetFcmSettingsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmSettingsForbiddenErrorResponse' + GetFcmSettingsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFcmSettingsNotFoundErrorResponse' + SetFcmSettingsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.SetFcmSettingsBadRequestErrorResponse' + SetFcmSettingsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.SetFcmSettingsForbiddenErrorResponse' + SetFcmSettingsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.SetFcmSettingsNotFoundErrorResponse' + GetFuturesSweepsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFuturesSweepsBadRequestErrorResponse' + GetFuturesSweepsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFuturesSweepsForbiddenErrorResponse' + GetFuturesSweepsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetFuturesSweepsNotFoundErrorResponse' + ScheduleFuturesSweepBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ScheduleFuturesSweepBadRequestErrorResponse' + ScheduleFuturesSweepForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ScheduleFuturesSweepForbiddenErrorResponse' + ScheduleFuturesSweepNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ScheduleFuturesSweepNotFoundErrorResponse' + CancelFuturesSweepBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelFuturesSweepBadRequestErrorResponse' + CancelFuturesSweepForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelFuturesSweepForbiddenErrorResponse' + CancelFuturesSweepNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelFuturesSweepNotFoundErrorResponse' + GetInvoicesBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetInvoicesBadRequestErrorResponse' + GetInvoicesForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetInvoicesForbiddenErrorResponse' + GetInvoicesNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetInvoicesNotFoundErrorResponse' + GetLocateAvailabilitiesBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetLocateAvailabilitiesBadRequestErrorResponse' + GetLocateAvailabilitiesForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetLocateAvailabilitiesForbiddenErrorResponse' + GetLocateAvailabilitiesNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetLocateAvailabilitiesNotFoundErrorResponse' + GetMarginInformationBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginInformationBadRequestErrorResponse' + GetMarginInformationForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginInformationForbiddenErrorResponse' + GetMarginInformationNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginInformationNotFoundErrorResponse' + GetMarginSummariesBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginSummariesBadRequestErrorResponse' + GetMarginSummariesForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginSummariesForbiddenErrorResponse' + GetMarginSummariesNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginSummariesNotFoundErrorResponse' + GetMarketDataBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarketDataBadRequestErrorResponse' + GetMarketDataForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarketDataForbiddenErrorResponse' + GetMarketDataNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarketDataNotFoundErrorResponse' + GetEntityPaymentMethodsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodsBadRequestErrorResponse' + GetEntityPaymentMethodsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodsForbiddenErrorResponse' + GetEntityPaymentMethodsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodsNotFoundErrorResponse' + GetEntityPaymentMethodDetailsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodDetailsBadRequestErrorResponse' + GetEntityPaymentMethodDetailsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodDetailsForbiddenErrorResponse' + GetEntityPaymentMethodDetailsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityPaymentMethodDetailsNotFoundErrorResponse' + ListEntityPositionsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityPositionsBadRequestErrorResponse' + ListEntityPositionsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityPositionsForbiddenErrorResponse' + ListEntityPositionsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListEntityPositionsNotFoundErrorResponse' + ListTFObligationsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListTFObligationsBadRequestErrorResponse' + ListTFObligationsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListTFObligationsForbiddenErrorResponse' + ListTFObligationsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListTFObligationsNotFoundErrorResponse' + GetTFTieredPricingFeesBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTFTieredPricingFeesBadRequestErrorResponse' + GetTFTieredPricingFeesForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTFTieredPricingFeesForbiddenErrorResponse' + GetTFTieredPricingFeesNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTFTieredPricingFeesNotFoundErrorResponse' + GetEntityUsersBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityUsersBadRequestErrorResponse' + GetEntityUsersForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityUsersForbiddenErrorResponse' + GetEntityUsersNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityUsersNotFoundErrorResponse' + GetPortfoliosForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfoliosForbiddenErrorResponse' + GetPortfoliosNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfoliosNotFoundErrorResponse' + GetPortfolioBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioBadRequestErrorResponse' + GetPortfolioForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioForbiddenErrorResponse' + GetPortfolioNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioNotFoundErrorResponse' + AcceptQuoteBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.AcceptQuoteBadRequestErrorResponse' + AcceptQuoteForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.AcceptQuoteForbiddenErrorResponse' + AcceptQuoteNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.AcceptQuoteNotFoundErrorResponse' + GetPortfolioInterestAccrualsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioInterestAccrualsBadRequestErrorResponse' + GetPortfolioInterestAccrualsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioInterestAccrualsForbiddenErrorResponse' + GetPortfolioInterestAccrualsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioInterestAccrualsNotFoundErrorResponse' + GetPortfolioActivitiesBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivitiesBadRequestErrorResponse' + GetPortfolioActivitiesForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivitiesForbiddenErrorResponse' + GetPortfolioActivitiesNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivitiesNotFoundErrorResponse' + GetPortfolioActivityBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivityBadRequestErrorResponse' + GetPortfolioActivityForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivityForbiddenErrorResponse' + GetPortfolioActivityNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioActivityNotFoundErrorResponse' + GetPortfolioAddressBookBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAddressBookBadRequestErrorResponse' + GetPortfolioAddressBookForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAddressBookForbiddenErrorResponse' + GetPortfolioAddressBookNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAddressBookNotFoundErrorResponse' + CreatePortfolioAddressBookEntryBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreatePortfolioAddressBookEntryBadRequestErrorResponse' + CreatePortfolioAddressBookEntryForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreatePortfolioAddressBookEntryForbiddenErrorResponse' + CreatePortfolioAddressBookEntryNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreatePortfolioAddressBookEntryNotFoundErrorResponse' + ListAdvancedTransfersBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAdvancedTransfersBadRequestErrorResponse' + ListAdvancedTransfersForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAdvancedTransfersForbiddenErrorResponse' + ListAdvancedTransfersNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAdvancedTransfersNotFoundErrorResponse' + CreateAdvancedTransferBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateAdvancedTransferBadRequestErrorResponse' + CreateAdvancedTransferForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateAdvancedTransferForbiddenErrorResponse' + CreateAdvancedTransferNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateAdvancedTransferNotFoundErrorResponse' + CancelAdvancedTransferBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelAdvancedTransferBadRequestErrorResponse' + CancelAdvancedTransferForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelAdvancedTransferForbiddenErrorResponse' + CancelAdvancedTransferNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelAdvancedTransferNotFoundErrorResponse' + ListAdvancedTransferTransactionsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAdvancedTransferTransactionsForbiddenErrorResponse' + ListAdvancedTransferTransactionsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListAdvancedTransferTransactionsNotFoundErrorResponse' + GetPortfolioAllocationsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAllocationsBadRequestErrorResponse' + GetPortfolioAllocationsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAllocationsForbiddenErrorResponse' + GetPortfolioAllocationsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioAllocationsNotFoundErrorResponse' + GetAllocationsByClientNettingIdBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationsByClientNettingIdBadRequestErrorResponse' + GetAllocationsByClientNettingIdForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationsByClientNettingIdForbiddenErrorResponse' + GetAllocationsByClientNettingIdNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationsByClientNettingIdNotFoundErrorResponse' + GetAllocationBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationBadRequestErrorResponse' + GetAllocationForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationForbiddenErrorResponse' + GetAllocationNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetAllocationNotFoundErrorResponse' + GetPortfolioBalancesBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioBalancesBadRequestErrorResponse' + GetPortfolioBalancesForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioBalancesForbiddenErrorResponse' + GetPortfolioBalancesNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioBalancesNotFoundErrorResponse' + GetBuyingPowerBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetBuyingPowerBadRequestErrorResponse' + GetBuyingPowerForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetBuyingPowerForbiddenErrorResponse' + GetBuyingPowerNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetBuyingPowerNotFoundErrorResponse' + GetCandlesBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCandlesBadRequestErrorResponse' + GetCandlesForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCandlesForbiddenErrorResponse' + GetCandlesNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCandlesNotFoundErrorResponse' + GetPortfolioCommissionBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCommissionBadRequestErrorResponse' + GetPortfolioCommissionForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCommissionForbiddenErrorResponse' + GetPortfolioCommissionNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCommissionNotFoundErrorResponse' + GetPortfolioCounterpartyIDBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCounterpartyIDBadRequestErrorResponse' + GetPortfolioCounterpartyIDForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCounterpartyIDForbiddenErrorResponse' + GetPortfolioCounterpartyIDNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioCounterpartyIDNotFoundErrorResponse' + GetPostTradeCreditBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPostTradeCreditBadRequestErrorResponse' + GetPostTradeCreditForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPostTradeCreditForbiddenErrorResponse' + GetPostTradeCreditNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPostTradeCreditNotFoundErrorResponse' + GetDerivativesCurrencySummaryBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativesCurrencySummaryBadRequestErrorResponse' + GetDerivativesCurrencySummaryForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativesCurrencySummaryForbiddenErrorResponse' + GetDerivativesCurrencySummaryNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativesCurrencySummaryNotFoundErrorResponse' + GetDerivativePositionsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativePositionsBadRequestErrorResponse' + GetDerivativePositionsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativePositionsForbiddenErrorResponse' + GetDerivativePositionsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetDerivativePositionsNotFoundErrorResponse' + GetPortfolioFillsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioFillsBadRequestErrorResponse' + GetPortfolioFillsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioFillsForbiddenErrorResponse' + GetPortfolioFillsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioFillsNotFoundErrorResponse' + GetExistingLocatesBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetExistingLocatesBadRequestErrorResponse' + GetExistingLocatesForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetExistingLocatesForbiddenErrorResponse' + GetExistingLocatesNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetExistingLocatesNotFoundErrorResponse' + CreateNewLocatesBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateNewLocatesBadRequestErrorResponse' + CreateNewLocatesForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateNewLocatesForbiddenErrorResponse' + CreateNewLocatesNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateNewLocatesNotFoundErrorResponse' + GetMarginConversionsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginConversionsBadRequestErrorResponse' + GetMarginConversionsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginConversionsForbiddenErrorResponse' + GetMarginConversionsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetMarginConversionsNotFoundErrorResponse' + CreateOnchainAddressGroupBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainAddressGroupBadRequestErrorResponse' + CreateOnchainAddressGroupForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainAddressGroupForbiddenErrorResponse' + CreateOnchainAddressGroupNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainAddressGroupNotFoundErrorResponse' + UpdateOnchainAddressGroupBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UpdateOnchainAddressGroupBadRequestErrorResponse' + UpdateOnchainAddressGroupForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UpdateOnchainAddressGroupForbiddenErrorResponse' + UpdateOnchainAddressGroupNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.UpdateOnchainAddressGroupNotFoundErrorResponse' + DeleteOnchainAddressGroupBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.DeleteOnchainAddressGroupBadRequestErrorResponse' + DeleteOnchainAddressGroupForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.DeleteOnchainAddressGroupForbiddenErrorResponse' + DeleteOnchainAddressGroupNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.DeleteOnchainAddressGroupNotFoundErrorResponse' + ListOnchainAddressGroupsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListOnchainAddressGroupsBadRequestErrorResponse' + ListOnchainAddressGroupsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListOnchainAddressGroupsForbiddenErrorResponse' + ListOnchainAddressGroupsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListOnchainAddressGroupsNotFoundErrorResponse' + GetOpenOrdersBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOpenOrdersBadRequestErrorResponse' + GetOpenOrdersForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOpenOrdersForbiddenErrorResponse' + GetOpenOrdersNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOpenOrdersNotFoundErrorResponse' + CreateOrderBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOrderBadRequestErrorResponse' + CreateOrderForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOrderForbiddenErrorResponse' + CreateOrderNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOrderNotFoundErrorResponse' + OrderPreviewBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.OrderPreviewBadRequestErrorResponse' + OrderPreviewForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.OrderPreviewForbiddenErrorResponse' + OrderPreviewNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.OrderPreviewNotFoundErrorResponse' + GetOrdersBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrdersBadRequestErrorResponse' + GetOrdersForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrdersForbiddenErrorResponse' + GetOrdersNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrdersNotFoundErrorResponse' + GetOrderBadRequest: + description: "Bad request. portfolio_id or order_id is missing, invalid, or\ + \ the order was not found." + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderBadRequestErrorResponse' + GetOrderForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderForbiddenErrorResponse' + GetOrderNotFound: + description: The requested portfolio or resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderNotFoundErrorResponse' + CancelOrderBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelOrderBadRequestErrorResponse' + CancelOrderForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelOrderForbiddenErrorResponse' + CancelOrderNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CancelOrderNotFoundErrorResponse' + EditOrderBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.EditOrderBadRequestErrorResponse' + EditOrderForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.EditOrderForbiddenErrorResponse' + EditOrderNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.EditOrderNotFoundErrorResponse' + GetOrderEditHistoryBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderEditHistoryBadRequestErrorResponse' + GetOrderEditHistoryForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderEditHistoryForbiddenErrorResponse' + GetOrderEditHistoryNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderEditHistoryNotFoundErrorResponse' + GetOrderFillsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderFillsBadRequestErrorResponse' + GetOrderFillsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderFillsForbiddenErrorResponse' + GetOrderFillsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetOrderFillsNotFoundErrorResponse' + GetPortfolioProductsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioProductsBadRequestErrorResponse' + GetPortfolioProductsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioProductsForbiddenErrorResponse' + GetPortfolioProductsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioProductsNotFoundErrorResponse' + CreateQuoteRequestBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateQuoteRequestBadRequestErrorResponse' + CreateQuoteRequestForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateQuoteRequestForbiddenErrorResponse' + CreateQuoteRequestNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateQuoteRequestNotFoundErrorResponse' + PortfolioStakingInitiateBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingInitiateBadRequestErrorResponse' + PortfolioStakingInitiateForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingInitiateForbiddenErrorResponse' + PortfolioStakingInitiateNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingInitiateNotFoundErrorResponse' + ListTransactionValidatorsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListTransactionValidatorsBadRequestErrorResponse' + ListTransactionValidatorsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListTransactionValidatorsForbiddenErrorResponse' + ListTransactionValidatorsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListTransactionValidatorsNotFoundErrorResponse' + PortfolioStakingUnstakeBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingUnstakeBadRequestErrorResponse' + PortfolioStakingUnstakeForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingUnstakeForbiddenErrorResponse' + PortfolioStakingUnstakeNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.PortfolioStakingUnstakeNotFoundErrorResponse' + GetPortfolioTransactionsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioTransactionsBadRequestErrorResponse' + GetPortfolioTransactionsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioTransactionsForbiddenErrorResponse' + GetPortfolioTransactionsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioTransactionsNotFoundErrorResponse' + GetTransactionBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionBadRequestErrorResponse' + GetTransactionForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionForbiddenErrorResponse' + GetTransactionNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionNotFoundErrorResponse' + GetTransactionTravelRuleDataBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionTravelRuleDataBadRequestErrorResponse' + GetTransactionTravelRuleDataForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionTravelRuleDataForbiddenErrorResponse' + GetTransactionTravelRuleDataNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetTransactionTravelRuleDataNotFoundErrorResponse' + SubmitDepositTravelRuleDataBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.SubmitDepositTravelRuleDataBadRequestErrorResponse' + SubmitDepositTravelRuleDataForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.SubmitDepositTravelRuleDataForbiddenErrorResponse' + SubmitDepositTravelRuleDataNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.SubmitDepositTravelRuleDataNotFoundErrorResponse' + GetPortfolioUsersBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioUsersBadRequestErrorResponse' + GetPortfolioUsersForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioUsersForbiddenErrorResponse' + GetPortfolioUsersNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioUsersNotFoundErrorResponse' + GetWalletsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletsBadRequestErrorResponse' + GetWalletsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletsForbiddenErrorResponse' + GetWalletsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletsNotFoundErrorResponse' + CreateWalletBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletBadRequestErrorResponse' + CreateWalletForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletForbiddenErrorResponse' + CreateWalletNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletNotFoundErrorResponse' + GetWalletBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletBadRequestErrorResponse' + GetWalletForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletForbiddenErrorResponse' + GetWalletNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletNotFoundErrorResponse' + ListWalletAddressesBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListWalletAddressesBadRequestErrorResponse' + ListWalletAddressesForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListWalletAddressesForbiddenErrorResponse' + ListWalletAddressesNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListWalletAddressesNotFoundErrorResponse' + CreateWalletDepositAddressBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletDepositAddressBadRequestErrorResponse' + CreateWalletDepositAddressForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletDepositAddressForbiddenErrorResponse' + CreateWalletDepositAddressNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletDepositAddressNotFoundErrorResponse' + GetWalletBalanceBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletBalanceBadRequestErrorResponse' + GetWalletBalanceForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletBalanceForbiddenErrorResponse' + GetWalletBalanceNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletBalanceNotFoundErrorResponse' + CreateConversionBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateConversionBadRequestErrorResponse' + CreateConversionForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateConversionForbiddenErrorResponse' + CreateConversionNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateConversionNotFoundErrorResponse' + GetWalletDepositInstructionsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletDepositInstructionsBadRequestErrorResponse' + GetWalletDepositInstructionsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletDepositInstructionsForbiddenErrorResponse' + GetWalletDepositInstructionsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletDepositInstructionsNotFoundErrorResponse' + CreateOnchainTransactionBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainTransactionBadRequestErrorResponse' + CreateOnchainTransactionForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainTransactionForbiddenErrorResponse' + CreateOnchainTransactionNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateOnchainTransactionNotFoundErrorResponse' + StakingClaimRewardsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingClaimRewardsBadRequestErrorResponse' + StakingClaimRewardsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingClaimRewardsForbiddenErrorResponse' + StakingClaimRewardsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingClaimRewardsNotFoundErrorResponse' + StakingInitiateBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingInitiateBadRequestErrorResponse' + StakingInitiateForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingInitiateForbiddenErrorResponse' + StakingInitiateNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingInitiateNotFoundErrorResponse' + GetStakingStatusBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetStakingStatusBadRequestErrorResponse' + GetStakingStatusForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetStakingStatusForbiddenErrorResponse' + GetStakingStatusNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetStakingStatusNotFoundErrorResponse' + StakingUnstakeBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingUnstakeBadRequestErrorResponse' + StakingUnstakeForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingUnstakeForbiddenErrorResponse' + StakingUnstakeNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.StakingUnstakeNotFoundErrorResponse' + PreviewUnstakeBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.PreviewUnstakeBadRequestErrorResponse' + PreviewUnstakeForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.PreviewUnstakeForbiddenErrorResponse' + GetUnstakingStatusBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetUnstakingStatusBadRequestErrorResponse' + GetUnstakingStatusForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetUnstakingStatusForbiddenErrorResponse' + GetUnstakingStatusNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetUnstakingStatusNotFoundErrorResponse' + GetWalletTransactionsBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletTransactionsBadRequestErrorResponse' + GetWalletTransactionsForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletTransactionsForbiddenErrorResponse' + GetWalletTransactionsNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWalletTransactionsNotFoundErrorResponse' + CreateWalletTransferBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletTransferBadRequestErrorResponse' + CreateWalletTransferForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletTransferForbiddenErrorResponse' + CreateWalletTransferNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletTransferNotFoundErrorResponse' + ListWeb3WalletBalancesBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListWeb3WalletBalancesBadRequestErrorResponse' + ListWeb3WalletBalancesForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListWeb3WalletBalancesForbiddenErrorResponse' + ListWeb3WalletBalancesNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.ListWeb3WalletBalancesNotFoundErrorResponse' + CreateWalletWithdrawalBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletWithdrawalBadRequestErrorResponse' + CreateWalletWithdrawalForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletWithdrawalForbiddenErrorResponse' + CreateWalletWithdrawalNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.CreateWalletWithdrawalNotFoundErrorResponse' + GetWithdrawalPowerBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWithdrawalPowerBadRequestErrorResponse' + GetWithdrawalPowerForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWithdrawalPowerForbiddenErrorResponse' + GetWithdrawalPowerNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetWithdrawalPowerNotFoundErrorResponse' + GetCrossMarginPrimeOverviewBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginPrimeOverviewBadRequestErrorResponse' + GetCrossMarginPrimeOverviewForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginPrimeOverviewForbiddenErrorResponse' + GetCrossMarginPrimeOverviewNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetCrossMarginPrimeOverviewNotFoundErrorResponse' + GetEntityRewardsRateBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityRewardsRateBadRequestErrorResponse' + GetEntityRewardsRateForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityRewardsRateForbiddenErrorResponse' + GetEntityRewardsRateNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetEntityRewardsRateNotFoundErrorResponse' + GetPortfolioRewardsRateBadRequest: + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioRewardsRateBadRequestErrorResponse' + GetPortfolioRewardsRateForbidden: + description: Permission denied. The API key lacks the required scope for this + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioRewardsRateForbiddenErrorResponse' + GetPortfolioRewardsRateNotFound: + description: The requested resource was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/coinbase.public_rest_api.GetPortfolioRewardsRateNotFoundErrorResponse' x-readme: explorer-enabled: false samples-enabled: false diff --git a/pom.xml b/pom.xml index 43ae762c..b89f595f 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ Java SDK for the Coinbase Prime REST APIs com.coinbase.prime https://github.com/coinbase/prime-sdk-java - 1.10.3 + 1.11.0 Apache License, Version 2.0 diff --git a/src/main/java/com/coinbase/examples/apikey/RotateApiKey.java b/src/main/java/com/coinbase/examples/apikey/RotateApiKey.java new file mode 100644 index 00000000..550dd3f6 --- /dev/null +++ b/src/main/java/com/coinbase/examples/apikey/RotateApiKey.java @@ -0,0 +1,63 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.examples.apikey; + +import com.coinbase.prime.apikey.ApiKeyRotation; +import com.coinbase.prime.apikey.ApiKeyService; +import com.coinbase.prime.apikey.RotateApiKeyRequest; +import com.coinbase.prime.apikey.RotateApiKeyResponse; +import com.coinbase.prime.apikey.RotatedApiKeyCredentials; +import com.coinbase.prime.client.CoinbasePrimeClient; +import com.coinbase.prime.credentials.CoinbasePrimeCredentials; +import com.coinbase.prime.factory.PrimeServiceFactory; +import com.coinbase.prime.utils.Utils; + +/** + * Rotates the invoking API key. This starts a real key-rotation activity and should only be run + * intentionally. + */ +public class RotateApiKey { + public static void main(String[] args) { + try { + CoinbasePrimeCredentials credentials = + new CoinbasePrimeCredentials(System.getenv("COINBASE_PRIME_CREDENTIALS")); + CoinbasePrimeClient client = new CoinbasePrimeClient(credentials); + + ApiKeyService service = PrimeServiceFactory.createApiKeyService(client); + RotateApiKeyRequest.Builder builder = new RotateApiKeyRequest.Builder(); + String durationSeconds = System.getenv("DURATION_SECONDS"); + if (durationSeconds != null && !durationSeconds.isEmpty()) { + builder.durationSeconds(Long.parseLong(durationSeconds)); + } + RotateApiKeyResponse response = service.rotateApiKey(builder.build()); + + System.out.println( + Utils.getObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(response)); + + String signingKey = + Utils.getObjectMapper() + .readTree(System.getenv("COINBASE_PRIME_CREDENTIALS")) + .get("signingKey") + .asText(); + RotatedApiKeyCredentials rotated = ApiKeyRotation.decrypt(signingKey, response); + System.out.println("Decrypted new access_key: " + rotated.getAccessKey()); + System.out.println("Store the new secret_key and passphrase securely; they are not printed."); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/coinbase/examples/financing/GetConversionFees.java b/src/main/java/com/coinbase/examples/financing/GetConversionFees.java new file mode 100644 index 00000000..8209f45c --- /dev/null +++ b/src/main/java/com/coinbase/examples/financing/GetConversionFees.java @@ -0,0 +1,42 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.examples.financing; + +import com.coinbase.prime.client.CoinbasePrimeClient; +import com.coinbase.prime.credentials.CoinbasePrimeCredentials; +import com.coinbase.prime.factory.PrimeServiceFactory; +import com.coinbase.prime.financing.FinancingService; +import com.coinbase.prime.financing.GetConversionFeesResponse; +import com.coinbase.prime.utils.Utils; + +public class GetConversionFees { + public static void main(String[] args) { + try { + CoinbasePrimeCredentials credentials = + new CoinbasePrimeCredentials(System.getenv("COINBASE_PRIME_CREDENTIALS")); + CoinbasePrimeClient client = new CoinbasePrimeClient(credentials); + + FinancingService service = PrimeServiceFactory.createFinancingService(client); + GetConversionFeesResponse response = service.getConversionFees(); + + System.out.println( + Utils.getObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(response)); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/coinbase/examples/financing/GetCrossMarginLiquidation.java b/src/main/java/com/coinbase/examples/financing/GetCrossMarginLiquidation.java new file mode 100644 index 00000000..c3129aa0 --- /dev/null +++ b/src/main/java/com/coinbase/examples/financing/GetCrossMarginLiquidation.java @@ -0,0 +1,46 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.examples.financing; + +import com.coinbase.prime.client.CoinbasePrimeClient; +import com.coinbase.prime.credentials.CoinbasePrimeCredentials; +import com.coinbase.prime.factory.PrimeServiceFactory; +import com.coinbase.prime.financing.FinancingService; +import com.coinbase.prime.financing.GetCrossMarginLiquidationRequest; +import com.coinbase.prime.financing.GetCrossMarginLiquidationResponse; +import com.coinbase.prime.utils.Utils; + +public class GetCrossMarginLiquidation { + public static void main(String[] args) { + try { + CoinbasePrimeCredentials credentials = + new CoinbasePrimeCredentials(System.getenv("COINBASE_PRIME_CREDENTIALS")); + CoinbasePrimeClient client = new CoinbasePrimeClient(credentials); + String entityId = System.getenv("COINBASE_PRIME_ENTITY_ID"); + + FinancingService service = PrimeServiceFactory.createFinancingService(client); + GetCrossMarginLiquidationResponse response = + service.getCrossMarginLiquidation( + new GetCrossMarginLiquidationRequest.Builder().entityId(entityId).build()); + + System.out.println( + Utils.getObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(response)); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/coinbase/examples/financing/GetEntityRewardsRate.java b/src/main/java/com/coinbase/examples/financing/GetEntityRewardsRate.java new file mode 100644 index 00000000..c760d1dd --- /dev/null +++ b/src/main/java/com/coinbase/examples/financing/GetEntityRewardsRate.java @@ -0,0 +1,46 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.examples.financing; + +import com.coinbase.prime.client.CoinbasePrimeClient; +import com.coinbase.prime.credentials.CoinbasePrimeCredentials; +import com.coinbase.prime.factory.PrimeServiceFactory; +import com.coinbase.prime.financing.FinancingService; +import com.coinbase.prime.financing.GetEntityRewardsRateRequest; +import com.coinbase.prime.financing.GetEntityRewardsRateResponse; +import com.coinbase.prime.utils.Utils; + +public class GetEntityRewardsRate { + public static void main(String[] args) { + try { + CoinbasePrimeCredentials credentials = + new CoinbasePrimeCredentials(System.getenv("COINBASE_PRIME_CREDENTIALS")); + CoinbasePrimeClient client = new CoinbasePrimeClient(credentials); + String entityId = System.getenv("COINBASE_PRIME_ENTITY_ID"); + + FinancingService service = PrimeServiceFactory.createFinancingService(client); + GetEntityRewardsRateResponse response = + service.getEntityRewardsRate( + new GetEntityRewardsRateRequest.Builder().entityId(entityId).build()); + + System.out.println( + Utils.getObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(response)); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/coinbase/examples/financing/GetPortfolioRewardsRate.java b/src/main/java/com/coinbase/examples/financing/GetPortfolioRewardsRate.java new file mode 100644 index 00000000..0f3ce103 --- /dev/null +++ b/src/main/java/com/coinbase/examples/financing/GetPortfolioRewardsRate.java @@ -0,0 +1,46 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.examples.financing; + +import com.coinbase.prime.client.CoinbasePrimeClient; +import com.coinbase.prime.credentials.CoinbasePrimeCredentials; +import com.coinbase.prime.factory.PrimeServiceFactory; +import com.coinbase.prime.financing.FinancingService; +import com.coinbase.prime.financing.GetPortfolioRewardsRateRequest; +import com.coinbase.prime.financing.GetPortfolioRewardsRateResponse; +import com.coinbase.prime.utils.Utils; + +public class GetPortfolioRewardsRate { + public static void main(String[] args) { + try { + CoinbasePrimeCredentials credentials = + new CoinbasePrimeCredentials(System.getenv("COINBASE_PRIME_CREDENTIALS")); + CoinbasePrimeClient client = new CoinbasePrimeClient(credentials); + String portfolioId = System.getenv("COINBASE_PRIME_PORTFOLIO_ID"); + + FinancingService service = PrimeServiceFactory.createFinancingService(client); + GetPortfolioRewardsRateResponse response = + service.getPortfolioRewardsRate( + new GetPortfolioRewardsRateRequest.Builder().portfolioId(portfolioId).build()); + + System.out.println( + Utils.getObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(response)); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/coinbase/examples/financing/ListCrossMarginLiquidations.java b/src/main/java/com/coinbase/examples/financing/ListCrossMarginLiquidations.java new file mode 100644 index 00000000..62e46c89 --- /dev/null +++ b/src/main/java/com/coinbase/examples/financing/ListCrossMarginLiquidations.java @@ -0,0 +1,46 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.examples.financing; + +import com.coinbase.prime.client.CoinbasePrimeClient; +import com.coinbase.prime.credentials.CoinbasePrimeCredentials; +import com.coinbase.prime.factory.PrimeServiceFactory; +import com.coinbase.prime.financing.FinancingService; +import com.coinbase.prime.financing.ListCrossMarginLiquidationsRequest; +import com.coinbase.prime.financing.ListCrossMarginLiquidationsResponse; +import com.coinbase.prime.utils.Utils; + +public class ListCrossMarginLiquidations { + public static void main(String[] args) { + try { + CoinbasePrimeCredentials credentials = + new CoinbasePrimeCredentials(System.getenv("COINBASE_PRIME_CREDENTIALS")); + CoinbasePrimeClient client = new CoinbasePrimeClient(credentials); + String entityId = System.getenv("COINBASE_PRIME_ENTITY_ID"); + + FinancingService service = PrimeServiceFactory.createFinancingService(client); + ListCrossMarginLiquidationsResponse response = + service.listCrossMarginLiquidations( + new ListCrossMarginLiquidationsRequest.Builder().entityId(entityId).build()); + + System.out.println( + Utils.getObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(response)); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/coinbase/examples/futures/GetDerivativePositions.java b/src/main/java/com/coinbase/examples/futures/GetDerivativePositions.java new file mode 100644 index 00000000..ef6e1734 --- /dev/null +++ b/src/main/java/com/coinbase/examples/futures/GetDerivativePositions.java @@ -0,0 +1,46 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.examples.futures; + +import com.coinbase.prime.client.CoinbasePrimeClient; +import com.coinbase.prime.credentials.CoinbasePrimeCredentials; +import com.coinbase.prime.factory.PrimeServiceFactory; +import com.coinbase.prime.futures.FuturesService; +import com.coinbase.prime.futures.GetDerivativePositionsRequest; +import com.coinbase.prime.futures.GetDerivativePositionsResponse; +import com.coinbase.prime.utils.Utils; + +public class GetDerivativePositions { + public static void main(String[] args) { + try { + CoinbasePrimeCredentials credentials = + new CoinbasePrimeCredentials(System.getenv("COINBASE_PRIME_CREDENTIALS")); + CoinbasePrimeClient client = new CoinbasePrimeClient(credentials); + String portfolioId = System.getenv("COINBASE_PRIME_PORTFOLIO_ID"); + + FuturesService service = PrimeServiceFactory.createFuturesService(client); + GetDerivativePositionsResponse response = + service.getDerivativePositions( + new GetDerivativePositionsRequest.Builder().portfolioId(portfolioId).build()); + + System.out.println( + Utils.getObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(response)); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/coinbase/examples/futures/GetDerivativesCurrencySummary.java b/src/main/java/com/coinbase/examples/futures/GetDerivativesCurrencySummary.java new file mode 100644 index 00000000..4be6f7ea --- /dev/null +++ b/src/main/java/com/coinbase/examples/futures/GetDerivativesCurrencySummary.java @@ -0,0 +1,46 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.examples.futures; + +import com.coinbase.prime.client.CoinbasePrimeClient; +import com.coinbase.prime.credentials.CoinbasePrimeCredentials; +import com.coinbase.prime.factory.PrimeServiceFactory; +import com.coinbase.prime.futures.FuturesService; +import com.coinbase.prime.futures.GetDerivativesCurrencySummaryRequest; +import com.coinbase.prime.futures.GetDerivativesCurrencySummaryResponse; +import com.coinbase.prime.utils.Utils; + +public class GetDerivativesCurrencySummary { + public static void main(String[] args) { + try { + CoinbasePrimeCredentials credentials = + new CoinbasePrimeCredentials(System.getenv("COINBASE_PRIME_CREDENTIALS")); + CoinbasePrimeClient client = new CoinbasePrimeClient(credentials); + String portfolioId = System.getenv("COINBASE_PRIME_PORTFOLIO_ID"); + + FuturesService service = PrimeServiceFactory.createFuturesService(client); + GetDerivativesCurrencySummaryResponse response = + service.getDerivativesCurrencySummary( + new GetDerivativesCurrencySummaryRequest.Builder().portfolioId(portfolioId).build()); + + System.out.println( + Utils.getObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(response)); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/coinbase/prime/apikey/ApiKeyRotation.java b/src/main/java/com/coinbase/prime/apikey/ApiKeyRotation.java new file mode 100644 index 00000000..7e5c712b --- /dev/null +++ b/src/main/java/com/coinbase/prime/apikey/ApiKeyRotation.java @@ -0,0 +1,164 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.apikey; + +import static com.coinbase.core.utils.Utils.isNullOrEmpty; + +import com.coinbase.core.errors.CoinbaseClientException; +import com.coinbase.prime.utils.Utils; +import java.nio.charset.StandardCharsets; +import java.security.GeneralSecurityException; +import java.util.Arrays; +import java.util.Base64; +import javax.crypto.Cipher; +import javax.crypto.Mac; +import javax.crypto.spec.GCMParameterSpec; +import javax.crypto.spec.SecretKeySpec; + +/** + * Decrypts {@code encrypted_credentials} from {@link RotateApiKeyResponse} using only the JDK: + * HKDF-SHA256 (RFC 5869) and AES-256-GCM. + * + *

Wire format after Base64 decode: {@code version(1) | salt(32) | nonce(12) | ciphertext+tag}. + * Version must be {@code 0x01}. HKDF info is {@code api-key-rotation}. See API Key Rotation. + */ +public final class ApiKeyRotation { + static final byte[] HKDF_INFO = "api-key-rotation".getBytes(StandardCharsets.UTF_8); + static final int VERSION = 1; + static final int VERSION_LEN = 1; + static final int SALT_LEN = 32; + static final int NONCE_LEN = 12; + static final int GCM_TAG_LEN = 16; + static final int AES_KEY_LEN = 32; + static final int MIN_WIRE_LEN = VERSION_LEN + SALT_LEN + NONCE_LEN + GCM_TAG_LEN; + private static final int HASH_LEN = 32; + + private ApiKeyRotation() {} + + /** + * Decrypts rotated credentials from a rotate-API-key response. + * + * @param secretKey current API signing key ({@code secret_key} / {@code signingKey}) + * @param response rotate API key response containing {@code encrypted_credentials} + */ + public static RotatedApiKeyCredentials decrypt(String secretKey, RotateApiKeyResponse response) + throws CoinbaseClientException { + if (response == null) { + throw new CoinbaseClientException("Rotate API key response is required"); + } + return decrypt(secretKey, response.getEncryptedCredentials()); + } + + /** + * Decrypts a Base64 {@code encrypted_credentials} payload. + * + * @param secretKey current API signing key ({@code secret_key} / {@code signingKey}) + * @param encryptedCredentials Base64-encoded wire payload + */ + public static RotatedApiKeyCredentials decrypt(String secretKey, String encryptedCredentials) + throws CoinbaseClientException { + if (isNullOrEmpty(secretKey)) { + throw new CoinbaseClientException("Secret key is required to decrypt rotated credentials"); + } + if (isNullOrEmpty(encryptedCredentials)) { + throw new CoinbaseClientException("encrypted_credentials is required"); + } + + byte[] raw = decodeBase64PadTolerant(encryptedCredentials); + if (raw.length < MIN_WIRE_LEN) { + throw new CoinbaseClientException("encrypted_credentials payload is too short"); + } + if ((raw[0] & 0xFF) != VERSION) { + throw new CoinbaseClientException( + "unsupported encrypted_credentials wire version: " + (raw[0] & 0xFF)); + } + + byte[] salt = Arrays.copyOfRange(raw, VERSION_LEN, VERSION_LEN + SALT_LEN); + byte[] nonce = + Arrays.copyOfRange(raw, VERSION_LEN + SALT_LEN, VERSION_LEN + SALT_LEN + NONCE_LEN); + byte[] ciphertext = Arrays.copyOfRange(raw, VERSION_LEN + SALT_LEN + NONCE_LEN, raw.length); + + byte[] ikm = secretKey.getBytes(StandardCharsets.UTF_8); + byte[] aesKey = null; + try { + aesKey = hkdfSha256(ikm, salt, HKDF_INFO, AES_KEY_LEN); + Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); + cipher.init( + Cipher.DECRYPT_MODE, + new SecretKeySpec(aesKey, "AES"), + new GCMParameterSpec(GCM_TAG_LEN * 8, nonce)); + byte[] plaintext = cipher.doFinal(ciphertext); + return Utils.getObjectMapper().readValue(plaintext, RotatedApiKeyCredentials.class); + } catch (CoinbaseClientException e) { + throw e; + } catch (Exception e) { + throw new CoinbaseClientException("Failed to decrypt rotated API key credentials", e); + } finally { + Arrays.fill(ikm, (byte) 0); + if (aesKey != null) { + Arrays.fill(aesKey, (byte) 0); + } + } + } + + /** HKDF-SHA256 (RFC 5869) extract-then-expand. Package-visible for RFC test vectors. */ + static byte[] hkdfSha256(byte[] ikm, byte[] salt, byte[] info, int length) + throws GeneralSecurityException { + if (length <= 0 || length > 255 * HASH_LEN) { + throw new IllegalArgumentException("invalid HKDF output length"); + } + byte[] prk = hmacSha256(salt != null ? salt : new byte[HASH_LEN], ikm); + try { + return hkdfExpand(prk, info, length); + } finally { + Arrays.fill(prk, (byte) 0); + } + } + + private static byte[] hkdfExpand(byte[] prk, byte[] info, int length) + throws GeneralSecurityException { + byte[] infoBytes = info != null ? info : new byte[0]; + int n = (length + HASH_LEN - 1) / HASH_LEN; + byte[] okm = new byte[length]; + byte[] t = new byte[0]; + int offset = 0; + for (int i = 1; i <= n; i++) { + byte[] input = new byte[t.length + infoBytes.length + 1]; + System.arraycopy(t, 0, input, 0, t.length); + System.arraycopy(infoBytes, 0, input, t.length, infoBytes.length); + input[input.length - 1] = (byte) i; + t = hmacSha256(prk, input); + int toCopy = Math.min(HASH_LEN, length - offset); + System.arraycopy(t, 0, okm, offset, toCopy); + offset += toCopy; + } + return okm; + } + + private static byte[] hmacSha256(byte[] key, byte[] data) throws GeneralSecurityException { + Mac mac = Mac.getInstance("HmacSHA256"); + mac.init(new SecretKeySpec(key, "HmacSHA256")); + return mac.doFinal(data); + } + + static byte[] decodeBase64PadTolerant(String encoded) { + int mod = encoded.length() % 4; + String padded = mod == 0 ? encoded : encoded + "====".substring(mod); + return Base64.getDecoder().decode(padded); + } +} diff --git a/src/main/java/com/coinbase/prime/apikey/ApiKeyService.java b/src/main/java/com/coinbase/prime/apikey/ApiKeyService.java new file mode 100644 index 00000000..689e027c --- /dev/null +++ b/src/main/java/com/coinbase/prime/apikey/ApiKeyService.java @@ -0,0 +1,35 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.apikey; + +import com.coinbase.core.errors.CoinbaseClientException; +import com.coinbase.prime.errors.CoinbasePrimeException; + +public interface ApiKeyService { + /** + * Rotate API Key. + * + *

Generates a new API key with the same configuration as the invoking key. + * + * @param request the request parameters for this operation + * @return the response payload for this operation + * @throws CoinbaseClientException if the request fails client-side validation + * @throws CoinbasePrimeException if the Prime API returns an error response + */ + RotateApiKeyResponse rotateApiKey(RotateApiKeyRequest request) + throws CoinbaseClientException, CoinbasePrimeException; +} diff --git a/src/main/java/com/coinbase/prime/apikey/ApiKeyServiceImpl.java b/src/main/java/com/coinbase/prime/apikey/ApiKeyServiceImpl.java new file mode 100644 index 00000000..d384bc41 --- /dev/null +++ b/src/main/java/com/coinbase/prime/apikey/ApiKeyServiceImpl.java @@ -0,0 +1,41 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.apikey; + +import com.coinbase.core.common.HttpMethod; +import com.coinbase.core.service.CoinbaseServiceImpl; +import com.coinbase.prime.client.CoinbasePrimeClient; +import com.coinbase.prime.errors.CoinbasePrimeException; +import com.fasterxml.jackson.core.type.TypeReference; +import java.util.List; + +public class ApiKeyServiceImpl extends CoinbaseServiceImpl implements ApiKeyService { + public ApiKeyServiceImpl(CoinbasePrimeClient client) { + super(client); + } + + @Override + public RotateApiKeyResponse rotateApiKey(RotateApiKeyRequest request) + throws CoinbasePrimeException { + return this.request( + HttpMethod.POST, + "/api-keys/rotate", + request, + List.of(200), + new TypeReference() {}); + } +} diff --git a/src/main/java/com/coinbase/prime/apikey/RotateApiKeyRequest.java b/src/main/java/com/coinbase/prime/apikey/RotateApiKeyRequest.java new file mode 100644 index 00000000..a2ac752b --- /dev/null +++ b/src/main/java/com/coinbase/prime/apikey/RotateApiKeyRequest.java @@ -0,0 +1,59 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.apikey; + +import com.coinbase.core.errors.CoinbaseClientException; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** Rotate API Key */ +public class RotateApiKeyRequest { + /** + * How long the old key remains active after the new key is approved, in seconds. Set to 0 for + * immediate expiry on approval. Cannot extend beyond the original key's expiry. + */ + @JsonProperty("duration_seconds") + private Long durationSeconds; + + public RotateApiKeyRequest() {} + + public RotateApiKeyRequest(Builder builder) { + this.durationSeconds = builder.durationSeconds; + } + + public Long getDurationSeconds() { + return durationSeconds; + } + + public void setDurationSeconds(Long durationSeconds) { + this.durationSeconds = durationSeconds; + } + + public static class Builder { + private Long durationSeconds; + + public Builder() {} + + public Builder durationSeconds(Long durationSeconds) { + this.durationSeconds = durationSeconds; + return this; + } + + public RotateApiKeyRequest build() throws CoinbaseClientException { + return new RotateApiKeyRequest(this); + } + } +} diff --git a/src/main/java/com/coinbase/prime/apikey/RotateApiKeyResponse.java b/src/main/java/com/coinbase/prime/apikey/RotateApiKeyResponse.java new file mode 100644 index 00000000..89ecb613 --- /dev/null +++ b/src/main/java/com/coinbase/prime/apikey/RotateApiKeyResponse.java @@ -0,0 +1,54 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.apikey; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** Rotate API Key */ +public class RotateApiKeyResponse { + /** + * Base64-encoded encrypted payload containing the new API key credentials. Decrypt using your + * current secret_key with HKDF-SHA256 + AES-256-GCM. + */ + @JsonProperty("encrypted_credentials") + private String encryptedCredentials; + + /** + * The Prime activity ID tracking the consensus approval for this rotation. Use with the + * Activities endpoints to monitor approval status. + */ + @JsonProperty("activity_id") + private String activityId; + + public RotateApiKeyResponse() {} + + public String getEncryptedCredentials() { + return encryptedCredentials; + } + + public void setEncryptedCredentials(String encryptedCredentials) { + this.encryptedCredentials = encryptedCredentials; + } + + public String getActivityId() { + return activityId; + } + + public void setActivityId(String activityId) { + this.activityId = activityId; + } +} diff --git a/src/main/java/com/coinbase/prime/apikey/RotatedApiKeyCredentials.java b/src/main/java/com/coinbase/prime/apikey/RotatedApiKeyCredentials.java new file mode 100644 index 00000000..7fd7837c --- /dev/null +++ b/src/main/java/com/coinbase/prime/apikey/RotatedApiKeyCredentials.java @@ -0,0 +1,85 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.apikey; + +import com.coinbase.core.errors.CoinbaseClientException; +import com.coinbase.core.utils.Utils; +import com.coinbase.prime.credentials.CoinbasePrimeCredentials; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** Plaintext credentials returned after decrypting a rotate-API-key payload. */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class RotatedApiKeyCredentials { + @JsonProperty("access_key") + private String accessKey; + + @JsonProperty("secret_key") + private String secretKey; + + @JsonProperty("passphrase") + private String passphrase; + + @JsonProperty("service_account_id") + private String serviceAccountId; + + public RotatedApiKeyCredentials() {} + + public String getAccessKey() { + return accessKey; + } + + public void setAccessKey(String accessKey) { + this.accessKey = accessKey; + } + + public String getSecretKey() { + return secretKey; + } + + public void setSecretKey(String secretKey) { + this.secretKey = secretKey; + } + + public String getPassphrase() { + return passphrase; + } + + public void setPassphrase(String passphrase) { + this.passphrase = passphrase; + } + + public String getServiceAccountId() { + return serviceAccountId; + } + + public void setServiceAccountId(String serviceAccountId) { + this.serviceAccountId = serviceAccountId; + } + + /** + * Builds SDK credentials from the rotated key. {@code secret_key} maps to {@code signingKey}. + * + * @throws CoinbaseClientException if required fields are missing + */ + public CoinbasePrimeCredentials toPrimeCredentials() throws CoinbaseClientException { + if (Utils.isNullOrEmpty(serviceAccountId)) { + return new CoinbasePrimeCredentials(accessKey, passphrase, secretKey); + } + return new CoinbasePrimeCredentials(accessKey, passphrase, secretKey, serviceAccountId); + } +} diff --git a/src/main/java/com/coinbase/prime/factory/PrimeServiceFactory.java b/src/main/java/com/coinbase/prime/factory/PrimeServiceFactory.java index d3eb787b..bd36b279 100644 --- a/src/main/java/com/coinbase/prime/factory/PrimeServiceFactory.java +++ b/src/main/java/com/coinbase/prime/factory/PrimeServiceFactory.java @@ -24,6 +24,8 @@ import com.coinbase.prime.advancedtransfer.AdvancedTransferServiceImpl; import com.coinbase.prime.allocations.AllocationsService; import com.coinbase.prime.allocations.AllocationsServiceImpl; +import com.coinbase.prime.apikey.ApiKeyService; +import com.coinbase.prime.apikey.ApiKeyServiceImpl; import com.coinbase.prime.assets.AssetsService; import com.coinbase.prime.assets.AssetsServiceImpl; import com.coinbase.prime.balances.BalancesService; @@ -75,6 +77,10 @@ public static AllocationsService createAllocationsService(CoinbasePrimeClient cl return new AllocationsServiceImpl(client); } + public static ApiKeyService createApiKeyService(CoinbasePrimeClient client) { + return new ApiKeyServiceImpl(client); + } + public static AssetsService createAssetsService(CoinbasePrimeClient client) { return new AssetsServiceImpl(client); } diff --git a/src/main/java/com/coinbase/prime/financing/FinancingService.java b/src/main/java/com/coinbase/prime/financing/FinancingService.java index d0f9fd21..4a3a212d 100644 --- a/src/main/java/com/coinbase/prime/financing/FinancingService.java +++ b/src/main/java/com/coinbase/prime/financing/FinancingService.java @@ -278,4 +278,73 @@ GetCrossMarginPrimeOverviewResponse getCrossMarginPrimeOverview( */ GetMarketDataResponse getMarketData(GetMarketDataRequest request) throws CoinbaseClientException, CoinbasePrimeException; + + /** + * Get Conversion Fees. + * + *

Get your organization's stablecoin conversion fee tiers and month-to-date net conversion + * volume per currency. The organization is resolved from the authenticated API key, which must be + * organization-scoped. + * + * @return the response payload for this operation + * @throws CoinbaseClientException if the request fails client-side validation + * @throws CoinbasePrimeException if the Prime API returns an error response + */ + GetConversionFeesResponse getConversionFees() + throws CoinbaseClientException, CoinbasePrimeException; + + /** + * Get Cross Margin Liquidation. + * + *

Gets detailed liquidation data for an XM customer. Returns the active or most recent + * liquidation by default. + * + * @param request the request parameters for this operation + * @return the response payload for this operation + * @throws CoinbaseClientException if the request fails client-side validation + * @throws CoinbasePrimeException if the Prime API returns an error response + */ + GetCrossMarginLiquidationResponse getCrossMarginLiquidation( + GetCrossMarginLiquidationRequest request) + throws CoinbaseClientException, CoinbasePrimeException; + + /** + * List Cross Margin Liquidations. + * + *

Lists historical liquidation records for an XM customer + * + * @param request the request parameters for this operation + * @return the response payload for this operation + * @throws CoinbaseClientException if the request fails client-side validation + * @throws CoinbasePrimeException if the Prime API returns an error response + */ + ListCrossMarginLiquidationsResponse listCrossMarginLiquidations( + ListCrossMarginLiquidationsRequest request) + throws CoinbaseClientException, CoinbasePrimeException; + + /** + * Get Entity Rewards Rate (Beta). + * + *

Returns the current rewards rate and available rate tiers for the entity. + * + * @param request the request parameters for this operation + * @return the response payload for this operation + * @throws CoinbaseClientException if the request fails client-side validation + * @throws CoinbasePrimeException if the Prime API returns an error response + */ + GetEntityRewardsRateResponse getEntityRewardsRate(GetEntityRewardsRateRequest request) + throws CoinbaseClientException, CoinbasePrimeException; + + /** + * Get Portfolio Rewards Rate (Beta). + * + *

Returns the current rewards rate and available rate tiers for the portfolio. + * + * @param request the request parameters for this operation + * @return the response payload for this operation + * @throws CoinbaseClientException if the request fails client-side validation + * @throws CoinbasePrimeException if the Prime API returns an error response + */ + GetPortfolioRewardsRateResponse getPortfolioRewardsRate(GetPortfolioRewardsRateRequest request) + throws CoinbaseClientException, CoinbasePrimeException; } diff --git a/src/main/java/com/coinbase/prime/financing/FinancingServiceImpl.java b/src/main/java/com/coinbase/prime/financing/FinancingServiceImpl.java index 6249accb..cf6900b8 100644 --- a/src/main/java/com/coinbase/prime/financing/FinancingServiceImpl.java +++ b/src/main/java/com/coinbase/prime/financing/FinancingServiceImpl.java @@ -247,4 +247,58 @@ public GetMarketDataResponse getMarketData(GetMarketDataRequest request) List.of(200), new TypeReference() {}); } + + @Override + public GetConversionFeesResponse getConversionFees() throws CoinbasePrimeException { + return this.request( + HttpMethod.GET, + "/conversion/fees", + null, + List.of(200), + new TypeReference() {}); + } + + @Override + public GetCrossMarginLiquidationResponse getCrossMarginLiquidation( + GetCrossMarginLiquidationRequest request) throws CoinbasePrimeException { + return this.request( + HttpMethod.GET, + String.format("/entities/%s/cross_margin/liquidation", request.getEntityId()), + request, + List.of(200), + new TypeReference() {}); + } + + @Override + public ListCrossMarginLiquidationsResponse listCrossMarginLiquidations( + ListCrossMarginLiquidationsRequest request) throws CoinbasePrimeException { + return this.request( + HttpMethod.GET, + String.format("/entities/%s/cross_margin/liquidations", request.getEntityId()), + request, + List.of(200), + new TypeReference() {}); + } + + @Override + public GetEntityRewardsRateResponse getEntityRewardsRate(GetEntityRewardsRateRequest request) + throws CoinbasePrimeException { + return this.request( + HttpMethod.GET, + String.format("/entities/%s/rewards/rate", request.getEntityId()), + request, + List.of(200), + new TypeReference() {}); + } + + @Override + public GetPortfolioRewardsRateResponse getPortfolioRewardsRate( + GetPortfolioRewardsRateRequest request) throws CoinbasePrimeException { + return this.request( + HttpMethod.GET, + String.format("/portfolios/%s/rewards/rate", request.getPortfolioId()), + request, + List.of(200), + new TypeReference() {}); + } } diff --git a/src/main/java/com/coinbase/prime/financing/GetConversionFeesResponse.java b/src/main/java/com/coinbase/prime/financing/GetConversionFeesResponse.java new file mode 100644 index 00000000..9aba9b03 --- /dev/null +++ b/src/main/java/com/coinbase/prime/financing/GetConversionFeesResponse.java @@ -0,0 +1,36 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.financing; + +import com.coinbase.prime.model.ConversionFee; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** Get Conversion Fees */ +public class GetConversionFeesResponse { + @JsonProperty("fees") + private ConversionFee[] fees; + + public GetConversionFeesResponse() {} + + public ConversionFee[] getFees() { + return fees; + } + + public void setFees(ConversionFee[] fees) { + this.fees = fees; + } +} diff --git a/src/main/java/com/coinbase/prime/financing/GetCrossMarginLiquidationRequest.java b/src/main/java/com/coinbase/prime/financing/GetCrossMarginLiquidationRequest.java new file mode 100644 index 00000000..38a50f78 --- /dev/null +++ b/src/main/java/com/coinbase/prime/financing/GetCrossMarginLiquidationRequest.java @@ -0,0 +1,86 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.financing; + +import static com.coinbase.core.utils.Utils.isNullOrEmpty; + +import com.coinbase.core.errors.CoinbaseClientException; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** Get Cross Margin Liquidation */ +public class GetCrossMarginLiquidationRequest { + /** XM customer Prime Entity ID */ + @JsonProperty(required = true, value = "entity_id") + @JsonIgnore + private String entityId; + + /** Financing liquidation UUID. If omitted, returns the active or most recent liquidation. */ + @JsonProperty("liquidation_id") + private String liquidationId; + + public GetCrossMarginLiquidationRequest() {} + + public GetCrossMarginLiquidationRequest(Builder builder) { + this.entityId = builder.entityId; + this.liquidationId = builder.liquidationId; + } + + public String getEntityId() { + return entityId; + } + + public void setEntityId(String entityId) { + this.entityId = entityId; + } + + public String getLiquidationId() { + return liquidationId; + } + + public void setLiquidationId(String liquidationId) { + this.liquidationId = liquidationId; + } + + public static class Builder { + private String entityId; + private String liquidationId; + + public Builder() {} + + public Builder entityId(String entityId) { + this.entityId = entityId; + return this; + } + + public Builder liquidationId(String liquidationId) { + this.liquidationId = liquidationId; + return this; + } + + public GetCrossMarginLiquidationRequest build() throws CoinbaseClientException { + validate(); + return new GetCrossMarginLiquidationRequest(this); + } + + private void validate() throws CoinbaseClientException { + if (isNullOrEmpty(this.entityId)) { + throw new CoinbaseClientException("EntityId is required"); + } + } + } +} diff --git a/src/main/java/com/coinbase/prime/financing/GetCrossMarginLiquidationResponse.java b/src/main/java/com/coinbase/prime/financing/GetCrossMarginLiquidationResponse.java new file mode 100644 index 00000000..61fc85c3 --- /dev/null +++ b/src/main/java/com/coinbase/prime/financing/GetCrossMarginLiquidationResponse.java @@ -0,0 +1,36 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.financing; + +import com.coinbase.prime.model.XMLiquidationDetail; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** Get Cross Margin Liquidation */ +public class GetCrossMarginLiquidationResponse { + @JsonProperty("liquidation") + private XMLiquidationDetail liquidation; + + public GetCrossMarginLiquidationResponse() {} + + public XMLiquidationDetail getLiquidation() { + return liquidation; + } + + public void setLiquidation(XMLiquidationDetail liquidation) { + this.liquidation = liquidation; + } +} diff --git a/src/main/java/com/coinbase/prime/financing/GetEntityRewardsRateRequest.java b/src/main/java/com/coinbase/prime/financing/GetEntityRewardsRateRequest.java new file mode 100644 index 00000000..f1884d8b --- /dev/null +++ b/src/main/java/com/coinbase/prime/financing/GetEntityRewardsRateRequest.java @@ -0,0 +1,66 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.financing; + +import static com.coinbase.core.utils.Utils.isNullOrEmpty; + +import com.coinbase.core.errors.CoinbaseClientException; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** Get Entity Rewards Rate (Beta) */ +public class GetEntityRewardsRateRequest { + @JsonProperty(required = true, value = "entity_id") + @JsonIgnore + private String entityId; + + public GetEntityRewardsRateRequest() {} + + public GetEntityRewardsRateRequest(Builder builder) { + this.entityId = builder.entityId; + } + + public String getEntityId() { + return entityId; + } + + public void setEntityId(String entityId) { + this.entityId = entityId; + } + + public static class Builder { + private String entityId; + + public Builder() {} + + public Builder entityId(String entityId) { + this.entityId = entityId; + return this; + } + + public GetEntityRewardsRateRequest build() throws CoinbaseClientException { + validate(); + return new GetEntityRewardsRateRequest(this); + } + + private void validate() throws CoinbaseClientException { + if (isNullOrEmpty(this.entityId)) { + throw new CoinbaseClientException("EntityId is required"); + } + } + } +} diff --git a/src/main/java/com/coinbase/prime/financing/GetEntityRewardsRateResponse.java b/src/main/java/com/coinbase/prime/financing/GetEntityRewardsRateResponse.java new file mode 100644 index 00000000..36b1080b --- /dev/null +++ b/src/main/java/com/coinbase/prime/financing/GetEntityRewardsRateResponse.java @@ -0,0 +1,47 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.financing; + +import com.coinbase.prime.model.BetaRewardsRateTier; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** Get Entity Rewards Rate (Beta) */ +public class GetEntityRewardsRateResponse { + @JsonProperty("current_rate") + private String currentRate; + + @JsonProperty("available_rates") + private BetaRewardsRateTier[] availableRates; + + public GetEntityRewardsRateResponse() {} + + public String getCurrentRate() { + return currentRate; + } + + public void setCurrentRate(String currentRate) { + this.currentRate = currentRate; + } + + public BetaRewardsRateTier[] getAvailableRates() { + return availableRates; + } + + public void setAvailableRates(BetaRewardsRateTier[] availableRates) { + this.availableRates = availableRates; + } +} diff --git a/src/main/java/com/coinbase/prime/financing/GetPortfolioRewardsRateRequest.java b/src/main/java/com/coinbase/prime/financing/GetPortfolioRewardsRateRequest.java new file mode 100644 index 00000000..2298bc6f --- /dev/null +++ b/src/main/java/com/coinbase/prime/financing/GetPortfolioRewardsRateRequest.java @@ -0,0 +1,66 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.financing; + +import static com.coinbase.core.utils.Utils.isNullOrEmpty; + +import com.coinbase.core.errors.CoinbaseClientException; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** Get Portfolio Rewards Rate (Beta) */ +public class GetPortfolioRewardsRateRequest { + @JsonProperty(required = true, value = "portfolio_id") + @JsonIgnore + private String portfolioId; + + public GetPortfolioRewardsRateRequest() {} + + public GetPortfolioRewardsRateRequest(Builder builder) { + this.portfolioId = builder.portfolioId; + } + + public String getPortfolioId() { + return portfolioId; + } + + public void setPortfolioId(String portfolioId) { + this.portfolioId = portfolioId; + } + + public static class Builder { + private String portfolioId; + + public Builder() {} + + public Builder portfolioId(String portfolioId) { + this.portfolioId = portfolioId; + return this; + } + + public GetPortfolioRewardsRateRequest build() throws CoinbaseClientException { + validate(); + return new GetPortfolioRewardsRateRequest(this); + } + + private void validate() throws CoinbaseClientException { + if (isNullOrEmpty(this.portfolioId)) { + throw new CoinbaseClientException("PortfolioId is required"); + } + } + } +} diff --git a/src/main/java/com/coinbase/prime/financing/GetPortfolioRewardsRateResponse.java b/src/main/java/com/coinbase/prime/financing/GetPortfolioRewardsRateResponse.java new file mode 100644 index 00000000..50fe3a38 --- /dev/null +++ b/src/main/java/com/coinbase/prime/financing/GetPortfolioRewardsRateResponse.java @@ -0,0 +1,47 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.financing; + +import com.coinbase.prime.model.BetaRewardsRateTier; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** Get Portfolio Rewards Rate (Beta) */ +public class GetPortfolioRewardsRateResponse { + @JsonProperty("current_rate") + private String currentRate; + + @JsonProperty("available_rates") + private BetaRewardsRateTier[] availableRates; + + public GetPortfolioRewardsRateResponse() {} + + public String getCurrentRate() { + return currentRate; + } + + public void setCurrentRate(String currentRate) { + this.currentRate = currentRate; + } + + public BetaRewardsRateTier[] getAvailableRates() { + return availableRates; + } + + public void setAvailableRates(BetaRewardsRateTier[] availableRates) { + this.availableRates = availableRates; + } +} diff --git a/src/main/java/com/coinbase/prime/financing/ListCrossMarginLiquidationsRequest.java b/src/main/java/com/coinbase/prime/financing/ListCrossMarginLiquidationsRequest.java new file mode 100644 index 00000000..d0ce790f --- /dev/null +++ b/src/main/java/com/coinbase/prime/financing/ListCrossMarginLiquidationsRequest.java @@ -0,0 +1,140 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.financing; + +import static com.coinbase.core.utils.Utils.isNullOrEmpty; + +import com.coinbase.core.errors.CoinbaseClientException; +import com.coinbase.prime.common.Pagination; +import com.coinbase.prime.common.PrimeListRequest; +import com.coinbase.prime.model.enums.SortDirection; +import com.coinbase.prime.model.enums.XMLiquidationStatus; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** List Cross Margin Liquidations */ +public class ListCrossMarginLiquidationsRequest extends PrimeListRequest { + /** XM customer Prime Entity ID */ + @JsonProperty(required = true, value = "entity_id") + @JsonIgnore + private String entityId; + + @JsonProperty("status") + private XMLiquidationStatus status; + + @JsonProperty("start_time") + private String startTime; + + @JsonProperty("end_time") + private String endTime; + + public ListCrossMarginLiquidationsRequest() {} + + public ListCrossMarginLiquidationsRequest(Builder builder) { + super(builder.cursor, builder.sortDirection, builder.limit); + this.entityId = builder.entityId; + this.status = builder.status; + this.startTime = builder.startTime; + this.endTime = builder.endTime; + } + + public String getEntityId() { + return entityId; + } + + public void setEntityId(String entityId) { + this.entityId = entityId; + } + + public XMLiquidationStatus getStatus() { + return status; + } + + public void setStatus(XMLiquidationStatus status) { + this.status = status; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public static class Builder { + private String entityId; + private XMLiquidationStatus status; + private String startTime; + private String endTime; + private String cursor; + private SortDirection sortDirection; + private Integer limit; + + public Builder() {} + + public Builder entityId(String entityId) { + this.entityId = entityId; + return this; + } + + public Builder status(XMLiquidationStatus status) { + this.status = status; + return this; + } + + public Builder startTime(String startTime) { + this.startTime = startTime; + return this; + } + + public Builder endTime(String endTime) { + this.endTime = endTime; + return this; + } + + public Builder limit(Integer limit) { + this.limit = limit; + return this; + } + + public Builder pagination(Pagination pagination) { + this.cursor = pagination.getNextCursor(); + this.sortDirection = pagination.getSortDirection(); + return this; + } + + public ListCrossMarginLiquidationsRequest build() throws CoinbaseClientException { + validate(); + return new ListCrossMarginLiquidationsRequest(this); + } + + private void validate() throws CoinbaseClientException { + if (isNullOrEmpty(this.entityId)) { + throw new CoinbaseClientException("EntityId is required"); + } + } + } +} diff --git a/src/main/java/com/coinbase/prime/financing/ListCrossMarginLiquidationsResponse.java b/src/main/java/com/coinbase/prime/financing/ListCrossMarginLiquidationsResponse.java new file mode 100644 index 00000000..58a98007 --- /dev/null +++ b/src/main/java/com/coinbase/prime/financing/ListCrossMarginLiquidationsResponse.java @@ -0,0 +1,48 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.financing; + +import com.coinbase.prime.common.Pagination; +import com.coinbase.prime.model.XMLiquidationSummary; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** List Cross Margin Liquidations */ +public class ListCrossMarginLiquidationsResponse { + @JsonProperty("liquidations") + private XMLiquidationSummary[] liquidations; + + @JsonProperty("pagination") + private Pagination pagination; + + public ListCrossMarginLiquidationsResponse() {} + + public XMLiquidationSummary[] getLiquidations() { + return liquidations; + } + + public void setLiquidations(XMLiquidationSummary[] liquidations) { + this.liquidations = liquidations; + } + + public Pagination getPagination() { + return pagination; + } + + public void setPagination(Pagination pagination) { + this.pagination = pagination; + } +} diff --git a/src/main/java/com/coinbase/prime/futures/FuturesService.java b/src/main/java/com/coinbase/prime/futures/FuturesService.java index ab922cae..a9fef98c 100644 --- a/src/main/java/com/coinbase/prime/futures/FuturesService.java +++ b/src/main/java/com/coinbase/prime/futures/FuturesService.java @@ -166,4 +166,33 @@ CancelEntityFuturesSweepResponse cancelEntityFuturesSweep(CancelEntityFuturesSwe */ GetFcmEquityResponse getFcmEquity(GetFcmEquityRequest request) throws CoinbaseClientException, CoinbasePrimeException; + + /** + * Get Portfolio Derivatives Currency Summary. + * + *

Retrieve per-currency international derivatives balances for a given portfolio. US Futures + * balances roll up to a single clearing account per entity rather than per portfolio, and are + * available from the entity futures balance summary and risk limits endpoints instead. + * + * @param request the request parameters for this operation + * @return the response payload for this operation + * @throws CoinbaseClientException if the request fails client-side validation + * @throws CoinbasePrimeException if the Prime API returns an error response + */ + GetDerivativesCurrencySummaryResponse getDerivativesCurrencySummary( + GetDerivativesCurrencySummaryRequest request) + throws CoinbaseClientException, CoinbasePrimeException; + + /** + * List Portfolio Derivative Positions. + * + *

Retrieve all active derivative positions for a given portfolio. + * + * @param request the request parameters for this operation + * @return the response payload for this operation + * @throws CoinbaseClientException if the request fails client-side validation + * @throws CoinbasePrimeException if the Prime API returns an error response + */ + GetDerivativePositionsResponse getDerivativePositions(GetDerivativePositionsRequest request) + throws CoinbaseClientException, CoinbasePrimeException; } diff --git a/src/main/java/com/coinbase/prime/futures/FuturesServiceImpl.java b/src/main/java/com/coinbase/prime/futures/FuturesServiceImpl.java index 47f31343..c63580a4 100644 --- a/src/main/java/com/coinbase/prime/futures/FuturesServiceImpl.java +++ b/src/main/java/com/coinbase/prime/futures/FuturesServiceImpl.java @@ -148,4 +148,26 @@ public GetFcmEquityResponse getFcmEquity(GetFcmEquityRequest request) List.of(200), new TypeReference() {}); } + + @Override + public GetDerivativesCurrencySummaryResponse getDerivativesCurrencySummary( + GetDerivativesCurrencySummaryRequest request) throws CoinbasePrimeException { + return this.request( + HttpMethod.GET, + String.format("/portfolios/%s/derivatives/currency_summary", request.getPortfolioId()), + request, + List.of(200), + new TypeReference() {}); + } + + @Override + public GetDerivativePositionsResponse getDerivativePositions( + GetDerivativePositionsRequest request) throws CoinbasePrimeException { + return this.request( + HttpMethod.GET, + String.format("/portfolios/%s/derivatives/positions", request.getPortfolioId()), + request, + List.of(200), + new TypeReference() {}); + } } diff --git a/src/main/java/com/coinbase/prime/futures/GetDerivativePositionsRequest.java b/src/main/java/com/coinbase/prime/futures/GetDerivativePositionsRequest.java new file mode 100644 index 00000000..064fe3ac --- /dev/null +++ b/src/main/java/com/coinbase/prime/futures/GetDerivativePositionsRequest.java @@ -0,0 +1,84 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.futures; + +import static com.coinbase.core.utils.Utils.isNullOrEmpty; + +import com.coinbase.core.errors.CoinbaseClientException; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** List Portfolio Derivative Positions */ +public class GetDerivativePositionsRequest { + @JsonProperty(required = true, value = "portfolio_id") + @JsonIgnore + private String portfolioId; + + @JsonProperty("product_id") + private String productId; + + public GetDerivativePositionsRequest() {} + + public GetDerivativePositionsRequest(Builder builder) { + this.portfolioId = builder.portfolioId; + this.productId = builder.productId; + } + + public String getPortfolioId() { + return portfolioId; + } + + public void setPortfolioId(String portfolioId) { + this.portfolioId = portfolioId; + } + + public String getProductId() { + return productId; + } + + public void setProductId(String productId) { + this.productId = productId; + } + + public static class Builder { + private String portfolioId; + private String productId; + + public Builder() {} + + public Builder portfolioId(String portfolioId) { + this.portfolioId = portfolioId; + return this; + } + + public Builder productId(String productId) { + this.productId = productId; + return this; + } + + public GetDerivativePositionsRequest build() throws CoinbaseClientException { + validate(); + return new GetDerivativePositionsRequest(this); + } + + private void validate() throws CoinbaseClientException { + if (isNullOrEmpty(this.portfolioId)) { + throw new CoinbaseClientException("PortfolioId is required"); + } + } + } +} diff --git a/src/main/java/com/coinbase/prime/futures/GetDerivativePositionsResponse.java b/src/main/java/com/coinbase/prime/futures/GetDerivativePositionsResponse.java new file mode 100644 index 00000000..e37bb0eb --- /dev/null +++ b/src/main/java/com/coinbase/prime/futures/GetDerivativePositionsResponse.java @@ -0,0 +1,36 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.futures; + +import com.coinbase.prime.model.DerivativePosition; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** List Portfolio Derivative Positions */ +public class GetDerivativePositionsResponse { + @JsonProperty("positions") + private DerivativePosition[] positions; + + public GetDerivativePositionsResponse() {} + + public DerivativePosition[] getPositions() { + return positions; + } + + public void setPositions(DerivativePosition[] positions) { + this.positions = positions; + } +} diff --git a/src/main/java/com/coinbase/prime/futures/GetDerivativesCurrencySummaryRequest.java b/src/main/java/com/coinbase/prime/futures/GetDerivativesCurrencySummaryRequest.java new file mode 100644 index 00000000..e387d882 --- /dev/null +++ b/src/main/java/com/coinbase/prime/futures/GetDerivativesCurrencySummaryRequest.java @@ -0,0 +1,66 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.futures; + +import static com.coinbase.core.utils.Utils.isNullOrEmpty; + +import com.coinbase.core.errors.CoinbaseClientException; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** Get Portfolio Derivatives Currency Summary */ +public class GetDerivativesCurrencySummaryRequest { + @JsonProperty(required = true, value = "portfolio_id") + @JsonIgnore + private String portfolioId; + + public GetDerivativesCurrencySummaryRequest() {} + + public GetDerivativesCurrencySummaryRequest(Builder builder) { + this.portfolioId = builder.portfolioId; + } + + public String getPortfolioId() { + return portfolioId; + } + + public void setPortfolioId(String portfolioId) { + this.portfolioId = portfolioId; + } + + public static class Builder { + private String portfolioId; + + public Builder() {} + + public Builder portfolioId(String portfolioId) { + this.portfolioId = portfolioId; + return this; + } + + public GetDerivativesCurrencySummaryRequest build() throws CoinbaseClientException { + validate(); + return new GetDerivativesCurrencySummaryRequest(this); + } + + private void validate() throws CoinbaseClientException { + if (isNullOrEmpty(this.portfolioId)) { + throw new CoinbaseClientException("PortfolioId is required"); + } + } + } +} diff --git a/src/main/java/com/coinbase/prime/futures/GetDerivativesCurrencySummaryResponse.java b/src/main/java/com/coinbase/prime/futures/GetDerivativesCurrencySummaryResponse.java new file mode 100644 index 00000000..15e6fdb3 --- /dev/null +++ b/src/main/java/com/coinbase/prime/futures/GetDerivativesCurrencySummaryResponse.java @@ -0,0 +1,47 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.futures; + +import com.coinbase.prime.model.DerivativesCurrencyBalance; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** Get Portfolio Derivatives Currency Summary */ +public class GetDerivativesCurrencySummaryResponse { + @JsonProperty("portfolio_id") + private String portfolioId; + + @JsonProperty("balances") + private DerivativesCurrencyBalance[] balances; + + public GetDerivativesCurrencySummaryResponse() {} + + public String getPortfolioId() { + return portfolioId; + } + + public void setPortfolioId(String portfolioId) { + this.portfolioId = portfolioId; + } + + public DerivativesCurrencyBalance[] getBalances() { + return balances; + } + + public void setBalances(DerivativesCurrencyBalance[] balances) { + this.balances = balances; + } +} diff --git a/src/main/java/com/coinbase/prime/model/BetaRewardsRateTier.java b/src/main/java/com/coinbase/prime/model/BetaRewardsRateTier.java new file mode 100644 index 00000000..2c85a3dc --- /dev/null +++ b/src/main/java/com/coinbase/prime/model/BetaRewardsRateTier.java @@ -0,0 +1,113 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Do not edit the class manually. + */ + +package com.coinbase.prime.model; + +import com.coinbase.prime.model.enums.BetaRewardsRateTierType; +import com.fasterxml.jackson.annotation.JsonProperty; + +public class BetaRewardsRateTier { + /** Rate for this tier. */ + private String rate; + + /** Lower bound of the tier's qualifying criteria (e.g. balance floor). */ + @JsonProperty("lower_limit") + private String lowerLimit; + + /** Upper bound of the tier's qualifying criteria. */ + @JsonProperty("upper_limit") + private String upperLimit; + + @JsonProperty("criteria_type") + private BetaRewardsRateTierType criteriaType; + + public BetaRewardsRateTier() {} + + public BetaRewardsRateTier(Builder builder) { + this.rate = builder.rate; + this.lowerLimit = builder.lowerLimit; + this.upperLimit = builder.upperLimit; + this.criteriaType = builder.criteriaType; + } + + public String getRate() { + return rate; + } + + public void setRate(String rate) { + this.rate = rate; + } + + public String getLowerLimit() { + return lowerLimit; + } + + public void setLowerLimit(String lowerLimit) { + this.lowerLimit = lowerLimit; + } + + public String getUpperLimit() { + return upperLimit; + } + + public void setUpperLimit(String upperLimit) { + this.upperLimit = upperLimit; + } + + public BetaRewardsRateTierType getCriteriaType() { + return criteriaType; + } + + public void setCriteriaType(BetaRewardsRateTierType criteriaType) { + this.criteriaType = criteriaType; + } + + public static class Builder { + private String rate; + + private String lowerLimit; + + private String upperLimit; + + private BetaRewardsRateTierType criteriaType; + + public Builder rate(String rate) { + this.rate = rate; + return this; + } + + public Builder lowerLimit(String lowerLimit) { + this.lowerLimit = lowerLimit; + return this; + } + + public Builder upperLimit(String upperLimit) { + this.upperLimit = upperLimit; + return this; + } + + public Builder criteriaType(BetaRewardsRateTierType criteriaType) { + this.criteriaType = criteriaType; + return this; + } + + public BetaRewardsRateTier build() { + return new BetaRewardsRateTier(this); + } + } +} diff --git a/src/main/java/com/coinbase/prime/model/BlindMatchMetadata.java b/src/main/java/com/coinbase/prime/model/BlindMatchMetadata.java index f53a2ece..02821169 100644 --- a/src/main/java/com/coinbase/prime/model/BlindMatchMetadata.java +++ b/src/main/java/com/coinbase/prime/model/BlindMatchMetadata.java @@ -25,7 +25,11 @@ public class BlindMatchMetadata { @JsonProperty("reference_id") private String referenceId; - /** The intended time of Transfer settlement in YYYYMMDD format */ + /** + * The intended time of Transfer settlement in YYYYMMDD format. The Settlement Date represents the + * date contractually agreed upon by the transacting parties; actual settlement will occur upon + * completion of the transfer, which may differ from such agreed date. + */ @JsonProperty("settlement_date") private String settlementDate; diff --git a/src/main/java/com/coinbase/prime/model/ComboLeg.java b/src/main/java/com/coinbase/prime/model/ComboLeg.java new file mode 100644 index 00000000..7c323a66 --- /dev/null +++ b/src/main/java/com/coinbase/prime/model/ComboLeg.java @@ -0,0 +1,93 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Do not edit the class manually. + */ + +package com.coinbase.prime.model; + +import com.coinbase.prime.model.enums.OrderSide; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** ComboLeg describes a single leg within an options combo order. */ +public class ComboLeg { + /** The product identifier for the options instrument (e.g., \"BTC-28MAR25-50000-C\"). */ + @JsonProperty("product_id") + private String productId; + + private String quantity; + + /** - UNKNOWN_ORDER_SIDE: nil value - BUY: Buy order - SELL: Sell order */ + private OrderSide side; + + public ComboLeg() {} + + public ComboLeg(Builder builder) { + this.productId = builder.productId; + this.quantity = builder.quantity; + this.side = builder.side; + } + + public String getProductId() { + return productId; + } + + public void setProductId(String productId) { + this.productId = productId; + } + + public String getQuantity() { + return quantity; + } + + public void setQuantity(String quantity) { + this.quantity = quantity; + } + + public OrderSide getSide() { + return side; + } + + public void setSide(OrderSide side) { + this.side = side; + } + + public static class Builder { + private String productId; + + private String quantity; + + private OrderSide side; + + public Builder productId(String productId) { + this.productId = productId; + return this; + } + + public Builder quantity(String quantity) { + this.quantity = quantity; + return this; + } + + public Builder side(OrderSide side) { + this.side = side; + return this; + } + + public ComboLeg build() { + return new ComboLeg(this); + } + } +} diff --git a/src/main/java/com/coinbase/prime/model/ConversionFee.java b/src/main/java/com/coinbase/prime/model/ConversionFee.java new file mode 100644 index 00000000..f6a05d13 --- /dev/null +++ b/src/main/java/com/coinbase/prime/model/ConversionFee.java @@ -0,0 +1,125 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Do not edit the class manually. + */ + +package com.coinbase.prime.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; + +/** + * Per-pair conversion fee row: month-to-date net conversion volume and the applicable progressive + * fee tiers for an organization. + */ +public class ConversionFee { + /** Source currency ticker. */ + @JsonProperty("from_currency") + private String fromCurrency; + + /** Destination currency ticker. */ + @JsonProperty("to_currency") + private String toCurrency; + + /** + * Month-to-date net conversion volume denominated in from_currency, aggregated at the owning + * organization level. Positive = net from->to, negative = net to->from. + */ + @JsonProperty("net_conversion_volume_mtd") + private String netConversionVolumeMtd; + + /** + * Progressive fee tiers applicable to this organization for this pair. Tiers are ordered from + * lowest to highest threshold. + */ + @JsonProperty("fee_tiers") + private List feeTiers; + + public ConversionFee() {} + + public ConversionFee(Builder builder) { + this.fromCurrency = builder.fromCurrency; + this.toCurrency = builder.toCurrency; + this.netConversionVolumeMtd = builder.netConversionVolumeMtd; + this.feeTiers = builder.feeTiers; + } + + public String getFromCurrency() { + return fromCurrency; + } + + public void setFromCurrency(String fromCurrency) { + this.fromCurrency = fromCurrency; + } + + public String getToCurrency() { + return toCurrency; + } + + public void setToCurrency(String toCurrency) { + this.toCurrency = toCurrency; + } + + public String getNetConversionVolumeMtd() { + return netConversionVolumeMtd; + } + + public void setNetConversionVolumeMtd(String netConversionVolumeMtd) { + this.netConversionVolumeMtd = netConversionVolumeMtd; + } + + public List getFeeTiers() { + return feeTiers; + } + + public void setFeeTiers(List feeTiers) { + this.feeTiers = feeTiers; + } + + public static class Builder { + private String fromCurrency; + + private String toCurrency; + + private String netConversionVolumeMtd; + + private List feeTiers; + + public Builder fromCurrency(String fromCurrency) { + this.fromCurrency = fromCurrency; + return this; + } + + public Builder toCurrency(String toCurrency) { + this.toCurrency = toCurrency; + return this; + } + + public Builder netConversionVolumeMtd(String netConversionVolumeMtd) { + this.netConversionVolumeMtd = netConversionVolumeMtd; + return this; + } + + public Builder feeTiers(List feeTiers) { + this.feeTiers = feeTiers; + return this; + } + + public ConversionFee build() { + return new ConversionFee(this); + } + } +} diff --git a/src/main/java/com/coinbase/prime/model/ConversionFeeTier.java b/src/main/java/com/coinbase/prime/model/ConversionFeeTier.java new file mode 100644 index 00000000..9bd5d309 --- /dev/null +++ b/src/main/java/com/coinbase/prime/model/ConversionFeeTier.java @@ -0,0 +1,95 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Do not edit the class manually. + */ + +package com.coinbase.prime.model; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** A single fee tier in the progressive stablecoin conversion schedule. */ +public class ConversionFeeTier { + /** Inclusive lower bound for the tier in USD. */ + @JsonProperty("min_threshold") + private String minThreshold; + + /** Exclusive upper bound for the tier in USD. Empty string for the highest, unbounded tier. */ + @JsonProperty("max_threshold") + private String maxThreshold; + + /** Tier rate in basis points. */ + @JsonProperty("rate_bps") + private String rateBps; + + public ConversionFeeTier() {} + + public ConversionFeeTier(Builder builder) { + this.minThreshold = builder.minThreshold; + this.maxThreshold = builder.maxThreshold; + this.rateBps = builder.rateBps; + } + + public String getMinThreshold() { + return minThreshold; + } + + public void setMinThreshold(String minThreshold) { + this.minThreshold = minThreshold; + } + + public String getMaxThreshold() { + return maxThreshold; + } + + public void setMaxThreshold(String maxThreshold) { + this.maxThreshold = maxThreshold; + } + + public String getRateBps() { + return rateBps; + } + + public void setRateBps(String rateBps) { + this.rateBps = rateBps; + } + + public static class Builder { + private String minThreshold; + + private String maxThreshold; + + private String rateBps; + + public Builder minThreshold(String minThreshold) { + this.minThreshold = minThreshold; + return this; + } + + public Builder maxThreshold(String maxThreshold) { + this.maxThreshold = maxThreshold; + return this; + } + + public Builder rateBps(String rateBps) { + this.rateBps = rateBps; + return this; + } + + public ConversionFeeTier build() { + return new ConversionFeeTier(this); + } + } +} diff --git a/src/main/java/com/coinbase/prime/model/CustomStablecoinAsset.java b/src/main/java/com/coinbase/prime/model/CustomStablecoinAsset.java new file mode 100644 index 00000000..4f67c4b5 --- /dev/null +++ b/src/main/java/com/coinbase/prime/model/CustomStablecoinAsset.java @@ -0,0 +1,52 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Do not edit the class manually. + */ + +package com.coinbase.prime.model; + +/** Currency metadata of the custom stablecoin asset for the reward program */ +public class CustomStablecoinAsset { + /** The asset symbol (e.g. USDC, USDF) */ + private String symbol; + + public CustomStablecoinAsset() {} + + public CustomStablecoinAsset(Builder builder) { + this.symbol = builder.symbol; + } + + public String getSymbol() { + return symbol; + } + + public void setSymbol(String symbol) { + this.symbol = symbol; + } + + public static class Builder { + private String symbol; + + public Builder symbol(String symbol) { + this.symbol = symbol; + return this; + } + + public CustomStablecoinAsset build() { + return new CustomStablecoinAsset(this); + } + } +} diff --git a/src/main/java/com/coinbase/prime/model/CustomStablecoinRewardDetails.java b/src/main/java/com/coinbase/prime/model/CustomStablecoinRewardDetails.java index de3469a8..ea021949 100644 --- a/src/main/java/com/coinbase/prime/model/CustomStablecoinRewardDetails.java +++ b/src/main/java/com/coinbase/prime/model/CustomStablecoinRewardDetails.java @@ -30,11 +30,15 @@ public class CustomStablecoinRewardDetails { @JsonProperty("end_date") private String endDate; + /** Currency metadata of the custom stablecoin asset for the reward program */ + private CustomStablecoinAsset asset; + public CustomStablecoinRewardDetails() {} public CustomStablecoinRewardDetails(Builder builder) { this.startDate = builder.startDate; this.endDate = builder.endDate; + this.asset = builder.asset; } public String getStartDate() { @@ -53,11 +57,21 @@ public void setEndDate(String endDate) { this.endDate = endDate; } + public CustomStablecoinAsset getAsset() { + return asset; + } + + public void setAsset(CustomStablecoinAsset asset) { + this.asset = asset; + } + public static class Builder { private String startDate; private String endDate; + private CustomStablecoinAsset asset; + public Builder startDate(String startDate) { this.startDate = startDate; return this; @@ -68,6 +82,11 @@ public Builder endDate(String endDate) { return this; } + public Builder asset(CustomStablecoinAsset asset) { + this.asset = asset; + return this; + } + public CustomStablecoinRewardDetails build() { return new CustomStablecoinRewardDetails(this); } diff --git a/src/main/java/com/coinbase/prime/model/DerivativePosition.java b/src/main/java/com/coinbase/prime/model/DerivativePosition.java new file mode 100644 index 00000000..7cec3a20 --- /dev/null +++ b/src/main/java/com/coinbase/prime/model/DerivativePosition.java @@ -0,0 +1,284 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Do not edit the class manually. + */ + +package com.coinbase.prime.model; + +import com.coinbase.prime.model.enums.DerivativeProductType; +import com.coinbase.prime.model.enums.FcmPositionSide; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.time.OffsetDateTime; + +/** A single derivative position across all derivative product types. */ +public class DerivativePosition { + /** Product ID */ + @JsonProperty("product_id") + private String productId; + + private FcmPositionSide side; + + /** Number of contracts */ + @JsonProperty("number_of_contracts") + private String numberOfContracts; + + /** Daily realized PNL */ + @JsonProperty("daily_realized_pnl") + private String dailyRealizedPnl; + + /** Unrealized PNL */ + @JsonProperty("unrealized_pnl") + private String unrealizedPnl; + + /** Current price of position */ + @JsonProperty("current_price") + private String currentPrice; + + /** Average entry price */ + @JsonProperty("avg_entry_price") + private String avgEntryPrice; + + /** Expiration time of position */ + @JsonProperty("expiration_time") + private OffsetDateTime expirationTime; + + /** + * The general type of a derivative product. - DERIVATIVE_PRODUCT_TYPE_UNSPECIFIED: Unknown + * product type. - DERIVATIVE_PRODUCT_TYPE_SPOT: Spot product. - DERIVATIVE_PRODUCT_TYPE_FUTURE: + * Future product. - DERIVATIVE_PRODUCT_TYPE_EQUITY: Equity product. - + * DERIVATIVE_PRODUCT_TYPE_PREDICTION_MARKET: Prediction market product. - + * DERIVATIVE_PRODUCT_TYPE_OPTION: Option product. - DERIVATIVE_PRODUCT_TYPE_BASIS: Basis product. + * - DERIVATIVE_PRODUCT_TYPE_EQUITY_OPTION: Equity option product. - + * DERIVATIVE_PRODUCT_TYPE_FUTURE_COMBO: Future combo product. - + * DERIVATIVE_PRODUCT_TYPE_OPTION_COMBO: Option combo product. + */ + @JsonProperty("product_type") + private DerivativeProductType productType; + + /** Settlement currency */ + private String currency; + + /** Options-specific details for a derivative position, including greeks. */ + @JsonProperty("options_details") + private OptionsDetails optionsDetails; + + /** Venue ID of the position */ + @JsonProperty("venue_id") + private String venueId; + + public DerivativePosition() {} + + public DerivativePosition(Builder builder) { + this.productId = builder.productId; + this.side = builder.side; + this.numberOfContracts = builder.numberOfContracts; + this.dailyRealizedPnl = builder.dailyRealizedPnl; + this.unrealizedPnl = builder.unrealizedPnl; + this.currentPrice = builder.currentPrice; + this.avgEntryPrice = builder.avgEntryPrice; + this.expirationTime = builder.expirationTime; + this.productType = builder.productType; + this.currency = builder.currency; + this.optionsDetails = builder.optionsDetails; + this.venueId = builder.venueId; + } + + public String getProductId() { + return productId; + } + + public void setProductId(String productId) { + this.productId = productId; + } + + public FcmPositionSide getSide() { + return side; + } + + public void setSide(FcmPositionSide side) { + this.side = side; + } + + public String getNumberOfContracts() { + return numberOfContracts; + } + + public void setNumberOfContracts(String numberOfContracts) { + this.numberOfContracts = numberOfContracts; + } + + public String getDailyRealizedPnl() { + return dailyRealizedPnl; + } + + public void setDailyRealizedPnl(String dailyRealizedPnl) { + this.dailyRealizedPnl = dailyRealizedPnl; + } + + public String getUnrealizedPnl() { + return unrealizedPnl; + } + + public void setUnrealizedPnl(String unrealizedPnl) { + this.unrealizedPnl = unrealizedPnl; + } + + public String getCurrentPrice() { + return currentPrice; + } + + public void setCurrentPrice(String currentPrice) { + this.currentPrice = currentPrice; + } + + public String getAvgEntryPrice() { + return avgEntryPrice; + } + + public void setAvgEntryPrice(String avgEntryPrice) { + this.avgEntryPrice = avgEntryPrice; + } + + public OffsetDateTime getExpirationTime() { + return expirationTime; + } + + public void setExpirationTime(OffsetDateTime expirationTime) { + this.expirationTime = expirationTime; + } + + public DerivativeProductType getProductType() { + return productType; + } + + public void setProductType(DerivativeProductType productType) { + this.productType = productType; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public OptionsDetails getOptionsDetails() { + return optionsDetails; + } + + public void setOptionsDetails(OptionsDetails optionsDetails) { + this.optionsDetails = optionsDetails; + } + + public String getVenueId() { + return venueId; + } + + public void setVenueId(String venueId) { + this.venueId = venueId; + } + + public static class Builder { + private String productId; + + private FcmPositionSide side; + + private String numberOfContracts; + + private String dailyRealizedPnl; + + private String unrealizedPnl; + + private String currentPrice; + + private String avgEntryPrice; + + private OffsetDateTime expirationTime; + + private DerivativeProductType productType; + + private String currency; + + private OptionsDetails optionsDetails; + + private String venueId; + + public Builder productId(String productId) { + this.productId = productId; + return this; + } + + public Builder side(FcmPositionSide side) { + this.side = side; + return this; + } + + public Builder numberOfContracts(String numberOfContracts) { + this.numberOfContracts = numberOfContracts; + return this; + } + + public Builder dailyRealizedPnl(String dailyRealizedPnl) { + this.dailyRealizedPnl = dailyRealizedPnl; + return this; + } + + public Builder unrealizedPnl(String unrealizedPnl) { + this.unrealizedPnl = unrealizedPnl; + return this; + } + + public Builder currentPrice(String currentPrice) { + this.currentPrice = currentPrice; + return this; + } + + public Builder avgEntryPrice(String avgEntryPrice) { + this.avgEntryPrice = avgEntryPrice; + return this; + } + + public Builder expirationTime(OffsetDateTime expirationTime) { + this.expirationTime = expirationTime; + return this; + } + + public Builder productType(DerivativeProductType productType) { + this.productType = productType; + return this; + } + + public Builder currency(String currency) { + this.currency = currency; + return this; + } + + public Builder optionsDetails(OptionsDetails optionsDetails) { + this.optionsDetails = optionsDetails; + return this; + } + + public Builder venueId(String venueId) { + this.venueId = venueId; + return this; + } + + public DerivativePosition build() { + return new DerivativePosition(this); + } + } +} diff --git a/src/main/java/com/coinbase/prime/model/DerivativesCurrencyBalance.java b/src/main/java/com/coinbase/prime/model/DerivativesCurrencyBalance.java new file mode 100644 index 00000000..6ea5aaa8 --- /dev/null +++ b/src/main/java/com/coinbase/prime/model/DerivativesCurrencyBalance.java @@ -0,0 +1,260 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Do not edit the class manually. + */ + +package com.coinbase.prime.model; + +import com.coinbase.prime.model.enums.FcmMarginHealthState; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** Balances for a single settlement currency within an international derivatives portfolio. */ +public class DerivativesCurrencyBalance { + /** Settlement currency */ + private String currency; + + /** Cash balance for the currency */ + private String balance; + + /** Unrealized PNL */ + @JsonProperty("unrealized_pnl") + private String unrealizedPnl; + + /** Realized PNL */ + @JsonProperty("realized_pnl") + private String realizedPnl; + + /** Initial margin */ + @JsonProperty("initial_margin") + private String initialMargin; + + /** Maintenance margin */ + @JsonProperty("maintenance_margin") + private String maintenanceMargin; + + /** Margin balance for the currency */ + @JsonProperty("margin_balance") + private String marginBalance; + + /** Option value for the currency */ + @JsonProperty("option_value") + private String optionValue; + + /** Margin excess for the currency (negative indicates a margin deficit) */ + @JsonProperty("margin_excess") + private String marginExcess; + + /** Margin utilization for the currency, as a percentage */ + @JsonProperty("margin_utilization") + private String marginUtilization; + + /** + * The margin health state of an FCM account. - FCM_MARGIN_HEALTH_STATE_UNSPECIFIED: Unspecified + * margin health state. - FCM_MARGIN_HEALTH_STATE_HEALTHY: Account margin is healthy. - + * FCM_MARGIN_HEALTH_STATE_RESTRICTED: Account margin is restricted. - + * FCM_MARGIN_HEALTH_STATE_PRE_LIQUIDATION: Account is approaching liquidation. - + * FCM_MARGIN_HEALTH_STATE_LIQUIDATION: Account is in liquidation. + */ + @JsonProperty("margin_health_state") + private FcmMarginHealthState marginHealthState; + + public DerivativesCurrencyBalance() {} + + public DerivativesCurrencyBalance(Builder builder) { + this.currency = builder.currency; + this.balance = builder.balance; + this.unrealizedPnl = builder.unrealizedPnl; + this.realizedPnl = builder.realizedPnl; + this.initialMargin = builder.initialMargin; + this.maintenanceMargin = builder.maintenanceMargin; + this.marginBalance = builder.marginBalance; + this.optionValue = builder.optionValue; + this.marginExcess = builder.marginExcess; + this.marginUtilization = builder.marginUtilization; + this.marginHealthState = builder.marginHealthState; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getBalance() { + return balance; + } + + public void setBalance(String balance) { + this.balance = balance; + } + + public String getUnrealizedPnl() { + return unrealizedPnl; + } + + public void setUnrealizedPnl(String unrealizedPnl) { + this.unrealizedPnl = unrealizedPnl; + } + + public String getRealizedPnl() { + return realizedPnl; + } + + public void setRealizedPnl(String realizedPnl) { + this.realizedPnl = realizedPnl; + } + + public String getInitialMargin() { + return initialMargin; + } + + public void setInitialMargin(String initialMargin) { + this.initialMargin = initialMargin; + } + + public String getMaintenanceMargin() { + return maintenanceMargin; + } + + public void setMaintenanceMargin(String maintenanceMargin) { + this.maintenanceMargin = maintenanceMargin; + } + + public String getMarginBalance() { + return marginBalance; + } + + public void setMarginBalance(String marginBalance) { + this.marginBalance = marginBalance; + } + + public String getOptionValue() { + return optionValue; + } + + public void setOptionValue(String optionValue) { + this.optionValue = optionValue; + } + + public String getMarginExcess() { + return marginExcess; + } + + public void setMarginExcess(String marginExcess) { + this.marginExcess = marginExcess; + } + + public String getMarginUtilization() { + return marginUtilization; + } + + public void setMarginUtilization(String marginUtilization) { + this.marginUtilization = marginUtilization; + } + + public FcmMarginHealthState getMarginHealthState() { + return marginHealthState; + } + + public void setMarginHealthState(FcmMarginHealthState marginHealthState) { + this.marginHealthState = marginHealthState; + } + + public static class Builder { + private String currency; + + private String balance; + + private String unrealizedPnl; + + private String realizedPnl; + + private String initialMargin; + + private String maintenanceMargin; + + private String marginBalance; + + private String optionValue; + + private String marginExcess; + + private String marginUtilization; + + private FcmMarginHealthState marginHealthState; + + public Builder currency(String currency) { + this.currency = currency; + return this; + } + + public Builder balance(String balance) { + this.balance = balance; + return this; + } + + public Builder unrealizedPnl(String unrealizedPnl) { + this.unrealizedPnl = unrealizedPnl; + return this; + } + + public Builder realizedPnl(String realizedPnl) { + this.realizedPnl = realizedPnl; + return this; + } + + public Builder initialMargin(String initialMargin) { + this.initialMargin = initialMargin; + return this; + } + + public Builder maintenanceMargin(String maintenanceMargin) { + this.maintenanceMargin = maintenanceMargin; + return this; + } + + public Builder marginBalance(String marginBalance) { + this.marginBalance = marginBalance; + return this; + } + + public Builder optionValue(String optionValue) { + this.optionValue = optionValue; + return this; + } + + public Builder marginExcess(String marginExcess) { + this.marginExcess = marginExcess; + return this; + } + + public Builder marginUtilization(String marginUtilization) { + this.marginUtilization = marginUtilization; + return this; + } + + public Builder marginHealthState(FcmMarginHealthState marginHealthState) { + this.marginHealthState = marginHealthState; + return this; + } + + public DerivativesCurrencyBalance build() { + return new DerivativesCurrencyBalance(this); + } + } +} diff --git a/src/main/java/com/coinbase/prime/model/Fill.java b/src/main/java/com/coinbase/prime/model/Fill.java index 5a000cfa..72118ead 100644 --- a/src/main/java/com/coinbase/prime/model/Fill.java +++ b/src/main/java/com/coinbase/prime/model/Fill.java @@ -70,7 +70,10 @@ public class Fill { @JsonProperty("ces_commission") private String cesCommission; - /** - UNKNOWN_PRODUCT_TYPE: Unknown product type - SPOT: Spot product - FUTURE: Future product */ + /** + * - UNKNOWN_PRODUCT_TYPE: Unknown product type - SPOT: Spot product - FUTURE: Future product - + * OPTION: Option product + */ @JsonProperty("product_type") private ProductType productType; diff --git a/src/main/java/com/coinbase/prime/model/OptionProductDetails.java b/src/main/java/com/coinbase/prime/model/OptionProductDetails.java new file mode 100644 index 00000000..5d3e5dea --- /dev/null +++ b/src/main/java/com/coinbase/prime/model/OptionProductDetails.java @@ -0,0 +1,313 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Do not edit the class manually. + */ + +package com.coinbase.prime.model; + +import com.coinbase.prime.model.enums.OptionType; +import com.coinbase.prime.model.enums.SettlementModel; +import com.coinbase.prime.model.enums.SettlementPeriod; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.time.OffsetDateTime; +import java.util.List; + +/** OptionProductDetails contains details specific to option products */ +public class OptionProductDetails { + /** + * The type of an option position. - OPTION_TYPE_UNSPECIFIED: Unspecified option type. - + * OPTION_TYPE_CALL: Call option. - OPTION_TYPE_PUT: Put option. + */ + @JsonProperty("option_type") + private OptionType optionType; + + /** Strike price of the option */ + private String strike; + + /** Contract root unit (underlying asset) */ + @JsonProperty("contract_root_unit") + private String contractRootUnit; + + /** Currency the option settles in */ + @JsonProperty("settlement_currency") + private String settlementCurrency; + + /** Contract code identifier */ + @JsonProperty("contract_code") + private String contractCode; + + /** Descriptive name for the product group */ + @JsonProperty("group_description") + private String groupDescription; + + /** Contract size */ + @JsonProperty("contract_size") + private String contractSize; + + /** Contract expiry timestamp */ + @JsonProperty("contract_expiry") + private OffsetDateTime contractExpiry; + + /** + * - SETTLEMENT_PERIOD_UNSPECIFIED: Unspecified settlement period - SETTLEMENT_PERIOD_PERPETUAL: + * Contract never expires - SETTLEMENT_PERIOD_DAY: Contract expires daily - + * SETTLEMENT_PERIOD_WEEK: Contract expires weekly - SETTLEMENT_PERIOD_MONTH: Contract expires + * monthly + */ + @JsonProperty("settlement_period") + private SettlementPeriod settlementPeriod; + + /** + * - SETTLEMENT_MODEL_UNSPECIFIED: Unspecified settlement model - SETTLEMENT_MODEL_LINEAR: Settles + * in the quote currency - SETTLEMENT_MODEL_INVERSE: Settles in the base currency + */ + @JsonProperty("settlement_model") + private SettlementModel settlementModel; + + /** Currency the option is quoted against */ + @JsonProperty("counter_currency") + private String counterCurrency; + + /** Smallest tradable quantity of the contract */ + @JsonProperty("lot_size") + private String lotSize; + + /** + * Tiered price increments that override price_increment above a threshold; empty when a single + * price_increment applies + */ + @JsonProperty("price_increment_steps") + private List priceIncrementSteps; + + public OptionProductDetails() {} + + public OptionProductDetails(Builder builder) { + this.optionType = builder.optionType; + this.strike = builder.strike; + this.contractRootUnit = builder.contractRootUnit; + this.settlementCurrency = builder.settlementCurrency; + this.contractCode = builder.contractCode; + this.groupDescription = builder.groupDescription; + this.contractSize = builder.contractSize; + this.contractExpiry = builder.contractExpiry; + this.settlementPeriod = builder.settlementPeriod; + this.settlementModel = builder.settlementModel; + this.counterCurrency = builder.counterCurrency; + this.lotSize = builder.lotSize; + this.priceIncrementSteps = builder.priceIncrementSteps; + } + + public OptionType getOptionType() { + return optionType; + } + + public void setOptionType(OptionType optionType) { + this.optionType = optionType; + } + + public String getStrike() { + return strike; + } + + public void setStrike(String strike) { + this.strike = strike; + } + + public String getContractRootUnit() { + return contractRootUnit; + } + + public void setContractRootUnit(String contractRootUnit) { + this.contractRootUnit = contractRootUnit; + } + + public String getSettlementCurrency() { + return settlementCurrency; + } + + public void setSettlementCurrency(String settlementCurrency) { + this.settlementCurrency = settlementCurrency; + } + + public String getContractCode() { + return contractCode; + } + + public void setContractCode(String contractCode) { + this.contractCode = contractCode; + } + + public String getGroupDescription() { + return groupDescription; + } + + public void setGroupDescription(String groupDescription) { + this.groupDescription = groupDescription; + } + + public String getContractSize() { + return contractSize; + } + + public void setContractSize(String contractSize) { + this.contractSize = contractSize; + } + + public OffsetDateTime getContractExpiry() { + return contractExpiry; + } + + public void setContractExpiry(OffsetDateTime contractExpiry) { + this.contractExpiry = contractExpiry; + } + + public SettlementPeriod getSettlementPeriod() { + return settlementPeriod; + } + + public void setSettlementPeriod(SettlementPeriod settlementPeriod) { + this.settlementPeriod = settlementPeriod; + } + + public SettlementModel getSettlementModel() { + return settlementModel; + } + + public void setSettlementModel(SettlementModel settlementModel) { + this.settlementModel = settlementModel; + } + + public String getCounterCurrency() { + return counterCurrency; + } + + public void setCounterCurrency(String counterCurrency) { + this.counterCurrency = counterCurrency; + } + + public String getLotSize() { + return lotSize; + } + + public void setLotSize(String lotSize) { + this.lotSize = lotSize; + } + + public List getPriceIncrementSteps() { + return priceIncrementSteps; + } + + public void setPriceIncrementSteps(List priceIncrementSteps) { + this.priceIncrementSteps = priceIncrementSteps; + } + + public static class Builder { + private OptionType optionType; + + private String strike; + + private String contractRootUnit; + + private String settlementCurrency; + + private String contractCode; + + private String groupDescription; + + private String contractSize; + + private OffsetDateTime contractExpiry; + + private SettlementPeriod settlementPeriod; + + private SettlementModel settlementModel; + + private String counterCurrency; + + private String lotSize; + + private List priceIncrementSteps; + + public Builder optionType(OptionType optionType) { + this.optionType = optionType; + return this; + } + + public Builder strike(String strike) { + this.strike = strike; + return this; + } + + public Builder contractRootUnit(String contractRootUnit) { + this.contractRootUnit = contractRootUnit; + return this; + } + + public Builder settlementCurrency(String settlementCurrency) { + this.settlementCurrency = settlementCurrency; + return this; + } + + public Builder contractCode(String contractCode) { + this.contractCode = contractCode; + return this; + } + + public Builder groupDescription(String groupDescription) { + this.groupDescription = groupDescription; + return this; + } + + public Builder contractSize(String contractSize) { + this.contractSize = contractSize; + return this; + } + + public Builder contractExpiry(OffsetDateTime contractExpiry) { + this.contractExpiry = contractExpiry; + return this; + } + + public Builder settlementPeriod(SettlementPeriod settlementPeriod) { + this.settlementPeriod = settlementPeriod; + return this; + } + + public Builder settlementModel(SettlementModel settlementModel) { + this.settlementModel = settlementModel; + return this; + } + + public Builder counterCurrency(String counterCurrency) { + this.counterCurrency = counterCurrency; + return this; + } + + public Builder lotSize(String lotSize) { + this.lotSize = lotSize; + return this; + } + + public Builder priceIncrementSteps(List priceIncrementSteps) { + this.priceIncrementSteps = priceIncrementSteps; + return this; + } + + public OptionProductDetails build() { + return new OptionProductDetails(this); + } + } +} diff --git a/src/main/java/com/coinbase/prime/model/OptionsDetails.java b/src/main/java/com/coinbase/prime/model/OptionsDetails.java new file mode 100644 index 00000000..3a49cfa1 --- /dev/null +++ b/src/main/java/com/coinbase/prime/model/OptionsDetails.java @@ -0,0 +1,154 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Do not edit the class manually. + */ + +package com.coinbase.prime.model; + +import com.coinbase.prime.model.enums.OptionType; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** Options-specific details for a derivative position, including greeks. */ +public class OptionsDetails { + /** Delta greek */ + private String delta; + + /** Gamma greek */ + private String gamma; + + /** Theta greek */ + private String theta; + + /** Vega greek */ + private String vega; + + /** Strike price */ + private String strike; + + /** + * The type of an option position. - OPTION_TYPE_UNSPECIFIED: Unspecified option type. - + * OPTION_TYPE_CALL: Call option. - OPTION_TYPE_PUT: Put option. + */ + @JsonProperty("option_type") + private OptionType optionType; + + public OptionsDetails() {} + + public OptionsDetails(Builder builder) { + this.delta = builder.delta; + this.gamma = builder.gamma; + this.theta = builder.theta; + this.vega = builder.vega; + this.strike = builder.strike; + this.optionType = builder.optionType; + } + + public String getDelta() { + return delta; + } + + public void setDelta(String delta) { + this.delta = delta; + } + + public String getGamma() { + return gamma; + } + + public void setGamma(String gamma) { + this.gamma = gamma; + } + + public String getTheta() { + return theta; + } + + public void setTheta(String theta) { + this.theta = theta; + } + + public String getVega() { + return vega; + } + + public void setVega(String vega) { + this.vega = vega; + } + + public String getStrike() { + return strike; + } + + public void setStrike(String strike) { + this.strike = strike; + } + + public OptionType getOptionType() { + return optionType; + } + + public void setOptionType(OptionType optionType) { + this.optionType = optionType; + } + + public static class Builder { + private String delta; + + private String gamma; + + private String theta; + + private String vega; + + private String strike; + + private OptionType optionType; + + public Builder delta(String delta) { + this.delta = delta; + return this; + } + + public Builder gamma(String gamma) { + this.gamma = gamma; + return this; + } + + public Builder theta(String theta) { + this.theta = theta; + return this; + } + + public Builder vega(String vega) { + this.vega = vega; + return this; + } + + public Builder strike(String strike) { + this.strike = strike; + return this; + } + + public Builder optionType(OptionType optionType) { + this.optionType = optionType; + return this; + } + + public OptionsDetails build() { + return new OptionsDetails(this); + } + } +} diff --git a/src/main/java/com/coinbase/prime/model/Order.java b/src/main/java/com/coinbase/prime/model/Order.java index eeb2673e..f0907902 100644 --- a/src/main/java/com/coinbase/prime/model/Order.java +++ b/src/main/java/com/coinbase/prime/model/Order.java @@ -205,13 +205,23 @@ public class Order { @JsonProperty("wig_level") private String wigLevel; - /** - UNKNOWN_PRODUCT_TYPE: Unknown product type - SPOT: Spot product - FUTURE: Future product */ + /** + * - UNKNOWN_PRODUCT_TYPE: Unknown product type - SPOT: Spot product - FUTURE: Future product - + * OPTION: Option product + */ @JsonProperty("product_type") private ProductType productType; @JsonProperty("commission_detail_total") private CommissionDetailTotal commissionDetailTotal; + /** + * Indicates if this was a buy exact order (fees charged on top of quote size for BUY orders sized + * in quote) + */ + @JsonProperty("is_buy_exact") + private boolean isBuyExact; + public Order() {} public Order(Builder builder) { @@ -252,6 +262,7 @@ public Order(Builder builder) { this.wigLevel = builder.wigLevel; this.productType = builder.productType; this.commissionDetailTotal = builder.commissionDetailTotal; + this.isBuyExact = builder.isBuyExact; } public String getId() { @@ -550,6 +561,14 @@ public void setCommissionDetailTotal(CommissionDetailTotal commissionDetailTotal this.commissionDetailTotal = commissionDetailTotal; } + public boolean getIsBuyExact() { + return isBuyExact; + } + + public void setIsBuyExact(boolean isBuyExact) { + this.isBuyExact = isBuyExact; + } + public static class Builder { private String id; @@ -625,6 +644,8 @@ public static class Builder { private CommissionDetailTotal commissionDetailTotal; + private boolean isBuyExact; + public Builder id(String id) { this.id = id; return this; @@ -810,6 +831,11 @@ public Builder commissionDetailTotal(CommissionDetailTotal commissionDetailTotal return this; } + public Builder isBuyExact(boolean isBuyExact) { + this.isBuyExact = isBuyExact; + return this; + } + public Order build() { return new Order(this); } diff --git a/src/main/java/com/coinbase/prime/model/PriceIncrementStep.java b/src/main/java/com/coinbase/prime/model/PriceIncrementStep.java new file mode 100644 index 00000000..63a52e13 --- /dev/null +++ b/src/main/java/com/coinbase/prime/model/PriceIncrementStep.java @@ -0,0 +1,82 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Do not edit the class manually. + */ + +package com.coinbase.prime.model; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * PriceIncrementStep overrides the product's price_increment for prices above a threshold. A price + * takes the increment of the highest step whose threshold it strictly exceeds, and the product's + * price_increment when it exceeds none. + */ +public class PriceIncrementStep { + /** + * Prices strictly greater than this threshold use this step's price increment; a price equal to + * it takes the next lower step + */ + @JsonProperty("price_threshold") + private String priceThreshold; + + /** Minimum price increment applied to prices above the threshold */ + @JsonProperty("price_increment") + private String priceIncrement; + + public PriceIncrementStep() {} + + public PriceIncrementStep(Builder builder) { + this.priceThreshold = builder.priceThreshold; + this.priceIncrement = builder.priceIncrement; + } + + public String getPriceThreshold() { + return priceThreshold; + } + + public void setPriceThreshold(String priceThreshold) { + this.priceThreshold = priceThreshold; + } + + public String getPriceIncrement() { + return priceIncrement; + } + + public void setPriceIncrement(String priceIncrement) { + this.priceIncrement = priceIncrement; + } + + public static class Builder { + private String priceThreshold; + + private String priceIncrement; + + public Builder priceThreshold(String priceThreshold) { + this.priceThreshold = priceThreshold; + return this; + } + + public Builder priceIncrement(String priceIncrement) { + this.priceIncrement = priceIncrement; + return this; + } + + public PriceIncrementStep build() { + return new PriceIncrementStep(this); + } + } +} diff --git a/src/main/java/com/coinbase/prime/model/Product.java b/src/main/java/com/coinbase/prime/model/Product.java index a6a9fde4..58e0ca85 100644 --- a/src/main/java/com/coinbase/prime/model/Product.java +++ b/src/main/java/com/coinbase/prime/model/Product.java @@ -61,7 +61,10 @@ public class Product { @JsonProperty("rfq_product_details") private RfqProductDetails rfqProductDetails; - /** - UNKNOWN_PRODUCT_TYPE: Unknown product type - SPOT: Spot product - FUTURE: Future product */ + /** + * - UNKNOWN_PRODUCT_TYPE: Unknown product type - SPOT: Spot product - FUTURE: Future product - + * OPTION: Option product + */ @JsonProperty("product_type") private ProductType productType; @@ -73,6 +76,10 @@ public class Product { @JsonProperty("future_product_details") private FutureProductDetails futureProductDetails; + /** OptionProductDetails contains details specific to option products */ + @JsonProperty("option_product_details") + private OptionProductDetails optionProductDetails; + public Product() {} public Product(Builder builder) { @@ -89,6 +96,7 @@ public Product(Builder builder) { this.productType = builder.productType; this.fcmTradingSessionDetails = builder.fcmTradingSessionDetails; this.futureProductDetails = builder.futureProductDetails; + this.optionProductDetails = builder.optionProductDetails; } public String getId() { @@ -195,6 +203,14 @@ public void setFutureProductDetails(FutureProductDetails futureProductDetails) { this.futureProductDetails = futureProductDetails; } + public OptionProductDetails getOptionProductDetails() { + return optionProductDetails; + } + + public void setOptionProductDetails(OptionProductDetails optionProductDetails) { + this.optionProductDetails = optionProductDetails; + } + public static class Builder { private String id; @@ -222,6 +238,8 @@ public static class Builder { private FutureProductDetails futureProductDetails; + private OptionProductDetails optionProductDetails; + public Builder id(String id) { this.id = id; return this; @@ -287,6 +305,11 @@ public Builder futureProductDetails(FutureProductDetails futureProductDetails) { return this; } + public Builder optionProductDetails(OptionProductDetails optionProductDetails) { + this.optionProductDetails = optionProductDetails; + return this; + } + public Product build() { return new Product(this); } diff --git a/src/main/java/com/coinbase/prime/model/Transaction.java b/src/main/java/com/coinbase/prime/model/Transaction.java index 01d8cd4d..08651a2d 100644 --- a/src/main/java/com/coinbase/prime/model/Transaction.java +++ b/src/main/java/com/coinbase/prime/model/Transaction.java @@ -64,7 +64,8 @@ public class Transaction { * claiming permission to other pubkey - WEB3_TRANSACTION: On-chain transaction initiated with * Prime Onchain Wallet Deprecated: Use ONCHAIN_TRANSACTION instead - ONCHAIN_TRANSACTION: * On-chain transaction initiated with Prime Onchain Wallet - PORTFOLIO_STAKE: Portfolio-level - * staking operation - PORTFOLIO_UNSTAKE: Portfolio-level unstaking operation + * staking operation - PORTFOLIO_UNSTAKE: Portfolio-level unstaking operation - MERGE_STAKE: + * On-chain transaction consolidating funds from different addresses belonging to the same wallet. */ private TransactionType type; diff --git a/src/main/java/com/coinbase/prime/model/TravelRuleParty.java b/src/main/java/com/coinbase/prime/model/TravelRuleParty.java index b401be31..9492abfc 100644 --- a/src/main/java/com/coinbase/prime/model/TravelRuleParty.java +++ b/src/main/java/com/coinbase/prime/model/TravelRuleParty.java @@ -74,6 +74,10 @@ public class TravelRuleParty { @JsonProperty("account_id") private String accountId; + /** Detailed address information */ + @JsonProperty("vasp_address") + private DetailedAddress vaspAddress; + public TravelRuleParty() {} public TravelRuleParty(Builder builder) { @@ -87,6 +91,7 @@ public TravelRuleParty(Builder builder) { this.dateOfBirth = builder.dateOfBirth; this.telephoneNumber = builder.telephoneNumber; this.accountId = builder.accountId; + this.vaspAddress = builder.vaspAddress; } public String getName() { @@ -169,6 +174,14 @@ public void setAccountId(String accountId) { this.accountId = accountId; } + public DetailedAddress getVaspAddress() { + return vaspAddress; + } + + public void setVaspAddress(DetailedAddress vaspAddress) { + this.vaspAddress = vaspAddress; + } + public static class Builder { private String name; @@ -190,6 +203,8 @@ public static class Builder { private String accountId; + private DetailedAddress vaspAddress; + public Builder name(String name) { this.name = name; return this; @@ -240,6 +255,11 @@ public Builder accountId(String accountId) { return this; } + public Builder vaspAddress(DetailedAddress vaspAddress) { + this.vaspAddress = vaspAddress; + return this; + } + public TravelRuleParty build() { return new TravelRuleParty(this); } diff --git a/src/main/java/com/coinbase/prime/model/WalletStakeInputs.java b/src/main/java/com/coinbase/prime/model/WalletStakeInputs.java index 58b080ac..4c1adb38 100644 --- a/src/main/java/com/coinbase/prime/model/WalletStakeInputs.java +++ b/src/main/java/com/coinbase/prime/model/WalletStakeInputs.java @@ -38,11 +38,19 @@ public class WalletStakeInputs { @JsonProperty("validator_address") private String validatorAddress; + /** + * Optional delegation end date in ISO date format (e.g. 2026-07-15). Required for AVAX; minimum + * 14-day delegation period applies. + */ + @JsonProperty("end_date") + private String endDate; + public WalletStakeInputs() {} public WalletStakeInputs(Builder builder) { this.amount = builder.amount; this.validatorAddress = builder.validatorAddress; + this.endDate = builder.endDate; } public String getAmount() { @@ -61,11 +69,21 @@ public void setValidatorAddress(String validatorAddress) { this.validatorAddress = validatorAddress; } + public String getEndDate() { + return endDate; + } + + public void setEndDate(String endDate) { + this.endDate = endDate; + } + public static class Builder { private String amount; private String validatorAddress; + private String endDate; + public Builder amount(String amount) { this.amount = amount; return this; @@ -76,6 +94,11 @@ public Builder validatorAddress(String validatorAddress) { return this; } + public Builder endDate(String endDate) { + this.endDate = endDate; + return this; + } + public WalletStakeInputs build() { return new WalletStakeInputs(this); } diff --git a/src/main/java/com/coinbase/prime/model/WalletUnstakeInputs.java b/src/main/java/com/coinbase/prime/model/WalletUnstakeInputs.java index 4817ca73..bec0fee4 100644 --- a/src/main/java/com/coinbase/prime/model/WalletUnstakeInputs.java +++ b/src/main/java/com/coinbase/prime/model/WalletUnstakeInputs.java @@ -40,11 +40,16 @@ public class WalletUnstakeInputs { @JsonProperty("validator_allocations") private List validatorAllocations; + /** Optional validator address to unstake from. Only supported for a subset of protocols. */ + @JsonProperty("validator_address") + private String validatorAddress; + public WalletUnstakeInputs() {} public WalletUnstakeInputs(Builder builder) { this.amount = builder.amount; this.validatorAllocations = builder.validatorAllocations; + this.validatorAddress = builder.validatorAddress; } public String getAmount() { @@ -63,11 +68,21 @@ public void setValidatorAllocations(List validatorAllocatio this.validatorAllocations = validatorAllocations; } + public String getValidatorAddress() { + return validatorAddress; + } + + public void setValidatorAddress(String validatorAddress) { + this.validatorAddress = validatorAddress; + } + public static class Builder { private String amount; private List validatorAllocations; + private String validatorAddress; + public Builder amount(String amount) { this.amount = amount; return this; @@ -78,6 +93,11 @@ public Builder validatorAllocations(List validatorAllocatio return this; } + public Builder validatorAddress(String validatorAddress) { + this.validatorAddress = validatorAddress; + return this; + } + public WalletUnstakeInputs build() { return new WalletUnstakeInputs(this); } diff --git a/src/main/java/com/coinbase/prime/model/XMLiquidatedAsset.java b/src/main/java/com/coinbase/prime/model/XMLiquidatedAsset.java new file mode 100644 index 00000000..558012f9 --- /dev/null +++ b/src/main/java/com/coinbase/prime/model/XMLiquidatedAsset.java @@ -0,0 +1,134 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Do not edit the class manually. + */ + +package com.coinbase.prime.model; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** XMLiquidatedAsset provides per-asset detail for a liquidation */ +public class XMLiquidatedAsset { + /** Asset currency */ + private String asset; + + /** Amount (nominal) of the asset that has been liquidated */ + @JsonProperty("liquidated_amount") + private String liquidatedAmount; + + /** USD notional value of the liquidated amount */ + @JsonProperty("liquidated_notional") + private String liquidatedNotional; + + /** Amount (nominal) of the asset remaining to be liquidated */ + @JsonProperty("remaining_amount") + private String remainingAmount; + + /** USD notional value of the remaining amount */ + @JsonProperty("remaining_notional") + private String remainingNotional; + + public XMLiquidatedAsset() {} + + public XMLiquidatedAsset(Builder builder) { + this.asset = builder.asset; + this.liquidatedAmount = builder.liquidatedAmount; + this.liquidatedNotional = builder.liquidatedNotional; + this.remainingAmount = builder.remainingAmount; + this.remainingNotional = builder.remainingNotional; + } + + public String getAsset() { + return asset; + } + + public void setAsset(String asset) { + this.asset = asset; + } + + public String getLiquidatedAmount() { + return liquidatedAmount; + } + + public void setLiquidatedAmount(String liquidatedAmount) { + this.liquidatedAmount = liquidatedAmount; + } + + public String getLiquidatedNotional() { + return liquidatedNotional; + } + + public void setLiquidatedNotional(String liquidatedNotional) { + this.liquidatedNotional = liquidatedNotional; + } + + public String getRemainingAmount() { + return remainingAmount; + } + + public void setRemainingAmount(String remainingAmount) { + this.remainingAmount = remainingAmount; + } + + public String getRemainingNotional() { + return remainingNotional; + } + + public void setRemainingNotional(String remainingNotional) { + this.remainingNotional = remainingNotional; + } + + public static class Builder { + private String asset; + + private String liquidatedAmount; + + private String liquidatedNotional; + + private String remainingAmount; + + private String remainingNotional; + + public Builder asset(String asset) { + this.asset = asset; + return this; + } + + public Builder liquidatedAmount(String liquidatedAmount) { + this.liquidatedAmount = liquidatedAmount; + return this; + } + + public Builder liquidatedNotional(String liquidatedNotional) { + this.liquidatedNotional = liquidatedNotional; + return this; + } + + public Builder remainingAmount(String remainingAmount) { + this.remainingAmount = remainingAmount; + return this; + } + + public Builder remainingNotional(String remainingNotional) { + this.remainingNotional = remainingNotional; + return this; + } + + public XMLiquidatedAsset build() { + return new XMLiquidatedAsset(this); + } + } +} diff --git a/src/main/java/com/coinbase/prime/model/XMLiquidationDetail.java b/src/main/java/com/coinbase/prime/model/XMLiquidationDetail.java new file mode 100644 index 00000000..6be1d158 --- /dev/null +++ b/src/main/java/com/coinbase/prime/model/XMLiquidationDetail.java @@ -0,0 +1,243 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Do not edit the class manually. + */ + +package com.coinbase.prime.model; + +import com.coinbase.prime.model.enums.XMLiquidationStatus; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.time.OffsetDateTime; +import java.util.List; + +/** XMLiquidationDetail provides detailed information about a single XM liquidation */ +public class XMLiquidationDetail { + /** Financing liquidation UUID */ + @JsonProperty("liquidation_id") + private String liquidationId; + + /** + * - XM_LIQUIDATION_STATUS_PRE_LIQUIDATION: Liquidation is in the pre-liquidation phase - + * XM_LIQUIDATION_STATUS_LIQUIDATING: Liquidation is actively in progress - + * XM_LIQUIDATION_STATUS_LIQUIDATED: Liquidation has completed successfully - + * XM_LIQUIDATION_STATUS_CANCELED: Liquidation was canceled - XM_LIQUIDATION_STATUS_FAILED: + * Liquidation failed + */ + private XMLiquidationStatus status; + + /** USD notional shortfall amount that triggered the liquidation */ + @JsonProperty("shortfall_amount") + private String shortfallAmount; + + /** Timestamp when the pre-liquidation phase started */ + @JsonProperty("pre_liquidation_start_time") + private OffsetDateTime preLiquidationStartTime; + + /** XMSummary is the realtime evaluated XM margin model, containing positions and netting info */ + @JsonProperty("margin_summary") + private XMSummary marginSummary; + + /** Timestamp when active liquidation started */ + @JsonProperty("liquidation_start_time") + private OffsetDateTime liquidationStartTime; + + /** USD notional amount that has been filled so far */ + @JsonProperty("filled_amount") + private String filledAmount; + + /** USD notional amount remaining to be liquidated */ + @JsonProperty("remaining_amount") + private String remainingAmount; + + /** Timestamp when the liquidation finished */ + @JsonProperty("liquidation_finish_time") + private OffsetDateTime liquidationFinishTime; + + /** Per-asset breakdown of liquidated amounts */ + @JsonProperty("asset_breakdown") + private List assetBreakdown; + + public XMLiquidationDetail() {} + + public XMLiquidationDetail(Builder builder) { + this.liquidationId = builder.liquidationId; + this.status = builder.status; + this.shortfallAmount = builder.shortfallAmount; + this.preLiquidationStartTime = builder.preLiquidationStartTime; + this.marginSummary = builder.marginSummary; + this.liquidationStartTime = builder.liquidationStartTime; + this.filledAmount = builder.filledAmount; + this.remainingAmount = builder.remainingAmount; + this.liquidationFinishTime = builder.liquidationFinishTime; + this.assetBreakdown = builder.assetBreakdown; + } + + public String getLiquidationId() { + return liquidationId; + } + + public void setLiquidationId(String liquidationId) { + this.liquidationId = liquidationId; + } + + public XMLiquidationStatus getStatus() { + return status; + } + + public void setStatus(XMLiquidationStatus status) { + this.status = status; + } + + public String getShortfallAmount() { + return shortfallAmount; + } + + public void setShortfallAmount(String shortfallAmount) { + this.shortfallAmount = shortfallAmount; + } + + public OffsetDateTime getPreLiquidationStartTime() { + return preLiquidationStartTime; + } + + public void setPreLiquidationStartTime(OffsetDateTime preLiquidationStartTime) { + this.preLiquidationStartTime = preLiquidationStartTime; + } + + public XMSummary getMarginSummary() { + return marginSummary; + } + + public void setMarginSummary(XMSummary marginSummary) { + this.marginSummary = marginSummary; + } + + public OffsetDateTime getLiquidationStartTime() { + return liquidationStartTime; + } + + public void setLiquidationStartTime(OffsetDateTime liquidationStartTime) { + this.liquidationStartTime = liquidationStartTime; + } + + public String getFilledAmount() { + return filledAmount; + } + + public void setFilledAmount(String filledAmount) { + this.filledAmount = filledAmount; + } + + public String getRemainingAmount() { + return remainingAmount; + } + + public void setRemainingAmount(String remainingAmount) { + this.remainingAmount = remainingAmount; + } + + public OffsetDateTime getLiquidationFinishTime() { + return liquidationFinishTime; + } + + public void setLiquidationFinishTime(OffsetDateTime liquidationFinishTime) { + this.liquidationFinishTime = liquidationFinishTime; + } + + public List getAssetBreakdown() { + return assetBreakdown; + } + + public void setAssetBreakdown(List assetBreakdown) { + this.assetBreakdown = assetBreakdown; + } + + public static class Builder { + private String liquidationId; + + private XMLiquidationStatus status; + + private String shortfallAmount; + + private OffsetDateTime preLiquidationStartTime; + + private XMSummary marginSummary; + + private OffsetDateTime liquidationStartTime; + + private String filledAmount; + + private String remainingAmount; + + private OffsetDateTime liquidationFinishTime; + + private List assetBreakdown; + + public Builder liquidationId(String liquidationId) { + this.liquidationId = liquidationId; + return this; + } + + public Builder status(XMLiquidationStatus status) { + this.status = status; + return this; + } + + public Builder shortfallAmount(String shortfallAmount) { + this.shortfallAmount = shortfallAmount; + return this; + } + + public Builder preLiquidationStartTime(OffsetDateTime preLiquidationStartTime) { + this.preLiquidationStartTime = preLiquidationStartTime; + return this; + } + + public Builder marginSummary(XMSummary marginSummary) { + this.marginSummary = marginSummary; + return this; + } + + public Builder liquidationStartTime(OffsetDateTime liquidationStartTime) { + this.liquidationStartTime = liquidationStartTime; + return this; + } + + public Builder filledAmount(String filledAmount) { + this.filledAmount = filledAmount; + return this; + } + + public Builder remainingAmount(String remainingAmount) { + this.remainingAmount = remainingAmount; + return this; + } + + public Builder liquidationFinishTime(OffsetDateTime liquidationFinishTime) { + this.liquidationFinishTime = liquidationFinishTime; + return this; + } + + public Builder assetBreakdown(List assetBreakdown) { + this.assetBreakdown = assetBreakdown; + return this; + } + + public XMLiquidationDetail build() { + return new XMLiquidationDetail(this); + } + } +} diff --git a/src/main/java/com/coinbase/prime/model/XMLiquidationSummary.java b/src/main/java/com/coinbase/prime/model/XMLiquidationSummary.java new file mode 100644 index 00000000..97ffa79b --- /dev/null +++ b/src/main/java/com/coinbase/prime/model/XMLiquidationSummary.java @@ -0,0 +1,182 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Do not edit the class manually. + */ + +package com.coinbase.prime.model; + +import com.coinbase.prime.model.enums.XMLiquidationStatus; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.time.OffsetDateTime; + +/** XMLiquidationSummary provides a summary of a single XM liquidation */ +public class XMLiquidationSummary { + /** Financing liquidation UUID */ + @JsonProperty("liquidation_id") + private String liquidationId; + + /** + * - XM_LIQUIDATION_STATUS_PRE_LIQUIDATION: Liquidation is in the pre-liquidation phase - + * XM_LIQUIDATION_STATUS_LIQUIDATING: Liquidation is actively in progress - + * XM_LIQUIDATION_STATUS_LIQUIDATED: Liquidation has completed successfully - + * XM_LIQUIDATION_STATUS_CANCELED: Liquidation was canceled - XM_LIQUIDATION_STATUS_FAILED: + * Liquidation failed + */ + private XMLiquidationStatus status; + + /** USD notional shortfall amount that triggered the liquidation */ + @JsonProperty("shortfall_amount") + private String shortfallAmount; + + /** USD notional amount that has been filled so far */ + @JsonProperty("filled_amount") + private String filledAmount; + + /** USD notional amount remaining to be liquidated */ + @JsonProperty("remaining_amount") + private String remainingAmount; + + /** Timestamp when the liquidation was created */ + @JsonProperty("created_at") + private OffsetDateTime createdAt; + + /** Timestamp when the liquidation was completed */ + @JsonProperty("completed_at") + private OffsetDateTime completedAt; + + public XMLiquidationSummary() {} + + public XMLiquidationSummary(Builder builder) { + this.liquidationId = builder.liquidationId; + this.status = builder.status; + this.shortfallAmount = builder.shortfallAmount; + this.filledAmount = builder.filledAmount; + this.remainingAmount = builder.remainingAmount; + this.createdAt = builder.createdAt; + this.completedAt = builder.completedAt; + } + + public String getLiquidationId() { + return liquidationId; + } + + public void setLiquidationId(String liquidationId) { + this.liquidationId = liquidationId; + } + + public XMLiquidationStatus getStatus() { + return status; + } + + public void setStatus(XMLiquidationStatus status) { + this.status = status; + } + + public String getShortfallAmount() { + return shortfallAmount; + } + + public void setShortfallAmount(String shortfallAmount) { + this.shortfallAmount = shortfallAmount; + } + + public String getFilledAmount() { + return filledAmount; + } + + public void setFilledAmount(String filledAmount) { + this.filledAmount = filledAmount; + } + + public String getRemainingAmount() { + return remainingAmount; + } + + public void setRemainingAmount(String remainingAmount) { + this.remainingAmount = remainingAmount; + } + + public OffsetDateTime getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(OffsetDateTime createdAt) { + this.createdAt = createdAt; + } + + public OffsetDateTime getCompletedAt() { + return completedAt; + } + + public void setCompletedAt(OffsetDateTime completedAt) { + this.completedAt = completedAt; + } + + public static class Builder { + private String liquidationId; + + private XMLiquidationStatus status; + + private String shortfallAmount; + + private String filledAmount; + + private String remainingAmount; + + private OffsetDateTime createdAt; + + private OffsetDateTime completedAt; + + public Builder liquidationId(String liquidationId) { + this.liquidationId = liquidationId; + return this; + } + + public Builder status(XMLiquidationStatus status) { + this.status = status; + return this; + } + + public Builder shortfallAmount(String shortfallAmount) { + this.shortfallAmount = shortfallAmount; + return this; + } + + public Builder filledAmount(String filledAmount) { + this.filledAmount = filledAmount; + return this; + } + + public Builder remainingAmount(String remainingAmount) { + this.remainingAmount = remainingAmount; + return this; + } + + public Builder createdAt(OffsetDateTime createdAt) { + this.createdAt = createdAt; + return this; + } + + public Builder completedAt(OffsetDateTime completedAt) { + this.completedAt = completedAt; + return this; + } + + public XMLiquidationSummary build() { + return new XMLiquidationSummary(this); + } + } +} diff --git a/src/main/java/com/coinbase/prime/model/enums/AddressBookType.java b/src/main/java/com/coinbase/prime/model/enums/AddressBookType.java index 07b0e264..d0c5c7cf 100644 --- a/src/main/java/com/coinbase/prime/model/enums/AddressBookType.java +++ b/src/main/java/com/coinbase/prime/model/enums/AddressBookType.java @@ -19,7 +19,6 @@ package com.coinbase.prime.model.enums; public enum AddressBookType { - ADDRESS_BOOK_TYPE_UNSPECIFIED, ADDRESS_BOOK_TYPE_ADDRESS, ADDRESS_BOOK_TYPE_COUNTERPARTY_ID } diff --git a/src/main/java/com/coinbase/prime/model/enums/AllocationStatus.java b/src/main/java/com/coinbase/prime/model/enums/AllocationStatus.java index 7e6c6a6d..69128f2b 100644 --- a/src/main/java/com/coinbase/prime/model/enums/AllocationStatus.java +++ b/src/main/java/com/coinbase/prime/model/enums/AllocationStatus.java @@ -19,7 +19,6 @@ package com.coinbase.prime.model.enums; public enum AllocationStatus { - ALLOCATION_STATUS_UNSPECIFIED, ALLOCATION_STATUS_ALLOCATION_PENDING, ALLOCATION_STATUS_ALLOCATION_ACCEPTED, ALLOCATION_STATUS_ALLOCATION_ALLOCATED, diff --git a/src/main/java/com/coinbase/prime/model/enums/Benchmark.java b/src/main/java/com/coinbase/prime/model/enums/Benchmark.java index ac8a6463..8d1f6862 100644 --- a/src/main/java/com/coinbase/prime/model/enums/Benchmark.java +++ b/src/main/java/com/coinbase/prime/model/enums/Benchmark.java @@ -19,7 +19,6 @@ package com.coinbase.prime.model.enums; public enum Benchmark { - BENCHMARK_UNSET, ZERO, SOFR_360, SOFR_365, diff --git a/src/main/java/com/coinbase/prime/model/enums/BetaRewardsRateTierType.java b/src/main/java/com/coinbase/prime/model/enums/BetaRewardsRateTierType.java new file mode 100644 index 00000000..3044d3c9 --- /dev/null +++ b/src/main/java/com/coinbase/prime/model/enums/BetaRewardsRateTierType.java @@ -0,0 +1,25 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Do not edit the class manually. + */ + +package com.coinbase.prime.model.enums; + +public enum BetaRewardsRateTierType { + REWARDS_RATE_TIER_TYPE_BALANCE, + REWARDS_RATE_TIER_TYPE_OPEN_INTEREST, + REWARDS_RATE_TIER_TYPE_PERCENT_VOLUME +} diff --git a/src/main/java/com/coinbase/prime/model/enums/ContractExpiryType.java b/src/main/java/com/coinbase/prime/model/enums/ContractExpiryType.java index d38db0b3..126194d7 100644 --- a/src/main/java/com/coinbase/prime/model/enums/ContractExpiryType.java +++ b/src/main/java/com/coinbase/prime/model/enums/ContractExpiryType.java @@ -24,8 +24,6 @@ * Perpetual futures contract (no expiry) */ public enum ContractExpiryType { - /** Unspecified contract expiry type */ - CONTRACT_EXPIRY_TYPE_UNSPECIFIED, /** Expiring futures contract */ CONTRACT_EXPIRY_TYPE_EXPIRING, /** Perpetual futures contract (no expiry) */ diff --git a/src/main/java/com/coinbase/prime/model/enums/DerivativeProductType.java b/src/main/java/com/coinbase/prime/model/enums/DerivativeProductType.java new file mode 100644 index 00000000..64ef1d16 --- /dev/null +++ b/src/main/java/com/coinbase/prime/model/enums/DerivativeProductType.java @@ -0,0 +1,50 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Do not edit the class manually. + */ + +package com.coinbase.prime.model.enums; + +/** + * The general type of a derivative product. - DERIVATIVE_PRODUCT_TYPE_UNSPECIFIED: Unknown product + * type. - DERIVATIVE_PRODUCT_TYPE_SPOT: Spot product. - DERIVATIVE_PRODUCT_TYPE_FUTURE: Future + * product. - DERIVATIVE_PRODUCT_TYPE_EQUITY: Equity product. - + * DERIVATIVE_PRODUCT_TYPE_PREDICTION_MARKET: Prediction market product. - + * DERIVATIVE_PRODUCT_TYPE_OPTION: Option product. - DERIVATIVE_PRODUCT_TYPE_BASIS: Basis product. - + * DERIVATIVE_PRODUCT_TYPE_EQUITY_OPTION: Equity option product. - + * DERIVATIVE_PRODUCT_TYPE_FUTURE_COMBO: Future combo product. - + * DERIVATIVE_PRODUCT_TYPE_OPTION_COMBO: Option combo product. + */ +public enum DerivativeProductType { + /** Spot product. */ + DERIVATIVE_PRODUCT_TYPE_SPOT, + /** Future product. */ + DERIVATIVE_PRODUCT_TYPE_FUTURE, + /** Equity product. */ + DERIVATIVE_PRODUCT_TYPE_EQUITY, + /** Prediction market product. */ + DERIVATIVE_PRODUCT_TYPE_PREDICTION_MARKET, + /** Option product. */ + DERIVATIVE_PRODUCT_TYPE_OPTION, + /** Basis product. */ + DERIVATIVE_PRODUCT_TYPE_BASIS, + /** Equity option product. */ + DERIVATIVE_PRODUCT_TYPE_EQUITY_OPTION, + /** Future combo product. */ + DERIVATIVE_PRODUCT_TYPE_FUTURE_COMBO, + /** Option combo product. */ + DERIVATIVE_PRODUCT_TYPE_OPTION_COMBO +} diff --git a/src/main/java/com/coinbase/prime/model/enums/EstimateType.java b/src/main/java/com/coinbase/prime/model/enums/EstimateType.java index 5f229840..43e96af4 100644 --- a/src/main/java/com/coinbase/prime/model/enums/EstimateType.java +++ b/src/main/java/com/coinbase/prime/model/enums/EstimateType.java @@ -19,7 +19,6 @@ package com.coinbase.prime.model.enums; public enum EstimateType { - UNSPECIFIED, LIVE, INTERIM } diff --git a/src/main/java/com/coinbase/prime/model/enums/FcmMarginCallState.java b/src/main/java/com/coinbase/prime/model/enums/FcmMarginCallState.java index 0899ba48..72ea5bb6 100644 --- a/src/main/java/com/coinbase/prime/model/enums/FcmMarginCallState.java +++ b/src/main/java/com/coinbase/prime/model/enums/FcmMarginCallState.java @@ -19,7 +19,6 @@ package com.coinbase.prime.model.enums; public enum FcmMarginCallState { - FCM_MARGIN_CALL_STATE_UNSPECIFIED, FCM_MARGIN_CALL_STATE_CLOSED, FCM_MARGIN_CALL_STATE_ROLLED_OVER, FCM_MARGIN_CALL_STATE_DEFAULT, diff --git a/src/main/java/com/coinbase/prime/model/enums/FcmMarginCallType.java b/src/main/java/com/coinbase/prime/model/enums/FcmMarginCallType.java index faf6005e..1f652abc 100644 --- a/src/main/java/com/coinbase/prime/model/enums/FcmMarginCallType.java +++ b/src/main/java/com/coinbase/prime/model/enums/FcmMarginCallType.java @@ -19,7 +19,6 @@ package com.coinbase.prime.model.enums; public enum FcmMarginCallType { - FCM_MARGIN_CALL_TYPE_UNSPECIFIED, FCM_MARGIN_CALL_TYPE_URGENT, FCM_MARGIN_CALL_TYPE_REGULAR } diff --git a/src/main/java/com/coinbase/prime/model/enums/FcmMarginHealthState.java b/src/main/java/com/coinbase/prime/model/enums/FcmMarginHealthState.java index 8a79aa63..d8203355 100644 --- a/src/main/java/com/coinbase/prime/model/enums/FcmMarginHealthState.java +++ b/src/main/java/com/coinbase/prime/model/enums/FcmMarginHealthState.java @@ -26,8 +26,6 @@ * FCM_MARGIN_HEALTH_STATE_LIQUIDATION: Account is in liquidation. */ public enum FcmMarginHealthState { - /** Unspecified margin health state. */ - FCM_MARGIN_HEALTH_STATE_UNSPECIFIED, /** Account margin is healthy. */ FCM_MARGIN_HEALTH_STATE_HEALTHY, /** Account margin is restricted. */ diff --git a/src/main/java/com/coinbase/prime/model/enums/FcmPositionSide.java b/src/main/java/com/coinbase/prime/model/enums/FcmPositionSide.java index 5e6cb96f..d6825c27 100644 --- a/src/main/java/com/coinbase/prime/model/enums/FcmPositionSide.java +++ b/src/main/java/com/coinbase/prime/model/enums/FcmPositionSide.java @@ -19,7 +19,6 @@ package com.coinbase.prime.model.enums; public enum FcmPositionSide { - FCM_POSITION_SIDE_UNSPECIFIED, LONG, SHORT } diff --git a/src/main/java/com/coinbase/prime/model/enums/FcmTradingSessionClosedReason.java b/src/main/java/com/coinbase/prime/model/enums/FcmTradingSessionClosedReason.java index 9055adc2..1990a227 100644 --- a/src/main/java/com/coinbase/prime/model/enums/FcmTradingSessionClosedReason.java +++ b/src/main/java/com/coinbase/prime/model/enums/FcmTradingSessionClosedReason.java @@ -25,8 +25,6 @@ * FCM_TRADING_SESSION_CLOSED_REASON_VENDOR_MAINTENANCE: Vendor maintenance */ public enum FcmTradingSessionClosedReason { - /** Undefined closed reason */ - FCM_TRADING_SESSION_CLOSED_REASON_UNDEFINED, /** Regular market close */ FCM_TRADING_SESSION_CLOSED_REASON_REGULAR_MARKET_CLOSE, /** Exchange maintenance */ diff --git a/src/main/java/com/coinbase/prime/model/enums/FcmTradingSessionState.java b/src/main/java/com/coinbase/prime/model/enums/FcmTradingSessionState.java index 727051cb..5f17524e 100644 --- a/src/main/java/com/coinbase/prime/model/enums/FcmTradingSessionState.java +++ b/src/main/java/com/coinbase/prime/model/enums/FcmTradingSessionState.java @@ -26,8 +26,6 @@ * Trading session is closed - FCM_TRADING_SESSION_STATE_HALTED: Trading session is halted */ public enum FcmTradingSessionState { - /** Undefined session state */ - FCM_TRADING_SESSION_STATE_UNDEFINED, /** Pre-open state, orders can be placed and cancelled */ FCM_TRADING_SESSION_STATE_PRE_OPEN, /** Pre-open state, orders cannot be cancelled */ diff --git a/src/main/java/com/coinbase/prime/model/enums/FuturesSweepStatus.java b/src/main/java/com/coinbase/prime/model/enums/FuturesSweepStatus.java index 49152e0a..976d6b32 100644 --- a/src/main/java/com/coinbase/prime/model/enums/FuturesSweepStatus.java +++ b/src/main/java/com/coinbase/prime/model/enums/FuturesSweepStatus.java @@ -19,7 +19,6 @@ package com.coinbase.prime.model.enums; public enum FuturesSweepStatus { - FCM_FUTURES_SWEEP_STATUS_UNSPECIFIED, FCM_FUTURES_SWEEP_STATUS_PENDING, FCM_FUTURES_SWEEP_STATUS_CLOSED, FCM_FUTURES_SWEEP_STATUS_CANCELED, diff --git a/src/main/java/com/coinbase/prime/model/enums/HierarchyType.java b/src/main/java/com/coinbase/prime/model/enums/HierarchyType.java index 80af7a66..9fccde5b 100644 --- a/src/main/java/com/coinbase/prime/model/enums/HierarchyType.java +++ b/src/main/java/com/coinbase/prime/model/enums/HierarchyType.java @@ -23,7 +23,6 @@ * Portfolio */ public enum HierarchyType { - HIERARCHY_TYPE_UNSPECIFIED, HIERARCHY_TYPE_PORTFOLIO, HIERARCHY_TYPE_ENTITY } diff --git a/src/main/java/com/coinbase/prime/model/enums/InvoiceState.java b/src/main/java/com/coinbase/prime/model/enums/InvoiceState.java index a4f14904..b56c0fba 100644 --- a/src/main/java/com/coinbase/prime/model/enums/InvoiceState.java +++ b/src/main/java/com/coinbase/prime/model/enums/InvoiceState.java @@ -20,7 +20,6 @@ /** States */ public enum InvoiceState { - INVOICE_STATE_UNSPECIFIED, INVOICE_STATE_IMPORTED, INVOICE_STATE_BILLED, INVOICE_STATE_PARTIALLY_PAID, diff --git a/src/main/java/com/coinbase/prime/model/enums/InvoiceType.java b/src/main/java/com/coinbase/prime/model/enums/InvoiceType.java index f69fc41e..f9fae8f1 100644 --- a/src/main/java/com/coinbase/prime/model/enums/InvoiceType.java +++ b/src/main/java/com/coinbase/prime/model/enums/InvoiceType.java @@ -20,7 +20,6 @@ /** Types */ public enum InvoiceType { - INVOICE_TYPE_UNSPECIFIED, INVOICE_TYPE_AUC_FEE, INVOICE_TYPE_MINIMUM_FEE, INVOICE_TYPE_WITHDRAWAL_FEE, diff --git a/src/main/java/com/coinbase/prime/model/enums/LoanType.java b/src/main/java/com/coinbase/prime/model/enums/LoanType.java index b93f60eb..c8b0c65b 100644 --- a/src/main/java/com/coinbase/prime/model/enums/LoanType.java +++ b/src/main/java/com/coinbase/prime/model/enums/LoanType.java @@ -19,7 +19,6 @@ package com.coinbase.prime.model.enums; public enum LoanType { - LOAN_TYPE_UNSET, BILATERAL_LENDING, TRADE_FINANCE, PORTFOLIO_MARGIN, diff --git a/src/main/java/com/coinbase/prime/model/enums/MarginAddOnType.java b/src/main/java/com/coinbase/prime/model/enums/MarginAddOnType.java index 691d526a..d03a5f81 100644 --- a/src/main/java/com/coinbase/prime/model/enums/MarginAddOnType.java +++ b/src/main/java/com/coinbase/prime/model/enums/MarginAddOnType.java @@ -19,7 +19,6 @@ package com.coinbase.prime.model.enums; public enum MarginAddOnType { - MARGIN_ADD_ON_TYPE_UNSPECIFIED, SINGLE_COIN_STRESS, CONCENTRATION_STRESS, MACRO_STRESS, diff --git a/src/main/java/com/coinbase/prime/model/enums/NetworkFamily.java b/src/main/java/com/coinbase/prime/model/enums/NetworkFamily.java index 929cad84..6fa01183 100644 --- a/src/main/java/com/coinbase/prime/model/enums/NetworkFamily.java +++ b/src/main/java/com/coinbase/prime/model/enums/NetworkFamily.java @@ -19,7 +19,6 @@ package com.coinbase.prime.model.enums; public enum NetworkFamily { - NETWORK_FAMILY_UNSPECIFIED, NETWORK_FAMILY_EVM, NETWORK_FAMILY_SOLANA } diff --git a/src/main/java/com/coinbase/prime/model/enums/NetworkType.java b/src/main/java/com/coinbase/prime/model/enums/NetworkType.java index 64801206..cd25f39e 100644 --- a/src/main/java/com/coinbase/prime/model/enums/NetworkType.java +++ b/src/main/java/com/coinbase/prime/model/enums/NetworkType.java @@ -19,7 +19,6 @@ package com.coinbase.prime.model.enums; public enum NetworkType { - NETWORK_TYPE_UNSPECIFIED, NETWORK_TYPE_EVM, NETWORK_TYPE_SOLANA } diff --git a/src/main/java/com/coinbase/prime/model/enums/OptionType.java b/src/main/java/com/coinbase/prime/model/enums/OptionType.java new file mode 100644 index 00000000..a6e99006 --- /dev/null +++ b/src/main/java/com/coinbase/prime/model/enums/OptionType.java @@ -0,0 +1,30 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Do not edit the class manually. + */ + +package com.coinbase.prime.model.enums; + +/** + * The type of an option position. - OPTION_TYPE_UNSPECIFIED: Unspecified option type. - + * OPTION_TYPE_CALL: Call option. - OPTION_TYPE_PUT: Put option. + */ +public enum OptionType { + /** Call option. */ + OPTION_TYPE_CALL, + /** Put option. */ + OPTION_TYPE_PUT +} diff --git a/src/main/java/com/coinbase/prime/model/enums/PositionReferenceType.java b/src/main/java/com/coinbase/prime/model/enums/PositionReferenceType.java index 5cecbb68..5374abc5 100644 --- a/src/main/java/com/coinbase/prime/model/enums/PositionReferenceType.java +++ b/src/main/java/com/coinbase/prime/model/enums/PositionReferenceType.java @@ -19,7 +19,6 @@ package com.coinbase.prime.model.enums; public enum PositionReferenceType { - POSITION_REFERENCE_TYPE_UNSPECIFIED, ENTITY, PORTFOLIO } diff --git a/src/main/java/com/coinbase/prime/model/enums/PrimeXMControlStatus.java b/src/main/java/com/coinbase/prime/model/enums/PrimeXMControlStatus.java index 84ce0ea8..a42b8396 100644 --- a/src/main/java/com/coinbase/prime/model/enums/PrimeXMControlStatus.java +++ b/src/main/java/com/coinbase/prime/model/enums/PrimeXMControlStatus.java @@ -26,7 +26,6 @@ * Margin Methodology for full description of when trading and withdrawals are enabled or disabled. */ public enum PrimeXMControlStatus { - XM_CONTROL_STATUS_UNSPECIFIED, /** * Allowed to trade and withdraw. See XM Margin Methodology for full description of when trading * and withdrawals are enabled or disabled. diff --git a/src/main/java/com/coinbase/prime/model/enums/PrimeXMMarginLevel.java b/src/main/java/com/coinbase/prime/model/enums/PrimeXMMarginLevel.java index f154024f..0155669a 100644 --- a/src/main/java/com/coinbase/prime/model/enums/PrimeXMMarginLevel.java +++ b/src/main/java/com/coinbase/prime/model/enums/PrimeXMMarginLevel.java @@ -32,7 +32,6 @@ * may commence. */ public enum PrimeXMMarginLevel { - XM_MARGIN_LEVEL_UNSPECIFIED, /** Margin level is healthy */ HEALTHY_THRESHOLD, /** diff --git a/src/main/java/com/coinbase/prime/model/enums/PrimeXMMarginRequirementType.java b/src/main/java/com/coinbase/prime/model/enums/PrimeXMMarginRequirementType.java index bb8f79c6..25837256 100644 --- a/src/main/java/com/coinbase/prime/model/enums/PrimeXMMarginRequirementType.java +++ b/src/main/java/com/coinbase/prime/model/enums/PrimeXMMarginRequirementType.java @@ -25,7 +25,6 @@ * (IFMR). */ public enum PrimeXMMarginRequirementType { - MARGIN_REQUIREMENT_TYPE_UNSPECIFIED, /** Integrated (netted) cross-margin requirement for spot assets and all derivatives contracts. */ MARGIN_REQUIREMENT_TYPE_DMR_PLUS_PMR, /** diff --git a/src/main/java/com/coinbase/prime/model/enums/PrimeXMMarginThresholdType.java b/src/main/java/com/coinbase/prime/model/enums/PrimeXMMarginThresholdType.java index 28dfd3e0..aae4b06f 100644 --- a/src/main/java/com/coinbase/prime/model/enums/PrimeXMMarginThresholdType.java +++ b/src/main/java/com/coinbase/prime/model/enums/PrimeXMMarginThresholdType.java @@ -24,7 +24,6 @@ * / XMML; triggers when (MR - EQ) / XMML > threshold_value. */ public enum PrimeXMMarginThresholdType { - MARGIN_THRESHOLD_TYPE_UNSPECIFIED, /** Threshold based on equity ratio EQ / MR; triggers when EQ / MR >= threshold_value. */ MARGIN_THRESHOLD_EQUITY_RATIO, /** diff --git a/src/main/java/com/coinbase/prime/model/enums/ProductType.java b/src/main/java/com/coinbase/prime/model/enums/ProductType.java index 4a3a454d..8d487c22 100644 --- a/src/main/java/com/coinbase/prime/model/enums/ProductType.java +++ b/src/main/java/com/coinbase/prime/model/enums/ProductType.java @@ -18,10 +18,15 @@ package com.coinbase.prime.model.enums; -/** - UNKNOWN_PRODUCT_TYPE: Unknown product type - SPOT: Spot product - FUTURE: Future product */ +/** + * - UNKNOWN_PRODUCT_TYPE: Unknown product type - SPOT: Spot product - FUTURE: Future product - + * OPTION: Option product + */ public enum ProductType { /** Spot product */ SPOT, /** Future product */ - FUTURE + FUTURE, + /** Option product */ + OPTION } diff --git a/src/main/java/com/coinbase/prime/model/enums/RateType.java b/src/main/java/com/coinbase/prime/model/enums/RateType.java index 4def4974..0c9c163c 100644 --- a/src/main/java/com/coinbase/prime/model/enums/RateType.java +++ b/src/main/java/com/coinbase/prime/model/enums/RateType.java @@ -19,7 +19,6 @@ package com.coinbase.prime.model.enums; public enum RateType { - RATE_TYPE_UNSET, BPS, APR_360, APR_365, diff --git a/src/main/java/com/coinbase/prime/model/enums/RiskManagementType.java b/src/main/java/com/coinbase/prime/model/enums/RiskManagementType.java index 15d8f96b..34b5115c 100644 --- a/src/main/java/com/coinbase/prime/model/enums/RiskManagementType.java +++ b/src/main/java/com/coinbase/prime/model/enums/RiskManagementType.java @@ -24,8 +24,6 @@ * RISK_MANAGEMENT_TYPE_MANAGED_BY_VENUE: Risk is managed by the venue */ public enum RiskManagementType { - /** Unspecified risk management type */ - RISK_MANAGEMENT_TYPE_UNSPECIFIED, /** Risk is managed by FCM (Futures Commission Merchant) */ RISK_MANAGEMENT_TYPE_MANAGED_BY_FCM, /** Risk is managed by the venue */ diff --git a/src/main/java/com/coinbase/prime/model/enums/SettlementModel.java b/src/main/java/com/coinbase/prime/model/enums/SettlementModel.java new file mode 100644 index 00000000..0c048688 --- /dev/null +++ b/src/main/java/com/coinbase/prime/model/enums/SettlementModel.java @@ -0,0 +1,30 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Do not edit the class manually. + */ + +package com.coinbase.prime.model.enums; + +/** + * - SETTLEMENT_MODEL_UNSPECIFIED: Unspecified settlement model - SETTLEMENT_MODEL_LINEAR: Settles + * in the quote currency - SETTLEMENT_MODEL_INVERSE: Settles in the base currency + */ +public enum SettlementModel { + /** Settles in the quote currency */ + SETTLEMENT_MODEL_LINEAR, + /** Settles in the base currency */ + SETTLEMENT_MODEL_INVERSE +} diff --git a/src/main/java/com/coinbase/prime/model/enums/SettlementPeriod.java b/src/main/java/com/coinbase/prime/model/enums/SettlementPeriod.java new file mode 100644 index 00000000..9faa521d --- /dev/null +++ b/src/main/java/com/coinbase/prime/model/enums/SettlementPeriod.java @@ -0,0 +1,35 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Do not edit the class manually. + */ + +package com.coinbase.prime.model.enums; + +/** + * - SETTLEMENT_PERIOD_UNSPECIFIED: Unspecified settlement period - SETTLEMENT_PERIOD_PERPETUAL: + * Contract never expires - SETTLEMENT_PERIOD_DAY: Contract expires daily - SETTLEMENT_PERIOD_WEEK: + * Contract expires weekly - SETTLEMENT_PERIOD_MONTH: Contract expires monthly + */ +public enum SettlementPeriod { + /** Contract never expires */ + SETTLEMENT_PERIOD_PERPETUAL, + /** Contract expires daily */ + SETTLEMENT_PERIOD_DAY, + /** Contract expires weekly */ + SETTLEMENT_PERIOD_WEEK, + /** Contract expires monthly */ + SETTLEMENT_PERIOD_MONTH +} diff --git a/src/main/java/com/coinbase/prime/model/enums/StakeType.java b/src/main/java/com/coinbase/prime/model/enums/StakeType.java index 7b557a7a..78fb07cb 100644 --- a/src/main/java/com/coinbase/prime/model/enums/StakeType.java +++ b/src/main/java/com/coinbase/prime/model/enums/StakeType.java @@ -19,7 +19,6 @@ package com.coinbase.prime.model.enums; public enum StakeType { - STAKE_TYPE_UNSPECIFIED, STAKE_TYPE_INITIAL_DEPOSIT, STAKE_TYPE_TOP_UP } diff --git a/src/main/java/com/coinbase/prime/model/enums/TransactionType.java b/src/main/java/com/coinbase/prime/model/enums/TransactionType.java index 33446ae3..3ec80f1c 100644 --- a/src/main/java/com/coinbase/prime/model/enums/TransactionType.java +++ b/src/main/java/com/coinbase/prime/model/enums/TransactionType.java @@ -45,7 +45,9 @@ * transfer the reward claiming permission to other pubkey - WEB3_TRANSACTION: On-chain transaction * initiated with Prime Onchain Wallet Deprecated: Use ONCHAIN_TRANSACTION instead - * ONCHAIN_TRANSACTION: On-chain transaction initiated with Prime Onchain Wallet - PORTFOLIO_STAKE: - * Portfolio-level staking operation - PORTFOLIO_UNSTAKE: Portfolio-level unstaking operation + * Portfolio-level staking operation - PORTFOLIO_UNSTAKE: Portfolio-level unstaking operation - + * MERGE_STAKE: On-chain transaction consolidating funds from different addresses belonging to the + * same wallet. */ public enum TransactionType { /** A fiat or crypto deposit */ @@ -119,5 +121,9 @@ public enum TransactionType { /** Portfolio-level staking operation */ PORTFOLIO_STAKE, /** Portfolio-level unstaking operation */ - PORTFOLIO_UNSTAKE + PORTFOLIO_UNSTAKE, + /** + * On-chain transaction consolidating funds from different addresses belonging to the same wallet. + */ + MERGE_STAKE } diff --git a/src/main/java/com/coinbase/prime/model/enums/TravelRuleStatus.java b/src/main/java/com/coinbase/prime/model/enums/TravelRuleStatus.java index f5cdd05d..2a58d16a 100644 --- a/src/main/java/com/coinbase/prime/model/enums/TravelRuleStatus.java +++ b/src/main/java/com/coinbase/prime/model/enums/TravelRuleStatus.java @@ -20,7 +20,6 @@ /** Travel rule compliance status for a transaction */ public enum TravelRuleStatus { - TRAVEL_RULE_STATUS_UNSPECIFIED, TRAVEL_RULE_STATUS_PENDING, TRAVEL_RULE_STATUS_SUBMITTED } diff --git a/src/main/java/com/coinbase/prime/model/enums/TravelRuleWalletType.java b/src/main/java/com/coinbase/prime/model/enums/TravelRuleWalletType.java index 3cebb9fc..39a4d7a1 100644 --- a/src/main/java/com/coinbase/prime/model/enums/TravelRuleWalletType.java +++ b/src/main/java/com/coinbase/prime/model/enums/TravelRuleWalletType.java @@ -24,8 +24,6 @@ * TRAVEL_RULE_WALLET_TYPE_SELF_CUSTODIED: Self-hosted/custodial wallet */ public enum TravelRuleWalletType { - /** Default unspecified wallet type */ - TRAVEL_RULE_WALLET_TYPE_UNSPECIFIED, /** Centralized exchange wallet */ TRAVEL_RULE_WALLET_TYPE_VASP, /** Self-hosted/custodial wallet */ diff --git a/src/main/java/com/coinbase/prime/model/enums/UnstakeType.java b/src/main/java/com/coinbase/prime/model/enums/UnstakeType.java index 02b315aa..75fd7fe0 100644 --- a/src/main/java/com/coinbase/prime/model/enums/UnstakeType.java +++ b/src/main/java/com/coinbase/prime/model/enums/UnstakeType.java @@ -19,7 +19,6 @@ package com.coinbase.prime.model.enums; public enum UnstakeType { - UNSTAKE_TYPE_UNSPECIFIED, UNSTAKE_TYPE_PARTIAL, UNSTAKE_TYPE_FULL } diff --git a/src/main/java/com/coinbase/prime/model/enums/ValidatorProvider.java b/src/main/java/com/coinbase/prime/model/enums/ValidatorProvider.java index c1c1468d..15c5d4bb 100644 --- a/src/main/java/com/coinbase/prime/model/enums/ValidatorProvider.java +++ b/src/main/java/com/coinbase/prime/model/enums/ValidatorProvider.java @@ -18,14 +18,8 @@ package com.coinbase.prime.model.enums; -/** - * ValidatorProvider enumerates the ETH validator service providers that PPA accepts on - * PortfolioStakingUnstakeRequest.validator_provider. The enum names map 1:1 to the display names - * returned by ISS GetUsedValidators (service_provider field) and shown in the Prime UI. Keep in - * sync with staking/internal/asset/ethereum.mapServiceProviderToDisplayName. - */ +/** ValidatorProvider enumerates the ETH validator service providers accepted for unstaking. */ public enum ValidatorProvider { - VALIDATOR_PROVIDER_UNSPECIFIED, VALIDATOR_PROVIDER_COINBASE_CLOUD, VALIDATOR_PROVIDER_MAVAN, VALIDATOR_PROVIDER_FIGMENT, diff --git a/src/main/java/com/coinbase/prime/model/enums/ValidatorStatus.java b/src/main/java/com/coinbase/prime/model/enums/ValidatorStatus.java index ca906855..cde51d7e 100644 --- a/src/main/java/com/coinbase/prime/model/enums/ValidatorStatus.java +++ b/src/main/java/com/coinbase/prime/model/enums/ValidatorStatus.java @@ -19,7 +19,6 @@ package com.coinbase.prime.model.enums; public enum ValidatorStatus { - VALIDATOR_STATUS_UNSPECIFIED, VALIDATOR_STATUS_PENDING, VALIDATOR_STATUS_ACTIVE, VALIDATOR_STATUS_EXITING, diff --git a/src/main/java/com/coinbase/prime/model/enums/WalletVisibility.java b/src/main/java/com/coinbase/prime/model/enums/WalletVisibility.java index 1b3ac962..aaf23c00 100644 --- a/src/main/java/com/coinbase/prime/model/enums/WalletVisibility.java +++ b/src/main/java/com/coinbase/prime/model/enums/WalletVisibility.java @@ -19,7 +19,6 @@ package com.coinbase.prime.model.enums; public enum WalletVisibility { - WALLET_VISIBILITY_UNSPECIFIED, WALLET_VISIBILITY_VISIBLE, WALLET_VISIBILITY_HIDDEN } diff --git a/src/main/java/com/coinbase/prime/model/enums/XMCallStatus.java b/src/main/java/com/coinbase/prime/model/enums/XMCallStatus.java index 2882aeda..b6d06287 100644 --- a/src/main/java/com/coinbase/prime/model/enums/XMCallStatus.java +++ b/src/main/java/com/coinbase/prime/model/enums/XMCallStatus.java @@ -24,7 +24,6 @@ * Margin call was canceled by Credit Risk */ public enum XMCallStatus { - XM_CALL_STATUS_UNSPECIFIED, /** Margin call is open and not expired */ CALL_STATUS_OPEN, /** Margin call is open and it is expired */ diff --git a/src/main/java/com/coinbase/prime/model/enums/XMCallType.java b/src/main/java/com/coinbase/prime/model/enums/XMCallType.java index 90b01c88..39d6fbae 100644 --- a/src/main/java/com/coinbase/prime/model/enums/XMCallType.java +++ b/src/main/java/com/coinbase/prime/model/enums/XMCallType.java @@ -23,7 +23,6 @@ * Evaluated in realtime - CALL_TYPE_DEBIT: Evaluated at debit call evaluation time */ public enum XMCallType { - XM_CALL_TYPE_UNSPECIFIED, /** Evaluated at standard margin call evaluation time */ CALL_TYPE_STANDARD, /** Evaluated in realtime */ diff --git a/src/main/java/com/coinbase/prime/model/enums/XMControlStatus.java b/src/main/java/com/coinbase/prime/model/enums/XMControlStatus.java index cb90db08..6b5274f4 100644 --- a/src/main/java/com/coinbase/prime/model/enums/XMControlStatus.java +++ b/src/main/java/com/coinbase/prime/model/enums/XMControlStatus.java @@ -26,7 +26,6 @@ * Margin Methodology for full description of when trading and withdrawals are enabled or disabled. */ public enum XMControlStatus { - XM_CONTROL_STATUS_UNSPECIFIED, /** * Allowed to trade and withdraw. See XM Margin Methodology for full description of when trading * and withdrawals are enabled or disabled. diff --git a/src/main/java/com/coinbase/prime/model/enums/XMEntityCallStatus.java b/src/main/java/com/coinbase/prime/model/enums/XMEntityCallStatus.java index 5e9b3049..b242b09e 100644 --- a/src/main/java/com/coinbase/prime/model/enums/XMEntityCallStatus.java +++ b/src/main/java/com/coinbase/prime/model/enums/XMEntityCallStatus.java @@ -30,7 +30,6 @@ * debit call. There are no standard margin calls, urgent margin calls, or expired calls. */ public enum XMEntityCallStatus { - XM_ENTITY_CALL_STATUS_UNSPECIFIED, /** There are no margin calls or debit calls. */ ENTITY_NO_CALL, /** diff --git a/src/main/java/com/coinbase/prime/model/enums/XMLiquidationStatus.java b/src/main/java/com/coinbase/prime/model/enums/XMLiquidationStatus.java index d4286ce3..c5ca5724 100644 --- a/src/main/java/com/coinbase/prime/model/enums/XMLiquidationStatus.java +++ b/src/main/java/com/coinbase/prime/model/enums/XMLiquidationStatus.java @@ -26,7 +26,6 @@ * Liquidation failed */ public enum XMLiquidationStatus { - XM_LIQUIDATION_STATUS_UNSET, /** Liquidation is in the pre-liquidation phase */ XM_LIQUIDATION_STATUS_PRE_LIQUIDATION, /** Liquidation is actively in progress */ diff --git a/src/main/java/com/coinbase/prime/model/enums/XMMarginLevel.java b/src/main/java/com/coinbase/prime/model/enums/XMMarginLevel.java index 76d25bc9..3621d615 100644 --- a/src/main/java/com/coinbase/prime/model/enums/XMMarginLevel.java +++ b/src/main/java/com/coinbase/prime/model/enums/XMMarginLevel.java @@ -32,7 +32,6 @@ * may commence. */ public enum XMMarginLevel { - XM_MARGIN_LEVEL_UNSPECIFIED, /** Margin level is healthy */ HEALTHY_THRESHOLD, /** diff --git a/src/main/java/com/coinbase/prime/model/enums/XMParty.java b/src/main/java/com/coinbase/prime/model/enums/XMParty.java index 1155e6b2..b4efcc98 100644 --- a/src/main/java/com/coinbase/prime/model/enums/XMParty.java +++ b/src/main/java/com/coinbase/prime/model/enums/XMParty.java @@ -23,7 +23,6 @@ * Commission Merchant, trading venue that can receive the XM loan */ public enum XMParty { - XM_PARTY_UNSPECIFIED, /** Coinbase Exchange, trading venue that can receive the XM loan */ CBE, /** Coinbase’s Futures Commission Merchant, trading venue that can receive the XM loan */ diff --git a/src/main/java/com/coinbase/prime/orders/CreateOrderRequest.java b/src/main/java/com/coinbase/prime/orders/CreateOrderRequest.java index 96890571..0b12374f 100644 --- a/src/main/java/com/coinbase/prime/orders/CreateOrderRequest.java +++ b/src/main/java/com/coinbase/prime/orders/CreateOrderRequest.java @@ -115,6 +115,10 @@ public class CreateOrderRequest { @JsonProperty("is_raise_exact") private boolean isRaiseExact; + /** Buy Exact order flag */ + @JsonProperty("is_buy_exact") + private boolean isBuyExact; + /** Historical percentage of volume */ @JsonProperty("historical_pov") private String historicalPov; @@ -174,6 +178,7 @@ public CreateOrderRequest(Builder builder) { this.displayQuoteSize = builder.displayQuoteSize; this.displayBaseSize = builder.displayBaseSize; this.isRaiseExact = builder.isRaiseExact; + this.isBuyExact = builder.isBuyExact; this.historicalPov = builder.historicalPov; this.stopPrice = builder.stopPrice; this.settlCurrency = builder.settlCurrency; @@ -303,6 +308,14 @@ public void setRaiseExact(boolean isRaiseExact) { this.isRaiseExact = isRaiseExact; } + public boolean isBuyExact() { + return isBuyExact; + } + + public void setBuyExact(boolean isBuyExact) { + this.isBuyExact = isBuyExact; + } + public String getHistoricalPov() { return historicalPov; } @@ -375,6 +388,7 @@ public static class Builder { private String displayQuoteSize; private String displayBaseSize; private boolean isRaiseExact; + private boolean isBuyExact; private String historicalPov; private String stopPrice; private String settlCurrency; @@ -460,6 +474,11 @@ public Builder isRaiseExact(boolean isRaiseExact) { return this; } + public Builder isBuyExact(boolean isBuyExact) { + this.isBuyExact = isBuyExact; + return this; + } + public Builder historicalPov(String historicalPov) { this.historicalPov = historicalPov; return this; diff --git a/src/main/java/com/coinbase/prime/orders/GetOrderPreviewRequest.java b/src/main/java/com/coinbase/prime/orders/GetOrderPreviewRequest.java index f5ef3bbc..d2397609 100644 --- a/src/main/java/com/coinbase/prime/orders/GetOrderPreviewRequest.java +++ b/src/main/java/com/coinbase/prime/orders/GetOrderPreviewRequest.java @@ -62,6 +62,10 @@ public class GetOrderPreviewRequest { @JsonProperty("is_raise_exact") private Boolean isRaiseExact; + /** Buy Exact order flag */ + @JsonProperty("is_buy_exact") + private Boolean isBuyExact; + @JsonProperty("historical_pov") private String historicalPov; @@ -103,6 +107,7 @@ public GetOrderPreviewRequest(Builder builder) { this.expiryTime = builder.expiryTime; this.timeInForce = builder.timeInForce; this.isRaiseExact = builder.isRaiseExact; + this.isBuyExact = builder.isBuyExact; this.historicalPov = builder.historicalPov; this.stopPrice = builder.stopPrice; this.settlCurrency = builder.settlCurrency; @@ -202,6 +207,14 @@ public void setIsRaiseExact(Boolean isRaiseExact) { this.isRaiseExact = isRaiseExact; } + public Boolean getIsBuyExact() { + return isBuyExact; + } + + public void setIsBuyExact(Boolean isBuyExact) { + this.isBuyExact = isBuyExact; + } + public String getHistoricalPov() { return historicalPov; } @@ -286,6 +299,7 @@ public static class Builder { private String expiryTime; private TimeInForceType timeInForce; private Boolean isRaiseExact; + private Boolean isBuyExact; private String historicalPov; private String stopPrice; private String settlCurrency; @@ -353,6 +367,11 @@ public Builder isRaiseExact(Boolean isRaiseExact) { return this; } + public Builder isBuyExact(Boolean isBuyExact) { + this.isBuyExact = isBuyExact; + return this; + } + public Builder historicalPov(String historicalPov) { this.historicalPov = historicalPov; return this; diff --git a/src/main/java/com/coinbase/prime/orders/GetOrderPreviewResponse.java b/src/main/java/com/coinbase/prime/orders/GetOrderPreviewResponse.java index c737eef4..d84ef210 100644 --- a/src/main/java/com/coinbase/prime/orders/GetOrderPreviewResponse.java +++ b/src/main/java/com/coinbase/prime/orders/GetOrderPreviewResponse.java @@ -77,6 +77,10 @@ public class GetOrderPreviewResponse { @JsonProperty("is_raise_exact") private Boolean isRaiseExact; + /** Buy Exact order flag */ + @JsonProperty("is_buy_exact") + private Boolean isBuyExact; + @JsonProperty("stop_price") private String stopPrice; @@ -235,6 +239,14 @@ public void setIsRaiseExact(Boolean isRaiseExact) { this.isRaiseExact = isRaiseExact; } + public Boolean getIsBuyExact() { + return isBuyExact; + } + + public void setIsBuyExact(Boolean isBuyExact) { + this.isBuyExact = isBuyExact; + } + public String getStopPrice() { return stopPrice; } diff --git a/src/main/java/com/coinbase/prime/utils/Constants.java b/src/main/java/com/coinbase/prime/utils/Constants.java index cdc27aa3..3d0784e7 100644 --- a/src/main/java/com/coinbase/prime/utils/Constants.java +++ b/src/main/java/com/coinbase/prime/utils/Constants.java @@ -23,7 +23,7 @@ public class Constants { public static final String CB_ACCESS_TIMESTAMP_HEADER = "X-CB-ACCESS-TIMESTAMP"; public static final String CB_USER_AGENT_HEADER = "User-Agent"; public static final String CB_PRIME_BASE_URL = "https://api.prime.coinbase.com/v1"; - public static final String SDK_VERSION = "1.10.3"; + public static final String SDK_VERSION = "1.11.0"; /** * Replaces a trailing {@code /vN} segment with {@code /}{@code version}. Used when an endpoint is diff --git a/src/test/java/com/coinbase/prime/apikey/ApiKeyRotationTest.java b/src/test/java/com/coinbase/prime/apikey/ApiKeyRotationTest.java new file mode 100644 index 00000000..d5a7fdf6 --- /dev/null +++ b/src/test/java/com/coinbase/prime/apikey/ApiKeyRotationTest.java @@ -0,0 +1,150 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.apikey; + +import static org.junit.jupiter.api.Assertions.*; + +import com.coinbase.core.errors.CoinbaseClientException; +import com.coinbase.prime.credentials.CoinbasePrimeCredentials; +import java.nio.charset.StandardCharsets; +import java.security.SecureRandom; +import java.util.Base64; +import javax.crypto.Cipher; +import javax.crypto.spec.GCMParameterSpec; +import javax.crypto.spec.SecretKeySpec; +import org.junit.jupiter.api.Test; + +public class ApiKeyRotationTest { + + @Test + public void hkdfSha256MatchesRfc5869TestCase1() throws Exception { + // RFC 5869 Appendix A.1 + byte[] ikm = hex("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"); + byte[] salt = hex("000102030405060708090a0b0c"); + byte[] info = hex("f0f1f2f3f4f5f6f7f8f9"); + byte[] okm = ApiKeyRotation.hkdfSha256(ikm, salt, info, 42); + assertArrayEquals( + hex("3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865"), + okm); + } + + @Test + public void decryptRoundTrip() throws Exception { + String secretKey = "current-signing-key"; + String plaintext = + "{" + + "\"access_key\":\"new-access\"," + + "\"secret_key\":\"new-secret\"," + + "\"passphrase\":\"new-pass\"," + + "\"service_account_id\":\"svc-1\"" + + "}"; + String encrypted = encrypt(secretKey, plaintext); + + RotateApiKeyResponse response = new RotateApiKeyResponse(); + response.setEncryptedCredentials(encrypted); + response.setActivityId("activity-1"); + + RotatedApiKeyCredentials creds = ApiKeyRotation.decrypt(secretKey, response); + assertEquals("new-access", creds.getAccessKey()); + assertEquals("new-secret", creds.getSecretKey()); + assertEquals("new-pass", creds.getPassphrase()); + assertEquals("svc-1", creds.getServiceAccountId()); + + CoinbasePrimeCredentials prime = creds.toPrimeCredentials(); + assertEquals("new-access", prime.getAccessKey()); + assertEquals("new-pass", prime.getPassphrase()); + } + + @Test + public void decryptAcceptsMissingBase64Padding() throws Exception { + String secretKey = "current-signing-key"; + String plaintext = "{\"access_key\":\"a\",\"secret_key\":\"s\",\"passphrase\":\"p\"}"; + String encrypted = encrypt(secretKey, plaintext); + while (encrypted.endsWith("=")) { + encrypted = encrypted.substring(0, encrypted.length() - 1); + } + + RotatedApiKeyCredentials creds = ApiKeyRotation.decrypt(secretKey, encrypted); + assertEquals("a", creds.getAccessKey()); + assertEquals("s", creds.getSecretKey()); + assertEquals("p", creds.getPassphrase()); + } + + @Test + public void decryptRejectsWrongVersion() { + byte[] raw = new byte[ApiKeyRotation.MIN_WIRE_LEN]; + raw[0] = 2; + String payload = Base64.getEncoder().encodeToString(raw); + CoinbaseClientException ex = + assertThrows( + CoinbaseClientException.class, () -> ApiKeyRotation.decrypt("secret", payload)); + assertTrue(ex.getMessage().contains("wire version")); + } + + @Test + public void decryptRejectsWrongSecret() throws Exception { + String encrypted = + encrypt( + "correct-secret", "{\"access_key\":\"a\",\"secret_key\":\"s\",\"passphrase\":\"p\"}"); + assertThrows( + CoinbaseClientException.class, () -> ApiKeyRotation.decrypt("wrong-secret", encrypted)); + } + + private static String encrypt(String secretKey, String plaintextJson) throws Exception { + byte[] salt = new byte[ApiKeyRotation.SALT_LEN]; + byte[] nonce = new byte[ApiKeyRotation.NONCE_LEN]; + SecureRandom random = new SecureRandom(); + random.nextBytes(salt); + random.nextBytes(nonce); + + byte[] aesKey = + ApiKeyRotation.hkdfSha256( + secretKey.getBytes(StandardCharsets.UTF_8), + salt, + ApiKeyRotation.HKDF_INFO, + ApiKeyRotation.AES_KEY_LEN); + Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding"); + cipher.init( + Cipher.ENCRYPT_MODE, + new SecretKeySpec(aesKey, "AES"), + new GCMParameterSpec(ApiKeyRotation.GCM_TAG_LEN * 8, nonce)); + byte[] ciphertext = cipher.doFinal(plaintextJson.getBytes(StandardCharsets.UTF_8)); + + byte[] raw = + new byte[ApiKeyRotation.VERSION_LEN + salt.length + nonce.length + ciphertext.length]; + raw[0] = ApiKeyRotation.VERSION; + System.arraycopy(salt, 0, raw, ApiKeyRotation.VERSION_LEN, salt.length); + System.arraycopy(nonce, 0, raw, ApiKeyRotation.VERSION_LEN + salt.length, nonce.length); + System.arraycopy( + ciphertext, + 0, + raw, + ApiKeyRotation.VERSION_LEN + salt.length + nonce.length, + ciphertext.length); + return Base64.getEncoder().encodeToString(raw); + } + + private static byte[] hex(String s) { + int len = s.length(); + byte[] data = new byte[len / 2]; + for (int i = 0; i < len; i += 2) { + data[i / 2] = + (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i + 1), 16)); + } + return data; + } +} diff --git a/src/test/java/com/coinbase/prime/apikey/ApiKeyServiceSerializationTest.java b/src/test/java/com/coinbase/prime/apikey/ApiKeyServiceSerializationTest.java new file mode 100644 index 00000000..49504f51 --- /dev/null +++ b/src/test/java/com/coinbase/prime/apikey/ApiKeyServiceSerializationTest.java @@ -0,0 +1,63 @@ +/* + * Copyright 2026-present Coinbase Global, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.coinbase.prime.apikey; + +import static org.junit.jupiter.api.Assertions.*; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class ApiKeyServiceSerializationTest { + + private ObjectMapper objectMapper; + + @BeforeEach + public void setUp() { + objectMapper = + new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + } + + @Test + public void testRotateApiKeyRequestEmptyBuilder() throws JsonProcessingException { + RotateApiKeyRequest request = new RotateApiKeyRequest.Builder().build(); + assertNotNull(request); + assertNull(request.getDurationSeconds()); + } + + @Test + public void testRotateApiKeyRequestSerialization() throws JsonProcessingException { + RotateApiKeyRequest request = new RotateApiKeyRequest.Builder().durationSeconds(3600L).build(); + String json = objectMapper.writeValueAsString(request); + assertTrue(json.contains("\"duration_seconds\":3600")); + } + + @Test + public void testRotateApiKeyResponseDeserialization() throws JsonProcessingException { + String json = + "{" + + "\"encrypted_credentials\":\"abc123\"," + + "\"activity_id\":\"e8bbed13-fa33-41de-86d5-4335d8f08166\"" + + "}"; + RotateApiKeyResponse response = objectMapper.readValue(json, RotateApiKeyResponse.class); + assertNotNull(response); + assertEquals("abc123", response.getEncryptedCredentials()); + assertEquals("e8bbed13-fa33-41de-86d5-4335d8f08166", response.getActivityId()); + } +} diff --git a/src/test/java/com/coinbase/prime/financing/FinancingServiceSerializationTest.java b/src/test/java/com/coinbase/prime/financing/FinancingServiceSerializationTest.java index f28a633f..db9bf1a4 100644 --- a/src/test/java/com/coinbase/prime/financing/FinancingServiceSerializationTest.java +++ b/src/test/java/com/coinbase/prime/financing/FinancingServiceSerializationTest.java @@ -489,4 +489,84 @@ public void testListTradeFinanceObligationsResponseDeserialization() assertNotNull(response.getObligations()); assertEquals(2, response.getObligations().length); } + + @Test + public void testGetConversionFeesResponseDeserialization() throws JsonProcessingException { + String json = + "{" + + "\"fees\":[" + + "{\"from_currency\":\"USDC\",\"to_currency\":\"USD\",\"net_conversion_volume_mtd\":\"100.00\"}" + + "]" + + "}"; + GetConversionFeesResponse response = + objectMapper.readValue(json, GetConversionFeesResponse.class); + assertNotNull(response); + assertEquals(1, response.getFees().length); + assertEquals("USDC", response.getFees()[0].getFromCurrency()); + } + + @Test + public void testGetCrossMarginLiquidationRequestOmitsEntityId() throws JsonProcessingException { + GetCrossMarginLiquidationRequest request = + new GetCrossMarginLiquidationRequest.Builder() + .entityId("entity-123") + .liquidationId("liq-1") + .build(); + String json = objectMapper.writeValueAsString(request); + assertTrue(json.contains("\"liquidation_id\":\"liq-1\"")); + assertFalse(json.contains("entity_id")); + } + + @Test + public void testGetCrossMarginLiquidationResponseDeserialization() + throws JsonProcessingException { + String json = "{\"liquidation\":{\"liquidation_id\":\"liq-1\"}}"; + GetCrossMarginLiquidationResponse response = + objectMapper.readValue(json, GetCrossMarginLiquidationResponse.class); + assertNotNull(response.getLiquidation()); + assertEquals("liq-1", response.getLiquidation().getLiquidationId()); + } + + @Test + public void testListCrossMarginLiquidationsRequestSerialization() throws JsonProcessingException { + ListCrossMarginLiquidationsRequest request = + new ListCrossMarginLiquidationsRequest.Builder() + .entityId("entity-123") + .status( + com.coinbase.prime.model.enums.XMLiquidationStatus.XM_LIQUIDATION_STATUS_LIQUIDATED) + .build(); + String json = objectMapper.writeValueAsString(request); + assertTrue(json.contains("\"status\":\"XM_LIQUIDATION_STATUS_LIQUIDATED\"")); + assertFalse(json.contains("entity_id")); + } + + @Test + public void testListCrossMarginLiquidationsResponseDeserialization() + throws JsonProcessingException { + String json = "{\"liquidations\":[{\"liquidation_id\":\"liq-1\"}]}"; + ListCrossMarginLiquidationsResponse response = + objectMapper.readValue(json, ListCrossMarginLiquidationsResponse.class); + assertEquals(1, response.getLiquidations().length); + assertEquals("liq-1", response.getLiquidations()[0].getLiquidationId()); + } + + @Test + public void testGetEntityRewardsRateResponseDeserialization() throws JsonProcessingException { + String json = + "{\"current_rate\":\"0.045\",\"available_rates\":[{\"rate\":\"0.045\",\"lower_limit\":\"0\"}]}"; + GetEntityRewardsRateResponse response = + objectMapper.readValue(json, GetEntityRewardsRateResponse.class); + assertEquals("0.045", response.getCurrentRate()); + assertEquals(1, response.getAvailableRates().length); + assertEquals("0.045", response.getAvailableRates()[0].getRate()); + } + + @Test + public void testGetPortfolioRewardsRateResponseDeserialization() throws JsonProcessingException { + String json = "{\"current_rate\":\"0.03\",\"available_rates\":[]}"; + GetPortfolioRewardsRateResponse response = + objectMapper.readValue(json, GetPortfolioRewardsRateResponse.class); + assertEquals("0.03", response.getCurrentRate()); + assertEquals(0, response.getAvailableRates().length); + } } diff --git a/src/test/java/com/coinbase/prime/futures/FuturesServiceSerializationTest.java b/src/test/java/com/coinbase/prime/futures/FuturesServiceSerializationTest.java index b28d0182..b53b96cc 100644 --- a/src/test/java/com/coinbase/prime/futures/FuturesServiceSerializationTest.java +++ b/src/test/java/com/coinbase/prime/futures/FuturesServiceSerializationTest.java @@ -325,4 +325,48 @@ public void testGetFcmEquityResponseDeserialization() throws JsonProcessingExcep assertEquals("105000.00", response.getEodAccountEquity()); assertEquals("500.00", response.getEodUnrealizedPnl()); } + + @Test + public void testGetDerivativesCurrencySummaryRequestConstruction() { + GetDerivativesCurrencySummaryRequest request = + new GetDerivativesCurrencySummaryRequest.Builder().portfolioId("portfolio-123").build(); + assertNotNull(request); + assertEquals("portfolio-123", request.getPortfolioId()); + } + + @Test + public void testGetDerivativesCurrencySummaryResponseDeserialization() + throws JsonProcessingException { + String json = + "{" + + "\"portfolio_id\":\"portfolio-123\"," + + "\"balances\":[{\"currency\":\"USD\",\"balance\":\"1000.00\"}]" + + "}"; + GetDerivativesCurrencySummaryResponse response = + objectMapper.readValue(json, GetDerivativesCurrencySummaryResponse.class); + assertEquals("portfolio-123", response.getPortfolioId()); + assertEquals("USD", response.getBalances()[0].getCurrency()); + } + + @Test + public void testGetDerivativePositionsRequestSerialization() throws JsonProcessingException { + GetDerivativePositionsRequest request = + new GetDerivativePositionsRequest.Builder() + .portfolioId("portfolio-123") + .productId("BTC-31JAN24-CDE") + .build(); + String json = objectMapper.writeValueAsString(request); + assertTrue(json.contains("\"product_id\":\"BTC-31JAN24-CDE\"")); + assertFalse(json.contains("portfolio_id")); + } + + @Test + public void testGetDerivativePositionsResponseDeserialization() throws JsonProcessingException { + String json = + "{\"positions\":[{\"product_id\":\"BTC-31JAN24-CDE\",\"number_of_contracts\":\"10\"}]}"; + GetDerivativePositionsResponse response = + objectMapper.readValue(json, GetDerivativePositionsResponse.class); + assertEquals(1, response.getPositions().length); + assertEquals("BTC-31JAN24-CDE", response.getPositions()[0].getProductId()); + } } diff --git a/src/test/java/com/coinbase/prime/integration/FinancingIT.java b/src/test/java/com/coinbase/prime/integration/FinancingIT.java index 600b0a65..b997e66a 100644 --- a/src/test/java/com/coinbase/prime/integration/FinancingIT.java +++ b/src/test/java/com/coinbase/prime/integration/FinancingIT.java @@ -354,4 +354,56 @@ public void testGetPortfolioWithdrawalPowerWithSymbol() throws Exception { .build()); assertNotNull(response); } + + @Test + public void testGetConversionFees() throws Exception { + FinancingService service = PrimeServiceFactory.createFinancingService(client); + GetConversionFeesResponse response = service.getConversionFees(); + assertNotNull(response); + } + + @Test + public void testGetCrossMarginLiquidation() throws Exception { + assumeTrue( + entityId != null && !entityId.isEmpty(), "Skipping: COINBASE_PRIME_ENTITY_ID not set"); + FinancingService service = PrimeServiceFactory.createFinancingService(client); + GetCrossMarginLiquidationResponse response = + service.getCrossMarginLiquidation( + new GetCrossMarginLiquidationRequest.Builder().entityId(entityId).build()); + assertNotNull(response); + } + + @Test + public void testListCrossMarginLiquidations() throws Exception { + assumeTrue( + entityId != null && !entityId.isEmpty(), "Skipping: COINBASE_PRIME_ENTITY_ID not set"); + FinancingService service = PrimeServiceFactory.createFinancingService(client); + ListCrossMarginLiquidationsResponse response = + service.listCrossMarginLiquidations( + new ListCrossMarginLiquidationsRequest.Builder().entityId(entityId).build()); + assertNotNull(response); + } + + @Test + public void testGetEntityRewardsRate() throws Exception { + assumeTrue( + entityId != null && !entityId.isEmpty(), "Skipping: COINBASE_PRIME_ENTITY_ID not set"); + FinancingService service = PrimeServiceFactory.createFinancingService(client); + GetEntityRewardsRateResponse response = + service.getEntityRewardsRate( + new GetEntityRewardsRateRequest.Builder().entityId(entityId).build()); + assertNotNull(response); + } + + @Test + public void testGetPortfolioRewardsRate() throws Exception { + assumeTrue( + portfolioId != null && !portfolioId.isEmpty(), + "Skipping: COINBASE_PRIME_PORTFOLIO_ID not set"); + FinancingService service = PrimeServiceFactory.createFinancingService(client); + GetPortfolioRewardsRateResponse response = + service.getPortfolioRewardsRate( + new GetPortfolioRewardsRateRequest.Builder().portfolioId(portfolioId).build()); + assertNotNull(response); + } } diff --git a/src/test/java/com/coinbase/prime/integration/FuturesIT.java b/src/test/java/com/coinbase/prime/integration/FuturesIT.java index 6340f052..abd3b241 100644 --- a/src/test/java/com/coinbase/prime/integration/FuturesIT.java +++ b/src/test/java/com/coinbase/prime/integration/FuturesIT.java @@ -116,4 +116,28 @@ public void testGetFcmEquity() throws Exception { service.getFcmEquity(new GetFcmEquityRequest.Builder().entityId(entityId).build()); assertNotNull(response); } + + @Test + public void testGetDerivativesCurrencySummary() throws Exception { + assumeTrue( + portfolioId != null && !portfolioId.isEmpty(), + "Skipping: COINBASE_PRIME_PORTFOLIO_ID not set"); + FuturesService service = PrimeServiceFactory.createFuturesService(client); + GetDerivativesCurrencySummaryResponse response = + service.getDerivativesCurrencySummary( + new GetDerivativesCurrencySummaryRequest.Builder().portfolioId(portfolioId).build()); + assertNotNull(response); + } + + @Test + public void testGetDerivativePositions() throws Exception { + assumeTrue( + portfolioId != null && !portfolioId.isEmpty(), + "Skipping: COINBASE_PRIME_PORTFOLIO_ID not set"); + FuturesService service = PrimeServiceFactory.createFuturesService(client); + GetDerivativePositionsResponse response = + service.getDerivativePositions( + new GetDerivativePositionsRequest.Builder().portfolioId(portfolioId).build()); + assertNotNull(response); + } } diff --git a/src/test/java/com/coinbase/prime/integration/VersionHeaderIntegrationTest.java b/src/test/java/com/coinbase/prime/integration/VersionHeaderIntegrationTest.java index 186b8a65..87adaf4d 100644 --- a/src/test/java/com/coinbase/prime/integration/VersionHeaderIntegrationTest.java +++ b/src/test/java/com/coinbase/prime/integration/VersionHeaderIntegrationTest.java @@ -47,9 +47,9 @@ public void testVersionHeaderMatchesPomVersion() throws CoinbaseClientException assertNotNull(userAgent, "User-Agent header should be present"); assertEquals( - "prime-sdk-java/1.10.3", + "prime-sdk-java/1.11.0", userAgent, - "User-Agent should contain 'prime-sdk-java/1.10.3' to match pom.xml version"); + "User-Agent should contain 'prime-sdk-java/1.11.0' to match pom.xml version"); // Additional verification: Ensure the SDK_VERSION constant is used correctly String expectedUserAgent = String.format("prime-sdk-java/%s", Constants.SDK_VERSION); @@ -63,9 +63,9 @@ public void testVersionHeaderMatchesPomVersion() throws CoinbaseClientException public void testSdkVersionConstantMatches() { // Verify that the SDK_VERSION constant has been updated correctly assertEquals( - "1.10.3", + "1.11.0", Constants.SDK_VERSION, - "SDK_VERSION constant should be '1.10.3' to match pom.xml version"); + "SDK_VERSION constant should be '1.11.0' to match pom.xml version"); } @Test @@ -84,7 +84,7 @@ public void testAllApiCallsWillIncludeVersionHeader() throws CoinbaseClientExcep String userAgent = headers.get(Constants.CB_USER_AGENT_HEADER); assertEquals( - "prime-sdk-java/1.10.3", + "prime-sdk-java/1.11.0", userAgent, "All API calls should include the correct version header, failed for path: " + path); } diff --git a/src/test/java/com/coinbase/prime/utils/ConstantsTest.java b/src/test/java/com/coinbase/prime/utils/ConstantsTest.java index 69cdd07e..99dd4943 100644 --- a/src/test/java/com/coinbase/prime/utils/ConstantsTest.java +++ b/src/test/java/com/coinbase/prime/utils/ConstantsTest.java @@ -25,7 +25,7 @@ public class ConstantsTest { @Test public void testSdkVersionIsCorrect() { assertEquals( - "1.10.3", Constants.SDK_VERSION, "SDK_VERSION should match the version in pom.xml"); + "1.11.0", Constants.SDK_VERSION, "SDK_VERSION should match the version in pom.xml"); } @Test diff --git a/tools/model-generator/.openapi-generator-ignore b/tools/model-generator/.openapi-generator-ignore index 56374009..bdfbf8b2 100644 --- a/tools/model-generator/.openapi-generator-ignore +++ b/tools/model-generator/.openapi-generator-ignore @@ -6,6 +6,13 @@ src/main/java/com/coinbase/prime/model/*Request.java src/main/java/com/coinbase/prime/model/*Response.java +# Per-operation typed error payloads and codes (not consumed by the SDK yet) +src/main/java/com/coinbase/prime/model/*ErrorResponse.java +src/main/java/com/coinbase/prime/model/*ErrorCode.java +src/main/java/com/coinbase/prime/model/*Subcode.java +src/main/java/com/coinbase/prime/model/enums/*ErrorCode.java +src/main/java/com/coinbase/prime/model/enums/*Subcode.java + # Google infrastructure types (google.type.Date is generated as GoogleTypeDate and renamed to DateOfBirth) src/main/java/com/coinbase/prime/model/GoogleProtobufAny.java src/main/java/com/coinbase/prime/model/GoogleRpcStatus.java diff --git a/tools/model-generator/pom.xml b/tools/model-generator/pom.xml index 10948cd9..002abbc2 100644 --- a/tools/model-generator/pom.xml +++ b/tools/model-generator/pom.xml @@ -17,7 +17,7 @@ 11 11 UTF-8 - 7.14.0 + 7.25.0 2.18.9 1.13.0 2.2 diff --git a/tools/model-generator/src/main/java/com/coinbase/tools/modelgenerator/PostProcessor.java b/tools/model-generator/src/main/java/com/coinbase/tools/modelgenerator/PostProcessor.java index 5061a619..18651b4e 100644 --- a/tools/model-generator/src/main/java/com/coinbase/tools/modelgenerator/PostProcessor.java +++ b/tools/model-generator/src/main/java/com/coinbase/tools/modelgenerator/PostProcessor.java @@ -198,7 +198,8 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { String fileName = file.getFileName().toString(); if (file.toString().endsWith(".java") && !fileName.contains("Test") && - !fileName.matches(".*Api\\.java$")) { // Only skip files ending with "Api.java", not containing "Api" + !fileName.matches(".*Api\\.java$") && // Only skip files ending with "Api.java", not containing "Api" + !isSkippedErrorSchema(fileName)) { files.add(file); } return FileVisitResult.CONTINUE; @@ -209,6 +210,17 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { return files; } + /** + * Typed error-code / subcode schemas from the spec are omitted until the SDK + * maps HTTP errors onto them. Matching files are also ignored by + * {@code .openapi-generator-ignore} so they are not copied into {@code model/enums}. + */ + static boolean isSkippedErrorSchema(String fileName) { + return fileName.endsWith("ErrorCode.java") + || fileName.endsWith("Subcode.java") + || fileName.endsWith("ErrorResponse.java"); + } + private boolean isEnumFile(Path file) throws IOException { String content = Files.readString(file); return content.contains("public enum "); diff --git a/tools/model-generator/src/test/java/com/coinbase/tools/modelgenerator/PostProcessorJavadocTest.java b/tools/model-generator/src/test/java/com/coinbase/tools/modelgenerator/PostProcessorJavadocTest.java index f49d4b2b..c7813640 100644 --- a/tools/model-generator/src/test/java/com/coinbase/tools/modelgenerator/PostProcessorJavadocTest.java +++ b/tools/model-generator/src/test/java/com/coinbase/tools/modelgenerator/PostProcessorJavadocTest.java @@ -17,11 +17,22 @@ package com.coinbase.tools.modelgenerator; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; class PostProcessorJavadocTest { + @Test + void isSkippedErrorSchema_skipsTypedErrorEnumsAndResponses() { + assertTrue(PostProcessor.isSkippedErrorSchema("BadRequestErrorCode.java")); + assertTrue(PostProcessor.isSkippedErrorSchema("RotateAPIKeyForbiddenSubcode.java")); + assertTrue(PostProcessor.isSkippedErrorSchema("GetConversionFeesForbiddenErrorResponse.java")); + assertFalse(PostProcessor.isSkippedErrorSchema("TransactionType.java")); + assertFalse(PostProcessor.isSkippedErrorSchema("Order.java")); + } + @Test void decodeHtmlEntities_decodesCommonEntities() { assertEquals(