====== ApiResponse ====== **Layer:** ''Core'' · **Source:** ''lib/core/ApiResponse.php:24'' (lines 24–620) ---- class ApiResponse ======= Inheritance ======= //No parent, interface or trait. This is a root type.// ======= Constants (18) ======= ^ Visibility ^ Name ^ Value ^ Line ^ | ''-'' | ''HTTP_OK'' | ''200;'' | 29 | | ''-'' | ''HTTP_CREATED'' | ''201;'' | 30 | | ''-'' | ''HTTP_NO_CONTENT'' | ''204;'' | 31 | | ''-'' | ''HTTP_BAD_REQUEST'' | ''400;'' | 32 | | ''-'' | ''HTTP_UNAUTHORIZED'' | ''401;'' | 33 | | ''-'' | ''HTTP_FORBIDDEN'' | ''403;'' | 34 | | ''-'' | ''HTTP_NOT_FOUND'' | ''404;'' | 35 | | ''-'' | ''HTTP_METHOD_NOT_ALLOWED'' | ''405;'' | 36 | | ''-'' | ''HTTP_NOT_ACCEPTABLE'' | ''406;'' | 37 | | ''-'' | ''HTTP_UNSUPPORTED_MEDIA_TYPE'' | ''415;'' | 38 | | ''-'' | ''HTTP_CONFLICT'' | ''409;'' | 39 | | ''-'' | ''HTTP_UNPROCESSABLE_ENTITY'' | ''422;'' | 40 | | ''-'' | ''HTTP_TOO_MANY_REQUESTS'' | ''429;'' | 41 | | ''-'' | ''HTTP_INTERNAL_SERVER_ERROR'' | ''500;'' | 42 | | ''-'' | ''HTTP_SERVICE_UNAVAILABLE'' | ''503;'' | 43 | | ''-'' | ''RATE_LIMIT'' | ''60;'' | 48 | | ''-'' | ''RATE_WINDOW'' | ''60;'' | 49 | | ''-'' | ''CACHE_TTL'' | ''300;'' | 54 | ======= Properties (4) ======= ^ Visibility ^ Type ^ Name ^ Default ^ Line ^ | ''private static'' | ''static'' | ''$rateLimitRemaining'' | | 59 | | ''private static'' | ''static'' | ''$rateLimitReset'' | | 60 | | ''private static'' | ''static'' | ''$rateLimitLimit'' | | 61 | | ''private static'' | ''static'' | ''$pendingHeaders'' | ''[]'' | 66 | ======= Methods (29) ======= ^ Visibility ^ Method ^ Summary ^ Line ^ | public static | ''initRateLimit()'' | Initialize rate limiting (fallback when RateLimiter class not loaded) | 74 | | public static | ''setRateLimitHeaders()'' | Set rate limit headers from RateLimiter result or fallback | 86 | | public static | ''withHeader()'' | Queue a header to be sent with the response | 109 | | public static | ''withEtag()'' | Set ETag header for cache validation | 121 | | public static | ''withLastModified()'' | Set Last-Modified header for cache validation | 136 | | public static | ''withLocation()'' | Set Location header for redirect or created resource | 150 | | public static | ''checkEtagMatch()'' | Check If-None-Match header against provided ETag | 162 | | public static | ''checkModifiedSince()'' | Check If-Modified-Since header against provided timestamp | 193 | | public static | ''notModified()'' | Send a 304 Not Modified response | 215 | | private static | ''setCacheHeaders()'' | Set cache headers based on HTTP method | 231 | | public static | ''success()'' | Send a successful JSON response | 264 | | public static | ''created()'' | Send a created response (201) | 289 | | public static | ''noContent()'' | Send a no content response (204) | 314 | | public static | ''error()'' | Send an error response | 328 | | public static | ''badRequest()'' | Send a 400 Bad Request error | 353 | | public static | ''unauthorized()'' | Send a 401 Unauthorized error | 364 | | public static | ''forbidden()'' | Send a 403 Forbidden error | 375 | | public static | ''notAcceptable()'' | Send a 406 Not Acceptable error | 387 | | public static | ''unsupportedMediaType()'' | Send a 415 Unsupported Media Type error | 399 | | public static | ''conflict()'' | Send a 409 Conflict error | 410 | | public static | ''notFound()'' | Send a 404 Not Found error | 421 | | public static | ''unprocessableEntity()'' | Send a 422 Unprocessable Entity error | 433 | | public static | ''tooManyRequests()'' | Send a 429 Too Many Requests error | 445 | | public static | ''methodNotAllowed()'' | Send a method not allowed error | 458 | | public static | ''paginated()'' | Send a paginated response with HATEOAS links | 475 | | public static | ''validateAccept()'' | Validate Accept header against supported types | 507 | | private static | ''send()'' | Send raw JSON response | 544 | | private static | ''getErrorCode()'' | Get error code from status code | 586 | | public static | ''setCorsHeaders()'' | Set CORS headers for cross-origin requests | 612 | ======== initRateLimit() ======== public static function initRateLimit($limit = self::RATE_LIMIT, $window = self::RATE_WINDOW) //lines 74–79 (6)// Initialize rate limiting (fallback when RateLimiter class not loaded) ^ Parameter ^ Type ^ Default ^ Description ^ | ''$limit'' | ''(untyped)'' | ''self::RATE_LIMIT'' | //none// | | ''$window'' | ''(untyped)'' | ''self::RATE_WINDOW'' | //none// | **Returns:** ''(none declared)'' ======== setRateLimitHeaders() ======== public static function setRateLimitHeaders($rateResult = null) //lines 86–101 (16)// Set rate limit headers from RateLimiter result or fallback ^ Parameter ^ Type ^ Default ^ Description ^ | ''$rateResult'' | ''(untyped)'' | ''null'' | RateLimiter check result | **Returns:** ''(none declared)'' ======== withHeader() ======== public static function withHeader($header) //lines 109–112 (4)// Queue a header to be sent with the response ^ Parameter ^ Type ^ Default ^ Description ^ | ''$header'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' — void ======== withEtag() ======== public static function withEtag($etag, $weak = false) //lines 121–128 (8)// Set ETag header for cache validation ^ Parameter ^ Type ^ Default ^ Description ^ | ''$etag'' | ''(untyped)'' | //required// | ETag value (will be quoted automatically) | | ''$weak'' | ''(untyped)'' | ''false'' | Whether this is a weak validator | **Returns:** ''(none declared)'' — void ======== withLastModified() ======== public static function withLastModified($timestamp) //lines 136–142 (7)// Set Last-Modified header for cache validation ^ Parameter ^ Type ^ Default ^ Description ^ | ''$timestamp'' | ''(untyped)'' | //required// | Unix timestamp or HTTP date string | **Returns:** ''(none declared)'' — void ======== withLocation() ======== public static function withLocation($url) //lines 150–153 (4)// Set Location header for redirect or created resource ^ Parameter ^ Type ^ Default ^ Description ^ | ''$url'' | ''(untyped)'' | //required// | //none// | **Returns:** ''(none declared)'' — void ======== checkEtagMatch() ======== public static function checkEtagMatch($etag) //lines 162–184 (23)// Check If-None-Match header against provided ETag Returns true if client should use cached version (send 304) ^ Parameter ^ Type ^ Default ^ Description ^ | ''$etag'' | ''(untyped)'' | //required// | Current ETag for the resource | **Returns:** ''(none declared)'' — bool True if 304 should be sent ======== checkModifiedSince() ======== public static function checkModifiedSince($timestamp) //lines 193–208 (16)// Check If-Modified-Since header against provided timestamp Returns true if client should use cached version (send 304) ^ Parameter ^ Type ^ Default ^ Description ^ | ''$timestamp'' | ''(untyped)'' | //required// | Unix timestamp or HTTP date string | **Returns:** ''(none declared)'' — bool True if 304 should be sent ======== notModified() ======== public static function notModified() //lines 215–222 (8)// Send a 304 Not Modified response //Takes no parameters.// **Returns:** ''(none declared)'' — void ======== setCacheHeaders() ======== private static function setCacheHeaders($statusCode, $ttl = self::CACHE_TTL) //lines 231–252 (22)// Set cache headers based on HTTP method ^ Parameter ^ Type ^ Default ^ Description ^ | ''$statusCode'' | ''(untyped)'' | //required// | //none// | | ''$ttl'' | ''(untyped)'' | ''self::CACHE_TTL'' | Cache TTL in seconds (default 300) | **Returns:** ''(none declared)'' — void ======== success() ======== public static function success($data = null, $statusCode = self::HTTP_OK, $message = null, $links = [], $ttl = self::CACHE_TTL) //lines 264–278 (15)// Send a successful JSON response ^ Parameter ^ Type ^ Default ^ Description ^ | ''$data'' | ''(untyped)'' | ''null'' | The data to be encoded as JSON | | ''$statusCode'' | ''(untyped)'' | ''self::HTTP_OK'' | HTTP status code (default: 200) | | ''$message'' | ''(untyped)'' | ''null'' | Optional success message | | ''$links'' | ''(untyped)'' | ''[]'' | Optional HATEOAS links | | ''$ttl'' | ''(untyped)'' | ''self::CACHE_TTL'' | Cache TTL in seconds | **Returns:** ''(none declared)'' — void ======== created() ======== public static function created($data, $message = 'Resource created successfully', $links = [], $locationUrl = null) //lines 289–307 (19)// Send a created response (201) ^ Parameter ^ Type ^ Default ^ Description ^ | ''$data'' | ''(untyped)'' | //required// | The created resource data | | ''$message'' | ''(untyped)'' | '''Resource created successfully''' | Optional success message | | ''$links'' | ''(untyped)'' | ''[]'' | Optional HATEOAS links | | ''$locationUrl'' | ''(untyped)'' | ''null'' | Optional Location header URL | **Returns:** ''(none declared)'' — void ======== noContent() ======== public static function noContent() //lines 314–317 (4)// Send a no content response (204) //Takes no parameters.// **Returns:** ''(none declared)'' — void ======== error() ======== public static function error($message, $statusCode = self::HTTP_INTERNAL_SERVER_ERROR, $errorCode = null, $errors = null) //lines 328–344 (17)// Send an error response ^ Parameter ^ Type ^ Default ^ Description ^ | ''$message'' | ''(untyped)'' | //required// | Error message | | ''$statusCode'' | ''(untyped)'' | ''self::HTTP_INTERNAL_SERVER_ERROR'' | HTTP status code | | ''$errorCode'' | ''(untyped)'' | ''null'' | Optional machine-readable error code | | ''$errors'' | ''(untyped)'' | ''null'' | Optional validation errors array | **Returns:** ''(none declared)'' — void ======== badRequest() ======== public static function badRequest($message = 'Bad Request', $errors = null) //lines 353–356 (4)// Send a 400 Bad Request error ^ Parameter ^ Type ^ Default ^ Description ^ | ''$message'' | ''(untyped)'' | '''Bad Request''' | Error message | | ''$errors'' | ''(untyped)'' | ''null'' | Optional validation errors | **Returns:** ''(none declared)'' — void ======== unauthorized() ======== public static function unauthorized($message = 'Unauthorized - Authentication required') //lines 364–367 (4)// Send a 401 Unauthorized error ^ Parameter ^ Type ^ Default ^ Description ^ | ''$message'' | ''(untyped)'' | '''Unauthorized - Authentication required''' | Error message | **Returns:** ''(none declared)'' — void ======== forbidden() ======== public static function forbidden($message = 'Forbidden - Access denied') //lines 375–378 (4)// Send a 403 Forbidden error ^ Parameter ^ Type ^ Default ^ Description ^ | ''$message'' | ''(untyped)'' | '''Forbidden - Access denied''' | Error message | **Returns:** ''(none declared)'' — void ======== notAcceptable() ======== public static function notAcceptable($message = 'Not Acceptable - Requested media type not supported', $supportedTypes = ['application/json']) //lines 387–391 (5)// Send a 406 Not Acceptable error ^ Parameter ^ Type ^ Default ^ Description ^ | ''$message'' | ''(untyped)'' | '''Not Acceptable - Requested media type not supported''' | Error message | | ''$supportedTypes'' | ''(untyped)'' | ''['application/json']'' | List of supported content types | **Returns:** ''(none declared)'' — void ======== unsupportedMediaType() ======== public static function unsupportedMediaType($message = 'Unsupported Media Type') //lines 399–402 (4)// Send a 415 Unsupported Media Type error ^ Parameter ^ Type ^ Default ^ Description ^ | ''$message'' | ''(untyped)'' | '''Unsupported Media Type''' | Error message | **Returns:** ''(none declared)'' — void ======== conflict() ======== public static function conflict($message = 'Conflict - Resource already exists') //lines 410–413 (4)// Send a 409 Conflict error ^ Parameter ^ Type ^ Default ^ Description ^ | ''$message'' | ''(untyped)'' | '''Conflict - Resource already exists''' | Error message | **Returns:** ''(none declared)'' — void ======== notFound() ======== public static function notFound($message = 'Resource not found') //lines 421–424 (4)// Send a 404 Not Found error ^ Parameter ^ Type ^ Default ^ Description ^ | ''$message'' | ''(untyped)'' | '''Resource not found''' | Error message | **Returns:** ''(none declared)'' — void ======== unprocessableEntity() ======== public static function unprocessableEntity($message = 'Validation failed', $errors = null) //lines 433–436 (4)// Send a 422 Unprocessable Entity error ^ Parameter ^ Type ^ Default ^ Description ^ | ''$message'' | ''(untyped)'' | '''Validation failed''' | Error message | | ''$errors'' | ''(untyped)'' | ''null'' | Validation errors | **Returns:** ''(none declared)'' — void ======== tooManyRequests() ======== public static function tooManyRequests($message = 'Too many requests - Please slow down', $retryAfter = 60) //lines 445–449 (5)// Send a 429 Too Many Requests error ^ Parameter ^ Type ^ Default ^ Description ^ | ''$message'' | ''(untyped)'' | '''Too many requests - Please slow down''' | Error message | | ''$retryAfter'' | ''(untyped)'' | ''60'' | Seconds until retry | **Returns:** ''(none declared)'' — void ======== methodNotAllowed() ======== public static function methodNotAllowed($message = 'Method not allowed', $allowedMethods = 'GET, POST, PUT, DELETE, PATCH, OPTIONS') //lines 458–462 (5)// Send a method not allowed error ^ Parameter ^ Type ^ Default ^ Description ^ | ''$message'' | ''(untyped)'' | '''Method not allowed''' | Error message | | ''$allowedMethods'' | ''(untyped)'' | '''GET, POST, PUT, DELETE, PATCH, OPTIONS''' | Comma-separated list of allowed methods | **Returns:** ''(none declared)'' — void ======== paginated() ======== public static function paginated($data, $currentPage, $perPage, $totalItems, $links = [], $ttl = self::CACHE_TTL) //lines 475–498 (24)// Send a paginated response with HATEOAS links ^ Parameter ^ Type ^ Default ^ Description ^ | ''$data'' | ''(untyped)'' | //required// | The paginated data | | ''$currentPage'' | ''(untyped)'' | //required// | Current page number | | ''$perPage'' | ''(untyped)'' | //required// | Items per page | | ''$totalItems'' | ''(untyped)'' | //required// | Total number of items | | ''$links'' | ''(untyped)'' | ''[]'' | Optional HATEOAS links | | ''$ttl'' | ''(untyped)'' | ''self::CACHE_TTL'' | Cache TTL in seconds | **Returns:** ''(none declared)'' — void ======== validateAccept() ======== public static function validateAccept($supportedTypes = ['application/json', '*/*']) //lines 507–534 (28)// Validate Accept header against supported types Returns true if request is acceptable ^ Parameter ^ Type ^ Default ^ Description ^ | ''$supportedTypes'' | ''(untyped)'' | ''['application/json', '*/*']'' | List of supported MIME types | **Returns:** ''(none declared)'' — bool ======== send() ======== private static function send($data, $statusCode, $ttl = self::CACHE_TTL) //lines 544–578 (35)// Send raw JSON response ^ Parameter ^ Type ^ Default ^ Description ^ | ''$data'' | ''(untyped)'' | //required// | Data to be encoded | | ''$statusCode'' | ''(untyped)'' | //required// | HTTP status code | | ''$ttl'' | ''(untyped)'' | ''self::CACHE_TTL'' | Cache TTL in seconds | **Returns:** ''(none declared)'' — void ======== getErrorCode() ======== private static function getErrorCode($statusCode) //lines 586–604 (19)// Get error code from status code ^ Parameter ^ Type ^ Default ^ Description ^ | ''$statusCode'' | ''(untyped)'' | //required// | HTTP status code | **Returns:** ''(none declared)'' — string Machine-readable error code ======== setCorsHeaders() ======== public static function setCorsHeaders($origin = '*') //lines 612–619 (8)// Set CORS headers for cross-origin requests ^ Parameter ^ Type ^ Default ^ Description ^ | ''$origin'' | ''(untyped)'' | '''*''' | Allowed origin (default: *) | **Returns:** ''(none declared)'' — void ---- //This page is generated from source by 'tools/gendoc'. Edits will be overwritten.//