{
  "message": "Welcome to GCS-Free",
  "endpoints": {
    "/": {
      "method": "GET",
      "description": "Returns API documentation in JSON format."
    },
    "/upload": {
      "method": "POST",
      "description": "Uploads a file to a specified bucket and returns a signed URL. Specify bucketName as a query parameter or form field.",
      "requestBody": {
        "type": "multipart/form-data",
        "fields": {
          "files": "The file to upload.",
          "bucketName": "The name of the bucket to upload to (optional)."
        }
      },
      "responses": {
        "200": {
          "description": "File uploaded successfully.",
          "body": {
            "message": "File uploaded successfully",
            "signedUrl": "Temporary signed URL to access the file."
          }
        },
        "400": {
          "description": "No file provided or invalid request."
        },
        "500": {
          "description": "Internal server error."
        }
      }
    },
    "/renew-url": {
      "method": "POST",
      "description": "Generates a new signed URL for an existing file in a specified bucket. Automatically checks the other bucket if the file is not found in the specified bucket.",
      "requestBody": {
        "type": "application/json",
        "fields": {
          "objectName": "The name of the file in the bucket.",
          "bucketName": "The name of the bucket (optional)."
        }
      },
      "responses": {
        "200": {
          "description": "Signed URL renewed successfully.",
          "body": {
            "message": "Signed URL renewed successfully",
            "signedUrl": "New temporary signed URL to access the file."
          }
        },
        "400": {
          "description": "Missing objectName in request body."
        },
        "500": {
          "description": "Internal server error."
        }
      }
    },
    "/bucket-list": {
      "method": "GET",
      "description": "Returns a list of available buckets.",
      "responses": {
        "200": {
          "description": "List of available buckets.",
          "body": {
            "buckets": "Array of bucket names."
          }
        }
      }
    },
    "/storage": {
      "method": "GET",
      "description": "Returns the total used storage and free storage in a specified bucket. Specify bucketName as a query parameter.",
      "responses": {
        "200": {
          "description": "Storage information retrieved successfully.",
          "body": {
            "totalUsedStorageBytes": "Total storage used in bytes.",
            "totalQuotaBytes": "Total storage quota in bytes.",
            "freeStorageBytes": "Free storage remaining in bytes."
          }
        },
        "500": {
          "description": "Internal server error."
        }
      },
      "Remove & DMCA": {
        "email": "yukifag@proton.me",
        "subject": "Remove or DMCA [FILE]",
        "body": "The File Name"
      }
    }
  }
}