RUM source map API
Important
This endpoint is only compatible with the APM integration for Elastic Agent.
A source map allows minified files to be mapped back to original source code — allowing you to maintain the speed advantage of minified code, without losing the ability to quickly and easily debug your application.
For best results, uploading source maps should become a part of your deployment procedure, and not something you only do when you see unhelpful errors. That’s because uploading source maps after errors happen won’t make old errors magically readable — errors must occur again for source mapping to occur.
The following APIs are available:
Max payload size ¶
Kibana's maximum payload size is 1mb. If you attempt to upload a source map that exceeds the max payload size, you will get a 413
error.
Before uploading source maps that exceed this default, change the maximum payload size allowed by Kibana with the server.maxPayload
variable.
How to use APM APIs ¶
Expand for required headers, privileges, and usage details
Interact with APM APIs using cURL or another API tool. All APM APIs are Kibana APIs, not Elasticsearch APIs; because of this, the Kibana dev tools console cannot be used to interact with APM APIs.
For all APM APIs, you must use a request header. Supported headers are Authorization
, kbn-xsrf
, and Content-Type
.
Authorization: ApiKey {{credentials}}
-
Kibana supports token-based authentication with the Elasticsearch API key service. The API key returned by the Elasticsearch create API key API can be used by sending a request with an
Authorization
header that has a value ofApiKey
followed by the{{credentials}}
, where{{credentials}}
is the base64 encoding ofid
andapi_key
joined by a colon.Alternatively, you can create a user and use their username and password to authenticate API access:
-u $USER:$PASSWORD
.Whether using
Authorization: ApiKey {{credentials}}
, or-u $USER:$PASSWORD
, users interacting with APM APIs must have sufficient privileges. kbn-xsrf: true
-
By default, you must use
kbn-xsrf
for all API calls, except in the following scenarios:- The API endpoint uses the
GET
orHEAD
operations - The path is allowed using the
server.xsrf.allowlist
setting - XSRF protections are disabled using the
server.xsrf.disableProtection
setting
- The API endpoint uses the
Content-Type: application/json
-
Applicable only when you send a payload in the API request. Kibana API requests and responses use JSON. Typically, if you include the
kbn-xsrf
header, you must also include theContent-Type
header.
Create or update source map ¶
Create or update a source map for a specific service and version.
Privileges ¶
The user accessing this endpoint requires All
Kibana privileges for the APM and User Experience feature. For more information, see Kibana privileges.
Request ¶
POST /api/apm/sourcemaps
Request body ¶
service_name
- (required, string) The name of the service that the service map should apply to.
service_version
- (required, string) The version of the service that the service map should apply to.
bundle_filepath
- (required, string) The absolute path of the final bundle as used in the web application.
sourcemap
- (required, string or file upload) The source map. It must follow the source map revision 3 proposal.
Examples ¶
The following example uploads a source map for a service named foo
and a service version of 1.0.0
:
curl -X POST "http://localhost:5601/api/apm/sourcemaps" \
-H 'Content-Type: multipart/form-data' \
-H 'kbn-xsrf: true' \
-H 'Authorization: ApiKey ${YOUR_API_KEY}' \
-F 'service_name="foo"' \
-F 'service_version="1.0.0"' \
-F 'bundle_filepath="/test/e2e/general-usecase/bundle.js"' \
-F 'sourcemap="{\"version\":3,\"file\":\"static/js/main.chunk.js\",\"sources\":[\"fleet-source-map-client/src/index.css\",\"fleet-source-map-client/src/App.js\",\"webpack:/1
- Alternatively, upload the source map as a file with
-F 'sourcemap=@path/to/source_map/bundle.js.map'
Response body ¶
{
"type": "sourcemap",
"identifier": "foo-1.0.0",
"relative_url": "/api/fleet/artifacts/foo-1.0.0/644fd5a997d1ddd90ee131ba18e2b3d03931d89dd1fe4599143c0b3264b3e456",
"body": "eJyFkL1OwzAUhd/Fc+MbYMuCEBIbHRjKgBgc96R16tiWr1OQqr47NwqJxEK3q/PzWccXxchnZ7E1A1SjuhjVZtF2yOxiEPlO17oWox3D3uPFeSRTjmJQARfCPeiAgGx8NTKsYdAc1T3rwaSJGcds8Sp3c1HnhfywUZ3QhMTFFGepZxqMC9oex3CS9tpk1XyozgOlmoVKuJX1DqEQZ0su7PGtLU+V/3JPKc3cL7TJ2FNDRPov4bFta3MDM4f7W69lpJjLO9qdK8bzVPhcJz3HUCQ4LbO/p5hCSC4cZPByrp/wFqOklbpefwAhzpqI",
"created": "2021-07-09T20:47:44.812Z",
"id": "apm:foo-1.0.0-644fd5a997d1ddd90ee131ba18e2b3d03931d89dd1fe4599143c0b3264b3e456",
"compressionAlgorithm": "zlib",
"decodedSha256": "644fd5a997d1ddd90ee131ba18e2b3d03931d89dd1fe4599143c0b3264b3e456",
"decodedSize": 441,
"encodedSha256": "024c72749c3e3dd411b103f7040ae62633558608f480bce4b108cf5b2275bd24",
"encodedSize": 237,
"encryptionAlgorithm": "none",
"packageName": "apm"
}
Get source maps ¶
Returns an array of Fleet artifacts, including source map uploads.
Privileges ¶
The user accessing this endpoint requires Read
or All
Kibana privileges for the APM and User Experience feature. For more information, see Kibana privileges.
Request ¶
GET /api/apm/sourcemaps
Example ¶
The following example requests all uploaded source maps:
curl -X GET "http://localhost:5601/api/apm/sourcemaps" \
-H 'Content-Type: application/json' \
-H 'kbn-xsrf: true' \
-H 'Authorization: ApiKey ${YOUR_API_KEY}'
Response body ¶
{
"artifacts": [
{
"type": "sourcemap",
"identifier": "foo-1.0.0",
"relative_url": "/api/fleet/artifacts/foo-1.0.0/644fd5a997d1ddd90ee131ba18e2b3d03931d89dd1fe4599143c0b3264b3e456",
"body": {
"serviceName": "foo",
"serviceVersion": "1.0.0",
"bundleFilepath": "/test/e2e/general-usecase/bundle.js",
"sourceMap": {
"version": 3,
"file": "static/js/main.chunk.js",
"sources": [
"fleet-source-map-client/src/index.css",
"fleet-source-map-client/src/App.js",
"webpack:///./src/index.css?bb0a",
"fleet-source-map-client/src/index.js",
"fleet-source-map-client/src/reportWebVitals.js"
],
"sourcesContent": [
"content"
],
"mappings": "mapping",
"sourceRoot": ""
}
},
"created": "2021-07-09T20:47:44.812Z",
"id": "apm:foo-1.0.0-644fd5a997d1ddd90ee131ba18e2b3d03931d89dd1fe4599143c0b3264b3e456",
"compressionAlgorithm": "zlib",
"decodedSha256": "644fd5a997d1ddd90ee131ba18e2b3d03931d89dd1fe4599143c0b3264b3e456",
"decodedSize": 441,
"encodedSha256": "024c72749c3e3dd411b103f7040ae62633558608f480bce4b108cf5b2275bd24",
"encodedSize": 237,
"encryptionAlgorithm": "none",
"packageName": "apm"
}
]
}
Delete source map ¶
Delete a previously uploaded source map.
Privileges ¶
The user accessing this endpoint requires All
Kibana privileges for the APM and User Experience feature. For more information, see Kibana privileges.
Request ¶
DELETE /api/apm/sourcemaps/:id
Example ¶
The following example deletes a source map with an id of apm:foo-1.0.0-644fd5a9
:
curl -X DELETE "http://localhost:5601/api/apm/sourcemaps/apm:foo-1.0.0-644fd5a9" \
-H 'Content-Type: application/json' \
-H 'kbn-xsrf: true' \
-H 'Authorization: ApiKey ${YOUR_API_KEY}'
Response body ¶
{}