{
  "openapi": "3.1.0",
  "info": {
    "title": "AMI — Agent Mobile Identity Protocol",
    "version": "1.0.0",
    "description": "API REST para contratación y aprovisionamiento de identidad móvil para agentes AI.",
    "contact": {
      "url": "https://github.com/Gamino17/AMI"
    }
  },
  "servers": [
    {
      "url": "https://ami-mock-api.onrender.com",
      "description": "Mock público"
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "AMI_API_KEY"
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "paths": {
    "/v1/health": {
      "get": {
        "summary": "Healthcheck",
        "security": [],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/sim-options": {
      "get": {
        "summary": "Países y SIMs disponibles",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/sim-requests": {
      "post": {
        "summary": "Crear SIMRequest + oferta",
        "responses": {
          "201": {
            "description": "Created"
          }
        }
      }
    },
    "/v1/sim-requests/{id}": {
      "get": {
        "summary": "Obtener SIMRequest",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/sim-requests/{id}/cancel": {
      "post": {
        "summary": "Cancelar SIMRequest",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/sim-requests/{id}/customer-data": {
      "post": {
        "summary": "Adjuntar datos del cliente",
        "responses": {
          "201": {
            "description": "Created"
          }
        }
      }
    },
    "/v1/offers/{id}": {
      "get": {
        "summary": "Obtener oferta",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/offers/{id}/accept": {
      "post": {
        "summary": "Aceptar oferta",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/customers": {
      "post": {
        "summary": "Crear cliente suelto",
        "responses": {
          "201": {
            "description": "Created"
          }
        }
      }
    },
    "/v1/customers/{id}": {
      "get": {
        "summary": "Obtener cliente",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/contracts": {
      "post": {
        "summary": "Crear contrato + signature_url",
        "responses": {
          "201": {
            "description": "Created"
          }
        }
      }
    },
    "/v1/contracts/{id}": {
      "get": {
        "summary": "Obtener contrato",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/contracts/{id}/mock-sign": {
      "post": {
        "summary": "Firma directa (atajo programático)",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/sign/{id}": {
      "get": {
        "summary": "Página HTML de firma",
        "security": [],
        "responses": {
          "200": {
            "description": "HTML"
          }
        }
      }
    },
    "/v1/sign/{id}/confirm": {
      "post": {
        "summary": "Callback de firma desde el form",
        "security": [],
        "responses": {
          "200": {
            "description": "HTML"
          }
        }
      }
    },
    "/v1/mobile-identities/activate": {
      "post": {
        "summary": "Activar MobileIdentity",
        "responses": {
          "201": {
            "description": "Created"
          }
        }
      }
    },
    "/v1/mobile-identities/{id}": {
      "get": {
        "summary": "Obtener MobileIdentity",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/events": {
      "get": {
        "summary": "Últimos AuditEvents",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/demo/quick": {
      "post": {
        "summary": "Demo end-to-end (público, sin auth)",
        "security": [],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/identity/{id}": {
      "get": {
        "summary": "Página pública de MobileIdentity",
        "security": [],
        "responses": {
          "200": {
            "description": "HTML"
          }
        }
      }
    },
    "/spec": {
      "get": {
        "summary": "Spec del protocolo en HTML",
        "security": [],
        "responses": {
          "200": {
            "description": "HTML"
          }
        }
      }
    }
  }
}