{
  "openapi": "3.1.0",
  "info": {
    "title": "Omnimax Public API",
    "version": "1.0.0",
    "description": "API pubblica di Omnimax: listino di mercato, saldi, operazioni e commissioni. Le richieste autenticate usano l'header `x-api-key` generato dalla Developer console."
  },
  "servers": [
    {
      "url": "https://omnimaxchain.live",
      "description": "Omnimax"
    }
  ],
  "tags": [
    {
      "name": "Public",
      "description": "Endpoint aperti, senza autenticazione."
    },
    {
      "name": "Account",
      "description": "Dati dell'account associato alla chiave API."
    }
  ],
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key"
      }
    }
  },
  "paths": {
    "/api/public/v1/status": {
      "get": {
        "tags": [
          "Public"
        ],
        "summary": "Stato del servizio",
        "responses": {
          "200": {
            "description": "Servizio operativo.",
            "content": {
              "application/json": {
                "example": {
                  "status": "operational",
                  "version": "1.0",
                  "time": "2026-07-26T10:00:00.000Z"
                }
              }
            }
          },
          "401": {
            "description": "Chiave API mancante o non valida."
          },
          "429": {
            "description": "Limite di richieste superato per IP o per chiave."
          }
        }
      }
    },
    "/api/public/v1/market": {
      "get": {
        "tags": [
          "Public"
        ],
        "summary": "Listino asset quotati",
        "responses": {
          "200": {
            "description": "Elenco asset con prezzo e catena.",
            "content": {
              "application/json": {
                "example": {
                  "assets": [
                    {
                      "symbol": "BTC",
                      "name": "Bitcoin",
                      "chain": "Bitcoin",
                      "price": 64000,
                      "supply": 21000000
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Chiave API mancante o non valida."
          },
          "429": {
            "description": "Limite di richieste superato per IP o per chiave."
          }
        }
      }
    },
    "/api/public/v1/account": {
      "get": {
        "tags": [
          "Account"
        ],
        "summary": "Profilo e piano attivo",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Profilo dell'account.",
            "content": {
              "application/json": {
                "example": {
                  "email": "user@example.com",
                  "tier": "gold",
                  "plan": "pro"
                }
              }
            }
          },
          "401": {
            "description": "Chiave API mancante o non valida."
          },
          "429": {
            "description": "Limite di richieste superato per IP o per chiave."
          }
        }
      }
    },
    "/api/public/v1/balances": {
      "get": {
        "tags": [
          "Account"
        ],
        "summary": "Saldi per asset",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Saldi con controvalore USD.",
            "content": {
              "application/json": {
                "example": {
                  "balances": [
                    {
                      "symbol": "USDT",
                      "chain": "TRON",
                      "amount": 1250.5,
                      "usdValue": 1250.5
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Chiave API mancante o non valida."
          },
          "429": {
            "description": "Limite di richieste superato per IP o per chiave."
          }
        }
      }
    },
    "/api/public/v1/transactions": {
      "get": {
        "tags": [
          "Account"
        ],
        "summary": "Ultime 100 operazioni",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Storico operazioni con fee applicata.",
            "content": {
              "application/json": {
                "example": {
                  "transactions": [
                    {
                      "id": "uuid",
                      "kind": "swap",
                      "symbol": "ETH",
                      "amount": 0.5,
                      "feeUsd": 3.2,
                      "createdAt": "2026-07-26T09:00:00.000Z"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Chiave API mancante o non valida."
          },
          "429": {
            "description": "Limite di richieste superato per IP o per chiave."
          }
        }
      }
    },
    "/api/public/v1/fees": {
      "get": {
        "tags": [
          "Account"
        ],
        "summary": "Commissioni addebitate",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Riepilogo commissioni e sconti.",
            "content": {
              "application/json": {
                "example": {
                  "fees": [
                    {
                      "operationType": "swap",
                      "feeUsd": 3.2,
                      "discountPct": 10,
                      "createdAt": "2026-07-26T09:00:00.000Z"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Chiave API mancante o non valida."
          },
          "429": {
            "description": "Limite di richieste superato per IP o per chiave."
          }
        }
      }
    }
  }
}