Axelar Amplifier GMP API

The Amplifier GMP API is the HTTP REST integration layer exposed by the Axelar Amplifier relayer service. External chain integrators and relayer operators use it to publish on-chain events (CALL, MESSAGE_EXECUTED, SIGNERS_ROTATED, ITS transfer events, etc.) and to poll pending transaction tasks (EXECUTE, APPROVE_MESSAGES, ROTATE_SIGNERS) that must be submitted to destination chains. Also supports CosmWasm contract broadcast and query, and large payload pre-storage.

OpenAPI Specification

amplifier-gmp-api.yaml Raw ↑
openapi: 3.0.3
info:
  title: Amplifier GMP API
  description: Integration layer for Amplifier chains
  version: 1.0.0
paths:
  /health:
    get:
      summary: Health check
      operationId: healthCheck
      responses:
        '200':
          description: OK
  /contracts/{wasmContractAddress}/broadcasts:
    post:
      summary: Broadcast arbitrary MsgExecuteContract transaction
      operationId: broadcastMsgExecuteContract
      parameters:
        - $ref: '#/components/parameters/wasmContractAddress'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WasmRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BroadcastResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /contracts/{wasmContractAddress}/broadcasts/{broadcastID}:
    get:
      summary: Get broadcast status
      operationId: getMsgExecuteContractBroadcastStatus
      parameters:
        - $ref: '#/components/parameters/wasmContractAddress'
        - $ref: '#/components/parameters/broadcastID'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BroadcastStatusResponse'
        '404':
          description: Broadcast Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /contracts/{wasmContractAddress}/queries:
    post:
      summary: Query arbitrary contract state
      operationId: queryContractState
      parameters:
        - $ref: '#/components/parameters/wasmContractAddress'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WasmRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractQueryResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Contract Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /chains/{chain}/events:
    post:
      summary: Publish on-chain events
      operationId: publishEvents
      parameters:
        - $ref: '#/components/parameters/chain'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublishEventsRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublishEventsResult'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Chain Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /chains/{chain}/tasks:
    get:
      summary: Poll transaction to be executed on chain
      operationId: getTasks
      parameters:
        - $ref: '#/components/parameters/chain'
        - $ref: '#/components/parameters/after'
        - $ref: '#/components/parameters/limit'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTasksResult'
        '404':
          description: Chain Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /chains/{chain}/tasks/{taskItemID}:
    get:
      summary: Retrieve a transaction to be executed on-chain by id
      operationId: getTask
      parameters:
        - $ref: '#/components/parameters/chain'
        - $ref: '#/components/parameters/taskItemID'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTaskResult'
        '404':
          description: Chain Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /payloads:
    post:
      summary: Temporarily store a large payload against its hash to bypass size restrictions on some chains.
      operationId: storePayload
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorePayloadResult'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /payloads/{hash}:
    get:
      summary: Retrieve a stored payload by its hash
      operationId: getPayload
      parameters:
        - name: hash
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/Keccak256Hash'
      responses:
        '200':
          description: OK
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Payload Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  parameters:
    chain:
      name: chain
      in: path
      required: true
      schema:
        type: string
      example: "ethereum"
    after:
      name: after
      in: query
      required: false
      schema:
        type: string
        x-go-type: uuid.UUID
        x-go-type-import:
          path: github.com/google/uuid
          name: uuid
      example: "deadbeef-dead-beef-dead-beefdeadbeef"
    limit:
      name: limit
      in: query
      required: false
      schema:
        type: integer
        minimum: 1
        default: 20
      example: 10
    wasmContractAddress:
      name: wasmContractAddress
      in: path
      required: true
      schema:
        type: string
        pattern: '^axelar1[acdefghjklmnpqrstuvwxyz023456789]{58}$'
      example: "axelar16mek8sdcsq78jltfue35zhm5ds0cxpl0dfnrel8kck3jwtecdtnqcejdav"
    broadcastID:
      name: broadcastID
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/BroadcastID'
      example: "deadbeef-dead-beef-dead-beefdeadbeef"
    taskItemID:
      name: taskItemID
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/TaskItemID'
      example: "deadbeef-dead-beef-dead-beefdeadbeef"
  schemas:
    PublishEventsRequest:
      type: object
      properties:
        events:
          type: array
          items:
            $ref: '#/components/schemas/Event'
          minItems: 1
          maxItems: 100
      required:
        - events
    EventType:
      type: string
      enum:
        - GAS_CREDIT
        - GAS_REFUNDED
        - CALL
        - MESSAGE_APPROVED
        - MESSAGE_EXECUTED
        - MESSAGE_EXECUTED/V2
        - CANNOT_EXECUTE_MESSAGE
        - CANNOT_EXECUTE_MESSAGE/V2
        - CANNOT_ROUTE_MESSAGE
        - CANNOT_EXECUTE_TASK
        - SIGNERS_ROTATED
        - ITS/LINK_TOKEN_STARTED
        - ITS/TOKEN_METADATA_REGISTERED
        - ITS/INTERCHAIN_TOKEN_DEPLOYMENT_STARTED
        - ITS/INTERCHAIN_TRANSFER
        - ITS/INTERCHAIN_TRANSFER_RECEIVED
        - ITS/INTERCHAIN_TOKEN_DEPLOYED
        - ITS/TOKEN_MANAGER_DEPLOYED
        - ITS/LINK_TOKEN_RECEIVED
        - ITS/FLOW_LIMIT_SET
        - APP/INTERCHAIN_TRANSFER_SENT
        - APP/INTERCHAIN_TRANSFER_RECEIVED
      x-enum-varnames:
        - EventTypeGasCredit
        - EventTypeGasRefunded
        - EventTypeCall
        - EventTypeMessageApproved
        - EventTypeMessageExecuted
        - EventTypeMessageExecutedV2
        - EventTypeCannotExecuteMessage
        - EventTypeCannotExecuteMessageV2
        - EventTypeCannotRouteMessage
        - EventTypeCannotExecuteTask
        - EventTypeSignersRotated
        - EventTypeITSLinkTokenStarted
        - EventTypeITSTokenMetadataRegistered
        - EventTypeITSInterchainTokenDeploymentStarted
        - EventTypeITSInterchainTransfer
        - EventTypeITSInterchainTransferReceived
        - EventTypeITSInterchainTokenDeployed
        - EventTypeITSTokenManagerDeployed
        - EventTypeITSLinkTokenReceived
        - EventTypeITSFlowLimitSet
        - EventTypeAppInterchainTransferSent
        - EventTypeAppInterchainTransferReceived
    EventMetadata:
      type: object
      properties:
        txID:
          type: string
          nullable: true
          x-omitempty: true
          minLength: 1
        timestamp:
          type: string
          format: date-time
        fromAddress:
          allOf:
            - $ref: '#/components/schemas/Address'
          nullable: true
          x-omitempty: true
        finalized:
          type: boolean
          nullable: true
          x-omitempty: true
          default: true
    CallEventMetadata:
      allOf:
        - $ref: '#/components/schemas/EventMetadata'
        - properties:
            parentMessageID:
              type: string
              nullable: true
              x-omitempty: true
              minLength: 1
            parentSourceChain:
              type: string
              nullable: true
              x-omitempty: true
              minLength: 1
            senderContractAddress:
              allOf:
                - $ref: '#/components/schemas/Address'
              nullable: true
              x-omitempty: true
            sourceContext:
              $ref: '#/components/schemas/MessageContext'
    MessageApprovedEventMetadata:
      allOf:
        - $ref: '#/components/schemas/EventMetadata'
        - properties:
            commandID:
              type: string
              nullable: true
              x-omitempty: true
              # TODO: use exact length
              minLength: 1
    MessageExecutedEventMetadata:
        allOf:
          - $ref: '#/components/schemas/EventMetadata'
          - properties:
              commandID:
                type: string
                nullable: true
                x-omitempty: true
                # TODO: use exact length
                minLength: 1
              childMessageIDs:
                type: array
                nullable: true
                x-omitempty: true
                items:
                  type: string
                  minLength: 1
              revertReason:
                type: string
                nullable: true
                x-omitempty: true
    CannotExecuteMessageEventMetadata:
      deprecated: true
      type: object
      properties:
        fromAddress:
          allOf:
            - $ref: '#/components/schemas/Address'
          nullable: true
          x-omitempty: true
        timestamp:
          type: string
          format: date-time
    CannotExecuteMessageEventV2Metadata:
      deprecated: true
      type: object
      properties:
        fromAddress:
          allOf:
            - $ref: '#/components/schemas/Address'
          nullable: true
          x-omitempty: true
        timestamp:
          type: string
          format: date-time
        taskItemID:
          $ref: '#/components/schemas/TaskItemID'
    SignersRotatedEventMetadata:
      allOf:
        - $ref: '#/components/schemas/EventMetadata'
        - properties:
            signersHash:
              type: string
              format: byte
              minLength: 1
            epoch:
              type: integer
              format: int64
              minimum: 0
    AppEventMetadata:
      allOf:
        - $ref: '#/components/schemas/EventMetadata'
        - properties:
            emittedByAddress:
              allOf:
                - $ref: '#/components/schemas/Address'
              nullable: true
              x-omitempty: true
    Event:
      oneOf:
        - $ref: '#/components/schemas/GasCreditEvent'
        - $ref: '#/components/schemas/GasRefundedEvent'
        - $ref: '#/components/schemas/CallEvent'
        - $ref: '#/components/schemas/MessageApprovedEvent'
        - $ref: '#/components/schemas/MessageExecutedEvent'
        - $ref: '#/components/schemas/MessageExecutedEventV2'
        - $ref: '#/components/schemas/CannotExecuteMessageEvent'
        - $ref: '#/components/schemas/CannotExecuteMessageEventV2'
        - $ref: '#/components/schemas/CannotRouteMessageEvent'
        - $ref: '#/components/schemas/CannotExecuteTaskEvent'
        - $ref: '#/components/schemas/SignersRotatedEvent'
        - $ref: '#/components/schemas/ITSLinkTokenStartedEvent'
        - $ref: '#/components/schemas/ITSTokenMetadataRegisteredEvent'
        - $ref: '#/components/schemas/ITSInterchainTokenDeploymentStartedEvent'
        - $ref: '#/components/schemas/ITSInterchainTransferEvent'
        - $ref: '#/components/schemas/ITSInterchainTransferReceivedEvent'
        - $ref: '#/components/schemas/ITSInterchainTokenDeployedEvent'
        - $ref: '#/components/schemas/ITSTokenManagerDeployedEvent'
        - $ref: '#/components/schemas/ITSLinkTokenReceivedEvent'
        - $ref: '#/components/schemas/ITSFlowLimitSetEvent'
        - $ref: '#/components/schemas/AppInterchainTransferSentEvent'
        - $ref: '#/components/schemas/AppInterchainTransferReceivedEvent'
      discriminator:
        propertyName: type
        mapping:
          GAS_CREDIT: '#/components/schemas/GasCreditEvent'
          GAS_REFUNDED: '#/components/schemas/GasRefundedEvent'
          CALL: '#/components/schemas/CallEvent'
          MESSAGE_APPROVED: '#/components/schemas/MessageApprovedEvent'
          MESSAGE_EXECUTED: '#/components/schemas/MessageExecutedEvent'
          MESSAGE_EXECUTED/V2: '#/components/schemas/MessageExecutedEventV2'
          CANNOT_EXECUTE_MESSAGE: '#/components/schemas/CannotExecuteMessageEvent'
          CANNOT_EXECUTE_MESSAGE/V2: '#/components/schemas/CannotExecuteMessageEventV2'
          CANNOT_ROUTE_MESSAGE: '#/components/schemas/CannotRouteMessageEvent'
          CANNOT_EXECUTE_TASK: '#/components/schemas/CannotExecuteTaskEvent'
          SIGNERS_ROTATED: '#/components/schemas/SignersRotatedEvent'
          ITS/LINK_TOKEN_STARTED: '#/components/schemas/ITSLinkTokenStartedEvent'
          ITS/TOKEN_METADATA_REGISTERED: '#/components/schemas/ITSTokenMetadataRegisteredEvent'
          ITS/INTERCHAIN_TOKEN_DEPLOYMENT_STARTED: '#/components/schemas/ITSInterchainTokenDeploymentStartedEvent'
          ITS/INTERCHAIN_TRANSFER: '#/components/schemas/ITSInterchainTransferEvent'
          ITS/INTERCHAIN_TRANSFER_RECEIVED: '#/components/schemas/ITSInterchainTransferReceivedEvent'
          ITS/INTERCHAIN_TOKEN_DEPLOYED: '#/components/schemas/ITSInterchainTokenDeployedEvent'
          ITS/TOKEN_MANAGER_DEPLOYED: '#/components/schemas/ITSTokenManagerDeployedEvent'
          ITS/LINK_TOKEN_RECEIVED: '#/components/schemas/ITSLinkTokenReceivedEvent'
          ITS/FLOW_LIMIT_SET: '#/components/schemas/ITSFlowLimitSetEvent'
          APP/INTERCHAIN_TRANSFER_SENT: '#/components/schemas/AppInterchainTransferSentEvent'
          APP/INTERCHAIN_TRANSFER_RECEIVED: '#/components/schemas/AppInterchainTransferReceivedEvent'
      properties:
        type:
          $ref: '#/components/schemas/EventType'
      required:
        - type
    EventBase:
        type: object
        properties:
          eventID:
            type: string
            minLength: 1
          meta:
            allOf:
              - $ref: '#/components/schemas/EventMetadata'
            nullable: true
            x-omitempty: true
        required:
          - eventID
    GasCreditEvent:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            messageID:
              type: string
              minLength: 1
            refundAddress:
              $ref: '#/components/schemas/Address'
            payment:
              $ref: '#/components/schemas/UnsignedToken'
          required:
            - messageID
            - refundAddress
            - payment
    GasRefundedEvent:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            messageID:
              type: string
              minLength: 1
            recipientAddress:
              $ref: '#/components/schemas/Address'
            refundedAmount:
              $ref: '#/components/schemas/UnsignedToken'
            cost:
              $ref: '#/components/schemas/Cost'
          required:
            - messageID
            - recipientAddress
            - refundedAmount
            - cost
    CallEvent:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            meta:
              allOf:
                - $ref: '#/components/schemas/CallEventMetadata'
              nullable: true
              x-omitempty: true
        - properties:
            message:
              $ref: "#/components/schemas/Message"
            destinationChain:
              type: string
              minLength: 1
            payload:
              type: string
              format: byte
            withToken:
                $ref: '#/components/schemas/UnsignedTokenWithRequiredID'
          required:
            - message
            - destinationChain
            - payload
    MessageApprovedEvent:
      deprecated: true
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            meta:
              allOf:
                - $ref: '#/components/schemas/MessageApprovedEventMetadata'
              nullable: true
              x-omitempty: true
        - properties:
            message:
              $ref: '#/components/schemas/Message'
            # TODO: should only be >0 if spent by integration's relayer
            cost:
              $ref: '#/components/schemas/Cost'
          required:
            - message
            - cost
    MessageExecutedEvent:
      deprecated: true
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            meta:
              allOf:
                - $ref: '#/components/schemas/MessageExecutedEventMetadata'
              nullable: true
              x-omitempty: true
        - properties:
            messageID:
              type: string
              minLength: 1
            sourceChain:
              type: string
              minLength: 1
            status:
              $ref: '#/components/schemas/MessageExecutionStatus'
            cost:
              # TODO: should only be >0 if spent by integration
              $ref: '#/components/schemas/Cost'
          required:
            - messageID
            - sourceChain
            - status
            - cost
    MessageExecutedEventV2:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            meta:
              allOf:
                - $ref: '#/components/schemas/MessageExecutedEventMetadata'
              nullable: true
              x-omitempty: true
        - properties:
            crossChainID:
              $ref: '#/components/schemas/CrossChainID'
            cost:
              # TODO: should only be >0 if spent by integration
              $ref: '#/components/schemas/Cost'
          required:
            - crossChainID
            - cost
    MessageExecutionStatus:
      deprecated: true
      type: string
      enum:
        - SUCCESSFUL
        - REVERTED
      x-enum-varnames:
        - MessageExecutionStatusSuccessful
        - MessageExecutionStatusReverted
    CannotExecuteMessageEvent:
        deprecated: true
        type: object
        allOf:
          - $ref: '#/components/schemas/EventBase'
          - properties:
              meta:
                allOf:
                  - $ref: '#/components/schemas/CannotExecuteMessageEventMetadata'
                nullable: true
                x-omitempty: true
          - properties:
              taskItemID:
                $ref: '#/components/schemas/TaskItemID'
              reason:
                $ref: '#/components/schemas/CannotExecuteMessageReason'
              details:
                type: string
                minLength: 1
            required:
                - taskItemID
                - reason
                - details
    CannotExecuteMessageEventV2:
      deprecated: true
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            meta:
              allOf:
                - $ref: '#/components/schemas/CannotExecuteMessageEventV2Metadata'
              nullable: true
              x-omitempty: true
        - properties:
            messageID:
              type: string
              minLength: 1
            sourceChain:
              type: string
              minLength: 1
            reason:
              $ref: '#/components/schemas/CannotExecuteMessageReason'
            details:
              type: string
              minLength: 1
          required:
            - messageID
            - sourceChain
            - reason
            - details
    CannotExecuteMessageReason:
      deprecated: true
      type: string
      enum:
        - INSUFFICIENT_GAS
        - ERROR
      x-enum-varnames:
        - CannotExecuteMessageReasonInsufficientGas
        - CannotExecuteMessageReasonError
    CannotRouteMessageEvent:
      deprecated: true
      description: |
        Event emitted when a message cannot be routed. Source chain of the message is implied to be the chain from which the event is emitted.
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            messageID:
              type: string
              minLength: 1
            reason:
              $ref: '#/components/schemas/CannotRouteMessageReason'
            details:
              type: string
              minLength: 1
          required:
            - messageID
            - reason
            - details
    CannotRouteMessageReason:
      deprecated: true
      type: string
      enum:
        - CUSTOM
        - ERROR
      x-enum-varnames:
        - CannotRouteMessageReasonCustom
        - CannotRouteMessageReasonError
    CannotExecuteTaskEvent:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            taskItemID:
              $ref: '#/components/schemas/TaskItemID'
            reason:
              $ref: '#/components/schemas/CannotExecuteTaskReason'
            details:
              type: string
              minLength: 1
            cost:
              # TODO: should only be >0 if spent by integration
              $ref: '#/components/schemas/Cost'
          required:
            - taskItemID
            - reason
            - details
    CannotExecuteTaskReason:
      type: string
      enum:
        - CUSTOM
        - ERROR
        - INSUFFICIENT_GAS
        - TX_REVERTED
      x-enum-varnames:
        - CannotExecuteTaskReasonCustom
        - CannotExecuteTaskReasonError
        - CannotExecuteTaskReasonInsufficientGas
        - CannotExecuteTaskReasonTxReverted
    SignersRotatedEvent:
        type: object
        allOf:
            - $ref: '#/components/schemas/EventBase'
            - properties:
                meta:
                  allOf:
                    - $ref: '#/components/schemas/SignersRotatedEventMetadata'
                  nullable: true
                  x-omitempty: true
            - properties:
                messageID:
                  type: string
                  minLength: 1
              required:
                - messageID
    ITSTokenMetadataRegisteredEvent:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            messageID:
              type: string
              minLength: 1
            address:
              $ref: '#/components/schemas/Address'
            decimals:
              type: integer
              format: uint8
              minimum: 0
          required:
            - messageID
            - address
            - decimals
    ITSLinkTokenStartedEvent:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            messageID:
              type: string
              minLength: 1
            tokenID:
              $ref: '#/components/schemas/TokenID'
            destinationChain:
              type: string
              minLength: 1
            sourceTokenAddress:
              type: string
              format: byte
              minLength: 1
            destinationTokenAddress:
              type: string
              format: byte
              minLength: 1
            tokenManagerType:
              $ref: '#/components/schemas/TokenManagerType'
          required:
            - messageID
            - tokenID
            - destinationChain
            - sourceTokenAddress
            - destinationTokenAddress
            - tokenManagerType
    ITSInterchainTokenDeploymentStartedEvent:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            messageID:
              type: string
              minLength: 1
            destinationChain:
              type: string
              minLength: 1
            token:
              $ref: '#/components/schemas/InterchainTokenDefinition'
          required:
            - destinationChain
            - messageID
            - token
    ITSInterchainTransferEvent:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            messageID:
              type: string
              minLength: 1
            destinationChain:
              type: string
              minLength: 1
            tokenSpent:
              $ref: '#/components/schemas/InterchainTransferTokenWithID'
            sourceAddress:
              $ref: '#/components/schemas/Address'
            destinationAddress:
              type: string
              format: byte
              minLength: 1
            dataHash:
              type: string
              format: byte
              minLength: 0
          required:
            - messageID
            - destinationChain
            - tokenSpent
            - sourceAddress
            - destinationAddress
            - dataHash
    ITSInterchainTransferReceivedEvent:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            messageID:
              type: string
              minLength: 1
            sourceChain:
              type: string
              minLength: 1
            sourceAddress:
              type: string
              format: byte
              minLength: 1
            destinationAddress:
              $ref: '#/components/schemas/Address'
            tokenReceived:
              $ref: '#/components/schemas/InterchainTransferTokenWithID'
            dataHash:
              type: string
              format: byte
              minLength: 0
          required:
            - messageID
            - sourceChain
            - sourceAddress
            - destinationAddress
            - tokenReceived
            - dataHash
    ITSInterchainTokenDeployedEvent:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            messageID:
              type: string
              minLength: 1
              nullable: true
            tokenID:
              $ref: '#/components/schemas/TokenID'
            tokenAddress:
              $ref: '#/components/schemas/Address'
            minter:
              $ref: '#/components/schemas/Address'
            name:
              type: string
              minLength: 1
            symbol:
              type: string
              minLength: 1
            decimals:
              type: integer
              format: uint8
              minimum: 0
          required:
            - messageID
            - tokenID
            - tokenAddress
            - minter
            - name
            - symbol
            - decimals
    ITSTokenManagerDeployedEvent:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            messageID:
              type: string
              minLength: 1
              nullable: true
            tokenID:
              $ref: '#/components/schemas/TokenID'
            tokenManager:
              $ref: '#/components/schemas/Address'
            tokenManagerType:
              $ref: '#/components/schemas/TokenManagerType'
          required:
            - messageID
            - tokenID
            - tokenManager
            - tokenManagerType
    ITSLinkTokenReceivedEvent:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            messageID:
              type: string
              minLength: 1
            tokenID:
              $ref: '#/components/schemas/TokenID'
            sourceChain:
              type: string
              minLength: 1
            sourceTokenAddress:
              type: string
              format: byte
              minLength: 1
            destinationTokenAddress:
              type: string
              format: byte
              minLength: 1
            tokenManagerType:
              $ref: '#/components/schemas/TokenManagerType'
          required:
            - messageID
            - tokenID
            - sourceChain
            - sourceTokenAddress
            - destinationTokenAddress
            - tokenManagerType
    ITSFlowLimitSetEvent:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            tokenID:
              $ref: '#/components/schemas/TokenID'
            operator:
              $ref: '#/components/schemas/Address'
            flowLimit:
              $ref: '#/components/schemas/UnsignedBigInt'
          required:
            - tokenID
            - operator
            - flowLimit
    AppInterchainTransferSentEvent:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventBase'
        - properties:
            meta:
              allOf:
                - $ref: '#/components/schemas/AppEventMetadata'
              null

# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/axelar/refs/heads/main/openapi/amplifier-gmp-api.yaml