{
  "openapi": "3.1.1",
  "info": {
    "title": "VNLIKE Customer API",
    "version": "2.0.0",
    "description": "API V2 chính thức dành cho khách hàng và reseller VNLIKE.VN. Hỗ trợ đồng bộ sản phẩm, gói, giá, tồn kho, số dư ví, tạo đơn và theo dõi kết quả xử lý."
  },
  "servers": [
    {
      "url": "https://vnlike.vn/api/v2",
      "description": "VNLIKE Production API"
    }
  ],
  "tags": [
    {
      "name": "System"
    },
    {
      "name": "Account"
    },
    {
      "name": "Catalog"
    },
    {
      "name": "Orders"
    }
  ],
  "security": [
    {
      "BearerAuth": []
    },
    {
      "ApiKeyAuth": []
    }
  ],
  "paths": {
    "/": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Thông tin API",
        "operationId": "getApiInfo",
        "security": [],
        "responses": {
          "200": {
            "description": "API information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiInfoResponse"
                }
              }
            }
          }
        }
      }
    },

    "/health": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Kiểm tra API Online",
        "operationId": "healthCheck",
        "security": [],
        "responses": {
          "200": {
            "description": "API đang hoạt động",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthResponse"
                }
              }
            }
          }
        }
      }
    },

    "/capabilities": {
      "get": {
        "tags": [
          "System"
        ],
        "summary": "Các tính năng API hiện hỗ trợ",
        "operationId": "getCapabilities",
        "security": [],
        "responses": {
          "200": {
            "description": "Capabilities",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CapabilitiesResponse"
                }
              }
            }
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        }
      }
    },

    "/account": {
      "get": {
        "tags": [
          "Account"
        ],
        "summary": "Thông tin tài khoản và số dư ví",
        "operationId": "getAccount",
        "responses": {
          "200": {
            "description": "Account information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },

    "/categories": {
      "get": {
        "tags": [
          "Catalog"
        ],
        "summary": "Danh sách danh mục sản phẩm",
        "operationId": "listCategories",
        "responses": {
          "200": {
            "description": "Categories",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CategoriesResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },

    "/products": {
      "get": {
        "tags": [
          "Catalog"
        ],
        "summary": "Danh sách sản phẩm đang bán",
        "operationId": "listProducts",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Product list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductsResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },

    "/products/{product_id}": {
      "get": {
        "tags": [
          "Catalog"
        ],
        "summary": "Chi tiết một sản phẩm",
        "operationId": "getProduct",
        "parameters": [
          {
            "name": "product_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Product detail",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    },

    "/orders": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Danh sách đơn hàng API",
        "operationId": "listOrders",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          },
          {
            "name": "idempotency_key",
            "in": "query",
            "description": "Tra cứu đơn bằng Idempotency-Key",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Orders",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/OrdersResponse"
                    },
                    {
                      "$ref": "#/components/schemas/OrderResponse"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      },

      "post": {
        "tags": [
          "Orders"
        ],
        "summary": "Tạo đơn hàng",
        "operationId": "createOrder",
        "description": "Mỗi đơn nên sử dụng một Idempotency-Key duy nhất. Nếu request bị timeout hoặc mất mạng, gửi lại cùng key và cùng payload để tránh tạo đơn trùng.",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100,
              "pattern": "^[A-Za-z0-9_.:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOrderRequest"
              },
              "examples": {
                "auto": {
                  "summary": "Đơn thông thường",
                  "value": {
                    "product_id": 96,
                    "package_id": 10,
                    "quantity": 1,
                    "customer_fields": {}
                  }
                },
                "upgrade": {
                  "summary": "Đơn cần thông tin khách",
                  "value": {
                    "product_id": 104,
                    "package_id": 21,
                    "quantity": 1,
                    "customer_fields": {
                      "field_250674b57696": "customer@example.com",
                      "field_2d3bfb1ea7e7": "PASSWORD"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Đơn đã tồn tại, replay thành công",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateOrderResponse"
                }
              }
            }
          },
          "201": {
            "description": "Tạo đơn mới thành công",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateOrderResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/BodyTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "422": {
            "$ref": "#/components/responses/ValidationError"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },

    "/orders/{order_id}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Theo dõi chi tiết một đơn",
        "operationId": "getOrder",
        "parameters": [
          {
            "name": "order_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Order detail",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    }
  },

  "components": {
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Authorization: Bearer YOUR_API_KEY"
      },
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key"
      }
    },

    "schemas": {
      "Money": {
        "type": "string",
        "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
        "examples": [
          "0.1",
          "10000",
          "12500.7"
        ],
        "description": "Giá trị tiền VND dưới dạng chuỗi decimal để tránh sai số floating point."
      },

      "Problem": {
        "type": "object",
        "required": [
          "type",
          "title",
          "status",
          "detail",
          "code",
          "request_id"
        ],
        "properties": {
          "type": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer"
          },
          "detail": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "instance": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },

      "ApiInfoResponse": {
        "type": "object",
        "required": [
          "ok",
          "data",
          "request_id"
        ],
        "properties": {
          "ok": {
            "const": true
          },
          "data": {
            "type": "object",
            "properties": {
              "service": {
                "type": "string"
              },
              "version": {
                "type": "string"
              },
              "docs": {
                "type": "string"
              },
              "openapi": {
                "type": "string"
              }
            }
          },
          "request_id": {
            "type": "string"
          }
        }
      },

      "HealthResponse": {
        "type": "object",
        "required": [
          "ok",
          "data",
          "request_id"
        ],
        "properties": {
          "ok": {
            "const": true
          },
          "data": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "const": "ok"
              },
              "version": {
                "type": "string"
              },
              "time": {
                "type": "string",
                "format": "date-time"
              }
            }
          },
          "request_id": {
            "type": "string"
          }
        }
      },

      "CapabilitiesResponse": {
        "type": "object",
        "properties": {
          "ok": {
            "const": true
          },
          "data": {
            "type": "object",
            "properties": {
              "api_version": {
                "type": "string"
              },
              "currency": {
                "const": "VND"
              },
              "money_decimal_places": {
                "type": "integer"
              },
              "supported_fulfillment_types": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "auto",
                    "manual",
                    "upgrade",
                    "sms"
                  ]
                }
              },
              "features": {
                "type": "object",
                "additionalProperties": {
                  "type": "boolean"
                }
              },
              "rate_limit": {
                "type": "object",
                "properties": {
                  "requests": {
                    "type": "integer"
                  },
                  "window_seconds": {
                    "type": "integer"
                  }
                }
              },
              "server_time": {
                "type": "string",
                "format": "date-time"
              }
            }
          },
          "request_id": {
            "type": "string"
          }
        }
      },

      "AccountResponse": {
        "type": "object",
        "properties": {
          "ok": {
            "const": true
          },
          "data": {
            "type": "object",
            "properties": {
              "user_id": {
                "type": "integer"
              },
              "username": {
                "type": "string"
              },
              "balance": {
                "$ref": "#/components/schemas/Money"
              },
              "currency": {
                "const": "VND"
              }
            }
          },
          "request_id": {
            "type": "string"
          }
        }
      },

      "Category": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "sort_order": {
            "type": "integer"
          }
        }
      },

      "CategoriesResponse": {
        "type": "object",
        "properties": {
          "ok": {
            "const": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Category"
            }
          },
          "request_id": {
            "type": "string"
          }
        }
      },

      "CustomerField": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "text",
              "password",
              "textarea"
            ]
          },
          "required": {
            "type": "boolean"
          }
        }
      },

      "Package": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "product_id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "$ref": "#/components/schemas/Money"
          },
          "currency": {
            "const": "VND"
          },
          "min_qty": {
            "type": "integer"
          },
          "max_qty": {
            "type": "integer"
          },
          "fulfillment_type": {
            "type": "string"
          },
          "stock": {
            "type": [
              "integer",
              "null"
            ]
          },
          "available": {
            "type": "boolean"
          },
          "purchase_supported": {
            "type": "boolean"
          },
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerField"
            }
          },
          "sort_order": {
            "type": "integer"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        }
      },

      "Product": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "image_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "object",
              "null"
            ]
          },
          "fulfillment_type": {
            "type": "string"
          },
          "base_price": {
            "$ref": "#/components/schemas/Money"
          },
          "currency": {
            "const": "VND"
          },
          "requires_package": {
            "type": "boolean"
          },
          "stock": {
            "type": [
              "integer",
              "null"
            ]
          },
          "min_qty": {
            "type": "integer"
          },
          "max_qty": {
            "type": "integer"
          },
          "available": {
            "type": "boolean"
          },
          "purchase_supported": {
            "type": "boolean"
          },
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerField"
            }
          },
          "packages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Package"
            }
          },
          "sort_order": {
            "type": "integer"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        }
      },

      "Pagination": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer"
          },
          "limit": {
            "type": "integer"
          },
          "total": {
            "type": "integer"
          }
        }
      },

      "ProductsResponse": {
        "type": "object",
        "properties": {
          "ok": {
            "const": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Product"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/Pagination"
          },
          "request_id": {
            "type": "string"
          }
        }
      },

      "ProductResponse": {
        "type": "object",
        "properties": {
          "ok": {
            "const": true
          },
          "data": {
            "$ref": "#/components/schemas/Product"
          },
          "request_id": {
            "type": "string"
          }
        }
      },

      "CreateOrderRequest": {
        "type": "object",
        "required": [
          "product_id",
          "quantity"
        ],
        "properties": {
          "product_id": {
            "type": "integer",
            "minimum": 1
          },
          "package_id": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1
          },
          "quantity": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10000,
            "default": 1
          },
          "customer_fields": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "request_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          }
        }
      },

      "SmsData": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "waiting_number",
              "waiting_otp",
              "completed",
              "expired",
              "cancelled"
            ]
          },
          "number": {
            "type": [
              "string",
              "null"
            ]
          },
          "otp": {
            "type": [
              "string",
              "null"
            ]
          },
          "number_assigned_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "expires_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "otp_received_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "remaining_seconds": {
            "type": [
              "integer",
              "null"
            ]
          }
        }
      },

      "Fulfillment": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "auto",
              "manual",
              "upgrade",
              "sms"
            ]
          },
          "keys": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "delivery_content": {
            "type": "string"
          },
          "sms": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/SmsData"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },

      "Order": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "order_code": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          },
          "product_id": {
            "type": "integer"
          },
          "product_name": {
            "type": "string"
          },
          "package_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "package_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "quantity": {
            "type": "integer"
          },
          "unit_price": {
            "$ref": "#/components/schemas/Money"
          },
          "total_amount": {
            "$ref": "#/components/schemas/Money"
          },
          "currency": {
            "const": "VND"
          },
          "status": {
            "type": "string",
            "enum": [
              "waiting",
              "processing",
              "completed",
              "cancelled",
              "refunded"
            ]
          },
          "payment_status": {
            "type": "string"
          },
          "work_status": {
            "type": "string"
          },
          "fulfillment_type": {
            "type": "string"
          },
          "fulfillment": {
            "$ref": "#/components/schemas/Fulfillment"
          },
          "cancel_reason": {
            "type": [
              "string",
              "null"
            ]
          },
          "refund_amount": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Money"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "paid_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "completed_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        }
      },

      "OrderResponse": {
        "type": "object",
        "properties": {
          "ok": {
            "const": true
          },
          "data": {
            "$ref": "#/components/schemas/Order"
          },
          "request_id": {
            "type": "string"
          }
        }
      },

      "OrderSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "order_code": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          },
          "product_id": {
            "type": "integer"
          },
          "product_name": {
            "type": "string"
          },
          "package_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "package_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "quantity": {
            "type": "integer"
          },
          "total_amount": {
            "$ref": "#/components/schemas/Money"
          },
          "currency": {
            "const": "VND"
          },
          "status": {
            "type": "string"
          },
          "payment_status": {
            "type": "string"
          },
          "work_status": {
            "type": "string"
          },
          "fulfillment_type": {
            "type": "string"
          },
          "created_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        }
      },

      "OrdersResponse": {
        "type": "object",
        "properties": {
          "ok": {
            "const": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderSummary"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/Pagination"
          },
          "request_id": {
            "type": "string"
          }
        }
      },

      "CreateOrderResponse": {
        "type": "object",
        "properties": {
          "ok": {
            "const": true
          },
          "data": {
            "type": "object",
            "properties": {
              "order": {
                "$ref": "#/components/schemas/Order"
              },
              "balance": {
                "$ref": "#/components/schemas/Money"
              },
              "replayed": {
                "type": "boolean"
              }
            }
          },
          "request_id": {
            "type": "string"
          }
        }
      }
    },

    "responses": {
      "BadRequest": {
        "description": "Request không hợp lệ",
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            }
          }
        }
      },

      "Unauthorized": {
        "description": "API key không hợp lệ hoặc đã thu hồi",
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            }
          }
        }
      },

      "Forbidden": {
        "description": "Tài khoản không có quyền sử dụng API",
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            }
          }
        }
      },

      "NotFound": {
        "description": "Không tìm thấy dữ liệu",
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            }
          }
        }
      },

      "Conflict": {
        "description": "Xung đột số dư, tồn kho, Idempotency-Key hoặc trạng thái",
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            }
          }
        }
      },

      "BodyTooLarge": {
        "description": "Body lớn hơn 64 KiB",
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            }
          }
        }
      },

      "UnsupportedMediaType": {
        "description": "POST yêu cầu Content-Type application/json",
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            }
          }
        }
      },

      "ValidationError": {
        "description": "Dữ liệu không hợp lệ",
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            }
          }
        }
      },

      "RateLimited": {
        "description": "Vượt giới hạn request",
        "headers": {
          "Retry-After": {
            "description": "Số giây cần đợi",
            "schema": {
              "type": "integer"
            }
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            }
          }
        }
      },

      "InternalError": {
        "description": "Lỗi máy chủ",
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            }
          }
        }
      },

      "ServiceUnavailable": {
        "description": "Dịch vụ tạm thời chưa sẵn sàng",
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/Problem"
            }
          }
        }
      }
    }
  }
}