Slim\Exception\HttpNotFoundException {#235
#message: "Not found."
#code: 404
#file: "/var/www/html/piggy-api/vendor/slim/slim/Slim/Middleware/RoutingMiddleware.php"
#line: 76
#request: Slim\Psr7\Request {#245
#protocolVersion: "2.0"
#headers: Slim\Psr7\Headers {#247
#globals: array:42 [
"USER" => "www-data"
"HOME" => "/var/www"
"HTTP_COOKIE" => "webapp=845780aec541ba785fd48d9c0399299a"
"HTTP_ACCEPT_ENCODING" => "gzip, br, zstd, deflate"
"HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
"HTTP_ACCEPT" => "*/*"
"HTTP_HOST" => "piggy.massinflux.com"
"PHP_ADMIN_VALUE" => "open_basedir=/var/www/html/piggy-api/:/usr/lib/php/:/tmp/"
"SCRIPT_FILENAME" => "/var/www/html/piggy-api/public/index.php"
"REDIRECT_STATUS" => "200"
"SERVER_NAME" => "piggy.massinflux.com"
"SERVER_PORT" => "443"
"SERVER_ADDR" => "137.184.94.174"
"REMOTE_USER" => ""
"REMOTE_PORT" => "63864"
"REMOTE_ADDR" => "216.73.216.153"
"SERVER_SOFTWARE" => "nginx/1.24.0"
"GATEWAY_INTERFACE" => "CGI/1.1"
"HTTPS" => "on"
"REQUEST_SCHEME" => "https"
"SERVER_PROTOCOL" => "HTTP/2.0"
"DOCUMENT_ROOT" => "/var/www/html/piggy-api/public"
"DOCUMENT_URI" => "/index.php"
"REQUEST_URI" => "/sitemap.xml"
"SCRIPT_NAME" => "/index.php"
"CONTENT_LENGTH" => ""
"CONTENT_TYPE" => ""
"REQUEST_METHOD" => "GET"
"QUERY_STRING" => ""
"FCGI_ROLE" => "RESPONDER"
"PHP_SELF" => "/index.php"
"REQUEST_TIME_FLOAT" => 1792711112.7482
"REQUEST_TIME" => 1792711112
"APP_ENV" => "dev"
"APP_DEBUG" => "1"
"SESSION_NAME" => "webapp"
"DB_DATABASE" => "piggy"
"SITE_DOMAIN" => "piggy.massinflux.com"
"CRONITOR_KEY" => "7fc3face593147d9af21a6dcf6662693"
"GOOGLE_MAPS_API_KEY" => "AIzaSyA9tuI4gMoqHhRmCJnBBruWffkjkNpgq3k"
"GOOGLE_CLIENT_ID" => "746271987403-i27tbs88unsnfc8sdea20ig8ildh52dv.apps.googleusercontent.com"
"APP_SECRET_KEY" => "i27tbs88unsnfc8sdea20ig8ildh52dv"
]
#headers: array:7 [
"cookie" => Slim\Psr7\Header {#213
-originalName: "Cookie"
-normalizedName: "cookie"
-values: array:1 [
0 => "webapp=845780aec541ba785fd48d9c0399299a"
]
}
"accept-encoding" => Slim\Psr7\Header {#214
-originalName: "Accept-Encoding"
-normalizedName: "accept-encoding"
-values: array:1 [
0 => "gzip, br, zstd, deflate"
]
}
"user-agent" => Slim\Psr7\Header {#215
-originalName: "User-Agent"
-normalizedName: "user-agent"
-values: array:1 [
0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
]
}
"accept" => Slim\Psr7\Header {#216
-originalName: "Accept"
-normalizedName: "accept"
-values: array:1 [
0 => "*/*"
]
}
"host" => Slim\Psr7\Header {#223
-originalName: "Host"
-normalizedName: "host"
-values: array:1 [
0 => "piggy.massinflux.com"
]
}
"content-length" => Slim\Psr7\Header {#218
-originalName: "Content-Length"
-normalizedName: "content-length"
-values: array:1 [
0 => ""
]
}
"content-type" => Slim\Psr7\Header {#219
-originalName: "Content-Type"
-normalizedName: "content-type"
-values: array:1 [
0 => ""
]
}
]
}
#body: Slim\Psr7\Stream {#263
#stream: stream resource @8
timed_out: false
blocked: true
eof: false
wrapper_type: "PHP"
stream_type: "Input"
mode: "rb"
unread_bytes: 0
seekable: true
uri: "php://input"
options: []
}
#meta: ? ?array
#readable: null
#writable: null
#seekable: null
#size: null
#isPipe: null
#finished: false
#cache: Slim\Psr7\Stream {#220
#stream: stream resource @4
wrapper_type: "PHP"
stream_type: "TEMP"
mode: "w+b"
unread_bytes: 0
seekable: true
uri: "php://temp"
options: []
}
#meta: array:6 [
"wrapper_type" => "PHP"
"stream_type" => "TEMP"
"mode" => "w+b"
"unread_bytes" => 0
"seekable" => true
"uri" => "php://temp"
]
#readable: null
#writable: true
#seekable: true
#size: null
#isPipe: false
#finished: false
#cache: null
}
}
#method: "GET"
#uri: Slim\Psr7\Uri {#212
#scheme: "https"
#user: ""
#password: ""
#host: "piggy.massinflux.com"
#port: 443
#path: "/sitemap.xml"
#query: ""
#fragment: ""
}
#requestTarget: null
#queryParams: null
#cookies: array:1 [
"webapp" => "845780aec541ba785fd48d9c0399299a"
]
#serverParams: array:42 [
"USER" => "www-data"
"HOME" => "/var/www"
"HTTP_COOKIE" => "webapp=845780aec541ba785fd48d9c0399299a"
"HTTP_ACCEPT_ENCODING" => "gzip, br, zstd, deflate"
"HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
"HTTP_ACCEPT" => "*/*"
"HTTP_HOST" => "piggy.massinflux.com"
"PHP_ADMIN_VALUE" => "open_basedir=/var/www/html/piggy-api/:/usr/lib/php/:/tmp/"
"SCRIPT_FILENAME" => "/var/www/html/piggy-api/public/index.php"
"REDIRECT_STATUS" => "200"
"SERVER_NAME" => "piggy.massinflux.com"
"SERVER_PORT" => "443"
"SERVER_ADDR" => "137.184.94.174"
"REMOTE_USER" => ""
"REMOTE_PORT" => "63864"
"REMOTE_ADDR" => "216.73.216.153"
"SERVER_SOFTWARE" => "nginx/1.24.0"
"GATEWAY_INTERFACE" => "CGI/1.1"
"HTTPS" => "on"
"REQUEST_SCHEME" => "https"
"SERVER_PROTOCOL" => "HTTP/2.0"
"DOCUMENT_ROOT" => "/var/www/html/piggy-api/public"
"DOCUMENT_URI" => "/index.php"
"REQUEST_URI" => "/sitemap.xml"
"SCRIPT_NAME" => "/index.php"
"CONTENT_LENGTH" => ""
"CONTENT_TYPE" => ""
"REQUEST_METHOD" => "GET"
"QUERY_STRING" => ""
"FCGI_ROLE" => "RESPONDER"
"PHP_SELF" => "/index.php"
"REQUEST_TIME_FLOAT" => 1792711112.7482
"REQUEST_TIME" => 1792711112
"APP_ENV" => "dev"
"APP_DEBUG" => "1"
"SESSION_NAME" => "webapp"
"DB_DATABASE" => "piggy"
"SITE_DOMAIN" => "piggy.massinflux.com"
"CRONITOR_KEY" => "7fc3face593147d9af21a6dcf6662693"
"GOOGLE_MAPS_API_KEY" => "AIzaSyA9tuI4gMoqHhRmCJnBBruWffkjkNpgq3k"
"GOOGLE_CLIENT_ID" => "746271987403-i27tbs88unsnfc8sdea20ig8ildh52dv.apps.googleusercontent.com"
"APP_SECRET_KEY" => "i27tbs88unsnfc8sdea20ig8ildh52dv"
]
#attributes: array:3 [
"view" => Slim\Views\Twig {#62
#loader: Twig\Loader\FilesystemLoader {#61
#paths: array:1 [
"__main__" => array:1 [
0 => "/var/www/html/piggy-api/public/../resources/views"
]
]
#cache: []
#errorCache: []
-rootPath: "/var/www/html/piggy-api/public/"
}
#environment: Twig\Environment {#63
-charset: "UTF-8"
-loader: Twig\Loader\FilesystemLoader {#61}
-debug: true
-autoReload: true
-cache: Twig\Cache\NullCache {#64}
-lexer: null
-parser: null
-compiler: null
-globals: array:4 [
"user" => null
"messages" => null
"csp_nonce" => "3yW6ALEGrfoiLzAa3k9lQQ=="
"maps_api_key" => "AIzaSyA9tuI4gMoqHhRmCJnBBruWffkjkNpgq3k"
]
-resolvedGlobals: null
-loadedTemplates: null
-strictVariables: false
-originalCache: false
-extensionSet: Twig\ExtensionSet {#65
-extensions: array:7 [
"Twig\Extension\CoreExtension" => Twig\Extension\CoreExtension {#69
-dateFormats: array:2 [
0 => "F j, Y H:i"
1 => "%d days"
]
-numberFormat: array:3 [
0 => 0
1 => "."
2 => ","
]
-timezone: null
}
"Twig\Extension\EscaperExtension" => Twig\Extension\EscaperExtension {#70
-environment: Twig\Environment {#63}
-escapers: []
-escaper: Twig\Runtime\EscaperRuntime {#71
-escapers: []
+safeClasses: []
+safeLookup: []
-charset: "UTF-8"
}
-defaultStrategy: "html"
}
"Twig\Extension\YieldNotReadyExtension" => Twig\Extension\YieldNotReadyExtension {#72
-useYield: false
}
"Twig\Extension\OptimizerExtension" => Twig\Extension\OptimizerExtension {#73
-optimizers: -1
}
"Slim\Views\TwigExtension" => Slim\Views\TwigExtension {#74}
"Twig\Extension\DebugExtension" => Twig\Extension\DebugExtension {#111}
"Twig\Extra\Intl\IntlExtension" => Twig\Extra\Intl\IntlExtension {#112
-dateFormatters: []
-numberFormatters: []
-dateFormatterPrototype: null
-numberFormatterPrototype: null
}
]
-initialized: false
-runtimeInitialized: false
-staging: Twig\Extension\StagingExtension {#66
-functions: array:11 [
"baseUrl" => Twig\TwigFunction {#84
#options: array:12 [
"is_safe" => null
"is_safe_callback" => null
"node_class" => "Twig\Node\Expression\FunctionExpression"
"parser_callable" => null
"needs_environment" => false
"needs_context" => false
"needs_charset" => false
"is_variadic" => false
"deprecation_info" => null
"deprecated" => false
"deprecating_package" => ""
"alternative" => null
]
-name: "baseUrl"
-dynamicName: "baseUrl"
-callable: Closure() {#88
class: "App\Services\TwigHelper"
use: {
$url: "https://piggy.massinflux.com"
}
}
-arguments: []
}
"isProd" => Twig\TwigFunction {#89
#options: array:12 [
"is_safe" => null
"is_safe_callback" => null
"node_class" => "Twig\Node\Expression\FunctionExpression"
"parser_callable" => null
"needs_environment" => false
"needs_context" => false
"needs_charset" => false
"is_variadic" => false
"deprecation_info" => null
"deprecated" => false
"deprecating_package" => ""
"alternative" => null
]
-name: "isProd"
-dynamicName: "isProd"
-callable: Closure() {#90
class: "App\Services\TwigHelper"
use: {
$appEnv: "dev"
}
}
-arguments: []
}
"isLoggedIn" => Twig\TwigFunction {#91
#options: array:12 [
"is_safe" => null
"is_safe_callback" => null
"node_class" => "Twig\Node\Expression\FunctionExpression"
"parser_callable" => null
"needs_environment" => false
"needs_context" => false
"needs_charset" => false
"is_variadic" => false
"deprecation_info" => null
"deprecated" => false
"deprecating_package" => ""
"alternative" => null
]
-name: "isLoggedIn"
-dynamicName: "isLoggedIn"
-callable: Closure() {#92
class: "App\Services\TwigHelper"
use: {
$session: Odan\Session\PhpSession {#85
-storage: ArrayObject {#87
storage: []
flag::STD_PROP_LIST: false
flag::ARRAY_AS_PROPS: false
iteratorClass: "ArrayIterator"
}
-flash: Odan\Session\Flash {#86
-storage: ArrayObject {#87}
-storageKey: "_flash"
}
}
}
}
-arguments: []
}
"user" => Twig\TwigFunction {#93
#options: array:12 [
"is_safe" => null
"is_safe_callback" => null
"node_class" => "Twig\Node\Expression\FunctionExpression"
"parser_callable" => null
"needs_environment" => false
"needs_context" => false
"needs_charset" => false
"is_variadic" => false
"deprecation_info" => null
"deprecated" => false
"deprecating_package" => ""
"alternative" => null
]
-name: "user"
-dynamicName: "user"
-callable: Closure() {#94
class: "App\Services\TwigHelper"
use: {
$session: Odan\Session\PhpSession {#85}
}
}
-arguments: []
}
"routeMatch" => Twig\TwigFunction {#95
#options: array:12 [
"is_safe" => null
"is_safe_callback" => null
"node_class" => "Twig\Node\Expression\FunctionExpression"
"parser_callable" => null
"needs_environment" => false
"needs_context" => false
"needs_charset" => false
"is_variadic" => false
"deprecation_info" => null
"deprecated" => false
"deprecating_package" => ""
"alternative" => null
]
-name: "routeMatch"
-dynamicName: "routeMatch"
-callable: Closure($url) {#96
class: "App\Services\TwigHelper"
}
-arguments: []
}
"path_for" => Twig\TwigFunction {#97
#options: array:12 [
"is_safe" => null
"is_safe_callback" => null
"node_class" => "Twig\Node\Expression\FunctionExpression"
"parser_callable" => null
"needs_environment" => false
"needs_context" => false
"needs_charset" => false
"is_variadic" => false
"deprecation_info" => null
"deprecated" => false
"deprecating_package" => ""
"alternative" => null
]
-name: "path_for"
-dynamicName: "path_for"
-callable: Closure(string $routeName, array $data = [], array $queryParams = []): string {#98
returnType: "string"
class: "App\Services\TwigHelper"
use: {
$routeParser: Slim\Routing\RouteParser {#15
-routeCollector: Slim\Routing\RouteCollector {#12
#routeParser: Slim\Routing\RouteParser {#15}
#callableResolver: Slim\CallableResolver {#13
-container: DI\Container {#30
#resolvedEntries: array:10 [
"DI\Container" => DI\Container {#30}
"Psr\Container\ContainerInterface" => DI\Container {#30}
"DI\FactoryInterface" => DI\Container {#30}
"Invoker\InvokerInterface" => DI\Container {#30}
"settings" => array:9 [
"displayErrorDetails" => true
"addContentLengthHeader" => false
"determineRouteBeforeAppMiddleware" => true
"debug" => true
"public" => "/var/www/html/piggy-api/src/../public"
"renderer" => array:1 [
"template_path" => "/var/www/html/piggy-api/src/../templates/"
]
"db" => array:9 [
"driver" => "mysql"
"host" => "localhost"
"username" => "admin"
"password" => "b9NNzPT%X%975&eQYX$"
"charset" => "utf8mb4"
"collation" => "utf8mb4_unicode_ci"
"prefix" => ""
"strict" => false
"database" => "piggy"
]
"maps" => array:1 [
"key" => "AIzaSyA9tuI4gMoqHhRmCJnBBruWffkjkNpgq3k"
]
"session" => array:2 [
"name" => "webapp"
"cache_expire" => 0
]
]
"Odan\Session\SessionInterface" => Odan\Session\PhpSession {#85}
"view" => Slim\Views\Twig {#62}
"Src\Middleware\SessionStartMiddleware" => Src\Middleware\SessionStartMiddleware {#226}
"Slim\Flash\Messages" => Slim\Flash\Messages {#244
#fromPrevious: []
#forNow: []
#forNext: []
#storage: & array:1 [
"slimFlash" => []
]
#storageKey: "slimFlash"
}
"Src\Middleware\SlimFlashMiddleware" => Src\Middleware\SlimFlashMiddleware {#236
-flash: Slim\Flash\Messages {#244}
}
]
-definitionSource: DI\Definition\Source\SourceChain {#29
-sources: array:2 [
0 => DI\Definition\Source\DefinitionArray {#26
-definitions: array:10 [
"flash" => DI\Definition\FactoryDefinition {#25
-name: "flash"
-factory: Closure() {#21}
-parameters: []
}
"environment" => DI\Definition\FactoryDefinition {#18
-name: "environment"
-factory: Closure() {#19}
-parameters: []
}
"Odan\Session\SessionInterface" => DI\Definition\FactoryDefinition {#7
-name: "Odan\Session\SessionInterface"
-factory: Closure(ContainerInterface $container) {#5}
-parameters: []
}
"Slim\Csrf\Guard" => DI\Definition\FactoryDefinition {#36
-name: "Slim\Csrf\Guard"
-factory: Closure() {#37 …1}
-parameters: []
}
"Slim\Interfaces\RouteParserInterface" => DI\Definition\FactoryDefinition {#122
-name: "Slim\Interfaces\RouteParserInterface"
-factory: Closure(ContainerInterface $container) {#121 …1}
-parameters: []
}
"Psr\Http\Message\ResponseFactoryInterface" => DI\Definition\FactoryDefinition {#124
-name: "Psr\Http\Message\ResponseFactoryInterface"
-factory: Closure(ContainerInterface $container) {#123 …1}
-parameters: []
}
"Src\Middleware\UserAuthMiddleware" => DI\Definition\FactoryDefinition {#126
-name: "Src\Middleware\UserAuthMiddleware"
-factory: Closure(ContainerInterface $container) {#125}
-parameters: []
}
"App\Controllers\BaseController" => DI\Definition\FactoryDefinition {#128
-name: "App\Controllers\BaseController"
-factory: Closure(ContainerInterface $container) {#127}
-parameters: []
}
"App\Controllers\HomeController" => DI\Definition\FactoryDefinition {#130
-name: "App\Controllers\HomeController"
-factory: Closure(ContainerInterface $container) {#129}
-parameters: []
}
"App\Controllers\ApiController" => DI\Definition\FactoryDefinition {#132
-name: "App\Controllers\ApiController"
-factory: Closure(ContainerInterface $container) {#131}
-parameters: []
}
]
-wildcardDefinitions: []
-normalizer: DI\Definition\Source\DefinitionNormalizer {#27
-autowiring: DI\Definition\Source\ReflectionBasedAutowiring {#23}
}
}
1 => DI\Definition\Source\ReflectionBasedAutowiring {#28}
]
-rootSource: DI\Definition\Source\SourceChain {#29}
-mutableSource: DI\Definition\Source\DefinitionArray {#26}
}
-definitionResolver: DI\Definition\Resolver\ResolverDispatcher {#24
-container: DI\Container {#30}
-proxyFactory: DI\Proxy\ProxyFactory {#22
-writeProxiesToFile: false
-proxyDirectory: null
-proxyManager: null
}
-arrayResolver: null
-factoryResolver: DI\Definition\Resolver\FactoryResolver {#76
-container: DI\Container {#30}
-invoker: Invoker\Invoker {#82
-callableResolver: Invoker\CallableResolver {#83
-container: DI\Container {#30}
}
-parameterResolver: Invoker\ParameterResolver\ResolverChain {#77
-resolvers: array:4 [
0 => Invoker\ParameterResolver\AssociativeArrayResolver {#78}
1 => DI\Invoker\FactoryParameterResolver {#79 …1}
2 => Invoker\ParameterResolver\NumericArrayResolver {#80}
3 => Invoker\ParameterResolver\DefaultValueResolver {#81}
]
}
-container: DI\Container {#30}
}
-resolver: DI\Definition\Resolver\ResolverDispatcher {#24}
}
-decoratorResolver: null
-objectResolver: DI\Definition\Resolver\ObjectCreator {#217
-proxyFactory: DI\Proxy\ProxyFactory {#22}
-parameterResolver: DI\Definition\Resolver\ParameterResolver {#224
-definitionResolver: DI\Definition\Resolver\ResolverDispatcher {#24}
}
-definitionResolver: DI\Definition\Resolver\ResolverDispatcher {#24}
}
-instanceResolver: null
-envVariableResolver: null
}
-fetchedDefinitions: array:3 [
"Src\Middleware\SessionStartMiddleware" => DI\Definition\ObjectDefinition {#209
-name: "Src\Middleware\SessionStartMiddleware"
#className: null
#constructorInjection: null
#propertyInjections: []
#methodInjections: []
#lazy: null
-classExists: true
-isInstantiable: true
}
"Src\Middleware\SlimFlashMiddleware" => DI\Definition\ObjectDefinition {#233
-name: "Src\Middleware\SlimFlashMiddleware"
#className: null
#constructorInjection: DI\Definition\ObjectDefinition\MethodInjection {#237
-methodName: "__construct"
-parameters: array:1 [
0 => DI\Definition\Reference {#238
-name: ""
-targetEntryName: "Slim\Flash\Messages"
}
]
}
#propertyInjections: []
#methodInjections: []
#lazy: null
-classExists: true
-isInstantiable: true
}
"Slim\Flash\Messages" => DI\Definition\ObjectDefinition {#239
-name: "Slim\Flash\Messages"
#className: null
#constructorInjection: DI\Definition\ObjectDefinition\MethodInjection {#243
-methodName: "__construct"
-parameters: []
}
#propertyInjections: []
#methodInjections: []
#lazy: null
-classExists: true
-isInstantiable: true
}
]
#entriesBeingResolved: []
-invoker: null
#delegateContainer: DI\Container {#30}
#proxyFactory: DI\Proxy\ProxyFactory {#22}
}
}
#container: DI\Container {#30}
#defaultInvocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#basePath: ""
#cacheFile: null
#routes: array:38 [
"route0" => Slim\Routing\Route {#133
#methods: array:1 [
0 => "GET"
]
#identifier: "route0"
#name: "home"
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#134
#tip: Slim\Routing\Route {#133}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\HomeController:home"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/"
#groupMiddlewareAppended: false
}
"route1" => Slim\Routing\Route {#135
#methods: array:1 [
0 => "POST"
]
#identifier: "route1"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#136
#tip: Slim\Routing\Route {#135}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\ApiController:test"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/test"
#groupMiddlewareAppended: false
}
"route2" => Slim\Routing\Route {#137
#methods: array:1 [
0 => "POST"
]
#identifier: "route2"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#138
#tip: Slim\Routing\Route {#137}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\AuthController:googleSignIn"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/auth/google"
#groupMiddlewareAppended: false
}
"route3" => Slim\Routing\Route {#139
#methods: array:1 [
0 => "POST"
]
#identifier: "route3"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#140
#tip: Slim\Routing\Route {#139}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\AuthController:standardLogin"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/auth/login"
#groupMiddlewareAppended: false
}
"route4" => Slim\Routing\Route {#141
#methods: array:1 [
0 => "POST"
]
#identifier: "route4"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#142
#tip: Slim\Routing\Route {#141}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\AccountController:setupAccount"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/account/setup"
#groupMiddlewareAppended: false
}
"route5" => Slim\Routing\Route {#143
#methods: array:1 [
0 => "PUT"
]
#identifier: "route5"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#144
#tip: Slim\Routing\Route {#143}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\AccountController:updateName"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/account/update-name"
#groupMiddlewareAppended: false
}
"route6" => Slim\Routing\Route {#145
#methods: array:1 [
0 => "POST"
]
#identifier: "route6"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#146
#tip: Slim\Routing\Route {#145}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\AccountController:invite"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/account/invite"
#groupMiddlewareAppended: false
}
"route7" => Slim\Routing\Route {#147
#methods: array:1 [
0 => "GET"
]
#identifier: "route7"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#148
#tip: Slim\Routing\Route {#147}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\AccountController:getInvites"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/account/invites"
#groupMiddlewareAppended: false
}
"route8" => Slim\Routing\Route {#149
#methods: array:1 [
0 => "POST"
]
#identifier: "route8"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#150
#tip: Slim\Routing\Route {#149}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\AccountController:acceptInvite"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/account/invites/{invite_uuid}/accept"
#groupMiddlewareAppended: false
}
"route9" => Slim\Routing\Route {#151
#methods: array:1 [
0 => "GET"
]
#identifier: "route9"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#152
#tip: Slim\Routing\Route {#151}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\AccountController:listVaults"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/account/vaults"
#groupMiddlewareAppended: false
}
"route10" => Slim\Routing\Route {#153
#methods: array:1 [
0 => "POST"
]
#identifier: "route10"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#154
#tip: Slim\Routing\Route {#153}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\AccountController:switchVault"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/account/switch/{account_uuid}"
#groupMiddlewareAppended: false
}
"route11" => Slim\Routing\Route {#155
#methods: array:1 [
0 => "POST"
]
#identifier: "route11"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#156
#tip: Slim\Routing\Route {#155}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\AccountController:leaveVault"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/account/leave/{account_uuid}"
#groupMiddlewareAppended: false
}
"route12" => Slim\Routing\Route {#157
#methods: array:1 [
0 => "POST"
]
#identifier: "route12"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#158
#tip: Slim\Routing\Route {#157}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\UserController:createMain"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/users/main"
#groupMiddlewareAppended: false
}
"route13" => Slim\Routing\Route {#159
#methods: array:1 [
0 => "POST"
]
#identifier: "route13"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#160
#tip: Slim\Routing\Route {#159}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\UserController:createSub"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/users/sub"
#groupMiddlewareAppended: false
}
"route14" => Slim\Routing\Route {#161
#methods: array:1 [
0 => "GET"
]
#identifier: "route14"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#162
#tip: Slim\Routing\Route {#161}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\UserController:list"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/users"
#groupMiddlewareAppended: false
}
"route15" => Slim\Routing\Route {#163
#methods: array:1 [
0 => "DELETE"
]
#identifier: "route15"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#164
#tip: Slim\Routing\Route {#163}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\UserController:deleteUser"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/users/{uuid}"
#groupMiddlewareAppended: false
}
"route16" => Slim\Routing\Route {#165
#methods: array:1 [
0 => "POST"
]
#identifier: "route16"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#166
#tip: Slim\Routing\Route {#165}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\UserController:disableSelf"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/users/disable"
#groupMiddlewareAppended: false
}
"route17" => Slim\Routing\Route {#167
#methods: array:1 [
0 => "PUT"
]
#identifier: "route17"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#168
#tip: Slim\Routing\Route {#167}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\UserController:updateApy"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/users/{uuid}/apy"
#groupMiddlewareAppended: false
}
"route18" => Slim\Routing\Route {#169
#methods: array:1 [
0 => "PUT"
]
#identifier: "route18"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#170
#tip: Slim\Routing\Route {#169}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\UserController:updateAllowance"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/users/{uuid}/allowance"
#groupMiddlewareAppended: false
}
"route19" => Slim\Routing\Route {#171
#methods: array:1 [
0 => "PUT"
]
#identifier: "route19"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#172
#tip: Slim\Routing\Route {#171}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\UserController:updateOverdraft"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/users/{uuid}/overdraft"
#groupMiddlewareAppended: false
}
"route20" => Slim\Routing\Route {#173
#methods: array:1 [
0 => "PUT"
]
#identifier: "route20"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#174
#tip: Slim\Routing\Route {#173}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\UserController:updateChoreSettings"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/users/{uuid}/chore-settings"
#groupMiddlewareAppended: false
}
"route21" => Slim\Routing\Route {#175
#methods: array:1 [
0 => "PUT"
]
#identifier: "route21"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#176
#tip: Slim\Routing\Route {#175}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\UserController:updatePin"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/users/{uuid}/update-pin"
#groupMiddlewareAppended: false
}
"route22" => Slim\Routing\Route {#177
#methods: array:1 [
0 => "POST"
]
#identifier: "route22"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#178
#tip: Slim\Routing\Route {#177}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\LedgerController:deposit"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/ledger/{uuid}/deposit"
#groupMiddlewareAppended: false
}
"route23" => Slim\Routing\Route {#179
#methods: array:1 [
0 => "POST"
]
#identifier: "route23"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#180
#tip: Slim\Routing\Route {#179}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\LedgerController:spend"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/ledger/{uuid}/spend"
#groupMiddlewareAppended: false
}
"route24" => Slim\Routing\Route {#181
#methods: array:1 [
0 => "POST"
]
#identifier: "route24"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#182
#tip: Slim\Routing\Route {#181}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\LedgerController:deduct"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/ledger/{uuid}/deduct"
#groupMiddlewareAppended: false
}
"route25" => Slim\Routing\Route {#183
#methods: array:1 [
0 => "GET"
]
#identifier: "route25"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#184
#tip: Slim\Routing\Route {#183}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\LedgerController:summary"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/ledger/{uuid}/summary"
#groupMiddlewareAppended: false
}
"route26" => Slim\Routing\Route {#185
#methods: array:1 [
0 => "GET"
]
#identifier: "route26"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#186
#tip: Slim\Routing\Route {#185}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\LedgerController:chart"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/ledger/{uuid}/chart"
#groupMiddlewareAppended: false
}
"route27" => Slim\Routing\Route {#187
#methods: array:1 [
0 => "GET"
]
#identifier: "route27"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#188
#tip: Slim\Routing\Route {#187}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\LedgerController:transactions"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/ledger/{uuid}/transactions"
#groupMiddlewareAppended: false
}
"route28" => Slim\Routing\Route {#189
#methods: array:1 [
0 => "GET"
]
#identifier: "route28"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#190
#tip: Slim\Routing\Route {#189}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\ChoreController:list"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/chores/{user_uuid}"
#groupMiddlewareAppended: false
}
"route29" => Slim\Routing\Route {#191
#methods: array:1 [
0 => "POST"
]
#identifier: "route29"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#192
#tip: Slim\Routing\Route {#191}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\ChoreController:create"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/chores/{user_uuid}"
#groupMiddlewareAppended: false
}
"route30" => Slim\Routing\Route {#193
#methods: array:1 [
0 => "PUT"
]
#identifier: "route30"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#194
#tip: Slim\Routing\Route {#193}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\ChoreController:update"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/chores/{chore_uuid}"
#groupMiddlewareAppended: false
}
"route31" => Slim\Routing\Route {#195
#methods: array:1 [
0 => "DELETE"
]
#identifier: "route31"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#196
#tip: Slim\Routing\Route {#195}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\ChoreController:delete"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/chores/{chore_uuid}"
#groupMiddlewareAppended: false
}
"route32" => Slim\Routing\Route {#197
#methods: array:1 [
0 => "POST"
]
#identifier: "route32"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#198
#tip: Slim\Routing\Route {#197}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\ChoreController:complete"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/chores/{chore_uuid}/complete"
#groupMiddlewareAppended: false
}
"route33" => Slim\Routing\Route {#199
#methods: array:1 [
0 => "POST"
]
#identifier: "route33"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#200
#tip: Slim\Routing\Route {#199}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\ChoreController:approve"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/chores/{chore_uuid}/approve"
#groupMiddlewareAppended: false
}
"route34" => Slim\Routing\Route {#201
#methods: array:1 [
0 => "GET"
]
#identifier: "route34"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#202
#tip: Slim\Routing\Route {#201}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\NotificationController:list"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/notifications"
#groupMiddlewareAppended: false
}
"route35" => Slim\Routing\Route {#203
#methods: array:1 [
0 => "GET"
]
#identifier: "route35"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#204
#tip: Slim\Routing\Route {#203}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\NotificationController:unreadCount"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/notifications/unread-count"
#groupMiddlewareAppended: false
}
"route36" => Slim\Routing\Route {#205
#methods: array:1 [
0 => "PUT"
]
#identifier: "route36"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#206
#tip: Slim\Routing\Route {#205}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\NotificationController:read"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/notifications/{uuid}/read"
#groupMiddlewareAppended: false
}
"route37" => Slim\Routing\Route {#207
#methods: array:1 [
0 => "POST"
]
#identifier: "route37"
#name: null
#groups: []
#invocationStrategy: Slim\Handlers\Strategies\RequestResponse {#8}
#arguments: []
#savedArguments: []
#container: DI\Container {#30}
#middlewareDispatcher: Slim\MiddlewareDispatcher {#208
#tip: Slim\Routing\Route {#207}
#callableResolver: Slim\CallableResolver {#13}
#container: DI\Container {#30}
}
#callable: "App\Controllers\NotificationController:markAllRead"
#callableResolver: Slim\CallableResolver {#13}
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
#pattern: "/api/notifications/mark-all-read"
#groupMiddlewareAppended: false
}
]
#routesByName: []
#routeGroups: []
#routeCounter: 38
#responseFactory: Slim\Psr7\Factory\ResponseFactory {#11}
}
-routeParser: FastRoute\RouteParser\Std {#6}
}
}
}
-arguments: []
}
"csrf_field" => Twig\TwigFunction {#99
#options: array:12 [
"is_safe" => array:1 [
0 => "html"
]
"is_safe_callback" => null
"node_class" => "Twig\Node\Expression\FunctionExpression"
"parser_callable" => null
"needs_environment" => false
"needs_context" => false
"needs_charset" => false
"is_variadic" => false
"deprecation_info" => null
"deprecated" => false
"deprecating_package" => ""
"alternative" => null
]
-name: "csrf_field"
-dynamicName: "csrf_field"
-callable: Closure(): Markup {#100
returnType: "Twig\Markup"
class: "App\Services\TwigHelper"
this: App\Services\TwigHelper {#75 …}
}
-arguments: []
}
"today" => Twig\TwigFunction {#101
#options: array:12 [
"is_safe" => null
"is_safe_callback" => null
"node_class" => "Twig\Node\Expression\FunctionExpression"
"parser_callable" => null
"needs_environment" => false
"needs_context" => false
"needs_charset" => false
"is_variadic" => false
"deprecation_info" => null
"deprecated" => false
"deprecating_package" => ""
"alternative" => null
]
-name: "today"
-dynamicName: "today"
-callable: Closure() {#102
class: "App\Services\TwigHelper"
}
-arguments: []
}
"oauthClientId" => Twig\TwigFunction {#103
#options: array:12 [
"is_safe" => null
"is_safe_callback" => null
"node_class" => "Twig\Node\Expression\FunctionExpression"
"parser_callable" => null
"needs_environment" => false
"needs_context" => false
"needs_charset" => false
"is_variadic" => false
"deprecation_info" => null
"deprecated" => false
"deprecating_package" => ""
"alternative" => null
]
-name: "oauthClientId"
-dynamicName: "oauthClientId"
-callable: Closure() {#104
class: "App\Services\TwigHelper"
}
-arguments: []
}
"stripePublicKey" => Twig\TwigFunction {#105
#options: array:12 [
"is_safe" => null
"is_safe_callback" => null
"node_class" => "Twig\Node\Expression\FunctionExpression"
"parser_callable" => null
"needs_environment" => false
"needs_context" => false
"needs_charset" => false
"is_variadic" => false
"deprecation_info" => null
"deprecated" => false
"deprecating_package" => ""
"alternative" => null
]
-name: "stripePublicKey"
-dynamicName: "stripePublicKey"
-callable: Closure() {#106
class: "App\Services\TwigHelper"
}
-arguments: []
}
"domain" => Twig\TwigFunction {#107
#options: array:12 [
"is_safe" => null
"is_safe_callback" => null
"node_class" => "Twig\Node\Expression\FunctionExpression"
"parser_callable" => null
"needs_environment" => false
"needs_context" => false
"needs_charset" => false
"is_variadic" => false
"deprecation_info" => null
"deprecated" => false
"deprecating_package" => ""
"alternative" => null
]
-name: "domain"
-dynamicName: "domain"
-callable: Closure() {#108
class: "App\Services\TwigHelper"
}
-arguments: []
}
]
-filters: array:1 [
"ucwords" => Twig\TwigFilter {#109
#options: array:13 [
"is_safe" => null
"is_safe_callback" => null
"pre_escape" => null
"preserves_safety" => null
"node_class" => "Twig\Node\Expression\FilterExpression"
"needs_environment" => false
"needs_context" => false
"needs_charset" => false
"is_variadic" => false
"deprecation_info" => null
"deprecated" => false
"deprecating_package" => ""
"alternative" => null
]
-name: "ucwords"
-dynamicName: "ucwords"
-callable: Closure($data) {#110
class: "App\Services\TwigHelper"
}
-arguments: []
}
]
-visitors: []
-tokenParsers: []
-tests: []
}
-parsers: null
-visitors: null
-filters: null
-dynamicFilters: null
-tests: null
-dynamicTests: null
-functions: null
-dynamicFunctions: null
-expressionParsers: ? Twig\ExpressionParser\ExpressionParsers
-globals: null
-functionCallbacks: []
-filterCallbacks: []
-testCallbacks: []
-parserCallbacks: []
-lastModified: 0
}
-runtimeLoaders: array:1 [
0 => Slim\Views\TwigRuntimeLoader {#225
#routeParser: Slim\Routing\RouteParser {#15}
#uri: Slim\Psr7\Uri {#212}
#basePath: ""
}
]
-runtimes: array:1 [
"Twig\Runtime\EscaperRuntime" => Twig\Runtime\EscaperRuntime {#71}
]
-optionsHash: "["Twig\\Extension\\CoreExtension","Twig\\Extension\\EscaperExtension","Twig\\Extension\\YieldNotReadyExtension","Twig\\Extension\\OptimizerExtension","Slim\\Views\\TwigExtension","Twig\\Extension\\DebugExtension","Twig\\Extra\\Intl\\IntlExtension"]:8:5:3.24.0:1:0:0"
-useYield: false
-defaultRuntimeLoader: Twig\RuntimeLoader\FactoryRuntimeLoader {#67
-map: array:1 [
"Twig\Runtime\EscaperRuntime" => Closure() {#68
class: "Twig\Environment"
this: Twig\Environment {#63}
}
]
}
-hotCache: []
}
#defaultVariables: []
}
"__routeParser__" => Slim\Routing\RouteParser {#15}
"__routingResults__" => Slim\Routing\RoutingResults {#240
#dispatcher: Slim\Routing\Dispatcher {#10
-routeCollector: Slim\Routing\RouteCollector {#12}
-dispatcher: Slim\Routing\FastRouteDispatcher {#270
#staticRouteMap: array:3 [
"GET" => array:6 [
"/" => "route0"
"/api/account/invites" => "route7"
"/api/account/vaults" => "route9"
"/api/users" => "route14"
"/api/notifications" => "route34"
"/api/notifications/unread-count" => "route35"
]
"POST" => array:9 [
"/api/test" => "route1"
"/api/auth/google" => "route2"
"/api/auth/login" => "route3"
"/api/account/setup" => "route4"
"/api/account/invite" => "route6"
"/api/users/main" => "route12"
"/api/users/sub" => "route13"
"/api/users/disable" => "route16"
"/api/notifications/mark-all-read" => "route37"
]
"PUT" => array:1 [
"/api/account/update-name" => "route5"
]
]
#variableRouteData: array:4 [
"POST" => array:1 [
0 => array:2 [
"regex" => "~^(?|/api/account/invites/([^/]+)/accept|/api/account/switch/([^/]+)()|/api/account/leave/([^/]+)()()|/api/ledger/([^/]+)/deposit()()()|/api/ledger/([^/]+)/spend()()()()|/api/ledger/([^/]+)/deduct()()()()()|/api/chores/([^/]+)()()()()()()|/api/chores/([^/]+)/complete()()()()()()()|/api/chores/([^/]+)/approve()()()()()()()())$~"
"routeMap" => array:9 [
2 => array:2 [
0 => "route8"
1 => array:1 [
"invite_uuid" => "invite_uuid"
]
]
3 => array:2 [
0 => "route10"
1 => array:1 [
"account_uuid" => "account_uuid"
]
]
4 => array:2 [
0 => "route11"
1 => array:1 [
"account_uuid" => "account_uuid"
]
]
5 => array:2 [
0 => "route22"
1 => array:1 [
"uuid" => "uuid"
]
]
6 => array:2 [
0 => "route23"
1 => array:1 [
"uuid" => "uuid"
]
]
7 => array:2 [
0 => "route24"
1 => array:1 [
"uuid" => "uuid"
]
]
8 => array:2 [
0 => "route29"
1 => array:1 [
"user_uuid" => "user_uuid"
]
]
9 => array:2 [
0 => "route32"
1 => array:1 [
"chore_uuid" => "chore_uuid"
]
]
10 => array:2 [
0 => "route33"
1 => array:1 [
"chore_uuid" => "chore_uuid"
]
]
]
]
]
"DELETE" => array:1 [
0 => array:2 [
"regex" => "~^(?|/api/users/([^/]+)|/api/chores/([^/]+)())$~"
"routeMap" => array:2 [
2 => array:2 [
0 => "route15"
1 => array:1 [
"uuid" => "uuid"
]
]
3 => array:2 [
0 => "route31"
1 => array:1 [
"chore_uuid" => "chore_uuid"
]
]
]
]
]
"PUT" => array:1 [
0 => array:2 [
"regex" => "~^(?|/api/users/([^/]+)/apy|/api/users/([^/]+)/allowance()|/api/users/([^/]+)/overdraft()()|/api/users/([^/]+)/chore\-settings()()()|/api/users/([^/]+)/update\-pin()()()()|/api/chores/([^/]+)()()()()()|/api/notifications/([^/]+)/read()()()()()())$~"
"routeMap" => array:7 [
2 => array:2 [
0 => "route17"
1 => array:1 [
"uuid" => "uuid"
]
]
3 => array:2 [
0 => "route18"
1 => array:1 [
"uuid" => "uuid"
]
]
4 => array:2 [
0 => "route19"
1 => array:1 [
"uuid" => "uuid"
]
]
5 => array:2 [
0 => "route20"
1 => array:1 [
"uuid" => "uuid"
]
]
6 => array:2 [
0 => "route21"
1 => array:1 [
"uuid" => "uuid"
]
]
7 => array:2 [
0 => "route30"
1 => array:1 [
"chore_uuid" => "chore_uuid"
]
]
8 => array:2 [
0 => "route36"
1 => array:1 [
"uuid" => "uuid"
]
]
]
]
]
"GET" => array:1 [
0 => array:2 [
"regex" => "~^(?|/api/ledger/([^/]+)/summary|/api/ledger/([^/]+)/chart()|/api/ledger/([^/]+)/transactions()()|/api/chores/([^/]+)()()())$~"
"routeMap" => array:4 [
2 => array:2 [
0 => "route25"
1 => array:1 [
"uuid" => "uuid"
]
]
3 => array:2 [
0 => "route26"
1 => array:1 [
"uuid" => "uuid"
]
]
4 => array:2 [
0 => "route27"
1 => array:1 [
"uuid" => "uuid"
]
]
5 => array:2 [
0 => "route28"
1 => array:1 [
"user_uuid" => "user_uuid"
]
]
]
]
]
]
-allowedMethods: array:1 [
"/sitemap.xml" => []
]
}
}
#method: "GET"
#uri: "/sitemap.xml"
#routeStatus: 0
#routeIdentifier: null
#routeArguments: []
}
]
#parsedBody: null
#uploadedFiles: []
}
#title: "404 Not Found"
#description: "The requested resource could not be found. Please verify the URI and try again."
trace: {
/var/www/html/piggy-api/vendor/slim/slim/Slim/Middleware/RoutingMiddleware.php:76 {
Slim\Middleware\RoutingMiddleware->performRouting(ServerRequestInterface $request): ServerRequestInterface …
› case RoutingResults::NOT_FOUND:
› throw new HttpNotFoundException($request);
›
}
/var/www/html/piggy-api/vendor/slim/slim/Slim/Middleware/RoutingMiddleware.php:44 {
Slim\Middleware\RoutingMiddleware->process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface …
› {
› $request = $this->performRouting($request);
› return $handler->handle($request);
}
/var/www/html/piggy-api/vendor/slim/slim/Slim/MiddlewareDispatcher.php:129 {