arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
hermez-node/api/swagger.yml
api/swagger.ymlRaw
   1openapi: 3.0.0
   2info:
   3  description: |
   4    This API server is the layer that allows 3rd party apps and services interfacing with the coordinator to explore, monitor and use the Hermez rollup.
   5    Example of these apps are:
   6    * Wallet: send L2 transactions, check balance, ...
   7    * Explorer: List transactions, slots, batches, ...
   8    * Exchange integrations
   9    
  10    ### Pagination
  11    
  12    #### Usage
  13
  14    All the endpoints that return a list of undefined size use pagination. Unless the opposite is explicitly said.
  15    In order to use pagination, three query parameters are used:
  16    * `fromItem`: indicates the first item to be returned. In general, this parameter shouldn't be provided in the first call to the endpoint, and use the `itemId` of the last returned item (+/-) 1, if the order is (ascending/descending).
  17    * `order`: all pginated items are ordered chronologicaly. However the specific fields to guarantee this order depend on each endpoint. For this purpose, `itemId` is used (itemId follows ascending chronological order except for unforged L1 user transactions). If the parameter is not provided, ascending order will be used by default. 
  18    * `limit`: maximum amount of items to include in each response. Default is 20, maximum 2049.
  19    
  20    Responses for those endpoint will always include a `pagination` object. This object includes the total amount of items that the endpoint will return at a given time with the given filters. Apart from that, it also includes the `itemId` of the last and first items that will be returned (not in a single response but within the total items). These two properties can be used to know when to stop querying. 
  21
  22    #### Reorgs and safetyness
  23
  24    Since all the items are ordered chronologicaly, there are no safety problems when fetching items in ascending order, except for reorgs (more on this later).
  25    On the other hand, when iterating in descending order, new items will be added at the beginning. This doesn't cause any safety problem, but to get those new items, it's necessary to start queryng without the `fromItem` set to `pagination.lastItem`.
  26    To handle reorgs, the `itemId` can be used since it will change. This is important since other identifiers may be the same but with different content. As an example, if the batch 424 get's reorged, it will be deleted, but eventualy, a new batch 424 will appear with potentialy different content.
  27
  28    ### Signatures
  29
  30    The POST endpoint require to be signed using BabyJubJub or Ethereum keys. TODO: add references to libraries / examples / ...    
  31
  32  version: "0.0.1"
  33  title: Hermez Network API
  34#  termsOfService: 'http://swagger.io/terms/'
  35#  contact:
  36#    email: apiteam@swagger.io
  37#  license:
  38#    name: Apache 2.0
  39#    url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
  40externalDocs:
  41  description: Find out more about Hermez.
  42  url: 'https://hermez.io'
  43servers:
  44  - description: Hosted mock up
  45    url: http://167.71.59.190:4010
  46  - description: Localhost mock Up
  47    url: http://localhost:4010
  48tags:
  49  - name: Account
  50    description: Hermez account and the tokens it holds.
  51    externalDocs:
  52      description: Find out more.
  53      url: 'https://idocs.hermez.io/#/spec/zkrollup/README?id=account-types'
  54  - name: Transaction
  55    description: Send tokens off chain and track transactions.
  56    externalDocs:
  57      description: Find out more
  58      url: 'https://idocs.hermez.io/#/spec/zkrollup/README?id=transaction-types'
  59  - name: Hermez status
  60    description: Info about operators, tokens, auctions and more.
  61    externalDocs:
  62      description: Find out more.
  63      url: 'https://idocs.hermez.io/#/spec/zkrollup/README'
  64paths:
  65  '/account-creation-authorization':
  66    post:
  67      tags:
  68        - Account
  69      summary: Send an authorization that will allow the coordinator to register accounts associated to an Ethereum address on behalf of the user.
  70      description: >-
  71        Send an authorization to create rollup accounts associated to an Ethereum address. Each account creation (an account can only hold a specific token) is effective once the coordinator forges the corresponding L1CoordinatorTx (which are always of type *account creation*).        
  72      operationId: postRegister
  73      requestBody:
  74        description: Account creation authorization.
  75        required: true
  76        content:
  77          application/json:
  78            schema:
  79              $ref: '#/components/schemas/AccountCreationAuthorizationPost'
  80      responses:
  81        '200':
  82          description: Successful operation.
  83        '400':
  84          description: Bad request.
  85          content:
  86            application/json:
  87              schema:
  88                $ref: '#/components/schemas/Error400'
  89        '500':
  90          description: Internal server error.
  91          content:
  92            application/json:
  93              schema:
  94                $ref: '#/components/schemas/Error500'
  95  '/account-creation-authorization/{hezEthereumAddress}':
  96    get:
  97      tags:
  98        - Account
  99      summary: Get to know if the coordinator has the ability to create accounts associated to an Ethereum address.
 100      description: >-
 101        True if the coordinator has the required authorization to perform an account creation with the given Ethereum address on behalf of the Ethereum address holder.        
 102      operationId: getAccountCreationAuthorization
 103      parameters:
 104        - name: hezEthereumAddress
 105          in: path
 106          description: Ethereum address.
 107          required: true
 108          schema:
 109            $ref: '#/components/schemas/HezEthereumAddress'
 110      responses:
 111        '200':
 112          description: Successful operation.
 113          content:
 114            application/json:
 115              schema:
 116                $ref: '#/components/schemas/AccountCreationAuthorization'
 117        '400':
 118          description: Bad request.
 119          content:
 120            application/json:
 121              schema:
 122                $ref: '#/components/schemas/Error400'
 123        '404':
 124          description: Not found.
 125          content:
 126            application/json:
 127              schema:
 128                $ref: '#/components/schemas/Error404'
 129        '500':
 130          description: Internal server error.
 131          content:
 132            application/json:
 133              schema:
 134                $ref: '#/components/schemas/Error500'
 135  '/accounts':
 136    get:
 137      tags:
 138        - Account
 139      summary: Get accounts balances and other associated information.
 140      description: Get accounts balances and other associated information.
 141      operationId: getAccounts
 142      parameters:
 143        - name: hezEthereumAddress
 144          in: query
 145          description: Only get accounts associated to an Ethereum address. Incompatible with the query `BJJ`.
 146          required: false
 147          schema:
 148            $ref: '#/components/schemas/HezEthereumAddress'
 149        - name: BJJ
 150          in: query
 151          description: Only get accounts associated to a BabyJubJub public key.  Incompatible with the query `hezEthereumAddress`.
 152          required: false
 153          schema:
 154            $ref: '#/components/schemas/BJJ'
 155        - name: tokenIds
 156          in: query
 157          required: false
 158          description: Only get accounts of specific tokens.
 159          schema:
 160            type: string
 161            description: Comma separated list of token identifiers.
 162            example: "3,87,91"
 163        - name: fromItem
 164          in: query
 165          required: false
 166          description: Indicates the desired first item (using the itemId property) to be included in the response.
 167          schema:
 168            type: number
 169        - name: order
 170          in: query
 171          required: false
 172          description: Order of the returned items. Accounts will be ordered by increasing account index.
 173          schema:
 174            type: string
 175            default: ASC
 176            enum:
 177                - ASC
 178                - DESC
 179        - name: limit
 180          in: query
 181          required: false
 182          description: Maximum number of items to be returned.
 183          schema:
 184            type: integer
 185            minimum: 1
 186            maximum: 2049
 187      responses:
 188        '200':
 189          description: Successful operation.
 190          content:
 191            application/json:
 192              schema:
 193                $ref: '#/components/schemas/Accounts'
 194        '400':
 195          description: Bad request.
 196          content:
 197            application/json:
 198              schema:
 199                $ref: '#/components/schemas/Error400'
 200        '404':
 201          description: Not found.
 202          content:
 203            application/json:
 204              schema:
 205                $ref: '#/components/schemas/Error404'
 206        '500':
 207          description: Internal server error.
 208          content:
 209            application/json:
 210              schema:
 211                $ref: '#/components/schemas/Error500'
 212  '/accounts/{accountIndex}':
 213    get:
 214      tags:
 215        - Account
 216      summary: Get an account by its index.
 217      description: Get an account by its index.
 218      operationId: getAccount
 219      parameters:
 220        - name: accountIndex
 221          in: path
 222          description: Identifier of an account.
 223          required: true
 224          schema:
 225            $ref: '#/components/schemas/AccountIndex'
 226      responses:
 227        '200':
 228          description: Successful operation.
 229          content:
 230            application/json:
 231              schema:
 232                $ref: '#/components/schemas/Account'
 233        '400':
 234          description: Bad request.
 235          content:
 236            application/json:
 237              schema:
 238                $ref: '#/components/schemas/Error400'
 239        '404':
 240          description: Not found.
 241          content:
 242            application/json:
 243              schema:
 244                $ref: '#/components/schemas/Error404'
 245        '500':
 246          description: Internal server error.
 247          content:
 248            application/json:
 249              schema:
 250                $ref: '#/components/schemas/Error500'
 251  '/exits':
 252    get:
 253      tags:
 254        - Account
 255      summary: Get exit information. This information is required to perform a withdraw.
 256      description: Get exit information. This information is required to perform a withdraw.
 257      operationId: getExits
 258      parameters:
 259        - name: tokenId
 260          in: query
 261          required: false
 262          description: Only get exits of specific token
 263          schema:
 264            $ref: '#/components/schemas/TokenId'
 265        - name: hezEthereumAddress
 266          in: query
 267          description: Get exits associated to a Ethereum address. Incompatible with query `BJJ` and `accountIndex`.
 268          required: false
 269          schema:
 270            $ref: '#/components/schemas/HezEthereumAddress'
 271        - name: BJJ
 272          in: query
 273          description: Get exits associated to a BabyJubJub public key. Incompatible with query `hezEthereumAddress` and `accountIndex`.
 274          required: false
 275          schema:
 276            $ref: '#/components/schemas/BJJ'
 277        - name: accountIndex
 278          in: query
 279          description: Get exits associated to a specific account. Incompatible with queries `tokenId`, `hezEthereumAddress` and `BJJ`.
 280          required: false
 281          schema:
 282            $ref: '#/components/schemas/AccountIndex'
 283        - name: batchNum
 284          in: query
 285          description: Get exits from the exit tree of a specific batch.
 286          required: false
 287          schema:
 288            $ref: '#/components/schemas/BatchNum'
 289        - name: onlyPendingWithdraws
 290          in: query
 291          description: Get exits with pending withdrawals.
 292          required: false
 293          schema:
 294            type: boolean
 295        - name: fromItem
 296          in: query
 297          required: false
 298          description: Indicates the desired first item (using the itemId property) to be included in the response.
 299          schema:
 300            type: number
 301        - name: order
 302          in: query
 303          required: false
 304          description: Order of the returned items. Exits will be ordered by increasing (batchNum, accountIndex).
 305          schema:
 306            type: string
 307            default: ASC
 308            enum:
 309                - ASC
 310                - DESC
 311        - name: limit
 312          in: query
 313          required: false
 314          description: Maximum number of items to be returned.
 315          schema:
 316            type: integer
 317            minimum: 1
 318            maximum: 2049
 319      responses:
 320        '200':
 321          description: Successful operation.
 322          content:
 323            application/json:
 324              schema:
 325                $ref: '#/components/schemas/Exits'
 326        '400':
 327          description: Bad request.
 328          content:
 329            application/json:
 330              schema:
 331                $ref: '#/components/schemas/Error400'
 332        '404':
 333          description: Not found.
 334          content:
 335            application/json:
 336              schema:
 337                $ref: '#/components/schemas/Error404'
 338        '500':
 339          description: Internal server error.
 340          content:
 341            application/json:
 342              schema:
 343                $ref: '#/components/schemas/Error500'
 344  '/exits/{batchNum}/{accountIndex}':
 345    get:
 346      tags:
 347        - Account
 348      summary: Get specific exit information.
 349      description: Get exit information form a specific exit tree and account. This information is required to perform a withdraw. Exits are identified with accounIndex and batchNum since every batch that has exits has a different exit tree.
 350      operationId: getExit
 351      parameters:
 352        - name: batchNum
 353          in: path
 354          description: Batch of the exit tree.
 355          required: true
 356          schema:
 357            $ref: '#/components/schemas/BatchNum'
 358        - name: accountIndex
 359          in: path
 360          description: Account identifier.
 361          required: true
 362          schema:
 363            $ref: '#/components/schemas/AccountIndex'
 364      responses:
 365        '200':
 366          description: Successful operation.
 367          content:
 368            application/json:
 369              schema:
 370                $ref: '#/components/schemas/Exit'
 371        '400':
 372          description: Bad request.
 373          content:
 374            application/json:
 375              schema:
 376                $ref: '#/components/schemas/Error400'
 377        '404':
 378          description: Not found.
 379          content:
 380            application/json:
 381              schema:
 382                $ref: '#/components/schemas/Error404'
 383        '500':
 384          description: Internal server error.
 385          content:
 386            application/json:
 387              schema:
 388                $ref: '#/components/schemas/Error500'
 389  '/transactions-pool':
 390    post:
 391      tags:
 392        - Transaction
 393      summary: Add an L2 transaction to the coordinator's pool
 394      description: >-
 395        Send L2 transaction. The transaction will be stored in the transaction pool of the coordinator and eventually forged.        
 396      operationId: postTx
 397      requestBody:
 398        description: Signed transaction.
 399        required: true
 400        content:
 401          application/json:
 402            schema:
 403              $ref: '#/components/schemas/PostPoolL2Transaction'
 404      responses:
 405        '200':
 406          description: Successful operation.
 407          content:
 408            application/json:
 409              schema:
 410                $ref: '#/components/schemas/TransactionId'
 411        '400':
 412          description: Bad request.
 413          content:
 414            application/json:
 415              schema:
 416                $ref: '#/components/schemas/Error400'
 417        '500':
 418          description: Internal server error.
 419          content:
 420            application/json:
 421              schema:
 422                $ref: '#/components/schemas/Error500'
 423  '/transactions-pool/{id}':
 424    get:
 425      tags:
 426        - Transaction
 427      summary: Get details and status of a transaction that is in the pool.
 428      description: >-
 429        Get transaction from the pool by its id. This endpoint is specially useful for tracking the status of a transaction that may not be forged yet.
 430        Only transactions from the pool will be returned.
 431        Note that the transaction pool is different for each coordinator and therefore only a coordinator that has received a specific transaction
 432        will be able to provide information about that transaction.        
 433      operationId: getPoolTx
 434      parameters:
 435        - name: id
 436          in: path
 437          description: Transaction identifier.
 438          required: true
 439          schema:
 440            $ref: '#/components/schemas/TransactionId'
 441      responses:
 442        '200':
 443          description: Successful operation.
 444          content:
 445            application/json:
 446              schema:
 447                $ref: '#/components/schemas/PoolL2Transaction'
 448        '400':
 449          description: Bad request.
 450          content:
 451            application/json:
 452              schema:
 453                $ref: '#/components/schemas/Error400'
 454        '404':
 455          description: Not found.
 456          content:
 457            application/json:
 458              schema:
 459                $ref: '#/components/schemas/Error404'
 460        '500':
 461          description: Internal server error.
 462          content:
 463            application/json:
 464              schema:
 465                $ref: '#/components/schemas/Error500'
 466  '/transactions-history':
 467    get:
 468      tags:
 469        - Transaction
 470      summary: Get details and status of transactions that have been forged.
 471      description: >-
 472        Get historical transactions. This endpoint will return all the different types of transactions except for:
 473          - Transactions that are still in the transaction pool of any coordinator. These transactions can be fetched using `GET /transactions-pool/{id}`.
 474          - L1 transactions sent by users that have not been forged yet. These transactions can be fetched using `GET /transactions-history/{id}`.        
 475      operationId: getHistoryTxs
 476      parameters:
 477        - name: tokenId
 478          in: query
 479          required: false
 480          description: Only get transactions of specific token
 481          schema:
 482            $ref: '#/components/schemas/TokenId'
 483        - name: hezEthereumAddress
 484          in: query
 485          required: false
 486          description: Only get transactions sent from or to an account associated to an Ethereum address Incompatible with the queries `BJJ` and `accountIndex`.
 487          schema:
 488            $ref: '#/components/schemas/HezEthereumAddress'
 489        - name: BJJ
 490          in: query
 491          description: Only get transactions associated to a BabyJubJub public key. Incompatible with the queries `hezEthereumAddress` and `accountIndex`.
 492          required: false
 493          schema:
 494            $ref: '#/components/schemas/BJJ'
 495        - name: accountIndex
 496          in: query
 497          required: false
 498          description: Only get transactions sent from or to a specific account. Incompatible with the queries `tokenId`, `hezEthereumAddress` and `BJJ`.
 499          schema:
 500            $ref: '#/components/schemas/AccountIndex'
 501        - name: batchNum
 502          in: query
 503          required: false
 504          description: Only get transactions forged in a specific batch.
 505          schema:
 506            $ref: '#/components/schemas/BatchNum'
 507        - name: type
 508          in: query
 509          required: false
 510          description: Only get transactions of a specific type.
 511          schema:
 512            $ref: '#/components/schemas/TransactionType'
 513        - name: fromItem
 514          in: query
 515          required: false
 516          description: Indicates the desired first item (using the itemId property) to be included in the response.
 517          schema:
 518            type: number
 519        - name: order
 520          in: query
 521          required: false
 522          description: Order of the returned items. History transactions will be ordered by (batchNum, position).
 523          schema:
 524            type: string
 525            default: ASC
 526            enum:
 527                - ASC
 528                - DESC
 529        - name: limit
 530          in: query
 531          required: false
 532          description: Maximum number of items to be returned.
 533          schema:
 534            type: integer
 535            minimum: 1
 536            maximum: 2049
 537      responses:
 538        '200':
 539          description: Successful operation.
 540          content:
 541            application/json:
 542              schema:
 543                $ref: '#/components/schemas/HistoryTransactions'
 544        '400':
 545          description: Bad request.
 546          content:
 547            application/json:
 548              schema:
 549                $ref: '#/components/schemas/Error400'
 550        '404':
 551          description: Not found.
 552          content:
 553            application/json:
 554              schema:
 555                $ref: '#/components/schemas/Error404'
 556        '500':
 557          description: Internal server error.
 558          content:
 559            application/json:
 560              schema:
 561                $ref: '#/components/schemas/Error500'
 562  '/transactions-history/{id}':
 563    get:
 564      tags:
 565        - Transaction
 566      summary: Get details and status of a historical transaction.
 567      description: >-
 568        Get transaction from the history by its id. This endpoint will return all the different types of transactions except those that are still in the pool of any coordinator.        
 569      operationId: getHistoryTx
 570      parameters:
 571        - name: id
 572          in: path
 573          description: Transaction identifier.
 574          required: true
 575          schema:
 576            $ref: '#/components/schemas/TransactionId'
 577      responses:
 578        '200':
 579          description: Successful operation.
 580          content:
 581            application/json:
 582              schema:
 583                $ref: '#/components/schemas/HistoryTransaction'
 584        '400':
 585          description: Bad request.
 586          content:
 587            application/json:
 588              schema:
 589                $ref: '#/components/schemas/Error400'
 590        '404':
 591          description: Not found.
 592          content:
 593            application/json:
 594              schema:
 595                $ref: '#/components/schemas/Error404'
 596        '500':
 597          description: Internal server error.
 598          content:
 599            application/json:
 600              schema:
 601                $ref: '#/components/schemas/Error500'
 602  '/batches':
 603    get:
 604      tags:
 605        - Hermez status
 606      summary: Get information about forged batches.
 607      description: >-
 608        Get information about forged batches.        
 609      operationId: getBatches
 610      parameters:
 611        - name: minBatchNum
 612          in: query
 613          required: false
 614          description: Include only `batchNum > minBatchNum` batches.
 615          schema:
 616            $ref: '#/components/schemas/BatchNum'
 617        - name: maxBatchNum
 618          in: query
 619          required: false
 620          description: Include only `batchNum < maxBatchNum` batches.
 621          schema:
 622            type: number
 623        - name: slotNum
 624          in: query
 625          required: false
 626          description: Include only batches that were forged within the specified slot.
 627          schema:
 628            $ref: '#/components/schemas/SlotNum'
 629        - name: forgerAddr
 630          in: query
 631          required: false
 632          description: Include only batches forged by `forgerAddr`
 633          schema:
 634            $ref: '#/components/schemas/EthereumAddress'
 635        - name: fromItem
 636          in: query
 637          required: false
 638          description: Indicates the desired first item (using the itemId property) to be included in the response.
 639          schema:
 640            type: number
 641        - name: order
 642          in: query
 643          required: false
 644          description: Order of the returned items. Batches will be ordered by increasing `batchNum`.
 645          schema:
 646            type: string
 647            default: ASC
 648            enum:
 649                - ASC
 650                - DESC
 651        - name: limit
 652          in: query
 653          required: false
 654          description: Maximum number of items to be returned.
 655          schema:
 656            type: integer
 657            minimum: 1
 658            maximum: 2049
 659      responses:
 660        '200':
 661          description: Successful operation.
 662          content:
 663            application/json:
 664              schema:
 665                $ref: '#/components/schemas/Batches'
 666        '400':
 667          description: Bad request.
 668          content:
 669            application/json:
 670              schema:
 671                $ref: '#/components/schemas/Error400'
 672        '404':
 673          description: Not found.
 674          content:
 675            application/json:
 676              schema:
 677                $ref: '#/components/schemas/Error404'
 678        '500':
 679          description: Internal server error.
 680          content:
 681            application/json:
 682              schema:
 683                $ref: '#/components/schemas/Error500'                
 684  '/batches/{batchNum}':
 685    get:
 686      tags:
 687        - Hermez status
 688      summary: Get a specific batch.
 689      description: >-
 690        Get a specific batch.        
 691      operationId: getBatch
 692      parameters:
 693        - name: batchNum
 694          in: path
 695          description: Batch identifier.
 696          required: true
 697          schema:
 698            $ref: '#/components/schemas/BatchNum'
 699      responses:
 700        '200':
 701          description: Successful operation
 702          content:
 703            application/json:
 704              schema:
 705                $ref: '#/components/schemas/Batch'
 706        '400':
 707          description: Bad request.
 708          content:
 709            application/json:
 710              schema:
 711                $ref: '#/components/schemas/Error400'
 712        '404':
 713          description: Not found.
 714          content:
 715            application/json:
 716              schema:
 717                $ref: '#/components/schemas/Error404'
 718        '500':
 719          description: Internal server error.
 720          content:
 721            application/json:
 722              schema:
 723                $ref: '#/components/schemas/Error500'
 724  '/full-batches/{batchNum}':
 725    get:
 726      tags:
 727        - Hermez status
 728      summary: Get a full batch
 729      description: >-
 730        Get a specific batch, including the associated transactions. The object returned in this method can be a bit heavy. 
 731        If you're devloping a front end, you may consider using a combinaton of `GET /batches/{batchnum}` and `GET /history-transactions?batchNum={batchNum}`.        
 732      operationId: getFullBatch
 733      parameters:
 734        - name: batchNum
 735          in: path
 736          description: Batch identifier
 737          required: true
 738          schema:
 739            $ref: '#/components/schemas/BatchNum'
 740      responses:
 741        '200':
 742          description: successful operation
 743          content:
 744            application/json:
 745              schema:
 746                $ref: '#/components/schemas/FullBatch'
 747        '400':
 748          description: Bad request.
 749          content:
 750            application/json:
 751              schema:
 752                $ref: '#/components/schemas/Error400'
 753        '404':
 754          description: Not found.
 755          content:
 756            application/json:
 757              schema:
 758                $ref: '#/components/schemas/Error404'
 759        '500':
 760          description: Internal server error.
 761          content:
 762            application/json:
 763              schema:
 764                $ref: '#/components/schemas/Error500'
 765  '/slots':
 766    get:
 767      tags:
 768        - Hermez status
 769      summary: Get information about slots.
 770      description: >-
 771        Get information about slots.        
 772      operationId: getSlots
 773      parameters:
 774        - name: minSlotNum
 775          in: query
 776          required: false
 777          description: Only include slots with `slotNum >= minSlotNum`. By default, `minSlotNum = 0`.
 778          schema:
 779            $ref: '#/components/schemas/SlotNum'
 780        - name: maxSlothNum
 781          in: query
 782          required: false
 783          description: Only include slots with `slotNum <= maxSlotNum`.
 784          schema:
 785            $ref: '#/components/schemas/SlotNum'
 786        - name: wonByEthereumAddress
 787          in: query
 788          required: false
 789          description: Only include slots won by a coordinator whose `bidderAddr == wonByEthereumAddress`.
 790          schema:
 791            $ref: '#/components/schemas/EthereumAddress'
 792        - name: finishedAuction
 793          in: query
 794          required: false
 795          description: If set to true, only include slots whose auction has finished.
 796          schema:
 797            type: boolean
 798        - name: fromItem
 799          in: query
 800          required: false
 801          description: Indicates the desired first item (using the itemId property) to be included in the response.
 802          schema:
 803            type: number
 804        - name: order
 805          in: query
 806          required: false
 807          description: Order of the returned items. Slots will be ordered by increasing `slotNum`.
 808          schema:
 809            type: string
 810            default: ASC
 811            enum:
 812                - ASC
 813                - DESC
 814        - name: limit
 815          in: query
 816          required: false
 817          description: Maximum number of items to be returned.
 818          schema:
 819            type: integer
 820            minimum: 1
 821            maximum: 2049
 822      responses:
 823        '200':
 824          description: Successful operation.
 825          content:
 826            application/json:
 827              schema:
 828                $ref: '#/components/schemas/Slots'
 829        '400':
 830          description: Bad request.
 831          content:
 832            application/json:
 833              schema:
 834                $ref: '#/components/schemas/Error400'
 835        '404':
 836          description: Not found.
 837          content:
 838            application/json:
 839              schema:
 840                $ref: '#/components/schemas/Error404'
 841        '500':
 842          description: Internal server error.
 843          content:
 844            application/json:
 845              schema:
 846                $ref: '#/components/schemas/Error500'
 847  '/slots/{slotNum}':
 848    get:
 849      tags:
 850        - Hermez status
 851      summary: Get information about a specific slot.
 852      description: >-
 853        Get information about a specific slot.        
 854      operationId: getSlot
 855      parameters:
 856        - name: slotNum
 857          in: path
 858          required: true
 859          description: Identifier of the slot.
 860          schema:
 861            $ref: '#/components/schemas/SlotNum'
 862      responses:
 863        '200':
 864          description: Successful operation.
 865          content:
 866            application/json:
 867              schema:
 868                $ref: '#/components/schemas/Slot'
 869        '400':
 870          description: Bad request.
 871          content:
 872            application/json:
 873              schema:
 874                $ref: '#/components/schemas/Error400'
 875        '404':
 876          description: Not found.
 877          content:
 878            application/json:
 879              schema:
 880                $ref: '#/components/schemas/Error404'
 881        '500':
 882          description: Internal server error.
 883          content:
 884            application/json:
 885              schema:
 886                $ref: '#/components/schemas/Error500'
 887  '/bids':
 888    get:
 889      tags:
 890        - Hermez status
 891      summary: Get a list of bids made for a specific slot auction.
 892      description: Get a list of bids made for a specific slot auction. Is necessary to add a filter (`slotNum` or `bidderAddr`).
 893      operationId: getSlotBids
 894      parameters:
 895        - name: slotNum
 896          in: query
 897          description: Slot identifier. Specify the auction where the returned bids were made.
 898          required: false
 899          schema:
 900            $ref: '#/components/schemas/SlotNum'
 901        - name: bidderAddr
 902          in: query
 903          description: Get only bids made by a coordinator identified by its bidder address. In this case, the bids will be returned in the order that the coordinator made them.
 904          required: false
 905          schema:
 906            $ref: '#/components/schemas/EthereumAddress'
 907        - name: fromItem
 908          in: query
 909          required: false
 910          description: Indicates the desired first item (using the itemId property) to be included in the response.
 911          schema:
 912            type: number
 913        - name: order
 914          in: query
 915          required: false
 916          description: Order of the returned items. Bids will be ordered by increasing (slotNum, bidValue)`.
 917          schema:
 918            type: string
 919            default: ASC
 920            enum:
 921                - ASC
 922                - DESC
 923        - name: limit
 924          in: query
 925          required: false
 926          description: Maximum number of items to be returned.
 927          schema:
 928            type: integer
 929            minimum: 1
 930            maximum: 2049
 931      responses:
 932        '200':
 933          description: Successful operation
 934          content:
 935            application/json:
 936              schema:
 937                $ref: '#/components/schemas/Bids'
 938        '400':
 939          description: Bad request.
 940          content:
 941            application/json:
 942              schema:
 943                $ref: '#/components/schemas/Error400'
 944        '404':
 945          description: Not found.
 946          content:
 947            application/json:
 948              schema:
 949                $ref: '#/components/schemas/Error404'
 950        '500':
 951          description: Internal server error.
 952          content:
 953            application/json:
 954              schema:
 955                $ref: '#/components/schemas/Error500'
 956  '/state':
 957    get:
 958      tags:
 959        - Hermez status
 960      summary: Return information that represents the current state of the network.
 961      description: Return information that represents the current state of the network. It also includes metrics and statistics.
 962      operationId: getState
 963      responses:
 964        '200':
 965          description: Successful operation.
 966          content:
 967            application/json:
 968              schema:
 969                $ref: '#/components/schemas/State'
 970        '400':
 971          description: Bad request.
 972          content:
 973            application/json:
 974              schema:
 975                $ref: '#/components/schemas/Error400'
 976        '500':
 977          description: Internal server error.
 978          content:
 979            application/json:
 980              schema:
 981                $ref: '#/components/schemas/Error500'
 982  '/config':
 983    get:
 984      tags:
 985        - Hermez status
 986      summary: Return constant configuration of the network.
 987      description: Return constant configuration of the network.
 988      operationId: getConfig
 989      responses:
 990        '200':
 991          description: Successful operation.
 992          content:
 993            application/json:
 994              schema:
 995                $ref: '#/components/schemas/Config'
 996        '500':
 997          description: Internal server error.
 998          content:
 999            application/json:
1000              schema:
1001                $ref: '#/components/schemas/Error500'
1002  '/tokens':
1003    get:
1004      tags:
1005        - Hermez status
1006      summary: Get information of the supported tokens in the Hermez network.
1007      description: Get information of the supported tokens in the Hermez network.
1008      operationId: getTokens
1009      parameters:
1010        - name: ids
1011          in: query
1012          required: false
1013          description: Include only specific tokens by their Hermez identifiers.
1014          schema:
1015            type: string
1016            description: Comma separated list of token identifiers
1017            example: "2,44,689"
1018        - name: symbols
1019          in: query
1020          required: false
1021          description: Include only specific tokens by their symbols.
1022          schema:
1023            type: string
1024            description: Comma separated list of token symbols.
1025            example: "DAI,NEC,UMA"
1026        - name: name
1027          in: query
1028          required: false
1029          description: Include token(s) by their names (or a substring of the name).
1030          schema:
1031            type: string
1032        - name: fromItem
1033          in: query
1034          required: false
1035          description: Indicates the desired first item (using the itemId property) to be included in the response.
1036          schema:
1037            type: number
1038        - name: order
1039          in: query
1040          required: false
1041          description: Order of the returned items. Tokens will be ordered by increasing tokenID.
1042          schema:
1043            type: string
1044            default: ASC
1045            enum:
1046                - ASC
1047                - DESC
1048        - name: limit
1049          in: query
1050          required: false
1051          description: Maximum number of items to be returned.
1052          schema:
1053            type: integer
1054            minimum: 1
1055            maximum: 2049
1056      responses:
1057        '200':
1058          description: Successful operation.
1059          content:
1060            application/json:
1061              schema:
1062                $ref: '#/components/schemas/Tokens'
1063        '400':
1064          description: Bad request.
1065          content:
1066            application/json:
1067              schema:
1068                $ref: '#/components/schemas/Error400'
1069        '404':
1070          description: Not found.
1071          content:
1072            application/json:
1073              schema:
1074                $ref: '#/components/schemas/Error404'
1075        '500':
1076          description: Internal server error.
1077          content:
1078            application/json:
1079              schema:
1080                $ref: '#/components/schemas/Error500'
1081  '/tokens/{id}':
1082    get:
1083      tags:
1084        - Hermez status
1085      summary: Get information of a token supported by Hermez network.
1086      description: Get information of a token supported by Hermez network.
1087      operationId: getToken
1088      parameters:
1089        - name: id
1090          in: path
1091          description: Token identifier
1092          required: true
1093          schema:
1094            $ref: '#/components/schemas/TokenId'
1095      responses:
1096        '200':
1097          description: Successful operation.
1098          content:
1099            application/json:
1100              schema:
1101                $ref: '#/components/schemas/Token'
1102        '400':
1103          description: Bad request.
1104          content:
1105            application/json:
1106              schema:
1107                $ref: '#/components/schemas/Error400'
1108        '404':
1109          description: Not found.
1110          content:
1111            application/json:
1112              schema:
1113                $ref: '#/components/schemas/Error404'
1114        '500':
1115          description: Internal server error.
1116          content:
1117            application/json:
1118              schema:
1119                $ref: '#/components/schemas/Error500'
1120  '/coordinators':
1121    get:
1122      tags:
1123        - Hermez status
1124      summary: Get information about coordinators.
1125      description: Get information about coordinators.
1126      operationId: getCoordinators
1127      parameters:
1128        - name: fromItem
1129          in: query
1130          required: false
1131          description: Indicates the desired first item (using the itemId property) to be included in the response.
1132          schema:
1133            type: number
1134        - name: order
1135          in: query
1136          required: false
1137          description: Order of the returned items. Coordinators will be ordered by increasing (ethereumBlock, forgerAddr).
1138          schema:
1139            type: string
1140            default: ASC
1141            enum:
1142                - ASC
1143                - DESC
1144        - name: limit
1145          in: query
1146          required: false
1147          description: Maximum number of items to be returned.
1148          schema:
1149            type: integer
1150            minimum: 1
1151            maximum: 2049
1152      responses:
1153        '200':
1154          description: Successful operation.
1155          content:
1156            application/json:
1157              schema:
1158                $ref: '#/components/schemas/Coordinators'
1159        '400':
1160          description: Bad request.
1161          content:
1162            application/json:
1163              schema:
1164                $ref: '#/components/schemas/Error400'
1165        '500':
1166          description: Internal server error.
1167          content:
1168            application/json:
1169              schema:
1170                $ref: '#/components/schemas/Error500'
1171  '/coordinators/{bidderAddr}':
1172    get:
1173      tags:
1174        - Hermez status
1175      summary: Get the information of a coordinator.
1176      description: Get the information of a coordinator.
1177      operationId: getCoordinator
1178      parameters:
1179        - name: bidderAddr
1180          in: path
1181          description: Coordinator identifier
1182          required: true
1183          schema:
1184            $ref: '#/components/schemas/EthereumAddress'
1185      responses:
1186        '200':
1187          description: Successful operation.
1188          content:
1189            application/json:
1190              schema:
1191                $ref: '#/components/schemas/Coordinator'
1192        '400':
1193          description: Bad request.
1194          content:
1195            application/json:
1196              schema:
1197                $ref: '#/components/schemas/Error400'
1198        '404':
1199          description: Not found.
1200          content:
1201            application/json:
1202              schema:
1203                $ref: '#/components/schemas/Error404'
1204        '500':
1205          description: Internal server error.
1206          content:
1207            application/json:
1208              schema:
1209                $ref: '#/components/schemas/Error500'
1210components:
1211  schemas:
1212    ItemId:
1213      type: integer
1214      description: Position of the item in the DB. This is useful for pagination, but has  nothing to do with the protocol.
1215    PostPoolL2Transaction:
1216      type: object
1217      description: L2 transaction to be posted.
1218      properties:
1219        id:
1220          $ref: '#/components/schemas/TransactionId'
1221        type:
1222          $ref: '#/components/schemas/TransactionTypeL2'
1223        tokenId:
1224          $ref: '#/components/schemas/TokenId'
1225        fromAccountIndex:
1226          $ref: '#/components/schemas/AccountIndex'
1227        toAccountIndex:
1228          type: string
1229          description: >-
1230            Identifier of the destination account. It references the position where the account is inside the state Merkle tree.
1231            The identifier is built using: `hez:` + `token symbol:` + `index`. If this is provided, toHezEthereumAddress and toBjj
1232            must be null. To perform an exit the value hez:EXIT:1 must be used.            
1233          example: null
1234          nullable: true
1235        toHezEthereumAddress:
1236          type: string
1237          description: "Address of an Etherum account linked to the Hermez network. If this is provided, toAccountIndex and toBjj must be null."
1238          pattern: "^hez:0x[a-fA-F0-9]{40}$"
1239          example: "hez:0xaa942cfcd25ad4d90a62358b0dd84f33b398262a"
1240          nullable: true
1241        toBjj:
1242          type: string
1243          description: >-
1244            BabyJubJub public key, encoded as base64 URL (RFC 4648), which result in 33 bytes. The padding byte is replaced by a sum of the encoded bytes.
1245            If this is prvided, toAccountIndex must be null and toHezEthereumAddress must be hez:0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.            
1246          pattern: "^hez:[A-Za-z0-9_-]{44}$"
1247          example: null
1248          nullable: true
1249        amount:
1250          allOf:
1251            - $ref: '#/components/schemas/BigInt'
1252            - description: Amount of tokens to be sent.
1253              example: "6300000000000000000"
1254        fee:
1255          $ref: '#/components/schemas/FeeSelector'
1256        nonce:
1257          $ref: '#/components/schemas/Nonce'
1258        signature:
1259          allOf:
1260            - $ref: '#/components/schemas/BJJSignature'
1261            - description: Signature of the transaction. More info [here](https://idocs.hermez.io/#/spec/zkrollup/README?id=l2a-idl2).
1262            - example: "72024a43f546b0e1d9d5d7c4c30c259102a9726363adcc4ec7b6aea686bcb5116f485c5542d27c4092ae0ceaf38e3bb44417639bd2070a58ba1aa1aab9d92c03"
1263        requestFromAccountIndex:
1264          type: string
1265          description: References the `fromAccountIndex` of the requested transaction.
1266          example: null
1267          nullable: true
1268        requestToAccountIndex:
1269          type: string
1270          description: References the `toAccountIndex` of the requested transaction.
1271          example: null
1272          nullable: true
1273        requestToHezEthereumAddress:
1274          type: string
1275          description: References the `toHezEthereumAddress` of the requested transaction.
1276          pattern: "^hez:0x[a-fA-F0-9]{40}$"
1277          example: null
1278          nullable: true
1279        requestToBjj:
1280          type: string
1281          description: References the `toBjj` of the requested transaction.
1282          pattern: "^hez:[A-Za-z0-9_-]{44}$"
1283          example: null
1284          nullable: true
1285        requestTokenId:
1286          type: integer
1287          description: References the `tokenId` of the requested transaction.
1288          example: null
1289          nullable: true
1290        requestAmount:
1291          type: string
1292          description: References the `amount` of the requested transaction.
1293          example: null
1294          nullable: true
1295        requestFee:
1296          type: integer
1297          description: References the `fee` of the requested transaction.
1298          example: null
1299          nullable: true
1300        requestNonce:
1301          type: integer
1302          description: References the `nonce` of the requested transaction.
1303          example: null
1304          nullable: true
1305      required:
1306      - id
1307      - type
1308      - tokenId
1309      - fromAccountIndex
1310      - amount
1311      - fee
1312      - nonce
1313      - signature
1314    PoolL2Transaction:
1315      type: object
1316      properties:
1317        id:
1318          $ref: '#/components/schemas/TransactionId'
1319        type:
1320          $ref: '#/components/schemas/TransactionTypeL2'
1321        fromAccountIndex:
1322          $ref: '#/components/schemas/AccountIndex'
1323        fromHezEthereumAddress:
1324          type: string
1325          description: "Address of an Etherum account linked to the Hermez network."
1326          pattern: "^hez:0x[a-fA-F0-9]{40}$"
1327          example: "hez:0xaa942cfcd25ad4d90a62358b0dd84f33b398262a"
1328          nullable: true
1329        fromBJJ:
1330          type: string
1331          description: "BabyJubJub public key, encoded as base64 URL (RFC 4648), which result in 33 bytes. The padding byte is replaced by a sum of the encoded bytes."
1332          pattern: "^hez:[A-Za-z0-9_-]{44}$"
1333          example: "hez:9CK9fjQdMUTGm8KDvGLy3MB-vnP0NCcGX7Uh7OO6KRJm"
1334          nullable: true
1335        toAccountIndex:
1336          type: string
1337          description: >-
1338            Identifier of the destination account. It references the position where the account is inside the state Merkle tree.
1339            The identifier is built using: `hez:` + `token symbol:` + `index`            
1340          example: "hez:DAI:309"
1341          nullable: true
1342        toHezEthereumAddress:
1343          type: string
1344          description: "Address of an Etherum account linked to the Hermez network."
1345          pattern: "^hez:0x[a-fA-F0-9]{40}$"
1346          example: null
1347          nullable: true
1348        toBjj:
1349          type: string
1350          description: "BabyJubJub public key, encoded as base64 URL (RFC 4648), which result in 33 bytes. The padding byte is replaced by a sum of the encoded bytes."
1351          pattern: "^hez:[A-Za-z0-9_-]{44}$"
1352          example: null
1353          nullable: true
1354        amount:
1355          allOf:
1356            - $ref: '#/components/schemas/BigInt'
1357            - description: Amount of tokens to be sent.
1358              example: "6303020000000000000"
1359        fee:
1360          $ref: '#/components/schemas/FeeSelector'
1361        nonce:
1362          $ref: '#/components/schemas/Nonce'
1363        state:
1364          $ref: '#/components/schemas/PoolL2TransactionState'
1365        signature:
1366          allOf:
1367            - $ref: '#/components/schemas/BJJSignature'
1368            - description: Signature of the transaction. More info [here](https://idocs.hermez.io/#/spec/zkrollup/README?id=l2a-idl2).
1369            - example: "72024a43f546b0e1d9d5d7c4c30c259102a9726363adcc4ec7b6aea686bcb5116f485c5542d27c4092ae0ceaf38e3bb44417639bd2070a58ba1aa1aab9d92c03"
1370        timestamp:
1371          type: string
1372          description: Moment in which the transaction was added to the pool.
1373          format: date-time
1374        batchNum:
1375          type: integer
1376          description: Identifier of a batch. Every new forged batch increments by one the batchNum, starting at 0.
1377          minimum: 0
1378          maximum: 4294967295
1379          nullable: true
1380          example: null
1381        requestFromAccountIndex:
1382          type: string
1383          description: >-
1384            Identifier of an account. It references the position where the account is inside the state Merkle tree.
1385            The identifier is built using: `hez:` + `token symbol:` + `index`            
1386          nullable: true
1387          example: null
1388        requestToAccountIndex:
1389          type: string
1390          description: >-
1391            Identifier of an account. It references the position where the account is inside the state Merkle tree.
1392            The identifier is built using: `hez:` + `token symbol:` + `index`            
1393          nullable: true
1394          example: null
1395        requestToHezEthereumAddress:
1396          type: string
1397          description: "Address of an Etherum account linked to the Hermez network."
1398          pattern: "^hez:0x[a-fA-F0-9]{40}$"
1399          nullable: true
1400          example: null
1401        requestToBJJ:
1402          type: string
1403          description: "BabyJubJub public key, encoded as base64 URL (RFC 4648), which result in 33 bytes. The padding byte is replaced by a sum of the encoded bytes."
1404          pattern: "^hez:[A-Za-z0-9_-]{44}$"
1405          nullable: true
1406          example: null
1407        requestTokenId:
1408          type: integer
1409          description: References the `tokenId` of the requested transaction.
1410          example: null
1411          nullable: true
1412        requestAmount:
1413          type: string
1414          description: BigInt is an integer encoded as a string for numbers that are very large.
1415          nullable: true
1416          example: null
1417        requestFee:
1418          type: integer
1419          description: Index of the fee type to select, more info [here](https://idocs.hermez.io/#/spec/zkrollup/fee-table?id=transaction-fee-table).
1420          minimum: 0
1421          maximum: 256
1422          nullable: true
1423          example: null
1424        requestNonce:
1425          type: integer
1426          description: Number that can only be used once per account. Increments by one with each transaction.
1427          minimum: 0
1428          maximum: 1.84467440737096e+19
1429          nullable: true
1430          example: null
1431        token:
1432          $ref: '#/components/schemas/Token'
1433      required:
1434        - id
1435        - type
1436        - fromAccountIndex
1437        - fromHezEthereumAddress
1438        - fromBJJ
1439        - toAccountIndex
1440        - toHezEthereumAddress
1441        - toBjj
1442        - amount
1443        - fee
1444        - nonce
1445        - state
1446        - signature
1447        - timestamp
1448        - batchNum
1449        - requestFromAccountIndex
1450        - requestToAccountIndex
1451        - requestToHezEthereumAddress
1452        - requestToBJJ
1453        - requestTokenId
1454        - requestAmount
1455        - requestFee
1456        - requestNonce
1457        - token
1458    TransactionId:
1459      type: string
1460      description: Identifier for transactions. Used for any kind of transaction (both L1 and L2). More info on how the identifiers are built [here](https://idocs.hermez.io/#/spec/architecture/db/README?id=txid)
1461      example: "0x00000000000001e240004700" 
1462    EthereumAddress:
1463      type: string
1464      description: "Address of an Etherum account."
1465      pattern: "^0x[a-fA-F0-9]{40}$"
1466      example: "0xaa942cfcd25ad4d90a62358b0dd84f33b398262a" 
1467    HezEthereumAddress:
1468      type: string
1469      description: "Address of an Etherum account linked to the Hermez network."
1470      pattern: "^hez:0x[a-fA-F0-9]{40}$"
1471      example: "hez:0xaa942cfcd25ad4d90a62358b0dd84f33b398262a" 
1472    BJJ:
1473      type: string
1474      description: "BabyJubJub public key, encoded as base64 URL (RFC 4648), which result in 33 bytes. The padding byte is replaced by a sum of the encoded bytes."
1475      pattern: "^hez:[A-Za-z0-9_-]{44}$"
1476      example: "hez:rR7LXKal-av7I56Y0dEBCVmwc9zpoLY5ERhy5w7G-xwe"
1477    AccountIndex:
1478      type: string
1479      description: >-
1480        Identifier of an account. It references the position where the account is inside the state Merkle tree.
1481        The identifier is built using: `hez:` + `token symbol:` + `index`        
1482      example: "hez:DAI:4444"
1483    TransactionType:
1484      type: string
1485      description: Type of transaction.
1486      enum:
1487      - Exit
1488      - Transfer
1489      - Deposit
1490      - CreateAccountDeposit
1491      - CreateAccountDepositTransfer
1492      - DepositTransfer
1493      - ForceTransfer
1494      - ForceExit
1495      - TransferToEthAddr
1496      - TransferToBJJ
1497    TransactionTypeL2:
1498      type: string
1499      description: Type of transaction.
1500      enum:
1501      - Exit
1502      - Transfer
1503      - TransferToEthAddr
1504      - TransferToBJJ
1505    TokenId:
1506      type: integer
1507      description: Identifier of a token registered in the network.
1508      minimum: 0
1509      maximum: 4294967295
1510      example: 98765
1511    BigInt:
1512      type: string
1513      description: BigInt is an integer encoded as a string for numbers that are very large.
1514      example: "8708856933496328593"
1515      pattern: "^\\d+$"
1516    FeeSelector:
1517      type: integer
1518      description: Index of the fee type to select, more info [here](https://idocs.hermez.io/#/spec/zkrollup/fee-table?id=transaction-fee-table).
1519      minimum: 0
1520      maximum: 256
1521      example: 36
1522    Nonce:
1523      type: integer
1524      description: Number that can only be used once per account, increments by one at each transaction.
1525      minimum: 0
1526      maximum: 1.84467440737096e+19
1527      example: 121
1528    PoolL2TransactionState:
1529      type: string
1530      description: > 
1531        State of a L2 transaction from the coordinator pool.
1532          * pend: Pending
1533          * fing: Forging
1534          * fged: Forged
1535          * invl: Invalid  
1536      enum:
1537      - pend
1538      - fing
1539      - fged
1540      - invl    
1541    ETHSignature:
1542      type: string
1543      description: Ethereum signature.
1544      pattern: "^0x[a-fA-F0-9]{130}$"
1545      example: "0xf9161cd688394772d93aa3e7b3f8f9553ca4f94f65b7cece93ed4a239d5c0b4677dca6d1d459e3a5c271a34de735d4664a43e5a8960a9a6e027d12c562dd448e1c"
1546    BJJSignature:
1547      type: string
1548      description: BabyJubJub compressed signature.
1549      pattern: "^[a-fA-F0-9]{128}$"
1550      example: "72024a43f546b0e1d9d5d7c4c30c259102a9726363adcc4ec7b6aea686bcb5116f485c5542d27c4092ae0ceaf38e3bb44417639bd2070a58ba1aa1aab9d92c03"
1551    BatchNum:
1552      type: integer
1553      description: Identifier of a batch. Every new forged batch increments by one the batchNum, starting at 0.
1554      minimum: 0
1555      maximum: 4294967295
1556      example: 5432
1557    AccountCreationAuthorizationPost:
1558      type: object
1559      properties:
1560        hezEthereumAddress:
1561          $ref: '#/components/schemas/HezEthereumAddress'
1562        bjj:
1563          $ref: '#/components/schemas/BJJ'
1564        signature:
1565          $ref: '#/components/schemas/ETHSignature'
1566      required:
1567      - hezEthereumAddress
1568      - bjj
1569      - signature
1570    AccountCreationAuthorization:
1571      type: object
1572      properties:
1573        timestamp:
1574          type: string
1575          format: date-time
1576        hezEthereumAddress:
1577          $ref: '#/components/schemas/HezEthereumAddress'
1578        bjj:
1579          $ref: '#/components/schemas/BJJ'
1580        signature:
1581          $ref: '#/components/schemas/ETHSignature'
1582      required:
1583      - timestamp
1584      - hezEthereumAddress
1585      - bjj
1586      - signature
1587    HistoryTransaction:
1588      type: object
1589      description: Transaction of the Hermez network
1590      properties:
1591        L1orL2:
1592          type: string
1593          enum:
1594            - L1
1595            - L2
1596        id:
1597          $ref: '#/components/schemas/TransactionId'
1598        itemId:
1599          $ref: '#/components/schemas/ItemId'
1600        type:
1601          $ref: '#/components/schemas/TransactionType'
1602        position:
1603          $ref: '#/components/schemas/TransactionPosition'
1604        fromAccountIndex:
1605          type: string
1606          description: >-
1607            Identifier of an account. It references the position where the account is inside the state Merkle tree.
1608            The identifier is built using: `hez:` + `token symbol:` + `index`            
1609          example: "hez:DAI:4444"
1610          nullable: true
1611        fromHezEthereumAddress:
1612          type: string
1613          description: "Address of an Etherum account linked to the Hermez network."
1614          pattern: "^hez:0x[a-fA-F0-9]{40}$"
1615          example: "hez:0xaa942cfcd25ad4d90a62358b0dd84f33b398262a"
1616          nullable: true
1617        fromBJJ:
1618          type: string
1619          description: "BabyJubJub public key, encoded as base64 URL (RFC 4648), which result in 33 bytes. The padding byte is replaced by a sum of the encoded bytes."
1620          pattern: "^hez:[A-Za-z0-9_-]{44}$"
1621          example: "hez:9CK9fjQdMUTGm8KDvGLy3MB-vnP0NCcGX7Uh7OO6KRJm"
1622          nullable: true
1623        toAccountIndex:
1624          allOf:
1625            - $ref: '#/components/schemas/AccountIndex'
1626            - example: "hez:DAI:672"
1627        toHezEthereumAddress:
1628          type: string
1629          description: "Address of an Etherum account linked to the Hermez network."
1630          pattern: "^hez:0x[a-fA-F0-9]{40}$"
1631          example: "hez:0xaa942cfcd25ad4d90a62358b0dd84f33b398262a"
1632          nullable: true
1633        toBJJ:
1634          type: string
1635          description: "BabyJubJub public key, encoded as base64 URL (RFC 4648), which result in 33 bytes. The padding byte is replaced by a sum of the encoded bytes."
1636          pattern: "^hez:[A-Za-z0-9_-]{44}$"
1637          example: "hez:f1J78_6uqTyjX6jrVCqN4RFeRBnWQAGl477ZFtOnH6Sm"
1638          nullable: true
1639        amount:
1640          allOf:
1641            - $ref: '#/components/schemas/BigInt'
1642            - description: Amount of tokens to be sent.
1643            -  example: "4903020000000000000"
1644        batchNum:
1645          type: integer
1646          description: Batch in which the transaction was forged. Null indicates not forged yet.
1647          minimum: 0
1648          maximum: 4294967295
1649          example: 5432
1650          nullable: true
1651        historicUSD:
1652          type: number
1653          description: Value in USD at the moment the transaction was forged.
1654          example: 49.7
1655          nullable: true
1656        timestamp:
1657          type: string
1658          format: date-time
1659          description: In the case of L1 indicates the moment where the transaction was added in the smart contract. For L2 indicates when the transaction was forged.
1660        token:
1661          $ref: '#/components/schemas/Token'
1662        L1Info:
1663          type: object
1664          description: Additional information that only applies to L1 transactions.
1665          nullable: true
1666          properties:
1667            toForgeL1TransactionsNum:
1668              $ref: '#/components/schemas/ToForgeL1TransactionsNum'
1669            userOrigin:
1670              type: boolean
1671              description: True if the transaction was sent by a user. False if it was sent by a coordinator.
1672            loadAmount:
1673              allOf:
1674                - $ref: '#/components/schemas/BigInt'
1675                - description: Tokens transfered from L1 to L2.
1676                - example: "4900000000000000000"
1677            historicLoadAmountUSD:
1678              type: number
1679              description: Load amount in USD, at the moment the transaction was made.
1680              example: 3.897
1681              nullable: true
1682            ethereumBlockNum:
1683              allOf:
1684                - $ref: '#/components/schemas/EthBlockNum'
1685                - description: Ethereum block in which the transaction was added to the smart contract forge queue.
1686                - example: 258723049
1687          required:
1688            - toForgeL1TransactionsNum
1689            - userOrigin
1690            - loadAmount
1691            - historicLoadAmountUSD
1692            - ethereumBlockNum
1693          additionalProperties: false
1694        L2Info:
1695          type: object
1696          description: Additional information that only applies to L2 transactions.
1697          nullable: true
1698          properties:
1699            fee:
1700              $ref: '#/components/schemas/FeeSelector'
1701            historicFeeUSD:
1702              type: number
1703              description: Fee in USD, at the moment the transaction was forged.
1704              example: 263.89
1705              nullable: true
1706            nonce:
1707              $ref: '#/components/schemas/Nonce'
1708          example: null
1709          required:
1710            - fee
1711            - historicFeeUSD
1712            - nonce
1713          additionalProperties: false
1714      required:
1715        - L1orL2
1716        - id
1717        - itemId
1718        - type
1719        - position
1720        - fromAccountIndex
1721        - fromHezEthereumAddress
1722        - fromBJJ
1723        - toAccountIndex
1724        - toHezEthereumAddress
1725        - toBJJ
1726        - amount
1727        - batchNum
1728        - historicUSD
1729        - timestamp
1730        - token
1731        - L1Info
1732        - L2Info
1733      additionalProperties: false
1734    HistoryTransactions:
1735      type: object
1736      properties:
1737        transactions:
1738          type: array
1739          description: List of history transactions.
1740          items: 
1741            $ref: '#/components/schemas/HistoryTransaction'
1742        pagination:
1743          $ref: '#/components/schemas/PaginationInfo'
1744      required:
1745        - transactions
1746        - pagination
1747      additionalProperties: false
1748    EthBlockNum:
1749      type: integer
1750      description: Ethereum block number
1751      minimum: 0
1752      maximum: 1.84467440737096e+19
1753      example: 762375478
1754    ToForgeL1TransactionsNum:
1755      type: integer
1756      description: Reference to know in which batch a L1 transaction was forged / will be forged.
1757      minimum: 0
1758      maximum: 4294967295
1759      example: 784
1760      nullable: true
1761    TransactionPosition:
1762      type: integer
1763      description: Position that a transaction occupies in a batch.
1764      minimum: 0
1765      example: 5
1766    URL:
1767      type: string
1768      description: HTTP URL
1769      example: "https://hermez.io"
1770    TokenSymbol:
1771      type: string
1772      description: Abreviation of the token name.
1773      example: "DAI"
1774    TokenName:
1775      type: string
1776      description: Token name.
1777      example: "Dai"
1778    CollectedFees:
1779      type: object
1780      description: Collected fees by the forger of the batch, represented by a map of tokenId => amount. A maximum of 64 different tokens can be used.
1781      additionalProperties:
1782        type: string
1783      example:
1784        1234: "425632785672345647"
1785        4321: "86538967235465432654352"
1786    Batch:
1787      type: object
1788      description: Group of transactions forged in a coordinator and sent and validated in Ethereum.
1789      properties:
1790        itemId:
1791          $ref: '#/components/schemas/ItemId'
1792        batchNum:
1793          $ref: '#/components/schemas/BatchNum'
1794        ethereumBlockNum:
1795          $ref: '#/components/schemas/EthBlockNum'
1796        ethereumBlockHash:
1797          type: string
1798          description: hash of the Ethereum block in which the batch was forged
1799          example: "0xfe88c94d860f01a17f961bf4bdfb6e0c6cd10d3fda5cc861e805ca1240c58553"
1800        timestamp:
1801          type: string
1802          format: date-time
1803          description: Time in which the batch was forged.
1804        forgerAddr:
1805          $ref: '#/components/schemas/EthereumAddress'
1806        collectedFees:
1807          $ref: '#/components/schemas/CollectedFees'
1808        historicTotalCollectedFeesUSD:
1809          type: number
1810          description: Sum of the all the fees collected, in USD, at the moment the batch was forged.
1811          example: 23.3
1812        stateRoot:
1813          allOf:
1814            - $ref: '#/components/schemas/Hash'
1815            - description: Root of the accounts Merkle Tree.
1816            - example: "2734657026572a8708d883"
1817        numAccounts:
1818          type: integer
1819          description: Number of registered accounts in this batch.
1820        exitRoot:
1821          allOf:
1822            - $ref: '#/components/schemas/Hash'
1823            - description: Root of the exit Merkle Tree associated to this batch.
1824            - example: "2734657026572a8708d883"
1825        forgeL1TransactionsNum:
1826          type: integer
1827          description: Identifier that corresponds to the group of L1 transactions forged in the current batch.
1828          example: 5
1829          nullable: true
1830        slotNum:
1831          $ref: '#/components/schemas/SlotNum'
1832      additionalProperties: false
1833      required:
1834          - itemId
1835          - batchNum
1836          - ethereumBlockNum
1837          - ethereumBlockHash
1838          - timestamp
1839          - forgerAddr
1840          - collectedFees
1841          - historicTotalCollectedFeesUSD
1842          - stateRoot
1843          - numAccounts
1844          - exitRoot
1845          - forgeL1TransactionsNum
1846          - slotNum
1847    FullBatch:
1848      type: object
1849      description: Group of transactions forged in a coordinator and sent and validated in Ethereum.
1850      properties:
1851        batch:
1852          $ref: '#/components/schemas/Batch'
1853        transactions:
1854          type: array
1855          description: List of forged transactions in the batch
1856          items:
1857            $ref: '#/components/schemas/HistoryTransaction'
1858      additionalProperties: false
1859      required:
1860        - batch
1861        - transactions
1862    Hash:
1863      type: string
1864      description: hashed data
1865      example: "2734657026572a8708d883"
1866    SlotNum:
1867      type: integer
1868      description: Identifier of a slot.
1869      minimum: 0
1870      maximum: 4294967295
1871      example: 784        
1872    Batches:
1873      type: object
1874      properties:
1875        batches:
1876          type: array
1877          description: List of batches.
1878          items:
1879            $ref: '#/components/schemas/Batch'
1880        pagination:
1881          $ref: '#/components/schemas/PaginationInfo'
1882      additionalProperties: false
1883      required:
1884        - batches
1885        - pagination
1886    Coordinator:
1887      type: object
1888      properties:
1889        itemId:
1890          $ref: '#/components/schemas/ItemId'
1891        forgerAddr:
1892          $ref: '#/components/schemas/EthereumAddress'
1893        bidderAddr:
1894          $ref: '#/components/schemas/EthereumAddress'
1895        URL:
1896          $ref: '#/components/schemas/URL'
1897        ethereumBlock:
1898          allOf:
1899            - $ref: '#/components/schemas/EthBlockNum'
1900            - description: Ethereum block in which the coordinator registered into the network.
1901            - example: 5735943738
1902      additionalProperties: false
1903      required:
1904        - itemId
1905        - forgerAddr
1906        - bidderAddr
1907        - URL
1908        - ethereumBlock
1909    Coordinators:
1910      type: object
1911      properties:
1912        coordinators:
1913          type: array
1914          description: List of coordinators.
1915          items: 
1916            $ref: '#/components/schemas/Coordinator'
1917        pagination:
1918          $ref: '#/components/schemas/PaginationInfo'
1919      additionalProperties: false
1920      required:
1921        - coordinators
1922        - pagination
1923    Bid:
1924      type: object
1925      description: Tokens placed in an auction by a coordinator to gain the right to forge batches during a specific slot.
1926      properties:
1927        itemId:
1928          $ref: '#/components/schemas/ItemId'
1929        bidderAddr:
1930          $ref: '#/components/schemas/EthereumAddress'
1931        forgerAddr:
1932          $ref: '#/components/schemas/EthereumAddress'
1933        slotNum:
1934          $ref: '#/components/schemas/SlotNum'
1935        URL:
1936          $ref: '#/components/schemas/URL'
1937        bidValue:
1938          $ref: '#/components/schemas/BigInt'
1939        ethereumBlockNum:
1940          $ref: '#/components/schemas/EthBlockNum'
1941        timestamp:
1942          type: string
1943          format: date-time
1944      additionalProperties: false
1945      require:
1946        - bidderAddr
1947        - forgerAddr
1948        - slotNum
1949        - URL
1950        - bidValue
1951        - ethereumBlockNum
1952        - timestamp
1953    Bids:
1954      type: object
1955      properties:
1956        bids:
1957          type: array
1958          description: List of bids.
1959          items: 
1960            $ref: '#/components/schemas/Bid'
1961        pagination:
1962          $ref: '#/components/schemas/PaginationInfo'
1963      additionalProperties: false
1964      require:
1965        - bids
1966        - pagination
1967    RecommendedFee:  
1968      type: object
1969      description: Fee that the coordinator recommends per transaction in USD.
1970      properties:
1971        existingAccount:
1972          type: number
1973          description: Recommended fee if the destination account of the transaction already exists.
1974          minimum: 0
1975          example: 0.1
1976        createAccount:
1977          type: number
1978          description: Recommended fee if the destination account of the transaction doesn't exist, but the coordinator has an authorization to create a valid account associated to an Ethereum address and a BJJ public key controlled by the receiver.
1979          minimum: 0
1980          example: 1.3
1981        createAccountInternal:
1982          type: number
1983          description: Recommended fee if the destination account of the transaction doesn't exist, but the coordinator has the ability to create a valid account associated to a BJJ public key controlled by the receiver. Note that these kind of accounts are not associated to an Ethereum address and therefore can only operate in L2. 
1984          minimum: 0
1985          example: 0.5
1986    Token:
1987      type: object
1988      description: Hermez network compatible and registered token.
1989      properties:
1990        id:
1991          $ref: '#/components/schemas/TokenId'
1992        ethereumAddress:
1993          allOf:
1994            - $ref: '#/components/schemas/EthereumAddress'
1995            - description: Ethereum address in which the token is deployed.
1996            - example: "0xaa942cfcd25ad4d90a62358b0dd84f33b398262a"
1997        itemId:
1998          $ref: '#/components/schemas/ItemId'
1999        name:
2000          type: string
2001          description: full name of the token
2002          example: Maker Dai
2003        symbol:
2004          allOf:
2005            - $ref: '#/components/schemas/TokenSymbol'
2006            - example: DAI
2007        decimals:
2008          type: integer
2009          description: Number of decimals of the token.
2010          example: 18
2011        ethereumBlockNum:
2012          allOf:
2013            - $ref: '#/components/schemas/EthBlockNum'
2014            - description: Ethereum block number in which the token was added to the Hermez network.
2015            - example: 539847538
2016        USD:
2017          type: number
2018          description: Value of the token in USD.
2019          example: 1.01
2020          nullable: true
2021        fiatUpdate:
2022          type: string
2023          format: date-time
2024          description: Timestamp of the moment the `USD` value was updated.
2025          nullable: true
2026      required:
2027        - id
2028        - ethereumAddress
2029        - itemId
2030        - name
2031        - symbol
2032        - decimals
2033        - ethereumBlockNum
2034        - USD
2035        - fiatUpdate
2036      additionalProperties: false
2037    Tokens:
2038      type: object
2039      properties:
2040        tokens:
2041          type: array
2042          description: List of tokens.
2043          items: 
2044            $ref: '#/components/schemas/Token'
2045        pagination:
2046          $ref: '#/components/schemas/PaginationInfo'
2047    Exit:
2048      type: object
2049      description: Exit tree leaf. It Contains the necessary information to perform a withdrawal.
2050      properties:
2051        batchNum:
2052          allOf:
2053            - $ref: '#/components/schemas/BatchNum'
2054            - description: Batch in which the exit was forged.
2055            - example: 7394
2056        accountIndex:
2057          $ref: '#/components/schemas/AccountIndex'
2058        itemId:
2059          $ref: '#/components/schemas/ItemId'
2060        merkleProof:
2061          type: object
2062          description: Existence proof of a leaf in a given Merkle Root. Encoded as hexadecimal string.
2063          properties:
2064              Root:
2065                $ref: '#/components/schemas/BigInt'
2066              Siblings:
2067                type: array
2068                items:
2069                  $ref: '#/components/schemas/BigInt'
2070              OldKey:
2071                $ref: '#/components/schemas/BigInt'
2072              OldValue:
2073                $ref: '#/components/schemas/BigInt'
2074              IsOld0:
2075                type: boolean
2076              Key:
2077                $ref: '#/components/schemas/BigInt'
2078              Value:
2079                $ref: '#/components/schemas/BigInt'
2080              Fnc:
2081                type: integer
2082                maximum: 3
2083                minimum: 0
2084          required:
2085            - Root
2086            - Siblings
2087            - OldKey
2088            - OldValue
2089            - IsOld0
2090            - Key
2091            - Value
2092            - Fnc
2093          additionalProperties: false
2094        balance:
2095          $ref: '#/components/schemas/BigInt'
2096        instantWithdrawn:
2097          type: integer
2098          description: Block in which the exit balance was instantly withdrawn. Null indicates that an instant withdrawn hasn't been performed.
2099          minimum: 0
2100          maximum: 1.84467440737096e+19
2101          example: 74747363
2102          nullable: true
2103        delayedWithdrawRequest:
2104          type: integer
2105          description: Block in which the exit balance was requested to delay withdraw. Null indicates that a delay withdraw hasn't been performed.
2106          minimum: 0
2107          maximum: 1.84467440737096e+19
2108          example: null
2109          nullable: true
2110        delayedWithdrawn:
2111          type: integer
2112          description: Block in which the exit balance was delayed withdrawn after a delay withdraw request. Null indicates that a delay withdraw hasn't been performed.
2113          minimum: 0
2114          maximum: 1.84467440737096e+19
2115          example: null
2116          nullable: true
2117        token:
2118          $ref: '#/components/schemas/Token'
2119      required:
2120          - batchNum
2121          - accountIndex
2122          - itemId
2123          - merkleProof
2124          - balance
2125          - instantWithdrawn
2126          - delayedWithdrawRequest
2127          - delayedWithdrawn
2128          - token
2129      additionalProperties: false
2130    Exits:
2131      type: object
2132      properties:
2133        exits:
2134          type: array
2135          description: List of exits.
2136          items: 
2137            $ref: '#/components/schemas/Exit'
2138        pagination:
2139          $ref: '#/components/schemas/PaginationInfo'   
2140      required:
2141          - exits
2142          - pagination
2143      additionalProperties: false 
2144    Account:
2145      type: object
2146      description: State tree leaf. It contains balance and nonce of an account.
2147      properties:
2148        itemId:
2149          $ref: '#/components/schemas/ItemId'
2150        accountIndex:
2151          $ref: '#/components/schemas/AccountIndex'
2152        nonce:
2153          $ref: '#/components/schemas/Nonce'      
2154        balance:
2155          $ref: '#/components/schemas/BigInt'
2156        bjj:
2157          $ref: '#/components/schemas/BJJ'      
2158        hezEthereumAddress:
2159          $ref: '#/components/schemas/HezEthereumAddress'
2160        token:
2161          $ref: '#/components/schemas/Token'
2162      additionaProperties: false
2163      required:
2164        - itemId
2165        - accountIndex
2166        - nonce
2167        - balance
2168        - bjj
2169        - hezEthereumAddress
2170        - token
2171    Accounts:
2172      type: object
2173      properties:
2174        accounts:
2175          type: array
2176          description: List of accounts.
2177          items: 
2178            $ref: '#/components/schemas/Account'
2179        pagination:
2180          $ref: '#/components/schemas/PaginationInfo'
2181      additionalProperties: false
2182      required:
2183        - accounts
2184        - pagination
2185    Slot:
2186      type: object
2187      description: Slot information.
2188      properties:
2189        itemId:
2190          $ref: '#/components/schemas/ItemId'
2191        slotNum:
2192          $ref: '#/components/schemas/SlotNum'
2193        firstBlock:
2194          allOf:
2195            - $ref: '#/components/schemas/EthBlockNum'
2196            - description: Block in which the slot began or will begin
2197            - example: 76238647846
2198        lastBlock:
2199          allOf:
2200            - $ref: '#/components/schemas/EthBlockNum'
2201            - description: Block in which the slot ended or will end
2202            - example: 4475934
2203        openAuction:
2204          type: boolean
2205          description: Whether the auction of the slot is open or not.
2206        winnerBid:
2207          type: object
2208          description: The winning bid of the auction. If openAuction == true, is the current winner. If the auction is closed because it has already been finalized, the bid is the final winner. If the winnerBid is null, it is because no coordinator has bid for that slot.
2209          nullable: true
2210          properties:
2211            itemId:
2212              $ref: '#/components/schemas/ItemId'
2213            bidderAddr:
2214              $ref: '#/components/schemas/EthereumAddress'
2215            forgerAddr:
2216              $ref: '#/components/schemas/EthereumAddress'
2217            slotNum:
2218              $ref: '#/components/schemas/SlotNum'
2219            URL:
2220              $ref: '#/components/schemas/URL'
2221            bidValue:
2222              type: string
2223              description: BigInt is an integer encoded as a string for numbers that are very large.
2224              example: "8708856933496328593"
2225              pattern: "^\\d+$"
2226            ethereumBlockNum:
2227              $ref: '#/components/schemas/EthBlockNum'
2228            timestamp:
2229              type: string
2230              format: date-time
2231          additionalProperties: false
2232          require:
2233            - bidderAddr
2234            - forgerAddr
2235            - slotNum
2236            - URL
2237            - bidValue
2238            - ethereumBlockNum
2239            - timestamp
2240      additionalProperties: false
2241      require:
2242        - slotNum
2243        - firstBlock
2244        - lastBlock
2245        - openAuction
2246        - winner
2247        - winnerBid
2248    Slots:
2249      type: object
2250      properties:
2251        slots:
2252          type: array
2253          description: List of slots.
2254          items: 
2255            allOf:
2256                - $ref: '#/components/schemas/Slot'
2257                - description: Last synchronized Etherum block.
2258        pagination:
2259          $ref: '#/components/schemas/PaginationInfo'
2260      additionalProperties: false
2261      require:
2262        - slots
2263        - pagination
2264    NextForger:
2265      type: object
2266      description: Coordinator information along with the scheduled forging period
2267      properties:
2268        coordinator:
2269          $ref: '#/components/schemas/Coordinator'
2270        period:
2271          type: object
2272          description: Time period in which the coordinator will have the ability to forge. Specified both in Ethereum blocks and timestamp
2273          properties:
2274            fromBlock:
2275              $ref: '#/components/schemas/EthBlockNum'
2276            toBlock:
2277              $ref: '#/components/schemas/EthBlockNum'
2278            fromTimestamp:
2279              type: string
2280              format: date-time
2281            toTimestamp:
2282              type: string
2283              format: date-time
2284    NextForgers:
2285      type: object
2286      properties:
2287        nextForgers:
2288          type: array
2289          description: List of next coordinators to forge.
2290          items: 
2291            $ref: '#/components/schemas/NextForger'
2292        pagination:
2293          $ref: '#/components/schemas/PaginationInfo'
2294    State:
2295      type: object
2296      description: Gobal variables of the network
2297      properties:
2298        network:
2299          type: object
2300          description: Gobal statistics of the network
2301          properties:
2302            lastBlock:
2303              allOf:
2304                - $ref: '#/components/schemas/EthBlockNum'
2305                - description: Last synchronized Etherum block.
2306                - example: 3457437
2307            lastBatch:
2308              $ref: '#/components/schemas/Batch'
2309            currentSlot:
2310              allOf:
2311                - $ref: '#/components/schemas/SlotNum'
2312                - description: Slot where batches are currently being forged.
2313                - example: 2334
2314            nextForgers:
2315              $ref: '#/components/schemas/NextForgers'
2316          additionalProperties: false
2317          require: 
2318            - lastBlock
2319            - lastBatch
2320            - currentSlot
2321            - nextForgers
2322        metrics:
2323          type: object
2324          description: Metrics of the network
2325          properties:
2326            transactionsPerBatch:
2327              type: number
2328              description: Average transactions per batch in the last 24 hours.
2329              example: 2002.7
2330            batchFrequency:
2331              type: number
2332              description: Average elapsed time between batches in the last 24 hours, in seconds.
2333              example: 8.9
2334            transactionsPerSecond:
2335              type: number
2336              description: Average transactions per second in the last 24 hours.
2337              example: 302.3
2338            totalAccounts:
2339              type: integer
2340              description: Number of created accounts.
2341              example: 90473
2342            totalBJJs:
2343              type: integer
2344              description: Number of different registered BJJs.
2345              example: 23067
2346            avgTransactionFee:
2347              type: number
2348              description: Average fee percentage paid for L2 transactions in the last 24 hours.
2349              example: 1.54
2350          additionalProperties: false
2351          require:
2352            - transactionsPerBatch
2353            - batchFrequency
2354            - transactionsPerSecond
2355            - totalAccounts
2356            - totalBJJs
2357            - avgTransactionFee
2358        rollup:
2359          type: object
2360          description: Rollup parameters
2361          properties:
2362            forgeL1L2BatchTimeout:
2363              type: integer
2364              description: Max ethereum blocks after the last L1-L2-batch, when exceeds the timeout only L1-L2-batch are allowed.
2365              example: 5
2366            feeAddToken:
2367              type: integer
2368              description: Fee to pay when registering tokens into the network.
2369              example: 5698
2370            withdrawalDelay:
2371              type: integer
2372              description: Withdraw delay in seconds
2373              example: 432000
2374            buckets:
2375              type: array
2376              description: List of buckets state
2377              items:
2378                type: object
2379                properties:
2380                  ceilUSD:
2381                    type: integer
2382                    description: Max USD value
2383                    example: 1000
2384                  blockStamp:
2385                    type: integer
2386                    description: Last time a withdrawal was added ( or removed if the bucket was full)
2387                    example: 4475934
2388                  withdrawals:
2389                    type: integer
2390                    description: Available withdrawals of the bucket
2391                    example: 4
2392                  blockWithdrawalRate:
2393                    type: integer
2394                    description: Every `blockWithdrawalRate` blocks add 1 withdrawal
2395                    example: 8
2396                  maxWithdrawals:
2397                    type: integer
2398                    description: Max withdrawals the bucket can hold
2399                    example: 4
2400                additionalProperties: false
2401                require: 
2402                  - ceilUSD
2403                  - blockStamp
2404                  - withdrawals
2405                  - blockWithdrawalRate
2406                  - maxWithdrawals
2407          additionalProperties: false
2408          require: 
2409            - forgeL1L2BatchTimeout
2410            - feeAddToken
2411            - withdrawalDelay
2412            - buckets
2413        auction:
2414          type: object
2415          description: Auction parameters.
2416          properties:
2417            bootCoordinator:
2418              allOf:
2419                - $ref: '#/components/schemas/EthereumAddress'
2420                - description: Ethereum address of the boot coordinator.
2421                - example: "0x997dc4262BCDbf85190C01c996b4C06a461d2430"
2422            slotDeadline:
2423              type: integer
2424              description: Number of blocks after the beginning of a slot after which any coordinator can forge if the winner has not forged any batch in that slot.
2425              example: 3
2426            closedAuctionSlots:
2427              type: integer
2428              description: Amount of slots between the current slot and the slot auction that is closed. Example if the value is 2, when slot 10 begins, the auction of the slot 12 gets closed.
2429              example: 2
2430            openAuctionSlots:
2431              type: integer
2432              description: How many days in advance are auctions opened.
2433            defaultSlotSetBid:
2434              type: array
2435              description: "Initial minimal bid for each auction. Expressed as an array of 6 values. To calculate which value corresponds to each slot: `initialMinimalBidding[slotNum%6]`."
2436              items:
2437                type: integer
2438              example: [32,0,68,21,55,99]
2439            outbidding:
2440              type: number
2441              description: Minimum outbid over the previous one to consider it valid.
2442              example: 3.64
2443            donationAddress:
2444              allOf:
2445                - $ref: '#/components/schemas/EthereumAddress'
2446                - description: Ethereum address where the donations will go to.
2447                - example: "0x887dc4262BCDbf85190C01c996b4C06a461d2430"
2448            allocationRatio:
2449              type: array
2450              description: Percentage in which fees will be splitted between donations, governance and burning. The sum of the tree values should be 100.
2451              items:
2452                type: integer
2453              example: [80,10,10]
2454          additionalProperties: false
2455          require: 
2456            - bootCoordinator
2457            - slotDeadline
2458            - closedAuctionSlots
2459            - openAuctionSlots
2460            - defaultSlotSetBid
2461            - outbidding
2462            - donationAddress
2463            - allocationRatio
2464        withdrawalDelayer:
2465          type: object
2466          description: Withdrawal delayer parameters
2467          properties:
2468            hermezRollupAddress:
2469              allOf:
2470                - $ref: '#/components/schemas/EthereumAddress'
2471                - description: Ethereum address of the rollup smart contract.
2472                - example: "0x777dc4262BCDbf85190C01c996b4C06a461d2430"
2473            hermezGovernanceDAOAddress:
2474              allOf:
2475                - $ref: '#/components/schemas/EthereumAddress'
2476                - description: Ethereum address of the governance DAO.
2477                - example: "0x667dc4262BCDbf85190C01c996b4C06a461d2430"
2478            whiteHackGroupAddress:
2479              allOf:
2480                - $ref: '#/components/schemas/EthereumAddress'
2481                - description: Ethereum Address that can claim the funds in an emergency when the maximum emergency mode time is exceeded.
2482                - example: "0x557dc4262BCDbf85190C01c996b4C06a461d2430"
2483            hermezKeeperAddress:
2484              allOf:
2485                - $ref: '#/components/schemas/EthereumAddress'
2486                - description: Ethereum Address that can enable emergency mode and modify the delay to make a withdrawal.
2487                - example: "0x557dc4262BCDbf85190C01c996b4C06a461d2430"
2488            withdrawalDelay:
2489              allOf:
2490                - $ref: '#/components/schemas/EthBlockNum'
2491                - description: The time that anyone needs to wait until a withdrawal of the funds is allowed, in Ethereum blocks.
2492                - example: 539573849
2493            emergencyModeStartingTime:
2494              type: integer
2495              description: Ethereum block in which the emergency mode will be activated.
2496              example: 10
2497            emergencyMode:
2498              type: boolean
2499              description: Indicates if emergency mode has been activated.
2500              example: false
2501          additionalProperties: false
2502          require: 
2503            - hermezRollupAddress
2504            - hermezGovernanceDAOAddress
2505            - whiteHackGroupAddress
2506            - hermezKeeperAddress
2507            - withdrawalDelay
2508            - emergencyModeStartingTime
2509            - emergencyMode
2510        recommendedFee:
2511          $ref: '#/components/schemas/RecommendedFee'
2512      additionalProperties: false
2513      require: 
2514        - network
2515        - metrics
2516        - rollup
2517        - auction
2518        - withdrawalDelayer
2519        - recomendedFee 
2520    PaginationInfo:
2521      type: object
2522      description: Give pagination information
2523      properties:
2524        totalItems:
2525          type: integer
2526          description: Amount of items that the endpoint can return given the filters and the current state of the database.
2527          example: 2048
2528        firstItem:
2529          type: integer
2530          description: The smallest itemId that the endpoint will return with the given filters.
2531          example: 50
2532        lastItem:
2533          type: integer
2534          description: The greatest itemId that the endpoint will return with the given filters.
2535          example: 2130
2536    Config:
2537      type: object
2538      description: Configuration parameters of the different smart contracts that power the Hermez network.
2539      properties:
2540        hermez:
2541          type: object
2542          description: Constant configuration of the Hermez smart contract.
2543          properties:
2544            publicConstants:
2545              type: object
2546              description: Public Hermez smart contract constants
2547              properties: 
2548                tokenHEZ:
2549                  allOf:
2550                    - $ref: '#/components/schemas/EthereumAddress'
2551                    - description: Ethereum address of the HEZ token.
2552                    - example: "0x444dc4262BCDbf85190C01c996b4C06a461d2430"
2553                absoluteMaxL1L2BatchTimeout:
2554                  type: integer
2555                  description:  L1L2 Batch Timeout
2556                  example: 240
2557                verifiers:
2558                  type: array
2559                  description: List of verifiers struct
2560                  items:
2561                    type: object
2562                    properties:
2563                      maxTx:
2564                        type: integer
2565                        description: Maximum rollup transactions in a batch
2566                        example: 512
2567                      nlevels:
2568                        type: integer
2569                        description: Number of levels of the circuit
2570                        example: 32
2571                    required:
2572                      - maxTx
2573                      - nlevels
2574                    additionalProperties: false
2575                hermezAuctionContract:
2576                  allOf:
2577                    - $ref: '#/components/schemas/EthereumAddress'
2578                    - description: Ethereum address of the auction smart contract.
2579                    - example: "0x111dc4262BCDbf85190C01c996b4C06a461d2430"
2580                hermezGovernanceDAOAddress:
2581                  allOf:
2582                    - $ref: '#/components/schemas/EthereumAddress'
2583                    - description: Ethereum address of the governanceDAO.
2584                    - example: "0x222dc4262BCDbf85190C01c996b4C06a461d2430"
2585                safetyAddress:
2586                  allOf:
2587                    - $ref: '#/components/schemas/EthereumAddress'
2588                    - description: Ethereum address of the safety.
2589                    - example: "0x333dc4262BCDbf85190C01c996b4C06a461d2430"
2590                withdrawDelayerContract:
2591                  allOf:
2592                    - $ref: '#/components/schemas/EthereumAddress'
2593                    - description: Ethereum address of the withdraw delayer contracts.
2594                    - example: "0x444dc4262BCDbf85190C01c996b4C06a461d2430"
2595              required:
2596                - tokenHEZ
2597                - absoluteMaxL1L2BatchTimeout
2598                - verifiers
2599                - hermezAuctionContract
2600                - hermezGovernanceDAOAddress
2601                - safetyAddress
2602                - withdrawDelayerContract
2603              additionalProperties: false
2604            maxFeeIdxCoordinator:
2605              type: integer
2606              description: is the maximum number of tokens the coordinator can use to collect fees.
2607              example: 64
2608            reservedIdx:
2609              type: integer
2610              description: First 256 indexes reserved, first user index will be the 256.
2611              example: 255
2612            exitIdx:
2613              type: integer
2614              description: Account index used to indicate that a transaction is an `exit` or `force exit`.
2615              example: 1
2616            limitLoadAmount:
2617              type: integer
2618              description: Maximum load amount (L1 to L2) allowed.
2619              example: 321
2620            limitL2TransferAmount:
2621              type: integer
2622              description: Maximum amount (L2 to L2) allowed.
2623              example: 837
2624            limitTokens:
2625              type: integer
2626              description: Maximum number of different tokens that can be registered in the network.
2627              example: 4294967295
2628            l1CoordinatorTotalBytes:
2629              type: integer
2630              description: Number of bytes that a L1 coordinator transaction has ([4 bytes] token + [32 bytes] babyjub + [65 bytes] compressedSignature).
2631              example: 101
2632            l1UserTotalBytes:
2633              type: integer
2634              description: Number of bytes that a L1 user transaction has ([20 bytes] fromEthAddr + [32 bytes] fromBjj-compressed + [6 bytes] fromIdx + [2 bytes] loadAmountFloat16 + [2 bytes] amountFloat16 + [4 bytes] tokenId + [6 bytes] toIdx).
2635              example: 72
2636            maxL1UserTx:
2637              type: integer
2638              description: Maximum L1-user transactions allowed to be queued in a batch.
2639              example: 128
2640            maxL1Tx:
2641              type: integer
2642              description: Maximum L1 transactions allowed to be queued in a batch.
2643              example: 256
2644            inputSHAConstantBytes:
2645              type: integer
2646              description: Input SHA constant bytes 
2647              example: 18542
2648            numBuckets:
2649              type: integer
2650              description: Number of buckets
2651              example: 5
2652            maxWithdrawalDelay:
2653              type: integer
2654              description: Maximum delay to withdraw tokens. Time is measured in seconds.
2655              example: 2 * 7 * 24 * 60 * 60
2656            exchangeMultiplier:
2657              type: integer
2658              description: exchange multiplier
2659              example: 1e14
2660          required:
2661            - publicConstants
2662            - reservedIdx
2663            - exitIdx
2664            - limitLoadAmount
2665            - limitL2TransferAmount
2666            - limitTokens
2667            - l1CoordinatorTotalBytes
2668            - l1UserTotalBytes
2669            - maxL1UserTx
2670            - maxL1Tx
2671            - inputSHAConstantBytes
2672            - numBuckets
2673            - maxWithdrawalDelay
2674            - exchangeMultiplier
2675          additionalProperties: false
2676        auction:
2677          type: object
2678          description: Constant configuration of the auction smart contract.
2679          properties:
2680            blocksPerSlot:
2681              type: integer
2682              description: Blocks per slot.
2683            initialMinimalBidding:
2684              type: integer
2685              description: Minimum bid when no one has bid yet.
2686            genesisBlockNum:
2687              allOf:
2688                - $ref: '#/components/schemas/EthBlockNum'
2689                - description: Ethereum block number in which the smart contract starts operating.
2690            tokenHEZ:
2691              allOf:
2692                - $ref: '#/components/schemas/EthereumAddress'
2693                - description: Ethereum address of the HEZ token.
2694                - example: "0x333dc4262BCDbf85190C01c996b4C06a461d2430"
2695            hermezRollup:
2696              allOf:
2697                - $ref: '#/components/schemas/EthereumAddress'
2698                - description: Ethereum address of the rollup smart contract.
2699                - example: "0x222dc4262BCDbf85190C01c996b4C06a461d2430"
2700            governanceAddress:
2701              allOf:
2702                - $ref: '#/components/schemas/EthereumAddress'
2703                - description: Ethereum address of the governance.
2704                - example: "0x444dc4262BCDbf85190C01c996b4C06a461d2430"
2705          required:
2706            - blocksPerSlot
2707            - initialMinimalBidding
2708            - genesisBlockNum
2709            - tokenHEZ
2710            - hermezRollup
2711            - governanceAddress
2712          additionalProperties: false
2713        withdrawalDelayer:
2714          type: object
2715          description: Constant configuration of the withdrawal delayer smart contract.
2716          properties:
2717            maxWithdrawalDelay:
2718              type: integer
2719              description: Maximum time delay in which the tokens can be locked in the contract. Time is measured in Ethereum blocks.
2720              example: 200
2721            maxEmergencyModeTime:
2722              type: integer
2723              description: Maximum amount of time in which the contract can be in emergency mode. Time is measured in Ethereum blocks.
2724              example: 2000
2725            hermezRollup:
2726              allOf:
2727                - $ref: '#/components/schemas/EthereumAddress'
2728                - description: Ethereum address of the rollup smart contract.
2729                - example: "0x222dc4262BCDbf85190C01c996b4C06a461d2430"
2730          required:
2731            - maxWithdrawalDelay
2732            - maxEmergencyModeTime
2733            - hermezRollup
2734          additionalProperties: false
2735      required:
2736        - hermez
2737        - auction
2738        - withdrawalDelayer
2739      additionalProperties: false
2740    Error:
2741      type: object
2742      description: Error response. 
2743      properties:
2744        message:
2745          type: string
2746    Error400:
2747      allOf:
2748        - $ref: '#/components/schemas/Error'
2749        - example:
2750            message: Invalid signature.
2751    Error404:
2752      allOf:
2753        - $ref: '#/components/schemas/Error'
2754        - example:
2755            message: Item(s) not found.
2756    Error500:
2757      allOf:
2758        - $ref: '#/components/schemas/Error'
2759        - example:
2760            message: Database error.