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        accountIndex:
2149          $ref: '#/components/schemas/AccountIndex'
2150        nonce:
2151          $ref: '#/components/schemas/Nonce'      
2152        balance:
2153          $ref: '#/components/schemas/BigInt'
2154        bjj:
2155          $ref: '#/components/schemas/BJJ'      
2156        hezEthereumAddress:
2157          $ref: '#/components/schemas/HezEthereumAddress'
2158        token:
2159          $ref: '#/components/schemas/Token'
2160    Accounts:
2161      type: object
2162      properties:
2163        accounts:
2164          type: array
2165          description: List of accounts.
2166          items: 
2167            $ref: '#/components/schemas/Account'
2168        pagination:
2169          $ref: '#/components/schemas/PaginationInfo'
2170    Slot:
2171      type: object
2172      description: Slot information.
2173      properties:
2174        itemId:
2175          $ref: '#/components/schemas/ItemId'
2176        slotNum:
2177          $ref: '#/components/schemas/SlotNum'
2178        firstBlock:
2179          allOf:
2180            - $ref: '#/components/schemas/EthBlockNum'
2181            - description: Block in which the slot began or will begin
2182            - example: 76238647846
2183        lastBlock:
2184          allOf:
2185            - $ref: '#/components/schemas/EthBlockNum'
2186            - description: Block in which the slot ended or will end
2187            - example: 4475934
2188        openAuction:
2189          type: boolean
2190          description: Whether the auction of the slot is open or not.
2191        winnerBid:
2192          type: object
2193          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.
2194          nullable: true
2195          properties:
2196            itemId:
2197              $ref: '#/components/schemas/ItemId'
2198            bidderAddr:
2199              $ref: '#/components/schemas/EthereumAddress'
2200            forgerAddr:
2201              $ref: '#/components/schemas/EthereumAddress'
2202            slotNum:
2203              $ref: '#/components/schemas/SlotNum'
2204            URL:
2205              $ref: '#/components/schemas/URL'
2206            bidValue:
2207              type: string
2208              description: BigInt is an integer encoded as a string for numbers that are very large.
2209              example: "8708856933496328593"
2210              pattern: "^\\d+$"
2211            ethereumBlockNum:
2212              $ref: '#/components/schemas/EthBlockNum'
2213            timestamp:
2214              type: string
2215              format: date-time
2216          additionalProperties: false
2217          require:
2218            - bidderAddr
2219            - forgerAddr
2220            - slotNum
2221            - URL
2222            - bidValue
2223            - ethereumBlockNum
2224            - timestamp
2225      additionalProperties: false
2226      require:
2227        - slotNum
2228        - firstBlock
2229        - lastBlock
2230        - openAuction
2231        - winner
2232        - winnerBid
2233    Slots:
2234      type: object
2235      properties:
2236        slots:
2237          type: array
2238          description: List of slots.
2239          items: 
2240            allOf:
2241                - $ref: '#/components/schemas/Slot'
2242                - description: Last synchronized Etherum block.
2243        pagination:
2244          $ref: '#/components/schemas/PaginationInfo'
2245      additionalProperties: false
2246      require:
2247        - slots
2248        - pagination
2249    NextForger:
2250      type: object
2251      description: Coordinator information along with the scheduled forging period
2252      properties:
2253        coordinator:
2254          $ref: '#/components/schemas/Coordinator'
2255        period:
2256          type: object
2257          description: Time period in which the coordinator will have the ability to forge. Specified both in Ethereum blocks and timestamp
2258          properties:
2259            fromBlock:
2260              $ref: '#/components/schemas/EthBlockNum'
2261            toBlock:
2262              $ref: '#/components/schemas/EthBlockNum'
2263            fromTimestamp:
2264              type: string
2265              format: date-time
2266            toTimestamp:
2267              type: string
2268              format: date-time
2269    NextForgers:
2270      type: object
2271      properties:
2272        nextForgers:
2273          type: array
2274          description: List of next coordinators to forge.
2275          items: 
2276            $ref: '#/components/schemas/NextForger'
2277        pagination:
2278          $ref: '#/components/schemas/PaginationInfo'
2279    State:
2280      type: object
2281      description: Gobal variables of the network
2282      properties:
2283        network:
2284          type: object
2285          description: Gobal statistics of the network
2286          properties:
2287            lastBlock:
2288              allOf:
2289                - $ref: '#/components/schemas/EthBlockNum'
2290                - description: Last synchronized Etherum block.
2291                - example: 3457437
2292            lastBatch:
2293              $ref: '#/components/schemas/Batch'
2294            currentSlot:
2295              allOf:
2296                - $ref: '#/components/schemas/SlotNum'
2297                - description: Slot where batches are currently being forged.
2298                - example: 2334
2299            nextForgers:
2300              $ref: '#/components/schemas/NextForgers'
2301          additionalProperties: false
2302          require: 
2303            - lastBlock
2304            - lastBatch
2305            - currentSlot
2306            - nextForgers
2307        metrics:
2308          type: object
2309          description: Metrics of the network
2310          properties:
2311            transactionsPerBatch:
2312              type: number
2313              description: Average transactions per batch in the last 24 hours.
2314              example: 2002.7
2315            batchFrequency:
2316              type: number
2317              description: Average elapsed time between batches in the last 24 hours, in seconds.
2318              example: 8.9
2319            transactionsPerSecond:
2320              type: number
2321              description: Average transactions per second in the last 24 hours.
2322              example: 302.3
2323            totalAccounts:
2324              type: integer
2325              description: Number of created accounts.
2326              example: 90473
2327            totalBJJs:
2328              type: integer
2329              description: Number of different registered BJJs.
2330              example: 23067
2331            avgTransactionFee:
2332              type: number
2333              description: Average fee percentage paid for L2 transactions in the last 24 hours.
2334              example: 1.54
2335          additionalProperties: false
2336          require:
2337            - transactionsPerBatch
2338            - batchFrequency
2339            - transactionsPerSecond
2340            - totalAccounts
2341            - totalBJJs
2342            - avgTransactionFee
2343        rollup:
2344          type: object
2345          description: Rollup parameters
2346          properties:
2347            forgeL1L2BatchTimeout:
2348              type: integer
2349              description: Max ethereum blocks after the last L1-L2-batch, when exceeds the timeout only L1-L2-batch are allowed.
2350              example: 5
2351            feeAddToken:
2352              type: integer
2353              description: Fee to pay when registering tokens into the network.
2354              example: 5698
2355            withdrawalDelay:
2356              type: integer
2357              description: Withdraw delay in seconds
2358              example: 432000
2359            buckets:
2360              type: array
2361              description: List of buckets state
2362              items:
2363                type: object
2364                properties:
2365                  ceilUSD:
2366                    type: integer
2367                    description: Max USD value
2368                    example: 1000
2369                  blockStamp:
2370                    type: integer
2371                    description: Last time a withdrawal was added ( or removed if the bucket was full)
2372                    example: 4475934
2373                  withdrawals:
2374                    type: integer
2375                    description: Available withdrawals of the bucket
2376                    example: 4
2377                  blockWithdrawalRate:
2378                    type: integer
2379                    description: Every `blockWithdrawalRate` blocks add 1 withdrawal
2380                    example: 8
2381                  maxWithdrawals:
2382                    type: integer
2383                    description: Max withdrawals the bucket can hold
2384                    example: 4
2385                additionalProperties: false
2386                require: 
2387                  - ceilUSD
2388                  - blockStamp
2389                  - withdrawals
2390                  - blockWithdrawalRate
2391                  - maxWithdrawals
2392          additionalProperties: false
2393          require: 
2394            - forgeL1L2BatchTimeout
2395            - feeAddToken
2396            - withdrawalDelay
2397            - buckets
2398        auction:
2399          type: object
2400          description: Auction parameters.
2401          properties:
2402            bootCoordinator:
2403              allOf:
2404                - $ref: '#/components/schemas/EthereumAddress'
2405                - description: Ethereum address of the boot coordinator.
2406                - example: "0x997dc4262BCDbf85190C01c996b4C06a461d2430"
2407            slotDeadline:
2408              type: integer
2409              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.
2410              example: 3
2411            closedAuctionSlots:
2412              type: integer
2413              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.
2414              example: 2
2415            openAuctionSlots:
2416              type: integer
2417              description: How many days in advance are auctions opened.
2418            defaultSlotSetBid:
2419              type: array
2420              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]`."
2421              items:
2422                type: integer
2423              example: [32,0,68,21,55,99]
2424            outbidding:
2425              type: number
2426              description: Minimum outbid over the previous one to consider it valid.
2427              example: 3.64
2428            donationAddress:
2429              allOf:
2430                - $ref: '#/components/schemas/EthereumAddress'
2431                - description: Ethereum address where the donations will go to.
2432                - example: "0x887dc4262BCDbf85190C01c996b4C06a461d2430"
2433            allocationRatio:
2434              type: array
2435              description: Percentage in which fees will be splitted between donations, governance and burning. The sum of the tree values should be 100.
2436              items:
2437                type: integer
2438              example: [80,10,10]
2439          additionalProperties: false
2440          require: 
2441            - bootCoordinator
2442            - slotDeadline
2443            - closedAuctionSlots
2444            - openAuctionSlots
2445            - defaultSlotSetBid
2446            - outbidding
2447            - donationAddress
2448            - allocationRatio
2449        withdrawalDelayer:
2450          type: object
2451          description: Withdrawal delayer parameters
2452          properties:
2453            hermezRollupAddress:
2454              allOf:
2455                - $ref: '#/components/schemas/EthereumAddress'
2456                - description: Ethereum address of the rollup smart contract.
2457                - example: "0x777dc4262BCDbf85190C01c996b4C06a461d2430"
2458            hermezGovernanceDAOAddress:
2459              allOf:
2460                - $ref: '#/components/schemas/EthereumAddress'
2461                - description: Ethereum address of the governance DAO.
2462                - example: "0x667dc4262BCDbf85190C01c996b4C06a461d2430"
2463            whiteHackGroupAddress:
2464              allOf:
2465                - $ref: '#/components/schemas/EthereumAddress'
2466                - description: Ethereum Address that can claim the funds in an emergency when the maximum emergency mode time is exceeded.
2467                - example: "0x557dc4262BCDbf85190C01c996b4C06a461d2430"
2468            hermezKeeperAddress:
2469              allOf:
2470                - $ref: '#/components/schemas/EthereumAddress'
2471                - description: Ethereum Address that can enable emergency mode and modify the delay to make a withdrawal.
2472                - example: "0x557dc4262BCDbf85190C01c996b4C06a461d2430"
2473            withdrawalDelay:
2474              allOf:
2475                - $ref: '#/components/schemas/EthBlockNum'
2476                - description: The time that anyone needs to wait until a withdrawal of the funds is allowed, in Ethereum blocks.
2477                - example: 539573849
2478            emergencyModeStartingTime:
2479              type: integer
2480              description: Ethereum block in which the emergency mode will be activated.
2481              example: 10
2482            emergencyMode:
2483              type: boolean
2484              description: Indicates if emergency mode has been activated.
2485              example: false
2486          additionalProperties: false
2487          require: 
2488            - hermezRollupAddress
2489            - hermezGovernanceDAOAddress
2490            - whiteHackGroupAddress
2491            - hermezKeeperAddress
2492            - withdrawalDelay
2493            - emergencyModeStartingTime
2494            - emergencyMode
2495        recommendedFee:
2496          $ref: '#/components/schemas/RecommendedFee'
2497      additionalProperties: false
2498      require: 
2499        - network
2500        - metrics
2501        - rollup
2502        - auction
2503        - withdrawalDelayer
2504        - recomendedFee 
2505    PaginationInfo:
2506      type: object
2507      description: Give pagination information
2508      properties:
2509        totalItems:
2510          type: integer
2511          description: Amount of items that the endpoint can return given the filters and the current state of the database.
2512          example: 2048
2513        firstItem:
2514          type: integer
2515          description: The smallest itemId that the endpoint will return with the given filters.
2516          example: 50
2517        lastItem:
2518          type: integer
2519          description: The greatest itemId that the endpoint will return with the given filters.
2520          example: 2130
2521    Config:
2522      type: object
2523      description: Configuration parameters of the different smart contracts that power the Hermez network.
2524      properties:
2525        hermez:
2526          type: object
2527          description: Constant configuration of the Hermez smart contract.
2528          properties:
2529            publicConstants:
2530              type: object
2531              description: Public Hermez smart contract constants
2532              properties: 
2533                tokenHEZ:
2534                  allOf:
2535                    - $ref: '#/components/schemas/EthereumAddress'
2536                    - description: Ethereum address of the HEZ token.
2537                    - example: "0x444dc4262BCDbf85190C01c996b4C06a461d2430"
2538                absoluteMaxL1L2BatchTimeout:
2539                  type: integer
2540                  description:  L1L2 Batch Timeout
2541                  example: 240
2542                verifiers:
2543                  type: array
2544                  description: List of verifiers struct
2545                  items:
2546                    type: object
2547                    properties:
2548                      maxTx:
2549                        type: integer
2550                        description: Maximum rollup transactions in a batch
2551                        example: 512
2552                      nlevels:
2553                        type: integer
2554                        description: Number of levels of the circuit
2555                        example: 32
2556                    required:
2557                      - maxTx
2558                      - nlevels
2559                    additionalProperties: false
2560                hermezAuctionContract:
2561                  allOf:
2562                    - $ref: '#/components/schemas/EthereumAddress'
2563                    - description: Ethereum address of the auction smart contract.
2564                    - example: "0x111dc4262BCDbf85190C01c996b4C06a461d2430"
2565                hermezGovernanceDAOAddress:
2566                  allOf:
2567                    - $ref: '#/components/schemas/EthereumAddress'
2568                    - description: Ethereum address of the governanceDAO.
2569                    - example: "0x222dc4262BCDbf85190C01c996b4C06a461d2430"
2570                safetyAddress:
2571                  allOf:
2572                    - $ref: '#/components/schemas/EthereumAddress'
2573                    - description: Ethereum address of the safety.
2574                    - example: "0x333dc4262BCDbf85190C01c996b4C06a461d2430"
2575                withdrawDelayerContract:
2576                  allOf:
2577                    - $ref: '#/components/schemas/EthereumAddress'
2578                    - description: Ethereum address of the withdraw delayer contracts.
2579                    - example: "0x444dc4262BCDbf85190C01c996b4C06a461d2430"
2580              required:
2581                - tokenHEZ
2582                - absoluteMaxL1L2BatchTimeout
2583                - verifiers
2584                - hermezAuctionContract
2585                - hermezGovernanceDAOAddress
2586                - safetyAddress
2587                - withdrawDelayerContract
2588              additionalProperties: false
2589            maxFeeIdxCoordinator:
2590              type: integer
2591              description: is the maximum number of tokens the coordinator can use to collect fees.
2592              example: 64
2593            reservedIdx:
2594              type: integer
2595              description: First 256 indexes reserved, first user index will be the 256.
2596              example: 255
2597            exitIdx:
2598              type: integer
2599              description: Account index used to indicate that a transaction is an `exit` or `force exit`.
2600              example: 1
2601            limitLoadAmount:
2602              type: integer
2603              description: Maximum load amount (L1 to L2) allowed.
2604              example: 321
2605            limitL2TransferAmount:
2606              type: integer
2607              description: Maximum amount (L2 to L2) allowed.
2608              example: 837
2609            limitTokens:
2610              type: integer
2611              description: Maximum number of different tokens that can be registered in the network.
2612              example: 4294967295
2613            l1CoordinatorTotalBytes:
2614              type: integer
2615              description: Number of bytes that a L1 coordinator transaction has ([4 bytes] token + [32 bytes] babyjub + [65 bytes] compressedSignature).
2616              example: 101
2617            l1UserTotalBytes:
2618              type: integer
2619              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).
2620              example: 72
2621            maxL1UserTx:
2622              type: integer
2623              description: Maximum L1-user transactions allowed to be queued in a batch.
2624              example: 128
2625            maxL1Tx:
2626              type: integer
2627              description: Maximum L1 transactions allowed to be queued in a batch.
2628              example: 256
2629            inputSHAConstantBytes:
2630              type: integer
2631              description: Input SHA constant bytes 
2632              example: 18542
2633            numBuckets:
2634              type: integer
2635              description: Number of buckets
2636              example: 5
2637            maxWithdrawalDelay:
2638              type: integer
2639              description: Maximum delay to withdraw tokens. Time is measured in seconds.
2640              example: 2 * 7 * 24 * 60 * 60
2641            exchangeMultiplier:
2642              type: integer
2643              description: exchange multiplier
2644              example: 1e14
2645          required:
2646            - publicConstants
2647            - reservedIdx
2648            - exitIdx
2649            - limitLoadAmount
2650            - limitL2TransferAmount
2651            - limitTokens
2652            - l1CoordinatorTotalBytes
2653            - l1UserTotalBytes
2654            - maxL1UserTx
2655            - maxL1Tx
2656            - inputSHAConstantBytes
2657            - numBuckets
2658            - maxWithdrawalDelay
2659            - exchangeMultiplier
2660          additionalProperties: false
2661        auction:
2662          type: object
2663          description: Constant configuration of the auction smart contract.
2664          properties:
2665            blocksPerSlot:
2666              type: integer
2667              description: Blocks per slot.
2668            initialMinimalBidding:
2669              type: integer
2670              description: Minimum bid when no one has bid yet.
2671            genesisBlockNum:
2672              allOf:
2673                - $ref: '#/components/schemas/EthBlockNum'
2674                - description: Ethereum block number in which the smart contract starts operating.
2675            tokenHEZ:
2676              allOf:
2677                - $ref: '#/components/schemas/EthereumAddress'
2678                - description: Ethereum address of the HEZ token.
2679                - example: "0x333dc4262BCDbf85190C01c996b4C06a461d2430"
2680            hermezRollup:
2681              allOf:
2682                - $ref: '#/components/schemas/EthereumAddress'
2683                - description: Ethereum address of the rollup smart contract.
2684                - example: "0x222dc4262BCDbf85190C01c996b4C06a461d2430"
2685            governanceAddress:
2686              allOf:
2687                - $ref: '#/components/schemas/EthereumAddress'
2688                - description: Ethereum address of the governance.
2689                - example: "0x444dc4262BCDbf85190C01c996b4C06a461d2430"
2690          required:
2691            - blocksPerSlot
2692            - initialMinimalBidding
2693            - genesisBlockNum
2694            - tokenHEZ
2695            - hermezRollup
2696            - governanceAddress
2697          additionalProperties: false
2698        withdrawalDelayer:
2699          type: object
2700          description: Constant configuration of the withdrawal delayer smart contract.
2701          properties:
2702            maxWithdrawalDelay:
2703              type: integer
2704              description: Maximum time delay in which the tokens can be locked in the contract. Time is measured in Ethereum blocks.
2705              example: 200
2706            maxEmergencyModeTime:
2707              type: integer
2708              description: Maximum amount of time in which the contract can be in emergency mode. Time is measured in Ethereum blocks.
2709              example: 2000
2710            hermezRollup:
2711              allOf:
2712                - $ref: '#/components/schemas/EthereumAddress'
2713                - description: Ethereum address of the rollup smart contract.
2714                - example: "0x222dc4262BCDbf85190C01c996b4C06a461d2430"
2715          required:
2716            - maxWithdrawalDelay
2717            - maxEmergencyModeTime
2718            - hermezRollup
2719          additionalProperties: false
2720      required:
2721        - hermez
2722        - auction
2723        - withdrawalDelayer
2724      additionalProperties: false
2725    Error:
2726      type: object
2727      description: Error response. 
2728      properties:
2729        message:
2730          type: string
2731    Error400:
2732      allOf:
2733        - $ref: '#/components/schemas/Error'
2734        - example:
2735            message: Invalid signature.
2736    Error404:
2737      allOf:
2738        - $ref: '#/components/schemas/Error'
2739        - example:
2740            message: Item(s) not found.
2741    Error500:
2742      allOf:
2743        - $ref: '#/components/schemas/Error'
2744        - example:
2745            message: Database error.