RUM source map APIedit
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:
How to use APM APIsedit
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 mapedit
Create or update a source map for a specific service and version.
Privilegesedit
The user accessing this endpoint requires All
Kibana privileges for the APM and User Experience feature.
For more information, see Kibana privileges.
Requestedit
POST /api/apm/sourcemaps
Request bodyedit
-
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.
Examplesedit
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.map"' \ -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:///./src/index.css?bb0a\",\"fleet-source-map-client/src/index.js\",\"fleet-source-map-client/src/reportWebVitals.js\"],\"sourcesContent\":[\"content\"],\"mappings\":\"mapping\",\"sourceRoot\":\"\"}"'
Response bodyedit
{ "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 mapsedit
Returns an array of Fleet artifacts, including source map uploads.
Privilegesedit
The user accessing this endpoint requires Read
or All
Kibana privileges for the APM and User Experience feature.
For more information, see Kibana privileges.
Requestedit
GET /api/apm/sourcemaps
Exampleedit
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 bodyedit
{ "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.map", "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 mapedit
Delete a previously uploaded source map.
Privilegesedit
The user accessing this endpoint requires All
Kibana privileges for the APM and User Experience feature.
For more information, see Kibana privileges.
Requestedit
DELETE /api/apm/sourcemaps/:id
Exampleedit
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 bodyedit
{}