Zerion subscriptions to transactions API
Operations related to subscriptions to transactions.
Operations related to subscriptions to transactions.
openapi: 3.0.3
info:
version: 1.0.0
title: REST chains subscriptions to transactions API
description: REST-like API provides access to rich Zerion ecosystem.
contact:
name: Zerion API
url: https://developers.zerion.io/
email: api@zerion.io
servers:
- description: Production API
url: https://api.zerion.io
security:
- APIKeyBasicAuth: []
tags:
- name: subscriptions to transactions
description: Operations related to subscriptions to transactions.
paths:
/v1/tx-subscriptions/:
get:
operationId: findWalletTransactionsSubscription
summary: Find subscriptions
description: 'This endpoint finds subscriptions to new transactions associated with the wallets and chains. Currently response is limited to 1000 subscriptions in the response.
> NOTE: Consider all IDs as abstract strings, without making any assumptions about their format or relying on such assumptions. There is a non-zero probability that IDs may change in the future, and this should not result in any breaking changes.
'
tags:
- subscriptions to transactions
parameters:
- name: filter[chain_ids]
in: query
required: false
description: Comma-separated chain ids. Finds subscriptions on the specified chains. Searches over all chains if omitted.
style: form
explode: false
schema:
type: array
items:
type: string
example: polygon
responses:
'200':
$ref: '#/components/responses/SubscriptionsResponse'
'400':
$ref: '#/components/responses/MalformedParameters'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'429':
$ref: '#/components/responses/TooManyRequests'
post:
operationId: createSubscriptionWalletTransactions
summary: Create subscription
description: "This endpoint subscribes to new transactions associated with the wallets.\n\n> NOTE: Consider all IDs as abstract strings, without making any assumptions about their format or relying on such assumptions. There is a non-zero probability that IDs may change in the future, and this should not result in any breaking changes.\n\n### Use Case\nThe main use case for the webhooks system is to send notifications, similar to push notifications in the Zerion App.\n\n### Setup Callback URL\nIf you want to use this endpoint to test how it works, you might use your dev key to start. It has limits: one subscription & maximum 5 wallets per subscription.\nYou may use callback URL from webhook.site to start from. If want use your custom - contact us at api@zerion.io, and we will whitelist your URL.\n\nIf you want to use this endpoint in your production environment, you should contact us and provide the following details:\n- Your email associated with the API key\n- The URL that you prefer using as the callback (or host).\n\nAfter we've whitelisted your callback URL (or host), you may start using this endpoint.\n\n### Note\n- **Subscription Validity**: Every subscription is valid for unlimited amount of time for production key, and one week for `dev` keys.\n- **Transaction Prices**: Prices are not attached to webhook notifications and will always be `null`. Prices are added to transactions in the backend after some time. To get prices, query the transactions endpoint by hash.\n- **Delivery Guarantees**: Webhook delivery is not guaranteed. If delivery fails three times, no further attempts will be made.\n- **Order of Dispatch**: The order of webhook dispatch is not guaranteed and may not correspond to the order of transactions occurring on the blockchain.\n\n### Callback Format and Signature Verification\nApproved clients will receive notifications via POST requests to their provided URL. These notifications will include a signed notification object in the body (specified below in the `Callback` section) and a signature in the headers.\n\nClients should verify the signature provided in the headers of the webhook request to ensure the authenticity of the data. The following headers will be included:\n- `X-Signature`: The signature of the request.\n- `X-Timestamp`: The timestamp of the request.\n- `X-Certificate-URL`: The URL to download the public certificate used to verify the signature.\n\n**To verify the signature:**\n1. Concatenate the `X-Timestamp` header value, the request body, and a newline character: `$timestamp + \"\\n\" + $request.body + \"\\n\"`\n2. Use the public certificate downloaded from the `X-Certificate-URL` header to verify the signature in the `X-Signature` header.\n\nExample code in go for message verification:\n\n```go\npackage signature\n\nimport (\n \"crypto\"\n \"crypto/rsa\"\n \"crypto/sha256\"\n \"crypto/x509\"\n \"encoding/base64\"\n \"encoding/pem\"\n \"errors\"\n \"github.com/stretchr/testify/assert\"\n \"testing\"\n)\n\n// FetchCertificate fetches the certificate from the given URL\nfunc FetchCertificate() (*x509.Certificate, error) {\n certBytes := certificate()\n block, _ := pem.Decode(certBytes)\n if block == nil || block.Type != \"CERTIFICATE\" {\n return nil, errors.New(\"failed to decode PEM block containing the certificate\")\n }\n\n return x509.ParseCertificate(block.Bytes)\n}\n\nfunc certificate() []byte {\n return []byte(`-----BEGIN CERTIFICATE-----\nMIIDMTCCAhmgAwIBAgIUDd3dFMswamyJ5A1bqF0nzS8v2wgwDQYJKoZIhvcNAQEL\nBQAwQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC1plcmlvbiBJbmMuMRwwGgYJKoZI\nhvcNAQkBFg1hcGlAemVyaW9uLmlvMB4XDTI0MDYyNzE1MzUzM1oXDTI1MDYyNzE1\nMzUzM1owQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC1plcmlvbiBJbmMuMRwwGgYJ\nKoZIhvcNAQkBFg1hcGlAemVyaW9uLmlvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A\nMIIBCgKCAQEAwcPVCPLDhS9dLA8s5J6GJ3t0+jWuUCFwI+q6c03xZnhCaz45FepN\nMTiApbvPw1Zm8F8JQB4BRp/F5anokNcDSl/qmNtj3M/z/FrsVvGnSH2FOkZu9TLU\nLTW5i8Q0LAYrpgiBHrTa2qrRXd2DiMrEs3QZVoylFYc9QIGet3SULPrlSsYEKxfB\niBZDoFw619NnV6/kBO8FS34Lc+WH5SNNHNnItRrxMv4DMAFyFajSn1IwV6LSWSNK\naPJHCzP/Omu95550HQKcXaJYNE/d99NrcLaFI2fCuEVd00nApFo5knKs0FiXpGca\nl3cLOQG5SCOzUOjQb6X5CynEV+0QiyYxDwIDAQABoyEwHzAdBgNVHQ4EFgQUVL4m\nu0PcI4nJGUS8syLi5DNL44YwDQYJKoZIhvcNAQELBQADggEBAKaA1oqW0D6KxvIp\nIZxWf02XK/YFYwxKV55Vas0VWlzNemE2IjlIj0tknZt0EiM9um2FC27U9n3u0ApS\nUDrk96dQ+/RY3T3fiuXysa3ZL05OpreRk0aPuFU9rB4iLTgFiv1G/X5XXJ8O7OQb\n48u0vQnYXjT/nt72TMUoakjZ68QsP64FkG8mcK62Tg+FVWB9YWTFc0wOjsOt9RzJ\nmuKCQ7qx7L1GhkxKX4ZhrYItsH1DzXjeP5aniZgLBSPbxt01tUrSjOGN5CLOpdG8\niOnAFP+Nz8S0h2C7hppOHgC+uxY285UrzAZQoMbCREMV+0Mq/aqdF1B6qoKGNGqL\nkFbUhvo=\n-----END CERTIFICATE-----\n`)\n}\n\nfunc VerifySignature(cert *x509.Certificate, message, signature string) error {\n pubKey := cert.PublicKey.(*rsa.PublicKey)\n\n hashed := sha256.Sum256([]byte(message))\n sigBytes, err := base64.StdEncoding.DecodeString(signature)\n if err != nil {\n return err\n }\n\n return rsa.VerifyPKCS1v15(pubKey, crypto.SHA256, hashed[:], sigBytes)\n}\n\nfunc TestVerifySignature(t *testing.T) {\n // Example usage\n x509Cert, err := FetchCertificate()\n assert.NoError(t, err)\n\n xTimestamp := \"2024-07-31T00:17:36Z\"\n xSignature := \"t65gdR8z3NGh/OQRPzGMFmw36JhDNvOe6LxL6K2hCd3SdYQoTGr76dAy1CpsX2G8XVOIYUIctUQvgICQvtDctVjkRZmXuQDvXHOmiJE0ZknORgjVLFoo5JRYKvwt3EPp6SMN7RtedIX17rH1s2Vp3GRQWSjzN7C/cNgInhCQOP0UDjYlaeNT/yW4B2Qt4uY01yK0YhvQJaFHN+NNr7DZAt4FJuDppItqjaYbHTaFNqLlpI1IX7YvQWVhEYTJY6M4T9IdcGYPJKDljckjvmj9mDHZeh/Y6w8eXjLziMSFvlhJeSn1kBIR3nS7lTcwFNv1CPxD3MM7VB++te3mBbFubg==\"\n messageBody := `{\"data\":{\"attributes\":{\"timestamp\":\"2024-07-31T00:17:36.661896043Z\"},\"id\":\"15daee90-5028-4b4c-bd49-b4d43fa1a89e\",\"type\":\"callback\"},\"included\":[{\"attributes\":{\"application_metadata\":{\"contract_address\":\"0x8286d601a0ed6cf75e067e0614f73a5b9f024151\",\"method\":{\"id\":\"0x7859bb8d\",\"name\":\"\"}},\"approvals\":[],\"fee\":{\"fungible_info\":{\"flags\":{\"verified\":true},\"icon\":{\"url\":\"https://cdn.zerion.io/eth.png\"},\"implementations\":[{\"address\":\"\",\"chain_id\":\"redstone\",\"decimals\":18},{\"address\":\"\",\"chain_id\":\"polygon-zkevm\",\"decimals\":18},{\"address\":\"\",\"chain_id\":\"optimism\",\"decimals\":18},{\"address\":\"\",\"chain_id\":\"zksync-era\",\"decimals\":18},{\"address\":\"\",\"chain_id\":\"mode\",\"decimals\":18},{\"address\":\"\",\"chain_id\":\"base\",\"decimals\":18},{\"address\":\"\",\"chain_id\":\"ethereum\",\"decimals\":18},{\"address\":\"\",\"chain_id\":\"aurora\",\"decimals\":18},{\"address\":\"\",\"chain_id\":\"scroll\",\"decimals\":18},{\"address\":\"\",\"chain_id\":\"rari\",\"decimals\":18},{\"address\":\"\",\"chain_id\":\"astar-zkevm\",\"decimals\":18},{\"address\":\"\",\"chain_id\":\"arbitrum\",\"decimals\":18},{\"address\":\"\",\"chain_id\":\"zora\",\"decimals\":18},{\"address\":\"\",\"chain_id\":\"blast\",\"decimals\":18},{\"address\":\"\",\"chain_id\":\"linea\",\"decimals\":18},{\"address\":\"\",\"chain_id\":\"manta-pacific\",\"decimals\":18}],\"name\":\"Ethereum\",\"symbol\":\"ETH\"},\"price\":null,\"quantity\":{\"decimals\":18,\"float\":0.0000016785001958,\"int\":\"1678500195825\",\"numeric\":\"0.000001678500195825\"},\"value\":null},\"flags\":{\"is_trash\":false},\"hash\":\"0xbbcfb0ac5e466ded168794a162da334634fee3f95adfdb55392999f91b4c6d41\",\"mined_at\":\"2024-07-31T00:17:35Z\",\"mined_at_block\":7490818,\"nonce\":250,\"operation_type\":\"execute\",\"sent_from\":\"0xfc0f1b3fb88c5ab19e77a6f7d4d637272e71e684\",\"sent_to\":\"0x8286d601a0ed6cf75e067e0614f73a5b9f024151\",\"status\":\"confirmed\",\"transfers\":[]},\"id\":\"a65b2541c58a5908a7333480f0ac6792\",\"relationships\":{\"chain\":{\"id\":\"linea\",\"type\":\"chains\"},\"dapp\":{\"id\":\"\",\"type\":\"dapps\"}},\"type\":\"transactions\"}]}`\n\n message := xTimestamp + \"\\n\" + messageBody + \"\\n\"\n\n err = VerifySignature(x509Cert, message, xSignature)\n assert.NoError(t, err)\n}\n```\n"
tags:
- subscriptions to transactions
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- callback_url
- addresses
properties:
callback_url:
type: string
description: 'Callback URL where updates will be delivered to
'
example: https://webhook.site/fcd606d2-f5bd-4832-9874-ff07c980b5a3
addresses:
type: array
description: 'Addresses of the wallets to create subscription for. Maximum 100 addresses per subscription.
Note: Free tier accounts are limited to 5 addresses per subscription.
'
items:
type: string
description: Address of the wallet.
example: '0x42b9df65b219b3dd36ff330a4dd8f327a6ada990'
chain_ids:
type: array
description: 'Subscribe for transactions from specified chains. Leave empty to subscribe for all supported chains.
You can find available chain ids in chain endpoints.
'
items:
type: string
example: polygon
responses:
'201':
$ref: '#/components/responses/SubscriptionResponse'
'400':
$ref: '#/components/responses/MalformedParameters'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'429':
$ref: '#/components/responses/TooManyRequests'
callbacks:
TransactionCallback:
<your webhook URL>:
post:
summary: Notification
requestBody:
$ref: '#/components/requestBodies/NotificationResponse'
responses:
'200':
description: Successful callback processing
'400':
description: Invalid request
'500':
description: Server error
/v1/tx-subscriptions/{subscription_id}:
get:
operationId: GetWalletTransactionsSubscription
summary: Find subscription by ID
description: 'This endpoint by ID returns subscription to new transactions associated with the wallets and chains.
> NOTE: Consider all IDs as abstract strings, without making any assumptions about their format or relying on such assumptions. There is a non-zero probability that IDs may change in the future, and this should not result in any breaking changes.
'
tags:
- subscriptions to transactions
parameters:
- name: subscription_id
in: path
required: true
description: ID of the subscription
schema:
type: string
responses:
'200':
$ref: '#/components/responses/SubscriptionResponse'
'400':
$ref: '#/components/responses/MalformedParameters'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'429':
$ref: '#/components/responses/TooManyRequests'
delete:
operationId: DeleteWalletTransactionsSubscription
summary: Delete subscription by ID
description: 'This endpoint deletes existing subscription
> NOTE: Consider all IDs as abstract strings, without making any assumptions about their format or relying on such assumptions. There is a non-zero probability that IDs may change in the future, and this should not result in any breaking changes.
'
tags:
- subscriptions to transactions
parameters:
- name: subscription_id
in: path
required: true
description: ID of the subscription
schema:
type: string
responses:
'204':
description: Successful subscription deletion with no content
'400':
$ref: '#/components/responses/MalformedParameters'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'429':
$ref: '#/components/responses/TooManyRequests'
/v1/tx-subscriptions/{subscription_id}/wallets:
get:
operationId: GetSubscribedWalletsInSubscription
summary: Find wallets within subscription
description: 'This endpoint by subscription ID returns wallets within specific subscription.
> NOTE: Consider all IDs as abstract strings, without making any assumptions about their format or relying on such assumptions. There is a non-zero probability that IDs may change in the future, and this should not result in any breaking changes.
'
tags:
- subscriptions to transactions
parameters:
- $ref: '#/components/parameters/SubscriptionWalletsPage'
- name: subscription_id
in: path
required: true
description: ID of the subscription
schema:
type: string
example: 77e77447-1586-40e8-a75b-467ef939a0b1
responses:
'200':
$ref: '#/components/responses/SubscriptionWalletsResponse'
'400':
$ref: '#/components/responses/MalformedParameters'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'429':
$ref: '#/components/responses/TooManyRequests'
patch:
operationId: PatchSubscribedWalletsInSubscription
summary: Patch wallets within subscription
description: 'This endpoint works by subscription ID. It patches wallets list within specific subscription.
> NOTE: Consider all IDs as abstract strings, without making any assumptions about their format or relying on such assumptions. There is a non-zero probability that IDs may change in the future, and this should not result in any breaking changes.
'
tags:
- subscriptions to transactions
parameters:
- name: subscription_id
in: path
required: true
description: ID of the subscription
schema:
type: string
example: 77e77447-1586-40e8-a75b-467ef939a0b1
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
add:
type: array
maxItems: 100
description: 'Addresses of the wallets to add to subscription. Maximum 100 addresses per request.
'
items:
type: string
description: Address of the wallet.
example: '0x42b9df65b219b3dd36ff330a4dd8f327a6ada990'
remove:
type: array
maxItems: 100
description: 'Addresses of the wallets to remove from subscription. Maximum 100 addresses per request.
'
items:
type: string
description: Address of the wallet.
example: '0x42b9df65b219b3dd36ff330a4dd8f327a6ada990'
responses:
'200':
description: Successful callback processing
'400':
$ref: '#/components/responses/MalformedParameters'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'429':
$ref: '#/components/responses/TooManyRequests'
put:
operationId: ReplaceSubscribedWalletsInSubscription
summary: Replace wallets within subscription
description: 'This endpoint works by subscription ID. It replaces wallets list within specific subscription.
> NOTE: Consider all IDs as abstract strings, without making any assumptions about their format or relying on such assumptions. There is a non-zero probability that IDs may change in the future, and this should not result in any breaking changes.
'
tags:
- subscriptions to transactions
parameters:
- name: subscription_id
in: path
required: true
description: ID of the subscription
schema:
type: string
example: 77e77447-1586-40e8-a75b-467ef939a0b1
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
wallets:
type: array
description: 'Addresses of the wallets to replace current list with
'
items:
type: string
description: Address of the wallet.
example: '0x42b9df65b219b3dd36ff330a4dd8f327a6ada990'
responses:
'200':
description: Successful callback processing
'400':
$ref: '#/components/responses/MalformedParameters'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'429':
$ref: '#/components/responses/TooManyRequests'
/v1/tx-subscriptions/{subscription_id}/wallets/count:
get:
operationId: GetSubscribedWalletsCountInSubscription
summary: Count wallets within subscription
description: 'This endpoint returns the count of wallets within a specific subscription by subscription ID.
> NOTE: Consider all IDs as abstract strings, without making any assumptions about their format or relying on such assumptions. There is a non-zero probability that IDs may change in the future, and this should not result in any breaking changes.
'
tags:
- subscriptions to transactions
parameters:
- name: subscription_id
in: path
required: true
description: ID of the subscription
schema:
type: string
example: 77e77447-1586-40e8-a75b-467ef939a0b1
responses:
'200':
$ref: '#/components/responses/SubscriptionWalletsCountResponse'
'400':
$ref: '#/components/responses/MalformedParameters'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'404':
$ref: '#/components/responses/NotFoundResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
/v1/tx-subscriptions/{subscription_id}/callback_url:
patch:
operationId: UpdateCallbackUrlInSubscription
summary: Update callback URL within subscription
description: 'This endpoint updates the callback URL for a specific subscription.
> NOTE: Consider all IDs as abstract strings, without making any assumptions about their format or relying on such assumptions. There is a non-zero probability that IDs may change in the future, and this should not result in any breaking changes.
'
tags:
- subscriptions to transactions
parameters:
- name: subscription_id
in: path
required: true
description: ID of the subscription
schema:
type: string
example: 77e77447-1586-40e8-a75b-467ef939a0b1
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
callback_url:
type: string
description: 'The new callback URL to be used for the subscription.
'
example: https://webhook.site/new-callback-url
responses:
'200':
description: Successfully updated callback URL
'400':
$ref: '#/components/responses/MalformedParameters'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'429':
$ref: '#/components/responses/TooManyRequests'
/v1/tx-subscriptions/{subscription_id}/enable:
patch:
operationId: EnableSubscription
summary: Enable a specific subscription
description: 'This endpoint sets the status of a specific subscription to "enabled".
> NOTE: Consider all IDs as abstract strings, without making any assumptions about their format or relying on such assumptions. This ensures flexibility and future-proofing against ID format changes.
'
tags:
- subscriptions to transactions
parameters:
- name: subscription_id
in: path
required: true
description: ID of the subscription
schema:
type: string
example: 77e77447-1586-40e8-a75b-467ef939a0b1
responses:
'204':
description: Successfully updated subscription status to enabled
'400':
$ref: '#/components/responses/MalformedParameters'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'429':
$ref: '#/components/responses/TooManyRequests'
/v1/tx-subscriptions/{subscription_id}/disable:
patch:
operationId: DisableSubscription
summary: Disable a specific subscription
description: 'This endpoint sets the status of a specific subscription to "disabled".
> NOTE: Consider all IDs as abstract strings, without making any assumptions about their format or relying on such assumptions. This ensures flexibility and future-proofing against ID format changes.
'
tags:
- subscriptions to transactions
parameters:
- name: subscription_id
in: path
required: true
description: ID of the subscription
schema:
type: string
example: 77e77447-1586-40e8-a75b-467ef939a0b1
responses:
'204':
description: Successfully updated subscription status to disabled
'400':
$ref: '#/components/responses/MalformedParameters'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'429':
$ref: '#/components/responses/TooManyRequests'
/v1/tx-subscriptions/{subscription_id}/chain_ids:
patch:
operationId: UpdateChainIdsInSubscription
summary: Update chain IDs within subscription
description: 'This endpoint updates the list of chain IDs associated with a specific subscription.
> NOTE:
> - Consider all IDs as abstract strings, without making any assumptions about their format or relying on such assumptions.
> - The chain IDs provided will replace the existing chain IDs associated with the subscription.
'
tags:
- subscriptions to transactions
parameters:
- name: subscription_id
in: path
required: true
description: ID of the subscription
schema:
type: string
example: 77e77447-1586-40e8-a75b-467ef939a0b1
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
chain_ids:
type: array
description: 'The list of new chain IDs to replace the current associated chain IDs in the subscription.
'
items:
type: string
description: A chain ID.
example: ethereum
responses:
'200':
description: Successfully updated chain IDs
'400':
$ref: '#/components/responses/MalformedParameters'
'401':
$ref: '#/components/responses/UnauthenticatedError'
'429':
$ref: '#/components/responses/TooManyRequests'
components:
schemas:
Response-20:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/Container-17'
Act:
type: object
required:
- id
- type
properties:
id:
type: string
description: Unique identifier of the act within the transaction.
example: '1'
type:
$ref: '#/components/schemas/ActType'
fee_kind:
type: string
description: "Classification of the fee for acts of type `fee`. Omitted for non-fee acts.\n\nPossible values:\n - ui — Fee charged by the UI / client application (e.g., a wallet or dApp frontend)\n - jito — Jito tip paid on Solana for priority inclusion\n"
enum:
- ui
- jito
example: ui
sent_from:
type: string
description: Address of the actual sender of this act. Only set when it differs from the transaction-level `sent_from`, e.g. in ERC-4337 bundler transactions.
example: '0x42b9df65b219b3dd36ff330a4dd8f327a6ada990'
application_metadata:
$ref: '#/components/schemas/DAppInfo-2'
Attributes-18:
type: object
required:
- count
properties:
count:
type: integer
format: int64
description: Number of wallets within the subscription
example: 42
RelationshipContainer:
type: object
required:
- type
- id
properties:
type:
type: string
description: Subscription resource type
example: subscription
id:
type: string
description: Subscription unique identifier
example: 8bf9db31-eb59-4fa9-973c-34e3428acf5d
ContainerShort:
type: object
required:
- type
- id
properties:
type:
type: string
description: Chain resource type.
example: chains
id:
type: string
description: Chain unique identifier.
example: polygon
Attributes-16:
type: object
required:
- timestamp
- callback_url
- address
properties:
timestamp:
type: string
description: Timestamp when notification was generated.
example: '2024-07-31T00:17:36Z'
callback_url:
type: string
description: URL to the callback endpoint.
example: https://example.com/callback
address:
type: string
description: Address of the subscription wallet.
example: '0x42b9df65b219b3dd36ff330a4dd8f327a6ada990'
PaginatedRelationship:
type: object
required:
- links
- data
properties:
links:
$ref: '#/components/schemas/PaginatedRelationshipLinks'
data:
$ref: '#/components/schemas/RelationshipContainer'
Response-23:
type: object
required:
- links
- data
properties:
links:
$ref: '#/components/schemas/ResponseLinks-20'
data:
$ref: '#/components/schemas/Container-19'
Container-17:
type: object
required:
- type
- id
- attributes
- relationships
properties:
type:
type: string
example: transactions_subscription
id:
type: string
description: Unique ID of the transaction subscription.
example: 52d994a173d755e99845e861d534a419
attributes:
$ref: '#/components/schemas/Attributes-15'
relationships:
$ref: '#/components/schemas/Relationships-9'
Delegation:
type: object
description: Delegation created on an EVM chain.
required:
- address
- act_id
properties:
chain_id:
type: string
example: ethereum
address:
type: string
example: '0x42b9df65b219b3dd36ff330a4dd8f327a6ada990'
act_id:
type: string
example: '1'
Container-20:
type: object
required:
- type
- id
- attributes
- relationships
properties:
type:
type: string
example: transactions_subscription_wallets_count
id:
type: string
description: Unique ID
example: 52d994a173d755e99845e861d534a419-wallets-count
attributes:
$ref: '#/components/schemas/Attributes-18'
relationships:
$ref: '#/components/schemas/Relationships-11'
MarketDataChanges:
type: object
properties:
percent_1d:
type: number
nullable: true
format: double
description: Price relative change in percent for 1 day
example: -0.7379066649086338
percent_30d:
type: number
nullable: true
format: double
description: Price relative change in percent for 30 days
example: -2.499465618806962
percent_90d:
type: number
nullable: true
format: double
description: Price relative change in percent for 90 days
example: 11.316340269371775
percent_365d:
type: number
nullable: true
format: double
description: Price relative change in percent for 1 year
example: null
RelationshipLinks:
type: object
required:
- related
properties:
related:
type: string
format: url
description: URL to the current chain.
example: https://api.zerion.io/v1/chains/polygon
Included-3:
type: array
items:
$ref: '#/components/schemas/Container-4'
Relationship:
type: object
required:
- links
- data
properties:
links:
$ref: '#/components/schemas/RelationshipLinks'
data:
$ref: '#/components/schemas/ContainerShort'
Container-18:
type: object
required:
- type
- id
- attributes
- relationships
properties:
type:
type: string
example: transaction_notification
id:
type: string
description: Unique ID of the notification.
example: 52d994a173d755e99845e861d534a419
attributes:
$ref: '#/components/schemas/Attributes-16'
relationships:
$ref: '#/components/schemas/Relationships-10'
Relationships-9:
type: object
properties:
chains:
type: array
items:
$ref: '#/components/schemas/Relationship'
CollectionInfo:
type: object
required:
- id
- name
- icon_url
properties:
id:
type: string
description: Collection id.
name:
type: string
description: Collection name.
example: '0x60a26d69263ef43e9a68964ba141263f19d71d51'
icon_url:
type: string
description: Identifier of the act to which the transfer belongs.
example: '1'
Approval:
type: object
required:
- quantity
# --- truncated at 32 KB (59 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/zerion/refs/heads/main/openapi/zerion-subscriptions-to-transactions-api-openapi.yml