Newer
Older
number:
type: string
description: The block's height.
format: unsignedInteger
parentHash:
type: string
description: The hash of the parent block.
format: hex
stateRoot:
type: string
description: The state root after executing this block.
format: hex
extrinsicRoot:
type: string
description: The Merkle root of the extrinsics.
format: hex
authorId:
type: string
description: The account ID of the block author (may be undefined for some
chains).
format: ss58
logs:
type: array
items:
$ref: '#/components/schemas/DigestItem'
description: Array of `DigestItem`s associated with the block.
onInitialize:
$ref: '#/components/schemas/BlockInitialize'
extrinsics:
type: array
description: Array of extrinsics (inherents and transactions) within the
block.
items:
$ref: '#/components/schemas/Extrinsic'
onFinalize:
$ref: '#/components/schemas/BlockFinalize'
finalized:
type: boolean
description: >-
A boolean identifying whether the block is finalized or not.
Note: on chains that do not have deterministic finality this field is omitted.
description: >-
Note: Block finalization does not correspond to consensus, i.e. whether
the block is in the canonical chain. It denotes the finalization of block
_construction._
Blocks:
type: array
items:
$ref: '#/components/schemas/Block'
type: object
properties:
type: array
items:
$ref: '#/components/schemas/SanitizedEvent'
description: Object with an array of `SanitizedEvent`s that occurred during
block construction finalization with the `method` and `data` for each.
BlockHeader:
type: object
properties:
description: The hash of the parent block.
format: hex
number:
description: The block's height.
format: unsignedInteger
description: The state root after executing this block.
format: hex
extrinsicRoot:
description: The Merkle root of the extrinsics.
format: hex
digest:
type: object
logs:
type: array
items:
$ref: '#/components/schemas/DigestItem'
description: Array of `DigestItem`s associated with the block.
BlockIdentifiers:
type: object
properties:
hash:
type: string
description: The block's hash.
format: hex
height:
type: string
description: The block's height.
format: unsignedInteger
description: Block number and hash at which the call was made.
type: object
properties:
events:
type: array
items:
$ref: '#/components/schemas/SanitizedEvent'
description: Object with an array of `SanitizedEvent`s that occurred during
block initialization with the `method` and `data` for each.
BlocksTrace:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
blockHash:
events:
type: array
items:
$ref: '#/components/schemas/TraceEvent'
parentHash:
type: array
items:
$ref: '#/components/schemas/TraceSpan'
storageKeys:
type: string
description: Hex encoded storage keys used to filter events.
tracingTargets:
type: string
description: Targets used to filter spans and events.
BlocksTraceOperations:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
operations:
type: array
items:
$ref: '#/components/schemas/Operation'
BondedPool:
type: object
properties:
points:
type: number
state:
type: string
memberCounter:
type: number
roles:
type: object
properties:
depositor:
type: string
root:
type: string
nominator:
type: string
stateToggler:
type: string
ChainType:
type: object
description: Type of the chain. It will return one of the following enum variants as a key. Live, Development, Local, or Custom. Each variant will have a value as null except when the ChainType is Custom, it will return a string.
type: string
nullable: true
default: null
development:
type: string
nullable: true
default: null
type: string
nullable: true
default: null
custom:
type: string
example: "{\"live\": null}"
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
ContractsInkQuery:
type: object
description: Result from calling a query to a Ink contract.
properties:
debugMessage:
type: string
gasConsumed:
type: string
gasRequired:
type: string
output:
type: boolean
result:
type: object
description: Will result in an Ok or Err object depending on the result of the query.
storageDeposit:
type: object
ContractMetata:
type: object
description: Metadata used to instantiate a ContractPromise. This metadata can be generated
by compiling the contract you are querying.
type: object
properties:
format: unsignedInteger
value:
type: array
items:
type: string
ElectionStatus:
type: object
properties:
status:
type: object
description: >-
[Deprecated](Works for polkadot runtimes before v0.8.30).
Era election status: either `Close: null` or `Open: <BlockNumber>`.
A status of `Close` indicates that the submission window for solutions
from off-chain Phragmen is not open. A status of `Open` indicates that the
submission window for off-chain Phragmen solutions has been open since
BlockNumber. N.B. when the submission window is open, certain
extrinsics are not allowed because they would mutate the state that the
off-chain Phragmen calculation relies on for calculating results.
toggleEstimate:
description: Upper bound estimate of the block height at which the `status`
will switch.
format: unsignedInteger
description: Information about the off-chain election. Not included in response when
`forceEra.isForceNone`.
Error:
type: object
properties:
code:
type: number
message:
type: string
ExtrinsicMethod:
type: object
properties:
pallet:
type: string
type: string
description: Extrinsic method
Extrinsic:
type: object
properties:
method:
$ref: '#/components/schemas/ExtrinsicMethod'
signature:
$ref: '#/components/schemas/Signature'
nonce:
type: string
description: Account nonce, if applicable.
format: unsignedInteger
args:
type: object
description: >-
Object of arguments keyed by parameter name. Note: if you are expecting an [`OpaqueCall`](https://substrate.dev/rustdocs/v2.0.0/pallet_multisig/type.OpaqueCall.html)
and it is not decoded in the response (i.e. it is just a hex string), then Sidecar was
not able to decode it and likely that it is not a valid call for the runtime.
tip:
type: string
description: Any tip added to the transaction.
format: unsignedInteger
hash:
type: string
description: The transaction's hash.
format: hex
info:
$ref: '#/components/schemas/RuntimeDispatchInfo'
era:
$ref: '#/components/schemas/GenericExtrinsicEra'
events:
type: array
description: An array of `SanitizedEvent`s that occurred during extrinsic
execution.
items:
$ref: '#/components/schemas/SanitizedEvent'
success:
type: boolean
description: Whether or not the extrinsic succeeded.
paysFee:
type: boolean
description: Whether the extrinsic requires a fee. Careful! This field relates
to whether or not the extrinsic requires a fee if called as a transaction.
Block authors could insert the extrinsic as an inherent in the block
and not pay a fee. Always check that `paysFee` is `true` and that the
extrinsic is signed when reconciling old blocks.
ExtrinsicIndex:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
extrinsic:
$ref: '#/components/schemas/Extrinsic'
description: A single extrinsic at a given block.
type: object
properties:
verifier:
type: string
deposit:
type: string
format: unsignedInteger
format: unsignedInteger
end:
format: unsignedInteger
cap:
format: unsignedInteger
lastConstribution:
enum:
- preEnding
- ending
firstPeriod:
type: string
format: unsignedInteger
format: unsignedInteger
trieIndex:
type: string
format: unsignedInteger
GenericExtrinsicEra:
type: object
description: |
The return value for era can either be `mortalEra`, or `immortalEra` and is represented as an enum in substrate. `immortalEra` meaning
the transaction is valid forever. `mortalEra` consists of a tuple containing a period and phase.
ex: `"{"mortalEra": ["64", "11"]}"`. The Period is the period of validity from the block hash found in the signing material.
The Phase is the period that this transaction's lifetime begins (and, importantly,
implies which block hash is included in the signature material).
properties:
type: array
description: Tuple of a Phase, and Period. Each item in the array will be a string formatted as an integer.
immortalEra:
type: string
description: Hardcoded constant '0x00'.
format: hex
example: "{\"mortalEra\":[\"64\", \"11\"]}"
NodeNetwork:
type: object
properties:
nodeRoles:
$ref: '#/components/schemas/NodeRole'
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
type: string
description: Number of peers the node is connected to.
format: unsignedInteger
isSyncing:
type: boolean
description: Whether or not the node is syncing. `False` indicates that the node is in sync.
shouldHavePeers:
type: boolean
description: Whether or not the node should be connected to peers. Might be false
for local chains or when running without discovery.
localPeerId:
type: string
description: Local copy of the `PeerId`.
localListenAddresses:
type: array
description: Multiaddresses that the local node is listening on. The addresses
include a trailing `/p2p/` with the local PeerId, and are thus suitable
to be passed to `system_addReservedPeer` or as a bootnode address for
example.
items:
type: string
type: array
items:
$ref: '#/components/schemas/PeerInfo'
NodeRole:
type: string
description: Role of this node. (N.B. Sentry nodes are being deprecated.)
enum:
- Full
- LightClient
- Authority
- Sentry
NodeVersion:
type: object
properties:
description: Node's binary version.
clientImplName:
description: Node's implementation name.
chain:
description: Node's chain name.
description: Version information of the node.
Nominations:
type: object
properties:
type: array
items:
type: string
description: The targets of the nomination.
submittedIn:
type: string
format: unsignedInteger
description: >-
The era the nominations were submitted. (Except for initial
nominations which are considered submitted at era 0.)
suppressed:
type: boolean
description: Whether the nominations have been suppressed.
OnboardingAs:
type: string
enum:
- parachain
- parathread
description: |
This property only shows up when `paraLifecycle=onboarding`. It
describes if a particular para is onboarding as a `parachain` or a
`parathread`.
Operation:
type: object
properties:
phase:
$ref: '#/components/schemas/OperationPhase'
parentSpanId:
$ref: '#/components/schemas/SpanId'
primarySpanId:
$ref: '#/components/schemas/SpanId'
eventIndex:
type: string
format: unsignedInteger
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
description: Index of the underlying trace event.
address:
type: string
description: |
Account this operation affects. Note - this will be an object like
`{ id: address }` if the network uses `MultiAddress`
storage:
type: object
properties:
pallet:
type: string
item:
type: string
field1:
type: string
description: |
A field of the storage item. (i.e `system::Account::get(address).data`)
field2:
type: string
description: |
A field of the struct described by field1 (i.e
`system::Account::get(address).data.free`)
amount:
$ref: '#/components/schemas/OperationAmount'
OperationAmount:
type: object
properties:
type: string
format: unsignedInteger
currency:
$ref: '#/components/schemas/OperationAmountCurrency'
OperationAmountCurrency:
type: object
properties:
symbol:
type: string
example: KSM
OperationPhase:
type: object
properties:
variant:
type: string
enum:
- onInitialize
- initialChecks
- applyExtrinsic
- onFinalize
- finalChecks
description: Phase of block execution pipeline.
extrinsicIndex:
type: string
format: unsignedInteger
description: |
If phase variant is `applyExtrinsic` this will be the index of
the extrinsic. Otherwise this field will not be present.
PalletsAssetsInfo:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
assetInfo:
$ref: '#/components/schemas/AssetInfo'
$ref: '#/components/schemas/AssetMetadata'
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
pallet:
type: string
description: Name of the pallet.
example: "democracy"
palletIndex:
type: string
description: Index of the pallet for looking up errors.
example: "14"
items:
type: array
items:
$ref: '#/components/schemas/PalletErrorsItemMetadata'
description: Array containing metadata for each error entry of the pallet.
PalletErrorsItem:
type: object
properties:
pallet:
type: string
description: Name of the pallet.
example: "democracy"
palletIndex:
type: string
description: Index of the pallet for looking up errors.
example: "14"
errorItem:
type: string
description: Name of the error item.
example: "ValueLow"
metadata:
$ref: '#/components/schemas/PalletErrorsItemMetadata'
PalletErrorsItemMetadata:
type: object
properties:
name:
type: string
example: "InsufficientFunds"
description: The error item's name (which is the same as the error item's ID).
fields:
type: array
items:
type: string
index:
type: string
example: "0"
description: The index of the error item in the lists of pallet errors
docs:
type: string
example: " Information concerning any given error.\n\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control."
args:
type: array
items:
type: string
description: Metadata of an error item from a FRAME pallet.
PalletsNominationPool:
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
bondedPool:
$ref: '#/components/schemas/BondedPool'
rewardPool:
$ref: '#/components/schemas/RewardPool'
PalletsNominationPoolsInfo:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
counterForBondedPools:
type: number
counterForMetadata:
type: number
counterForPoolMembers:
type: number
counterForReversePoolIdLookup:
type: number
counterForRewardPools:
type: number
counterForSubPoolsStorage:
type: number
lastPoolId:
type: number
maxPoolMembers:
type: number
maxPoolMembersPerPool:
type: number
nullable: true
maxPools:
type: number
minCreateBond:
type: number
minJoinBond:
type: number
PalletStorage:
type: object
properties:
pallet:
description: Name of the pallet.
example: "democracy"
palletIndex:
type: string
description: Index of the pallet for looking up storage.
example: "15"
items:
type: array
items:
$ref: '#/components/schemas/PalletStorageItemMetadata'
description: Array containing metadata for each storage entry of the pallet.
PalletStorageItem:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
pallet:
type: string
description: Name of the pallet.
example: "democracy"
palletIndex:
type: string
description: Index of the pallet for looking up storage.
example: "15"
storageItem:
type: string
description: Name of the storage item.
example: "referendumInfoOf"
description: N Storage keys passed in as the `keys` query param.
example: ["0x00", "0x01"]
value:
type: object
description: Value returned by this storage query.
example:
Ongoing:
end: "1612800"
proposalHash: "0x7de70fc8be782076d0b5772be77153d172a5381c72dd56d3385e25f62abf507e"
threshold: "Supermajorityapproval"
delay: "403200"
tally:
ayes: "41925212461400000"
nays: "214535586500000"
turnout: "34485320658000000"
metadata:
$ref: '#/components/schemas/PalletStorageItemMetadata'
PalletStorageItemMetadata:
type: object
properties:
type: string
example: "ReferendumInfoOf"
description: The storage item's name (which is the same as the storage item's ID).
modifier:
type: string
example: "Optional"
type:
$ref: '#/components/schemas/PalletStorageType'
fallback:
type: string
example: "0x00"
docs:
type: string
example: " Information concerning any given referendum.\n\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control."
description: Metadata of a storage item from a FRAME pallet.
PalletStorageType:
type: object
description: If the query parameter 'adjustMetadataV13' is set to true, all historic blocks that are
pre v9110 will have the return type `StorageEntryTypeV13`, and all present and post v9110 blocks will
have a return type of `StorageEntryTypeV14`. Please check those types to see potential responses. This
will be deprecated and removed in the future, and will only live as `StorageEntryTypeV14`.
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
Para:
type: object
properties:
paraId:
type: string
format: unsignedInteger
paraLifecycle:
$ref: '#/components/schemas/ParaLifecycle'
onboardingAs:
$ref: '#/components/schemas/OnboardingAs'
Paras:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
paras:
type: array
items:
$ref: '#/components/schemas/Para'
ParasAuctionsCurrent:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
beginEnd:
type: string
format: unisgnedInteger or $null
description: |
Fist block (number) of the auction ending phase. `null` if there is no ongoing
auction.
finishEnd:
type: string
format: unisgnedInteger or $null
description: |
Last block (number) of the auction ending phase. `null` if there is no ongoing
auction.
phase:
type: string
enum:
Tarik Gul
committed
- startPeriod
- endPeriod
- vrfDelay
Tarik Gul
committed
An auction can be in one of 4 phases. Both `startingPeriod` () and `endingPeriod` indicate
an ongoing auction, while `vrfDelay` lines up with the `AuctionStatus::VrfDelay` . Finally, a value of `null`
indicates there is no ongoing auction. Keep in mind the that the `finishEnd` field is the block number the
`endingPeriod` finishes and the `vrfDelay` period begins. The `vrfDelay` period is typically about an
epoch long and no crowdloan contributions are accepted.
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
auctionIndex:
type: string
format: unsignedInteger
description: |
The auction number. If there is no current auction this will be the number
of the previous auction.
leasePeriods:
type: array
items:
type: string
format: unsignedInteger
description: |
Lease period indexes that may be bid on in this auction. `null` if
there is no ongoing auction.
winning:
type: array
items:
$ref: '#/components/schemas/WinningData'
ParasCrowdloans:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
funds:
type: array
items:
type: object
properties:
paraId:
type: string
format: unsignedInteger
fundInfo:
$ref: '#/components/schemas/FundInfo'
description: |
List of paras that have crowdloans.
ParasCrowdloanInfo:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
fundInfo:
$ref: '#/components/schemas/FundInfo'
leasePeriods:
type: array
items:
type: string
format: unsignedInteger
description: Lease periods the crowdloan can bid on.
Tarik Gul
committed
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
ParasHeaders:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
paraId:
type: object
description: |
The key is not named `paraId` and will be the number of the parachain. There is technically no limit to the number of paraId keys there can be.
properties:
hash:
type: string
description: The block's hash.
format: hex
number:
type: string
description: The block's height.
format: unsignedInteger
parentHash:
type: string
description: The hash of the parent block.
format: hex
stateRoot:
type: string
description: The state root after executing this block.
format: hex
extrinsicsRoot:
type: string
description: The Merkle root of the extrinsics.
format: hex
digest:
type: object
properties:
logs:
type: array
items:
$ref: '#/components/schemas/DigestItem'
description: Array of `DigestItem`s associated with the block.
ParasLeasesCurrent:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
leasePeriodIndex:
type: string
format: unsignedInteger
description: Current lease period index. This value may be null when the current block now,
substracted by the leaseOffset is less then zero.
endOfLeasePeriod:
type: string
format: unsignedInteger
description: Last block (number) of the current lease period. This value may be null when
`leasePeriodIndex` is null.
currentLeaseHolders:
type: array
items:
type: string
format: unsignedInteger
description: List of `paraId`s that currently hold a lease.
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
ParasLeaseInfo:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
paraLifecycle:
$ref: '#/components/schemas/ParaLifecycle'
onboardingAs:
$ref: '#/components/schemas/OnboardingAs'
leases:
type: array
items:
type: object
properties:
leasePeriodIndex:
type: string
format: unsignedInteger
account:
type: string
deposit:
type: string
format: unsignedInteger
description: |
List of lease periods for which the `paraId` holds a lease along with
the deposit held and the associated `accountId`.
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
ParaLifecycle:
type: string
enum:
- onboarding
- parathread
- parachain
- upgradingParathread
- downgradingParachain
- offboardingParathread
- offboardingParachain
description: |
The possible states of a para, to take into account delayed lifecycle
changes.
Payouts:
type: array
items:
type: object
properties:
validatorId:
type: string
description: AccountId of the validator the payout is coming from.
nominatorStakingPayout:
type: string
format: unsignedInteger
description: Payout for the reward destination associated with the
accountId the query was made for.
claimed:
type: boolean
description: Whether or not the reward has been claimed.
totalValidatorRewardPoints:
type: string
format: unsignedInteger
description: Number of reward points earned by the validator.
validatorCommission:
type: string
format: unsignedInteger
description: The percentage of the total payout that the validator takes as commission,
expressed as a Perbill.
totalValidatorExposure:
type: string
format: unsignedInteger
description: The sum of the validator's and its nominators' stake.
nominatorExposure:
type: string
format: unsignedInteger
description: The amount of stake the nominator has behind the validator.
description: Payout for a nominating _Stash_ address and
information about the validator they were nominating.
PeerInfo:
type: object
properties:
description: Peer ID.
roles:
description: Roles the peer is running
protocolVersion:
description: Peer's protocol version.
format: unsignedInteger
description: Hash of the best block on the peer's canon chain.
description: Height of the best block on the peer's canon chain.
format: unsignedInteger
RewardPool:
type: object
properties:
lastRecordedRewardCounter:
type: number
lastRecordedTotalPayouts:
type: number
totalRewardsClaimed:
type: number
RuntimeCode:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
code:
type: string
format: hex
type: object
properties:
$ref: '#/components/schemas/WeightsV2'
description: Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.
description: Extrinsic class.
enum:
- Normal
- Operational
- Mandatory
partialFee:
type: string
description: The _inclusion fee_ of a transaction, i.e. the minimum fee required for a transaction. Includes weight and encoded length fees, but does not have access to any signed extensions, e.g. the `tip`.
format: unsignedInteger
kind:
type: string
description: Information on the partialFee that is collected. Can be either `preDispatch`, `postDispatch` or `fromEvent`.
`preDispatch` means the information used to collect the fee was from `payment_queryInfo`, `postDispatch` means
the information used to calculate the fee was from finalized weights for the extrinsic, and `fromEvent` means that the partialFee was
abstracted from the `TransactionPayment::TransactionPaidFee` event.
description: RuntimeDispatchInfo for the transaction. Includes the `partialFee`.
RuntimeSpec:
type: object
properties:
at:
$ref: '#/components/schemas/BlockIdentifiers'
description: The version of the authorship interface. An authoring node
will not attempt to author blocks unless this is equal to its native runtime.
chainType:
$ref: '#/components/schemas/ChainType'
implVersion:
type: string
description: Version of the implementation specification. Non-consensus-breaking
optimizations are about the only changes that could be made which would
result in only the `impl_version` changing. The `impl_version` is set to 0
when `spec_version` is incremented.
specName:
type: string
description: Identifies the different Substrate runtimes.
specVersion:
type: string
description: Version of the runtime specification.
transactionVersion:
type: string
description: All existing dispatches are fully compatible when this number
doesn't change. This number must change when an existing dispatchable
(module ID, dispatch ID) is changed, either through an alteration in its
user-level semantics, a parameter added/removed/changed, a dispatchable