limits->inlineMegabytes() ); } public function inputSchema(): array { return [ 'type' => 'object', 'properties' => array_merge( [ 'filename' => ['type' => 'string', 'minLength' => 1, 'description' => 'Dateiname mit Endung.'], 'data' => [ 'type' => 'string', 'minLength' => 1, 'description' => 'Dateiinhalt als Base64 (ohne data:-Präfix).', ], ], MediaUploads::metaProperties() ), 'required' => ['filename', 'data'], 'additionalProperties' => false, ]; } public function outputSchema(): ?array { return MediaUploads::outputSchema(); } public function annotations(): array { return ['readonly' => false, 'destructive' => false, 'idempotent' => false]; } public function isDirect(): bool { return false; } public function permission(array $input): bool|WP_Error { return $this->uploads->permission($input); } public function execute(array $input): mixed { return $this->uploads->run( $this->name(), fn (): int|WP_Error => $this->importer->fromBase64( (string) $input['data'], (string) $input['filename'], MediaUploads::meta($input) ), 'Datei "%s" hochgeladen (ID %d)' ); } }