Issue
When attempting to upload a file to the Fusion blob store using the POST method, the request fails with the following error:
{
"type": "RESTError",
"httpStatusCode": 405,
"error": "ERR-0003",
"message": "A web application error occurred",
"details": "HTTP 405 Method Not Allowed",
"localizedMessage": "HTTP 405 Method Not Allowed",
"httpStatusMessage": "Method Not Allowed"
}Even after assigning POST and PUT permissions in the relevant API roles, the upload continues to fail.
Diagnosis
This issue typically occurs when:
The upload attempt uses the
POSTHTTP method instead of the requiredPUTmethod.The blob is uploaded to the global namespace (
/api/blobs/...) but is expected to appear in an app-scoped UI (e.g.,/api/apps/<appname>/blobs/...).The blob appears to upload successfully (returns
200 OK), but is not visible in the blob store UI under a specific app scope.
To confirm:
Review the HTTP response code.
Check the
Allowresponse header to verify supported methods.Attempt to retrieve the uploaded file using the
/manifestendpoint to verify its existence.
Environment
Fusion 5.x (Managed Fusion, Lucidworks-hosted)
Applies to deployments using the blob store service via app-scoped or global API endpoints.
Cause
The Fusion blob store service does not accept POST for uploads. Instead, it requires the use of the PUT method with the file as a binary body and a Content-Type header.
Additionally, uploads to the global blob namespace (/api/blobs/...) will not appear in the blob store UI of a specific app (e.g., entsearch), which expects blobs to be uploaded under the app-scoped path (/api/apps/<appname>/blobs/...).
Resolution
Use the PUT method to upload files and ensure uploads are scoped correctly based on UI or API expectations.
Upload using PUT with correct content headers
Replace {{host}} and {{appname}} with your deployment-specific values.
Global scope (not visible in app UI):
curl -T FOND_BRETT_TEST.csv \
-H "Content-Type: text/csv" \
"https://{{host}}/api/blobs/FOND_BRETT_TEST?resourceType=file"App-scoped (UI-visible):
curl -T FOND_BRETT_TEST.csv \
-H "Content-Type: text/csv" \
"https://{{host}}/api/apps/{{appname}}/blobs/FOND_BRETT_TEST?resourceType=file"Verify blob visibility using the manifest endpoint
App-scoped check:
curl -X GET \
"https://{{host}}/api/apps/{{appname}}/blobs/FOND_BRETT_TEST/manifest"Global scope check (if not using app-scoped path):
curl -X GET \
"https://{{host}}/api/blobs/FOND_BRETT_TEST/manifest"
Update API roles if necessary
Ensure the following permissions are assigned to the appropriate roles:
-
For global scope uploads:
PUT:/blobs/**GET:/blobs/**
-
For app-scoped uploads:
PUT:/apps/{{appname}}/blobs/**GET:/apps/{{appname}}/blobs/**
Once the correct method and path are used, and role permissions are in place, files should upload successfully and appear in the appropriate blob store UI.