package com.amazon.ads.apidemo;

/**
 * HTTP Status Code constants
 * <p>
 * This class defines standard HTTP status codes
 *
 * @see <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status">HTTP Status Codes</a>
 */
public interface HttpStatusCode {

    // ========== 2xx Success ==========

    /**
     * 200 OK - Request successful
     * The request has succeeded.
     */
    int OK_200 = 200;

    // ========== 4xx Client Errors ==========

    /**
     * 400 Bad Request - Invalid parameters or request format
     * The server cannot process the request due to invalid syntax or parameters.
     */
    int BAD_REQUEST_400 = 400;

    /**
     * 401 Unauthorized - Package not authorized (signature validation failed)
     * Authentication is required and has failed or has not been provided.
     */
    int UNAUTHORIZED_401 = 401;

    /**
     * 403 Forbidden - Access denied (allowlist validation failed)
     * The client does not have access rights to the content.
     */
    int FORBIDDEN_403 = 403;

    /**
     * 429 Too Many Requests - Rate limit exceeded
     * The user has sent too many requests in a given amount of time.
     */
    int TOO_MANY_REQUESTS_429 = 429;

    // ========== 5xx Server Errors ==========

    /**
     * 500 Internal Server Error - Unexpected server error
     * The server has encountered a situation it doesn't know how to handle.
     */
    int INTERNAL_SERVER_ERROR_500 = 500;

    /**
     * 501 Not Implemented - Feature not implemented or supported
     * The request method or feature is not supported by the server.
     */
    int NOT_IMPLEMENTED_501 = 501;

    /**
     * 503 Service Unavailable - Required service or hardware unavailable
     * The server is not ready to handle the request, typically due to
     * maintenance or unavailable resources.
     */
    int SERVICE_UNAVAILABLE_503 = 503;

    /**
     * 507 Insufficient Storage - Not enough memory or storage space
     * The server is unable to store the representation needed to complete the request.
     * Used for out of memory errors in screenshot operations.
     */
    int INSUFFICIENT_STORAGE_507 = 507;

    // ========== Status Message Constants ==========

    /**
     * Standard success message for 200 OK responses
     */
    String MSG_OK = "OK";

    /**
     * Standard message for 401 Unauthorized responses
     */
    String MSG_UNAUTHORIZED = "Unauthorized";
}
