{"openapi":"3.0.1","info":{"title":"API V0","version":"v0","description":"API de administración de Quicknode V0","contact":{"name":"Quicknode"}},"paths":{"/v0/account/info":{"get":{"summary":"Retrieves account info for the authenticated API key","tags":["Account"],"description":"Devuelve información identificativa no confidencial de la cuenta a la que pertenece la clave API.","operationId":"accountInfo","responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"billing_version":{"type":"string"},"subscription":{"type":"object","properties":{"plan_name":{"type":"string","nullable":true},"status":{"type":"string"},"interval":{"type":"string"}}}}},"error":{"type":"string","nullable":true}}}}}}}}},"/v0/api-credits/{chain}":{"get":{"summary":"Fetch API credits for a chain","tags":["Chains"],"description":"Obtiene el coste en créditos de la API de cada método disponible en una cadena, calculado según la configuración de facturación de la cuenta que realiza la llamada. Acepta los slugs de las cadenas devueltos por /v0/chains.","operationId":"apiCredits","parameters":[{"name":"chain","in":"path","description":"Cadena de caracteres devuelta por /v0/chains","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/api_credit"}},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}},"404":{"description":"No se ha encontrado la cadena","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"nullable":true},"error":{"type":"string"}}}}}}}}},"/v0/billing/invoices":{"get":{"summary":"Retrieves list of invoices","tags":["Billing"],"description":"Recuperar la lista de facturas","operationId":"invoices","responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"invoices":{"type":"array","items":{"$ref":"#/components/schemas/invoice"}}}},"error":{"type":"string","nullable":true}}}}}}}}},"/v0/billing/payments":{"get":{"summary":"Retrieves list of payments","tags":["Billing"],"description":"Consultar la lista de pagos","operationId":"payments","responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"payments":{"type":"array","items":{"$ref":"#/components/schemas/payment"}}}},"error":{"type":"string","nullable":true}}}}}}}}},"/v0/chains":{"get":{"summary":"Fetch list of chains","tags":["Chains"],"description":"Obtener una lista de cadenas","operationId":"chains","responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/chain"}},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}}}}},"/v0/endpoints/{id}/logs":{"get":{"summary":"Gets endpoint logs","tags":["Endpoint Logs"],"description":"Recupera los registros de un punto final específico","operationId":"getEndpointLogs","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"include_details","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"next_at","in":"query","required":false,"schema":{"type":"string"}},{"name":"from","in":"query","required":true,"schema":{"type":"string"}},{"name":"to","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Los registros se han recuperado correctamente","content":{"application/json":{"examples":{"logs_response":{"value":{"data":[{"timestamp":"2025-04-29T12:39:25.543Z","method":"eth_sendRawTransaction","network":"xdai","http_method":"POST","status":200,"error_code":null,"url":"/es","request_id":"fbecafc8-24f6-11f0-b300-484b1a416a3f","details":{"request":"{\"jsonrpc\": \"2.0\", \"method\": \"eth_sendRawTransaction\", \"params\": [\"0x02f9051364824553843b9aca0084ee6b2800839896809469c0669f3b5df0f2e2644f01098b4465f565210180b904a46a761202000000000000000000000000a238cbeb142c10ef7ad8442c6d1f9e89e07e776100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000001e48d80ff0a0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000019200552cea7bc33cbbeb9f1d90c1d11d2c6daeffd053000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c44954bbf142be1354a90d0ca1804fa5a595bd660dcee74cd6544b21759a1f5f0f8937efc20000000000000000000000000000000000000000000000000000000000000080000000000000000000000000998defafd094817ef329f6dc79c703f1cf18bc9000000000000000000000000000000000000000000000000000000000000003cf000000000000000000000000000000000000000000000000000000000000002034d4c8c2a0dd1cf3a4e0f93ccf8bd133a5551858eb631c2ffdb498a21b064d3c00694e62bdf7ff510a4ee66662cf4866a961a31653000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000245b34eba00e61d8e891e53169dd53017bf27e85e0e72418fa8bc0198eeb31990dc5d155ec00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001047f3797395663a7e45089db42caf92bb87fc5667dba0720559eb436fb90f946ce55632dbc31613ff37e376\"]","response":"{\"jsonrpc\":\"2.0\",\"result\":\"0x346465fe1518d3a2dc0a45fe51ca3052097397708f242c063c256c13182cf214\",\"id\":0}"}},{"timestamp":"2025-04-29T12:39:15.627Z","method":"eth_call","network":"xdai","http_method":"POST","status":200,"error_code":-32015,"url":"/es","request_id":"f6038dca-24f6-11f0-b2d8-484b1a416a3f","details":{"request":"{\"jsonrpc\": \"2.0\", \"method\": \"eth_call\", \"params\": [{\"to\": \"0xE49CB081e8d96920C38aA7AB90cb0294ab4Bc8EA\", \"data\": \"0x02a8ca100000000000000000000000000000000000000000000000000000000000000000\"}, \"latest\"], \"id\": 1}","response":"{\"jsonrpc\":\"2.0\",\"error\":{\"code\":-32015,\"message\":\"VM execution error.\",\"data\":\"\\u000E\\u0797Y\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\"},\"id\":1}"}}],"next_at":"MTc0NTkzMDM1NTYwOTAwMDAwMHxmNjAwZDgxZS0yNGY2LTExZjAtYjJkNy03OTQwZmE2MDc2NWM="}}}}}},"400":{"description":"parámetros no válidos"},"404":{"description":"No se ha encontrado el punto final"}}}},"/v0/endpoints/{id}/log_details":{"get":{"summary":"Gets log details","tags":["Endpoint Logs"],"description":"Obtiene información detallada sobre una entrada concreta del registro","operationId":"getLogDetails","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"request_id","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Los detalles del registro se han recuperado correctamente","content":{"application/json":{"examples":{"log_details_response":{"value":{"data":{"request":"{\"jsonrpc\": \"2.0\", \"method\": \"eth_call\", \"params\": [{\"to\": \"0x62cCf8eE8756a7c6022C10Cb6Ee167F420d87A25\", \"from\": \"0xcb2434A1732Ed962E0c4232953c13eEe6719fff3\", \"value\": \"0x0\", \"data\": \"0x6a761202000000000000000000000000a238cbeb142c10ef7ad8442c6d1f9e89e07e7761000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000c48d80ff0a0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000007900694e62bdf7ff510a4ee66662cf4866a961a31653000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000245b34eba0fcdeea0990fd076f3cca9061bfebc302e4febc1a6aeb9cc7e10b735424c8bcb50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010426a6e1e913784ae25ea661d0dcb4ce13bbd990693c3ebadb0a8e866afb8b1dd52152d784372b9320a76fa6fdb50f6101072f1f05a788eb4ce71bc90a712552e41ce1b52eb77fb8b95efbeb2511299534e92bd891f9694dc41d669be446411294fd72d8c2056c4f71065d9d9abc0f613eae8f5c36e3df73f1a8d838fb917bd5d39d1b5b2330dd098dd48b43df57dbdb1a8cb4228274062e91e6d4efc51ed2d5d26aaf1f00872cfc79b630ec5adb943fe34491a67bc88b41baf1e7667cc8a49a0acc1d1c97394f2ac9bc249d35e093111f3906f229e57937ce21a4be147f5fe39f2964e05d6d0de3294c642d459cd9aa2cd8e54fe81ae396aaa9c4222c83d6545877c7271c00000000000000000000000000000000000000000000000000000000\"}, \"0x25f68d6\"], \"id\": 321}","response":"{\"jsonrpc\":\"2.0\",\"id\":321,\"error\":{\"code\":3,\"message\":\"execution reverted: GS026\",\"data\":\"0x08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000054753303236000000000000000000000000000000000000000000000000000000\"}}\\n"}}}}}}},"400":{"description":"Hermes rechaza los UUID que no se basan en la hora"},"404":{"description":"No se ha encontrado el punto final"}}}},"/v0/endpoints/{id}/method-rate-limits":{"get":{"summary":"Gets method rate limits","tags":["Endpoint Rate Limits"],"description":"Obtiene los límites de frecuencia del método","operationId":"getMethodRateLimits","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"puntos finales recuperados","content":{"application/json":{"examples":{"rate_limiters_list":{"value":{"data":{"rate_limiters":[{"id":"a1b2c3d4-e5f6-4a5b-9c8d-7e6f5a4b3c2d","interval":"second","methods":["example_method"],"rate":10,"status":"enabled","created":"2024-01-01T12:00:00.000000Z"}]},"error":null}}}}}},"404":{"description":"devuelve un resultado vacío cuando el punto final no existe"}}},"post":{"summary":"Creates a method rate limit","tags":["Endpoint Rate Limits"],"description":"Crea un límite de frecuencia para un método","operationId":"createMethodRateLimit","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Se ha creado un límite de rate para el método","content":{"application/json":{"examples":{"example_key":{"value":{"data":{"created":"2024-01-01T12:00:00.000000Z","id":"a1b2c3d4-e5f6-4a5b-9c8d-7e6f5a4b3c2d","interval":"second","methods":["example_method"],"rate":10,"status":"enabled"},"error":null}}}}}},"400":{"description":"parámetros no válidos"},"404":{"description":"No se ha encontrado el punto final"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"interval":{"type":"string","enum":["second","minute","day"]},"methods":{"type":"array","items":{"type":"string"}},"rate":{"type":"integer"}},"required":["interval","methods","rate"]}}}}}},"/v0/endpoints/{id}/method-rate-limits/{method_rate_limit_id}":{"patch":{"summary":"Updates a method rate limit","tags":["Endpoint Rate Limits"],"description":"Actualiza el límite de rate de un método","operationId":"updateMethodRateLimit","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"method_rate_limit_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Se ha actualizado el límite de rate del método","content":{"application/json":{"examples":{"single_rate_limiter":{"value":{"data":{"created":"2024-01-01T12:00:00.000000Z","id":"a1b2c3d4-e5f6-4a5b-9c8d-7e6f5a4b3c2d","interval":"day","methods":["example_method_1","example_method_2"],"rate":30,"status":"enabled"},"error":null}}}}}},"400":{"description":"Solicitud no válida"},"404":{"description":"No se ha encontrado el límite de rate"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"methods":{"type":"array","items":{"type":"string"}},"status":{"type":"string","enum":["enabled","disabled"]},"rate":{"type":"integer"}}}}}}},"delete":{"summary":"Deletes a method rate limit","tags":["Endpoint Rate Limits"],"description":"Elimina un límite de frecuencia de un método","operationId":"deleteMethodRateLimit","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"method_rate_limit_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Límite de frecuencia del método eliminado","content":{"application/json":{"examples":{"rate_limiter_deletion":{"value":{"data":"Rate limit deleted successfully","error":null}}}}}},"404":{"description":"No se ha encontrado el límite de rate del método"}}}},"/v0/endpoints/{id}/metrics":{"get":{"summary":"Fetch single metric","tags":["Endpoint Metrics"],"description":"Recupera una única métrica para un punto final","operationId":"fetchEndpointMetric","parameters":[{"name":"id","in":"path","required":true,"description":"ID del terminal","schema":{"type":"string"}},{"name":"period","in":"query","schema":{"type":"string","enum":["hour","day","week","month"]},"required":true,"description":"hora, día, semana, mes"},{"name":"metric","in":"query","schema":{"type":"string","enum":["method_calls_over_time","metered_endpoint_data_over_time","metered_endpoint_credits_over_time","credits_over_time","response_status_over_time","response_status_breakdown","response_time_over_time","method_response_time_max","request_errors_over_time","total_request_errors_over_time"]},"required":true,"description":"llamadas_por_método_a_lo_largo_del_tiempo, datos_de_punto_final_medidos_a_lo_largo_del_tiempo, créditos_de_punto_final_medidos_a_lo_largo_del_tiempo, créditos_a_lo_largo_del_tiempo, estado_de_respuesta_a_lo_largo_del_tiempo, desglose_del_estado_de_respuesta, tiempo_de_respuesta_a_lo_largo_del_tiempo, tiempo_máximo_de_respuesta_por_método, errores_de_solicitud_a_lo_largo_del_tiempo, total_de_errores_de_solicitud_a_lo_largo_del_tiempo"}],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/endpoint_metric"}},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}}}}},"/v0/endpoints/{id}/rate-limits":{"get":{"summary":"List endpoint rate limits","tags":["Endpoint Rate Limits"],"description":"Devuelve los límites de frecuencia aplicados actualmente al punto final, junto con la fuente de cada valor.","operationId":"getRateLimits","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Límites de frecuencia devueltos"},"404":{"description":"No se ha encontrado el punto final"}}},"patch":{"summary":"Update endpoint rate limits (partial)","tags":["Endpoint Rate Limits"],"description":"Actualización parcial de las modificaciones de los límites de velocidad a nivel de punto final (RPS/RPM/RPD). Solo se modifican los buckets incluidos en el cuerpo de la solicitud; los buckets omitidos permanecen sin cambios. No existe un comportamiento de «borrado por omisión». También se acepta PUT como alias heredado de esta operación.","operationId":"updateRateLimits","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Se han actualizado los límites de frecuencia"},"400":{"description":"Solicitud incorrecta"},"404":{"description":"No se ha encontrado el punto final"},"500":{"description":"Error interno del servidor"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["rate_limits"],"properties":{"rate_limits":{"type":"object","properties":{"rps":{"type":"integer","minimum":1,"description":"Número máximo de solicitudes por segundo. Limitado por el nivel del plan de la cuenta."},"rpm":{"type":"integer","minimum":1,"description":"Número máximo de solicitudes por minuto. Limitado por el nivel del plan de la cuenta."},"rpd":{"type":"integer","minimum":1,"description":"Número máximo de solicitudes al día. Limitado por el nivel del plan de la cuenta."}},"minProperties":1}}}}}}},"put":{"summary":"Update endpoint rate limits (legacy PUT alias)","tags":["Endpoint Rate Limits"],"description":"Obsoleto — se mantiene por motivos de compatibilidad con versiones anteriores para los clientes de la API existentes. Utiliza en su lugar PATCH /v0/endpoints/{id}/rate-limits.","operationId":"updateRateLimitsLegacyPut","deprecated":true,"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Se han actualizado los límites de frecuencia"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["rate_limits"],"properties":{"rate_limits":{"type":"object","properties":{"rps":{"type":"integer","minimum":1,"description":"Número máximo de solicitudes por segundo. Limitado por el nivel del plan de la cuenta."},"rpm":{"type":"integer","minimum":1,"description":"Número máximo de solicitudes por minuto. Limitado por el nivel del plan de la cuenta."},"rpd":{"type":"integer","minimum":1,"description":"Número máximo de solicitudes al día. Limitado por el nivel del plan de la cuenta."}},"minProperties":1}}}}}}}},"/v0/endpoints/{id}/rate-limits/{override_id}":{"delete":{"summary":"Delete a user-set rate-limit override","tags":["Endpoint Rate Limits"],"description":"Elimina la excepción de límite de rate establecida por el usuario identificada por su UUID. El identificador de la excepción aparece en la respuesta GET de «rate-limits» en las filas «user_override». Devuelve un código 404 si el identificador no coincide con una excepción establecida por el usuario en este punto final; las configuraciones predeterminadas del plan no se pueden eliminar.","operationId":"deleteRateLimitOverride","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"override_id","in":"path","description":"El UUID de la anulación del límite de velocidad establecida por el usuario, tal y como se devuelve en la respuesta GET de «rate-limits».","required":true,"schema":{"type":"string"}}],"responses":{"404":{"description":"No se ha encontrado la sobrescritura"}}}},"/v0/endpoints/{id}/security_options":{"get":{"summary":"Gets security options","tags":["Endpoint Security"],"description":"Obtiene las opciones de seguridad de un punto final","operationId":"getSecurityOptions","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"opciones de seguridad recuperadas","content":{"application/json":{"examples":{"security_options_list":{"value":{"data":[{"option":"tokens","status":"enabled"},{"option":"referrers","status":"enabled"},{"option":"jwts","status":"enabled"},{"option":"ips","status":"enabled"},{"option":"domainMasks","status":"enabled"},{"option":"hsts","status":"enabled"},{"option":"cors","status":"enabled"},{"option":"requestFilters","status":"enabled"},{"option":"ipCustomHeader","status":"enabled","value":"CF-Connecting-IP"}],"error":null}}}}}},"404":{"description":"No se ha encontrado el punto final"}}},"patch":{"summary":"Updates security options","tags":["Endpoint Security"],"description":"Actualiza las opciones de seguridad de un dispositivo","operationId":"updateSecurityOptions","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Se han actualizado las opciones de seguridad","content":{"application/json":{"examples":{"updated_security_options":{"value":{"data":[{"option":"tokens","status":"enabled"},{"option":"referrers","status":"enabled"},{"option":"jwts","status":"enabled"},{"option":"ips","status":"enabled"},{"option":"domainMasks","status":"enabled"},{"option":"hsts","status":"enabled"},{"option":"cors","status":"enabled"},{"option":"requestFilters","status":"enabled"},{"option":"ipCustomHeader","status":"enabled","value":"CF-Connecting-IP"}],"error":null}}}}}},"400":{"description":"Solicitud no válida"},"404":{"description":"No se ha encontrado el punto final"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"options":{"type":"object","properties":{"tokens":{"type":"string","enum":["enabled","disabled"]},"referrers":{"type":"string","enum":["enabled","disabled"]},"jwts":{"type":"string","enum":["enabled","disabled"]},"ips":{"type":"string","enum":["enabled","disabled"]},"domainMasks":{"type":"string","enum":["enabled","disabled"]},"hsts":{"type":"string","enum":["enabled","disabled"]},"cors":{"type":"string","enum":["enabled","disabled"]},"requestFilters":{"type":"string","enum":["enabled","disabled"]},"ipCustomHeader":{"type":"string","enum":["enabled","disabled"]}},"additionalProperties":false}},"required":["options"]}}}}}},"/v0/endpoints/{id}/security/referrers":{"post":{"summary":"Creates a new endpoint referrer","description":"Crear un referenciador de punto final","operationId":"createReferrer","tags":["Endpoint Security"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Se ha creado el referenciador"},"400":{"description":"Falta el referrer"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"referrer":{"type":"string"}}}}},"required":true}}},"/v0/endpoints/{id}/security/request_filters":{"post":{"summary":"Creates a new endpoint request filter","description":"Crear un filtro de solicitudes para un punto final","operationId":"createRequestFilter","tags":["Endpoint Security"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"}}},"error":{"type":"string","nullable":true}}}}}},"400":{"description":"Falta el método","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"method":{"type":"array","items":{"type":"string"},"description":"Conjunto de nombres de métodos para la lista blanca"}}}}},"required":true}}},"/v0/endpoints/{id}/security/request_filters/{request_filter_id}":{"put":{"summary":"Updates an existing endpoint request filter","description":"Actualizar un filtro de solicitudes de un punto final","operationId":"updateRequestFilter","tags":["Endpoint Security"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"request_filter_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"éxito - sin contenido"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"method":{"type":"array","items":{"type":"string"},"description":"Conjunto de nombres de métodos para la lista blanca"}}}}},"required":true}},"delete":{"summary":"Deletes an existing endpoint request filter","description":"Elimina un filtro de solicitudes de punto final ya existente","operationId":"deleteRequestFilter","tags":["Endpoint Security"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"request_filter_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"éxito - sin contenido"}}}},"/v0/endpoints/{id}/security/tokens":{"post":{"summary":"Creates a new endpoint authentication token","description":"Crear un token de autenticación para un punto final","operationId":"createAuthenticationToken","tags":["Endpoint Security"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"éxito"}}}},"/v0/endpoints/{id}/security/ips":{"post":{"summary":"Creates a new endpoint ip","description":"Crear una dirección IP de punto final","operationId":"createIp","tags":["Endpoint Security"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"éxito"},"400":{"description":"Falta la dirección IP"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ip":{"type":"string"}}}}},"required":true}}},"/v0/endpoints/{id}/security/domain_masks":{"post":{"summary":"Creates a new endpoint domain_mask","description":"Crear un punto final «domain_mask»","operationId":"createDomainMask","tags":["Endpoint Security"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"éxito"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"domain_mask":{"type":"string"}}}}},"required":true}}},"/v0/endpoints/{id}/security/jwts":{"post":{"summary":"Creates a new endpoint jwt","description":"Crear un JWT de punto final","operationId":"createJwt","tags":["Endpoint Security"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"éxito"},"400":{"description":"Falta el nombre"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"public_key":{"type":"string"},"kid":{"type":"string"},"name":{"type":"string"}}}}},"required":true}}},"/v0/endpoints/{id}/security/jwts/{jwt_id}":{"delete":{"summary":"Deletes an existing endpoint jwt","description":"Elimina un JWT de punto final ya existente","operationId":"deleteJwt","tags":["Endpoint Security"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"jwt_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"éxito"}}}},"/v0/endpoints/{id}/security/domain_masks/{domain_mask_id}":{"delete":{"summary":"Deletes an existing endpoint domain_mask","description":"Elimina una máscara de dominio de punto final existente","operationId":"deleteDomainMask","tags":["Endpoint Security"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"domain_mask_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"éxito"}}}},"/v0/endpoints/{id}/security/referrers/{referrer_id}":{"delete":{"summary":"Deletes an existing endpoint referrer","description":"Elimina un referente de punto final ya existente","operationId":"deleteReferrer","tags":["Endpoint Security"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"referrer_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"boolean"},"error":{"type":"string","nullable":true}}}}}}}}},"/v0/endpoints/{id}/security/ips/{ip_id}":{"delete":{"summary":"Deletes an existing endpoint ip","description":"Elimina una dirección IP de punto final existente","operationId":"deleteIp","tags":["Endpoint Security"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"ip_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"boolean"},"error":{"type":"string","nullable":true}}}}}}}}},"/v0/endpoints/{id}/security/tokens/{token_id}":{"delete":{"summary":"Deletes an existing endpoint token","description":"Elimina un token de punto final existente","operationId":"deleteToken","tags":["Endpoint Security"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"token_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"boolean"},"error":{"type":"string","nullable":true}}}}}}}}},"/v0/endpoints/{id}/enable_multichain":{"post":{"summary":"Enable multichain for endpoint","description":"Habilita la compatibilidad con múltiples cadenas","operationId":"enableMultichain","tags":["Endpoint Security"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"éxito"}}}},"/v0/endpoints/{id}/disable_multichain":{"post":{"summary":"Disable multichain for endpoint","description":"Desactiva la función multichain","operationId":"disableMultichain","tags":["Endpoint Security"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"éxito"}}}},"/v0/endpoints/{id}/ip_custom_header":{"patch":{"summary":"Updates or creates an IP custom header","description":"Crear o actualizar un encabezado IP personalizado","operationId":"createOrUpdateIpCustomHeader","tags":["Endpoint Security"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"header_name":{"type":"string"}}},"error":{"type":"string","nullable":true}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"header_name":{"type":"string","description":"Nombre del encabezado personalizado de IP"}},"required":["header_name"]}}},"required":true}},"delete":{"summary":"Deletes the IP custom header","description":"Eliminar el encabezado personalizado de IP","operationId":"deleteIpCustomHeader","tags":["Endpoint Security"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"boolean"},"error":{"type":"string","nullable":true}}}}}}}}},"/v0/endpoints/{id}/tags":{"post":{"summary":"Creates endpoint tag","tags":["Endpoint Tags"],"description":"Crear una etiqueta en un punto final","operationId":"createTag","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Etiqueta creada"},"400":{"description":"Solicitud incorrecta"},"404":{"description":"No se ha encontrado el punto final"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string"}}}}},"required":true}}},"/v0/endpoints/{id}/tags/{tag_id}":{"delete":{"summary":"Deletes endpoint tag","tags":["Endpoint Tags"],"description":"Eliminar una etiqueta de un punto final","operationId":"deleteTag","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"tag_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Etiqueta eliminada"},"404":{"description":"No se ha encontrado el punto final"}}}},"/v0/endpoints":{"post":{"summary":"Creates a new endpoint","tags":["Endpoints"],"parameters":[],"description":"Crear un único punto final","operationId":"createEndpoint","responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/single_endpoint"},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string"},"network":{"type":"string"}}}}},"required":true}},"get":{"summary":"Retrieves endpoints list","tags":["Endpoints"],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer"}},{"name":"search","in":"query","required":false,"description":"Buscar por subdominio o etiqueta","schema":{"type":"string"}},{"name":"sort_by","in":"query","required":false,"description":"Campo de ordenación","schema":{"type":"string","enum":["name","status","network","label","tags","usage","created_at"]}},{"name":"sort_direction","in":"query","required":false,"schema":{"type":"string","enum":["asc","desc"]}},{"name":"networks","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}},"description":"Filtrar por nombre(s) de red"},{"name":"statuses","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","enum":["active","paused"]}},"description":"Filtrar por estado"},{"name":"labels","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}},"description":"Filtrar por etiqueta(s)"},{"name":"dedicated","in":"query","required":false,"description":"Filtrar puntos finales específicos","schema":{"type":"boolean"}},{"name":"is_flat_rate","in":"query","required":false,"description":"Filtrar puntos finales de tarifa plana","schema":{"type":"boolean"}},{"name":"tag_ids","in":"query","required":false,"schema":{"type":"array","items":{"type":"integer"}}},{"name":"tag_labels","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"description":"Recuperar la lista de puntos finales. «tag_ids» y «tag_labels» son mutuamente excluyentes.","operationId":"listEndpoints","responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/endpoint"},"nullable":true},"pagination":{"type":"object","properties":{"total":{"type":"integer"},"limit":{"type":"integer"},"offset":{"type":"integer"}},"required":["total","limit","offset"]},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}}}}},"/v0/endpoints/bulk/status":{"post":{"summary":"Bulk update endpoint status","tags":["Endpoints"],"description":"Poner en pausa o reanudar varios terminales en una misma llamada. Solo para administradores.","operationId":"bulkUpdateEndpointStatus","parameters":[],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"total":{"type":"integer"},"updated_count":{"type":"integer"},"failed_count":{"type":"integer"},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"success":{"type":"boolean"}},"required":["id","success"]}}},"required":["total","updated_count","failed_count","results"]}},"required":["data"]}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"},"description":"Identificadores de punto final"},"status":{"type":"string","enum":["active","paused"]}},"required":["ids","status"]}}}}}},"/v0/endpoints/bulk/tags":{"post":{"summary":"Bulk add tag to endpoints","tags":["Endpoints"],"description":"Añadir una etiqueta a varios puntos finales en una sola llamada. Solo para administradores.","operationId":"bulkAddTag","parameters":[],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"total":{"type":"integer"},"updated_count":{"type":"integer"},"failed_count":{"type":"integer"},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"success":{"type":"boolean"}},"required":["id","success"]}},"tag":{"type":"object","properties":{"tag_id":{"type":"integer"},"label":{"type":"string"}}}},"required":["total","updated_count","failed_count","results","tag"]}},"required":["data"]}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"},"description":"Identificadores de punto final"},"label":{"type":"string","description":"Etiqueta que se va a añadir"}},"required":["ids","label"]}}}}},"delete":{"summary":"Bulk remove tag from endpoints","tags":["Endpoints"],"description":"Eliminar una etiqueta de varios puntos finales en una sola llamada. Solo para administradores.","operationId":"bulkRemoveTag","parameters":[],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"total":{"type":"integer"},"updated_count":{"type":"integer"},"failed_count":{"type":"integer"},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"success":{"type":"boolean"}},"required":["id","success"]}}},"required":["total","updated_count","failed_count","results"]}},"required":["data"]}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"},"description":"Identificadores de punto final"},"tag_id":{"type":"integer","description":"ID de la etiqueta que se va a eliminar"}},"required":["ids","tag_id"]}}}}}},"/v0/endpoints/{id}/security":{"get":{"summary":"Get endpoint security state","tags":["Endpoints"],"description":"Devuelve el estado de seguridad completo (tokens, JWT, direcciones IP, fuentes de referencia, máscaras de dominio, filtros de solicitud, opciones) sin necesidad de recuperar el punto final completo.","operationId":"getEndpointSecurity","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/endpoint_security"},"error":{"type":"string","nullable":true}}}}}},"404":{"description":"No se ha encontrado el punto final","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"nullable":true},"error":{"type":"string"}}}}}}}}},"/v0/endpoints/{id}":{"get":{"summary":"Show single endpoint","tags":["Endpoints"],"description":"Devuelve un único punto final","operationId":"showEndpoint","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/single_endpoint"},"error":{"type":"string","nullable":true}}}}}}}},"patch":{"summary":"Update endpoint","tags":["Endpoints"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"description":"Actualizar la etiqueta de un único punto final","operationId":"UpdateEndpoint","responses":{"200":{"description":"éxito"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string"}}}}}}},"delete":{"summary":"Archive endpoint","tags":["Endpoints"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"description":"Archivar un único punto final","operationId":"archiveEndpoint","responses":{"200":{"description":"éxito"}}}},"/v0/endpoints/{id}/status":{"patch":{"summary":"Update endpoint status","tags":["Endpoints"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"description":"Poner en pausa o activar un terminal","operationId":"UpdateEndpointStatus","responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","nullable":true},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}},"400":{"description":"error de validación","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"boolean","nullable":true},"error":{"type":"string"}},"required":["data","error"]}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["active","paused"]}},"required":["status"]}}}}}},"/v0/endpoints/{id}/urls":{"get":{"summary":"Get endpoint URLs","tags":["Endpoints"],"description":"Devuelve las URL http/wss del punto final, además de las multichain_urls correspondientes a los puntos finales multichain.","operationId":"showEndpointUrls","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/endpoint_urls"},"error":{"type":"string","nullable":true}}}}}}}}},"/v0/metrics":{"get":{"summary":"Fetch account-level metrics","tags":["Account Metrics"],"description":"Recopila métricas agregadas de todos los puntos finales de una cuenta","operationId":"fetchAccountMetrics","parameters":[{"name":"period","in":"query","schema":{"type":"string","enum":["hour","day","week","month"]},"required":true,"description":"hora, día, semana, mes"},{"name":"metric","in":"query","schema":{"type":"string","enum":["method_calls_over_time","metered_endpoint_data_over_time","metered_endpoint_credits_over_time","credits_over_time"]},"required":true,"description":"llamadas_a_métodos_a_lo_largo_del_tiempo, datos_de_puntos_de_extremo_medidos_a_lo_largo_del_tiempo, créditos_de_puntos_de_extremo_medidos_a_lo_largo_del_tiempo, créditos_a_lo_largo_del_tiempo"},{"name":"percentile","in":"query","required":false,"description":"Percentil de las métricas de tiempo de respuesta","schema":{"type":"string"}}],"responses":{"200":{"description":"métrica «credits_over_time»","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/endpoint_metric"}},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}}}}},"/v0/endpoints/tags":{"get":{"summary":"List account tags","tags":["Tags"],"description":"Devuelve todas las etiquetas a nivel de cuenta, incluidas aquellas sin puntos finales. Acceso restringido a Build/Growth+.","operationId":"listTags","responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"label":{"type":"string"},"usage_count":{"type":"integer","description":"Número de puntos finales que utilizan esta etiqueta"}},"required":["id","label","usage_count"]}}}},"error":{"type":"string","nullable":true}}}}}}}}},"/v0/endpoints/tags/{id}":{"patch":{"summary":"Rename a tag","tags":["Tags"],"description":"Cambia el nombre de una etiqueta de cuenta. Dado que la etiqueta se comparte entre los distintos puntos finales, todos los puntos finales asociados reflejan inmediatamente la nueva etiqueta. Solo para administradores.","operationId":"renameTag","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"label":{"type":"string"},"usage_count":{"type":"integer"}}},"error":{"type":"string","nullable":true}}}}}},"404":{"description":"No se ha encontrado la etiqueta","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"nullable":true},"error":{"type":"string"}}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string"}},"required":["label"]}}}}},"delete":{"summary":"Delete a tag","tags":["Tags"],"description":"Elimina una etiqueta de cuenta. Se produce un error grave si la etiqueta sigue asignada a algún terminal; primero hay que eliminarla de todos los terminales. Solo para administradores.","operationId":"deleteTag","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"success":{"type":"boolean"}}},"error":{"type":"string","nullable":true}}}}}},"400":{"description":"etiqueta aún en uso","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"nullable":true},"error":{"type":"string"}}}}}},"404":{"description":"No se ha encontrado la etiqueta","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"nullable":true},"error":{"type":"string"}}}}}}}}},"/v0/teams/{id}/endpoints":{"parameters":[{"name":"id","in":"path","description":"ID del equipo","required":true,"schema":{"type":"integer"}}],"get":{"summary":"List endpoints accessible to this team","tags":["Teams"],"security":[{"bearerAuth":[]}],"description":"Recuperar los terminales asignados a este equipo, además de los terminales no asignados (accesibles para todos)","operationId":"listTeamEndpoints","responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"subdomain":{"type":"string"},"chain":{"type":"string","nullable":true},"network":{"type":"string","nullable":true}}}},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}},"404":{"description":"No se ha encontrado el equipo","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","nullable":true},"error":{"type":"string"}},"required":["data","error"]}}}}}},"patch":{"summary":"Update endpoints assigned to a team","tags":["Teams"],"security":[{"bearerAuth":[]}],"description":"Actualizar qué puntos de contacto están asignados a este equipo","operationId":"updateTeamEndpoints","parameters":[],"responses":{"200":{"description":"Las tareas se han actualizado correctamente","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"success":{"type":"boolean"}}},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}},"404":{"description":"No se ha encontrado el equipo","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","nullable":true},"error":{"type":"string"}},"required":["data","error"]}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"endpoint_ids":{"type":"array","items":{"type":"string"}}},"required":["endpoint_ids"]}}}}}},"/v0/teams/{id}/members":{"parameters":[{"name":"id","in":"path","description":"ID del equipo","required":true,"schema":{"type":"integer"}}],"post":{"summary":"Invite a user to a team","tags":["Teams"],"security":[{"bearerAuth":[]}],"description":"Invita a un nuevo usuario o añade a un usuario ya existente a un equipo. En el caso de los nuevos usuarios, es obligatorio indicar el «nombre completo» y el «rol». En el caso de los usuarios ya existentes, solo es necesario indicar el «correo electrónico».","operationId":"inviteTeamMember","parameters":[],"responses":{"200":{"description":"Se ha añadido un usuario ya existente al equipo","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"full_name":{"type":"string"},"email":{"type":"string"},"role":{"type":"string","nullable":true},"status":{"type":"string"}}},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}},"400":{"description":"número máximo de usuarios alcanzado","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","nullable":true},"error":{"type":"string"}},"required":["data","error"]}}}},"404":{"description":"No se ha encontrado el equipo","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","nullable":true},"error":{"type":"string"}},"required":["data","error"]}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"full_name":{"type":"string"},"email":{"type":"string"},"role":{"type":"string","enum":["admin","viewer","billing"]}},"required":["email"]}}}}}},"/v0/teams/{id}/members/{user_id}":{"parameters":[{"name":"id","in":"path","description":"ID del equipo","required":true,"schema":{"type":"integer"}},{"name":"user_id","in":"path","description":"ID de usuario","required":true,"schema":{"type":"integer"}}],"delete":{"summary":"Remove a user from a team","tags":["Teams"],"security":[{"bearerAuth":[]}],"description":"Eliminar a un usuario de un equipo o borrarlo de la cuenta","operationId":"removeTeamMember","parameters":[],"responses":{"200":{"description":"El usuario se ha eliminado correctamente","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"message":{"type":"string"}}},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}},"400":{"description":"No se puede eliminar el usuario principal","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","nullable":true},"error":{"type":"string"}},"required":["data","error"]}}}},"404":{"description":"No se ha encontrado el usuario","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","nullable":true},"error":{"type":"string"}},"required":["data","error"]}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"destroy_user":{"type":"boolean","default":false}}}}}}}},"/v0/teams/{id}/members/{user_id}/resend_invite":{"parameters":[{"name":"id","in":"path","description":"ID del equipo","required":true,"schema":{"type":"integer"}},{"name":"user_id","in":"path","description":"ID de usuario","required":true,"schema":{"type":"integer"}}],"post":{"summary":"Resend invitation to a pending user","tags":["Teams"],"security":[{"bearerAuth":[]}],"description":"Reenviar un correo electrónico de invitación a un usuario cuyo estado sea «pendiente»","operationId":"resendTeamInvite","responses":{"200":{"description":"La invitación se ha reenviado correctamente","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"message":{"type":"string"}}},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}},"400":{"description":"El usuario no está pendiente en el equipo","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","nullable":true},"error":{"type":"string"}},"required":["data","error"]}}}},"404":{"description":"No se ha encontrado el equipo","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","nullable":true},"error":{"type":"string"}},"required":["data","error"]}}}}}}},"/v0/teams":{"get":{"summary":"List all teams","tags":["Teams"],"security":[{"bearerAuth":[]}],"description":"Obtener una lista de todos los equipos de la cuenta","operationId":"listTeams","responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"members_count":{"type":"integer"},"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"full_name":{"type":"string"},"email":{"type":"string"},"role":{"type":"string","nullable":true},"created_at":{"type":"string"},"status":{"type":"string"},"photo_url":{"type":"string"}}}}}}},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}}}},"post":{"summary":"Create a new team","tags":["Teams"],"security":[{"bearerAuth":[]}],"description":"Crear un nuevo equipo para la cuenta","operationId":"createTeam","parameters":[],"responses":{"200":{"description":"El equipo se ha creado correctamente","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"default_role":{"type":"string"},"members_count":{"type":"integer"}}},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}},"400":{"description":"Solicitud incorrecta: nombre de equipo no válido","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","nullable":true},"error":{"type":"string"}},"required":["data","error"]}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4}},"required":["name"]}}}}}},"/v0/teams/{id}":{"parameters":[{"name":"id","in":"path","description":"ID del equipo","required":true,"schema":{"type":"integer"}}],"get":{"summary":"Show team details","tags":["Teams"],"security":[{"bearerAuth":[]}],"description":"Obtener información detallada sobre un equipo concreto","operationId":"getTeam","responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"default_role":{"type":"string"},"members_count":{"type":"integer"},"users":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"full_name":{"type":"string"},"email":{"type":"string"},"created_at":{"type":"string"},"role":{"type":"string","nullable":true},"status":{"type":"string"},"photo_url":{"type":"string"},"account_primary_user":{"type":"boolean"}}}},"pending_invites":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"full_name":{"type":"string"},"email":{"type":"string"},"created_at":{"type":"string"},"role":{"type":"string","nullable":true},"status":{"type":"string"},"photo_url":{"type":"string"},"account_primary_user":{"type":"boolean"}}}}}},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}},"404":{"description":"No se ha encontrado el equipo","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","nullable":true},"error":{"type":"string"}},"required":["data","error"]}}}}}},"delete":{"summary":"Delete an empty team","tags":["Teams"],"security":[{"bearerAuth":[]}],"description":"Eliminar un equipo que no tiene miembros","operationId":"deleteTeam","responses":{"200":{"description":"El equipo se ha eliminado correctamente","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"message":{"type":"string"}}},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}},"400":{"description":"El equipo cuenta con miembros","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","nullable":true},"error":{"type":"string"}},"required":["data","error"]}}}},"404":{"description":"No se ha encontrado el equipo","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","nullable":true},"error":{"type":"string"}},"required":["data","error"]}}}}}}},"/v0/tooling-access":{"get":{"summary":"Fetch Tooling Access status","tags":["Tooling Access"],"description":"Devuelve si el acceso a las herramientas está habilitado para la cuenta.","operationId":"toolingAccessShow","responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean"},"endpoint_id":{"type":"integer","nullable":true},"endpoint_url":{"type":"string","nullable":true},"enabled_at":{"type":"string","nullable":true}}},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}}}},"patch":{"summary":"Enable or disable Tooling Access","tags":["Tooling Access"],"description":"Activar (configurar/reactivar) o desactivar el acceso a las herramientas para la cuenta.","operationId":"toolingAccessUpdate","parameters":[],"responses":{"200":{"description":"activado","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"enabled":{"type":"boolean"},"endpoint_url":{"type":"string","nullable":true}}},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"]}}}}}},"/v0/tooling-access/token":{"post":{"summary":"Mint a short-lived session JWT","tags":["Tooling Access"],"description":"Genera un JWT ES256 de corta duración para autenticar las llamadas RPC del plano de datos.","operationId":"toolingAccessToken","responses":{"200":{"description":"token acuñado","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"endpoint_url":{"type":"string"},"token":{"type":"string"},"expires_at":{"type":"string"}}},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}}}}},"/v0/usage/rpc":{"get":{"summary":"Retrieves usage total for specified time range","tags":["Usage"],"description":"Si no se especifican ni start_time ni end_time, se utiliza el periodo de facturación actual y se devuelven los créditos restantes de dicho periodo. Si se omite uno de los límites, se respeta el límite especificado: si no se indica start_time, se toma por defecto el inicio del periodo actual, y si no se indica end_time, se toma por defecto la hora actual.","operationId":"usage","parameters":[{"name":"start_time","in":"query","description":"Hora de inicio","required":false,"schema":{"type":"integer"}},{"name":"end_time","in":"query","description":"Hora de finalización","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"credits_used":{"type":"integer"},"credits_remaining":{"type":"integer","nullable":true},"limit":{"type":"integer","nullable":true},"overages":{"type":"integer","nullable":true},"start_time":{"type":"integer","format":"timestamp"},"end_time":{"type":"integer","format":"timestamp"}},"required":["credits_used","start_time","end_time"]},"error":{"type":"string","nullable":true}}}}}},"400":{"description":"intervalo de tiempo no válido"}}}},"/v0/usage/rpc/by-tag":{"get":{"summary":"Retrieves usage data grouped by tag","tags":["Usage"],"description":"Agrega los créditos y las solicitudes por etiqueta de cuenta. Incluye un grupo «sin etiquetar» para los puntos finales que no tienen etiquetas.","operationId":"usageByTag","parameters":[{"name":"start_time","in":"query","description":"Hora de inicio (marca de tiempo Unix)","required":false,"schema":{"type":"integer"}},{"name":"end_time","in":"query","description":"Hora de finalización (marca de tiempo Unix)","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"object","properties":{"tag_id":{"type":"integer","nullable":true,"description":"«null» para el bucket sin etiquetar"},"label":{"type":"string"},"credits_used":{"type":"integer"},"requests":{"type":"integer"}},"required":["tag_id","label","credits_used","requests"]}},"start_time":{"type":"integer","format":"timestamp"},"end_time":{"type":"integer","format":"timestamp"}},"required":["tags","start_time","end_time"]},"error":{"type":"string","nullable":true}}}}}},"400":{"description":"intervalo de tiempo no válido"}}}},"/v0/usage/rpc/by-endpoint":{"get":{"summary":"Retrieves usage data by endpoint","tags":["Usage"],"description":"Recopila datos de uso por terminal","operationId":"usageByEndpoint","parameters":[{"name":"start_time","in":"query","description":"Hora de inicio","required":false,"schema":{"type":"integer"}},{"name":"end_time","in":"query","description":"Hora de finalización","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"endpoints":{"type":"array","items":{"$ref":"#/components/schemas/endpoint_usage"}},"start_time":{"type":"integer","format":"timestamp"},"end_time":{"type":"integer","format":"timestamp"}}},"error":{"type":"string","nullable":true}}}}}},"400":{"description":"intervalo de tiempo no válido"}}}},"/v0/usage/rpc/by-method":{"get":{"summary":"Retrieves usage data grouped by method","tags":["Usage"],"description":"Recupera datos de uso agrupados por método","operationId":"usageByMethod","parameters":[{"name":"start_time","in":"query","description":"Hora de inicio","required":false,"schema":{"type":"integer"}},{"name":"end_time","in":"query","description":"Hora de finalización","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"methods":{"type":"array","items":{"$ref":"#/components/schemas/method_usage"}},"start_time":{"type":"integer","format":"timestamp"},"end_time":{"type":"integer","format":"timestamp"}}},"error":{"type":"string","nullable":true}}}}}},"400":{"description":"intervalo de tiempo no válido"}}}},"/v0/usage/rpc/by-chain":{"get":{"summary":"Retrieves usage data by chain","tags":["Usage"],"description":"Recupera datos de uso por cadena","operationId":"usageByChain","parameters":[{"name":"start_time","in":"query","description":"Hora de inicio","required":false,"schema":{"type":"integer"}},{"name":"end_time","in":"query","description":"Hora de finalización","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"éxito","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"chains":{"type":"array","items":{"$ref":"#/components/schemas/chain_usage"}},"start_time":{"type":"integer","format":"timestamp"},"end_time":{"type":"integer","format":"timestamp"}}},"error":{"type":"string","nullable":true}},"required":["data","error"]}}}},"400":{"description":"intervalo de tiempo no válido"}}}}},"servers":[{"url":"https://api.quicknode.com"}],"tags":[{"name":"Usage"},{"name":"Endpoints"},{"name":"Chains"},{"name":"Endpoint Security"},{"name":"Billing"},{"name":"Endpoint Rate Limits"},{"name":"Endpoint Metrics"}],"components":{"securitySchemes":{"bearer_auth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"},"api_key":{"type":"apiKey","name":"x-api-key","in":"header"}},"schemas":{"chain":{"type":"object","properties":{"slug":{"type":"string"},"networks":{"type":"array","items":{"$ref":"#/components/schemas/network"}},"is_select_chain":{"type":"boolean"}}},"api_credit":{"type":"object","properties":{"method":{"type":"string"},"credits":{"type":"integer"}},"required":["method","credits"]},"network":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"chain_id":{"type":"integer","nullable":true}}},"chain_usage":{"type":"object","properties":{"name":{"type":"string"},"credits_used":{"type":"integer"}}},"endpoint_usage":{"type":"object","properties":{"name":{"type":"string"},"chain":{"type":"string"},"network":{"type":"string"},"status":{"type":"string"},"credits_used":{"type":"integer"},"label":{"type":"string","nullable":true},"methods_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/method_usage"}},"requests":{"type":"integer"}}},"method_usage":{"type":"object","properties":{"method_name":{"type":"string"},"credits_used":{"type":"integer"},"archive":{"type":"boolean","nullable":true},"network":{"type":"string"},"chain":{"type":"string"}}},"endpoint":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","description":"subdominio de punto final"},"label":{"type":"string","nullable":true},"status":{"type":"string","enum":["active","paused"]},"chain":{"type":"string","example":"eth","description":"pieza de cadena"},"network":{"type":"string","example":"mainnet","description":"identificador de red"},"is_dedicated":{"type":"boolean"},"is_flat_rate":{"type":"boolean"},"http_url":{"type":"string"},"wss_url":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"object","properties":{"tag_id":{"type":"integer","nullable":false},"label":{"type":"string","nullable":false}}}},"is_multichain":{"type":"boolean"}},"required":["id","name","status","chain","network","is_dedicated","is_flat_rate","http_url","is_multichain"]},"single_endpoint":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string","nullable":true},"status":{"type":"string"},"chain":{"type":"string","example":"eth","description":"pieza de cadena"},"network":{"type":"string","example":"mainnet","description":"identificador de red"},"http_url":{"type":"string"},"wss_url":{"type":"string","nullable":true},"security":{"$ref":"#/components/schemas/endpoint_security"},"rate_limits":{"$ref":"#/components/schemas/endpoint_rate_limits"},"tags":{"type":"array","items":{"type":"object","properties":{"tag_id":{"type":"integer","nullable":false},"label":{"type":"string","nullable":false}}}},"is_multichain":{"type":"boolean"}},"required":["id","chain","network","http_url","security","is_multichain"]},"endpoint_urls":{"type":"object","properties":{"http_url":{"type":"string"},"wss_url":{"type":"string","nullable":true},"multichain_urls":{"type":"object","nullable":true,"description":"Map of network name → { http_url, wss_url } for multichain endpoints; null otherwise.","additionalProperties":{"type":"object","properties":{"http_url":{"type":"string"},"wss_url":{"type":"string","nullable":true}},"required":["http_url","wss_url"]}}},"required":["http_url","wss_url","multichain_urls"]},"endpoint_rate_limits":{"type":"object","properties":{"rate_limit_by_ip":{"type":"boolean","nullable":true},"account":{"type":"integer","nullable":true},"rps":{"type":"integer","nullable":true},"rpm":{"type":"integer","nullable":true},"rpd":{"type":"integer","nullable":true}}},"endpoint_security":{"type":"object","properties":{"options":{"type":"object","properties":{"tokens":{"type":"boolean","nullable":true},"jwts":{"type":"boolean","nullable":true},"domainMasks":{"type":"boolean","nullable":true},"ips":{"type":"boolean","nullable":true},"referrers":{"type":"boolean","nullable":true},"requestFilters":{"type":"boolean","nullable":true},"ipCustomHeader":{"type":"object","properties":{"value":{"type":"string","nullable":true}}}}},"tokens":{"type":"array","items":{"$ref":"#/components/schemas/endpoint_token"}},"jwts":{"type":"array","items":{"$ref":"#/components/schemas/endpoint_jwt"}},"referrers":{"type":"array","items":{"$ref":"#/components/schemas/endpoint_referrer"}},"domain_masks":{"type":"array","items":{"$ref":"#/components/schemas/endpoint_domain_mask"}},"ips":{"type":"array","items":{"$ref":"#/components/schemas/endpoint_ip"}},"request_filters":{"type":"array","items":{"$ref":"#/components/schemas/endpoint_request_filter"}}}},"endpoint_jwt":{"type":"object","properties":{"id":{"type":"string"},"public_key":{"type":"string"},"kid":{"type":"string"},"name":{"type":"string"}}},"endpoint_token":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string"}}},"endpoint_referrer":{"type":"object","properties":{"id":{"type":"string"},"referrer":{"type":"string"}}},"endpoint_domain_mask":{"type":"object","properties":{"id":{"type":"string"},"domain":{"type":"string"}}},"endpoint_ip":{"type":"object","properties":{"id":{"type":"string"},"ip":{"type":"string"}}},"endpoint_request_filter":{"type":"object","properties":{"id":{"type":"string"},"method":{"type":"array","items":{"type":"string"}},"params":{"type":"object"}}},"invoice":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"billing_reason":{"type":"string"},"lines":{"type":"array","items":{"type":"object","properties":{"description":{"type":"string"},"amount":{"type":"integer"}}}},"amount_due":{"type":"integer"},"amount_paid":{"type":"integer"},"period_start":{"type":"integer"},"period_end":{"type":"integer"},"created":{"type":"integer"},"subtotal":{"type":"integer"}}},"payment":{"type":"object","properties":{"amount":{"type":"string"},"card_last_4":{"type":"string","nullable":true},"created_at":{"type":"string"},"currency":{"type":"string"},"status":{"type":"string"},"marketplace_amount":{"type":"integer","nullable":true}}},"endpoint_metric":{"type":"object","properties":{"data":{"type":"array","items":{"type":"array","items":{"type":"integer"}}},"tag":{"type":"string"}}}}},"security":[{"bearer_auth":[]},{"api_key":[]}],"host":"www.quicknode.com"}