{
  "components": {
    "headers": {
      "X-Request-Id": {
        "description": "Correlates this HTTP attempt with server logs. Generated by the server; any client-supplied value is ignored.",
        "schema": {
          "format": "uuid",
          "type": "string"
        }
      }
    },
    "parameters": {
      "CollectionLimit": {
        "description": "Maximum number of items per page. Default 50, maximum 100.",
        "in": "query",
        "name": "limit",
        "required": false,
        "schema": {
          "default": 50,
          "maximum": 100,
          "minimum": 1,
          "type": "integer"
        }
      },
      "CursorAfter": {
        "description": "Opaque, signed cursor previously returned as meta.pageInfo.nextCursor. Clients store and return it; they never interpret its contents.",
        "in": "query",
        "name": "after",
        "required": false,
        "schema": {
          "maxLength": 2048,
          "minLength": 1,
          "type": "string"
        }
      }
    },
    "schemas": {
      "Envelope": {
        "description": "The single success envelope every non-exempt route returns. \"data\" carries the operation result; \"meta\" carries optional transversal information such as pagination.",
        "properties": {
          "data": {
            "description": "The operation result. Its shape is declared per route."
          },
          "meta": {
            "additionalProperties": true,
            "description": "Transversal information about the response.",
            "properties": {
              "pageInfo": {
                "$ref": "#/components/schemas/PageInfo"
              }
            },
            "type": "object"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "PageInfo": {
        "additionalProperties": false,
        "properties": {
          "hasNextPage": {
            "type": "boolean"
          },
          "nextCursor": {
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "hasNextPage",
          "nextCursor"
        ],
        "type": "object"
      },
      "ProblemDetails": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          },
          "errors": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "code": {
                  "type": "string"
                },
                "field": {
                  "type": "string"
                },
                "location": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                }
              },
              "required": [
                "location",
                "field",
                "code",
                "message"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "retryable": {
            "type": "boolean"
          },
          "status": {
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "traceId": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "title",
          "status",
          "detail",
          "code",
          "retryable"
        ],
        "type": "object"
      },
      "ProblemFieldError": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string"
          },
          "field": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "location",
          "field",
          "code",
          "message"
        ],
        "type": "object"
      }
    }
  },
  "info": {
    "contact": {},
    "description": "Contract for the routes Ninaku actually implements today. Generated from the running Nest application and its Zod validation schemas; it is never hand-written. A route or property absent here does not exist in the real API.",
    "title": "Ninaku API",
    "version": "1.0.0"
  },
  "openapi": "3.0.0",
  "paths": {
    "/health/live": {
      "get": {
        "description": "Reports whether the process itself is running, without checking the database. Documented exception to the { data } envelope and to Problem Details (section 3): this route keeps the raw health-check contract and is filtered through ProtocolExceptionFilter instead of the global error filter.",
        "operationId": "HealthController_live",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "details": {
                      "additionalProperties": {
                        "additionalProperties": true,
                        "properties": {
                          "responseTime": {
                            "description": "Time the health indicator took to respond, in ms",
                            "type": "number"
                          },
                          "status": {
                            "enum": [
                              "up",
                              "degraded",
                              "down"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "status"
                        ],
                        "type": "object"
                      },
                      "example": {
                        "database": {
                          "responseTime": 12,
                          "status": "up"
                        }
                      },
                      "type": "object"
                    },
                    "error": {
                      "additionalProperties": {
                        "additionalProperties": true,
                        "properties": {
                          "responseTime": {
                            "description": "Time the health indicator took to respond, in ms",
                            "type": "number"
                          },
                          "status": {
                            "enum": [
                              "up",
                              "degraded",
                              "down"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "status"
                        ],
                        "type": "object"
                      },
                      "example": {},
                      "nullable": true,
                      "type": "object"
                    },
                    "info": {
                      "additionalProperties": {
                        "additionalProperties": true,
                        "properties": {
                          "responseTime": {
                            "description": "Time the health indicator took to respond, in ms",
                            "type": "number"
                          },
                          "status": {
                            "enum": [
                              "up",
                              "degraded",
                              "down"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "status"
                        ],
                        "type": "object"
                      },
                      "example": {
                        "database": {
                          "responseTime": 12,
                          "status": "up"
                        }
                      },
                      "nullable": true,
                      "type": "object"
                    },
                    "status": {
                      "enum": [
                        "ok",
                        "degraded"
                      ],
                      "example": "ok",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "The Health Check is successful",
            "headers": {
              "X-Request-Id": {
                "description": "Correlates this HTTP attempt with server logs. Generated by the server; any client-supplied value is ignored.",
                "schema": {
                  "format": "uuid",
                  "type": "string"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "details": {
                      "additionalProperties": {
                        "additionalProperties": true,
                        "properties": {
                          "responseTime": {
                            "description": "Time the health indicator took to respond, in ms",
                            "type": "number"
                          },
                          "status": {
                            "enum": [
                              "up",
                              "degraded",
                              "down"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "status"
                        ],
                        "type": "object"
                      },
                      "example": {
                        "database": {
                          "responseTime": 12,
                          "status": "up"
                        },
                        "redis": {
                          "message": "Could not connect",
                          "responseTime": 3005,
                          "status": "down"
                        }
                      },
                      "type": "object"
                    },
                    "error": {
                      "additionalProperties": {
                        "additionalProperties": true,
                        "properties": {
                          "responseTime": {
                            "description": "Time the health indicator took to respond, in ms",
                            "type": "number"
                          },
                          "status": {
                            "enum": [
                              "up",
                              "degraded",
                              "down"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "status"
                        ],
                        "type": "object"
                      },
                      "example": {
                        "redis": {
                          "message": "Could not connect",
                          "responseTime": 3005,
                          "status": "down"
                        }
                      },
                      "nullable": true,
                      "type": "object"
                    },
                    "info": {
                      "additionalProperties": {
                        "additionalProperties": true,
                        "properties": {
                          "responseTime": {
                            "description": "Time the health indicator took to respond, in ms",
                            "type": "number"
                          },
                          "status": {
                            "enum": [
                              "up",
                              "degraded",
                              "down"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "status"
                        ],
                        "type": "object"
                      },
                      "example": {
                        "database": {
                          "responseTime": 12,
                          "status": "up"
                        }
                      },
                      "nullable": true,
                      "type": "object"
                    },
                    "status": {
                      "enum": [
                        "error",
                        "shutting_down"
                      ],
                      "example": "error",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "The Health Check is not successful",
            "headers": {
              "X-Request-Id": {
                "description": "Correlates this HTTP attempt with server logs. Generated by the server; any client-supplied value is ignored.",
                "schema": {
                  "format": "uuid",
                  "type": "string"
                }
              }
            }
          }
        },
        "summary": "Liveness probe",
        "tags": [
          "health"
        ]
      }
    },
    "/health/ready": {
      "get": {
        "description": "Reports whether the process can serve traffic, including a database reachability check. Documented exception to the { data } envelope and to Problem Details (section 3): this route keeps the raw health-check contract and is filtered through ProtocolExceptionFilter instead of the global error filter.",
        "operationId": "HealthController_ready",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "details": {
                      "additionalProperties": {
                        "additionalProperties": true,
                        "properties": {
                          "responseTime": {
                            "description": "Time the health indicator took to respond, in ms",
                            "type": "number"
                          },
                          "status": {
                            "enum": [
                              "up",
                              "degraded",
                              "down"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "status"
                        ],
                        "type": "object"
                      },
                      "example": {
                        "database": {
                          "responseTime": 12,
                          "status": "up"
                        }
                      },
                      "type": "object"
                    },
                    "error": {
                      "additionalProperties": {
                        "additionalProperties": true,
                        "properties": {
                          "responseTime": {
                            "description": "Time the health indicator took to respond, in ms",
                            "type": "number"
                          },
                          "status": {
                            "enum": [
                              "up",
                              "degraded",
                              "down"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "status"
                        ],
                        "type": "object"
                      },
                      "example": {},
                      "nullable": true,
                      "type": "object"
                    },
                    "info": {
                      "additionalProperties": {
                        "additionalProperties": true,
                        "properties": {
                          "responseTime": {
                            "description": "Time the health indicator took to respond, in ms",
                            "type": "number"
                          },
                          "status": {
                            "enum": [
                              "up",
                              "degraded",
                              "down"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "status"
                        ],
                        "type": "object"
                      },
                      "example": {
                        "database": {
                          "responseTime": 12,
                          "status": "up"
                        }
                      },
                      "nullable": true,
                      "type": "object"
                    },
                    "status": {
                      "enum": [
                        "ok",
                        "degraded"
                      ],
                      "example": "ok",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "The Health Check is successful",
            "headers": {
              "X-Request-Id": {
                "description": "Correlates this HTTP attempt with server logs. Generated by the server; any client-supplied value is ignored.",
                "schema": {
                  "format": "uuid",
                  "type": "string"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "details": {
                      "additionalProperties": {
                        "additionalProperties": true,
                        "properties": {
                          "responseTime": {
                            "description": "Time the health indicator took to respond, in ms",
                            "type": "number"
                          },
                          "status": {
                            "enum": [
                              "up",
                              "degraded",
                              "down"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "status"
                        ],
                        "type": "object"
                      },
                      "example": {
                        "database": {
                          "responseTime": 12,
                          "status": "up"
                        },
                        "redis": {
                          "message": "Could not connect",
                          "responseTime": 3005,
                          "status": "down"
                        }
                      },
                      "type": "object"
                    },
                    "error": {
                      "additionalProperties": {
                        "additionalProperties": true,
                        "properties": {
                          "responseTime": {
                            "description": "Time the health indicator took to respond, in ms",
                            "type": "number"
                          },
                          "status": {
                            "enum": [
                              "up",
                              "degraded",
                              "down"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "status"
                        ],
                        "type": "object"
                      },
                      "example": {
                        "redis": {
                          "message": "Could not connect",
                          "responseTime": 3005,
                          "status": "down"
                        }
                      },
                      "nullable": true,
                      "type": "object"
                    },
                    "info": {
                      "additionalProperties": {
                        "additionalProperties": true,
                        "properties": {
                          "responseTime": {
                            "description": "Time the health indicator took to respond, in ms",
                            "type": "number"
                          },
                          "status": {
                            "enum": [
                              "up",
                              "degraded",
                              "down"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "status"
                        ],
                        "type": "object"
                      },
                      "example": {
                        "database": {
                          "responseTime": 12,
                          "status": "up"
                        }
                      },
                      "nullable": true,
                      "type": "object"
                    },
                    "status": {
                      "enum": [
                        "error",
                        "shutting_down"
                      ],
                      "example": "error",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "The Health Check is not successful",
            "headers": {
              "X-Request-Id": {
                "description": "Correlates this HTTP attempt with server logs. Generated by the server; any client-supplied value is ignored.",
                "schema": {
                  "format": "uuid",
                  "type": "string"
                }
              }
            }
          }
        },
        "summary": "Readiness probe",
        "tags": [
          "health"
        ]
      }
    }
  },
  "servers": [],
  "tags": []
}
