# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [7.3.1] - 2026-01-06

### Added
- OpenTelemetry context-based base attributes to DiagnosticsMetrics

### Fixed
- Merge request context attributes with custom metrics - custom metrics now automatically include request-scoped base attributes (account, route_id, status_code, etc.) using OpenTelemetry Context API

## [7.3.0] - 2025-12-16
### Changed
- Update temporality to delta in metrics client
- New deploy pipeline with npm publish flow

### Fixed
- Fix account attribute to diagnostics metrics

## [7.2.9-beta.1] - 2025-12-12
### Changed
- Increase maximum attributes limit for diagnostics metrics

## [7.2.9-beta.0] - 2025-12-11
### Fix
- Add account attribute to diagnostics metrics for improved observability

## [7.2.8-beta.4] - 2025-12-08
### Changed
- New deploy pipeline. No functional changes in the code

## [7.2.7] - 2025-12-04
### Changed
- Increased metrics client interval from 5s to 60s and timeout from 5s to 60s

## [7.2.6] - 2025-11-05
### Changed
- Enhance the translation utilities by introducing a new state marker for translatable message strings, updating the parsing and formatting logic to handle this marker and ensuring that already translated messages are bypassed further processing

## [7.2.5] - 2025-10-28
### Changed
- Added a new metrics tooling layer using @vtex/diagnostics-nodejs to replace the legacy MetricsAccumulator system

## [7.2.4] - 2025-10-15
### Fix
- Restores backward compatibility for individual header constant exports

## [7.2.3] - 2025-10-08
### Fix
- Separate console and diagnostics client logging formats

## [7.2.2] - 2025-09-26
### Changed
- Adds integration with @vtex/diagnostics-semconv library to support VTEX semantic conventions for diagnostics-based logs

## [7.2.1] - 2025-09-08
### Fixed
- Ensure `global.metrics` is initialized in both master and worker processes to prevent undefined errors in status tracking and metrics reporting

## [7.2.0] - 2025-09-08
### Changed
- Add metrics instrumentation based on diagnostics lib
- Add conditional enabling for diagnostics telemetry signals

## [7.1.0] - 2025-09-02
### Changed
- Add new scope argument into auth directive

## [7.0.1] - 2025-08-14
### Changed
- Update `diagnostics-nodejs` version, simplifying client initialization, consolidating telemetry logic, and improving type safety

## [7.0.0] - 2025-08-13
### Changed
- Version created to keep track of Runtime 7-compatible implementation of this lib

## [6.49.6] - 2025-07-25
### Changed
- Bump `@vtex/diagnostics-nodejs` version
- Remove `resolutions` field from `package.json`

## [6.49.5] - 2025-07-21
### Changed
- Defining a list of headers to be added as trace span information

## [6.49.4] - 2025-07-02
### Fixed
- Userland logs that wouldn't be collected

## [6.49.2] - 2025-06-03
### Fixed
- Bumped `axios` to newest version without vuln CVE-2025-27152

## [6.49.1] - 2025-04-30
### Fixed
- Add yarn.lock changes from previous release

## [6.49.0] - 2025-04-29
### Changed
- Update logging instrumentation

### Fixed
- Bump typescript-json-schema from 0.40.0 to 0.52.0
- Fix `yarn gen` script
- Update node-version on publish workflows

## [6.48.0] - 2024-10-23
### Added
- resolveAll to `MineWinsConflictsResolver` to handle an array of conflicts.

### Fixed
- Avoid using async/await with then callbacks
- Bump semver from 5.7.1 to 5.7.2

### Changed
- @auth: Validate token's `account` scope
- Delete Metadata client

## [6.47.0] - 2024-06-11
### Added
- Add option to save asynchronous cache

### Fixed
- Add handler name for runtime http handlers

## [6.46.1] - 2024-01-31

### Fixed
- Return type for the saveJSON method of VBase client

### Changed
- Increase timeout for messagesGraphQL client

## [6.46.0] - 2023-10-25
### Added
- Add disk cache steps and retry count to tracing

### Changed
- Stop updating client cache when revalidated and still expired

## [6.45.24] - 2023-10-05
### Added

- Allow disabling memoization for all requests of a client

## [6.45.23] - 2023-10-04

### Fixed
- Fix metrics being restricted by tracing restrictions

## [6.45.22] - 2023-09-20

### Removed

- Remove reference of how to search for the app's errors on now-defunct Splunk.

### Fixed

- Error tracing spans not logging the details.

## [6.45.21] - 2023-09-19
### Changed
- Fix tracingMiddleware shouldTrace decision
- Fix HttpClient tracing based on sampling decision

## [6.45.21-beta.2] - 2023-09-19

## [6.45.21-beta.1] - 2023-09-07

## [6.45.21-beta.0] - 2023-09-04

## [6.45.21-beta] - 2023-09-04

## [6.45.20] - 2023-08-30
### Changed
- Remove sampling decision from runtime
- Only create tracing spans when they come from router

## [6.45.20-beta] - 2023-08-30

## [6.45.19] - 2023-07-12
### Changed
- Bump `graphql-upload` version

## [6.45.18] - 2023-07-07
### Fixed
- Metrics to prometheus

## [6.45.16] - 2023-07-03
### Changed
- Bump `prom-client` version

## [6.45.15] - 2023-02-01
### Changed
- Removed unnecessary worker signal logs

## [6.45.14] - 2023-02-01

### Added

- New tests for `MineWinsConflictsResolver`.

### Fixed

- Merged/Rebased content not being returned causing inconsistencies.
- Do not return empty content if no conflict is found.

## [6.45.13] - 2022-12-12
### Changed
- Deterministic cache for getWithBody
- Remove socket metrics per origin

## [6.45.12] - 2022-04-14

### Fixed

- Update sensitive fields list.
  - Remove "error" field.
  - Add missing fields.

## [6.45.11] - 2022-04-08

### Fixed

- Add where parameter to the MasterData scroll method

## [6.45.10] - 2022-03-15

### Fixed

- Update sensitive fields.
  - Add 'authorization', rawheaders', 'x-vtex-credential' and 'x-vtex-session'.
- Lowercase fields before comparison in cleanJson.

## [6.45.9] - 2022-03-08

### Fixed

- Fix cleanJson utility.

## [6.45.8] - 2022-02-25

### Fixed

- Remove only cookie fields when cleaning logs.

## [6.45.7] - 2022-02-23

### Fixed

- Remove sensitive data from logs.

## [6.45.6] - 2021-10-26

### Fixed

- `vtex_segment` cookie extraction

## [6.54.5] - 2021-10-22

### Fixed

- Extract session cookie in a safe manner

## [6.45.4] - 2021-09-16

### Removed

- `Missing x-vtex-provider header` log.

## [6.45.3] - 2021-08-30

### Fixed

- Cover new test cases where mine is left equal to base and master updates an item.

## [6.45.0] - 2021-08-24

### Changed

- Export Prometheus client

## [6.44.0] - 2021-07-15

### Added

- `@metric` GraphQL directive

## [6.43.1] - 2021-07-12

### Fixed

- Update axios to `0.21.1`

## [6.43.0] - 2021-06-23

### Added

- Update schema in runtime when provider app changes version

## [6.42.1] - 2021-05-18

### Fixed

- [startWorker] Remove duplicated middleware

## [6.42.0] - 2021-05-17

### Added

- [Rate Limit] Enable user to config the amount of requests to be processed per minute and concurrently by setting it in `service.json`.

## [6.41.1] - 2021-05-17

### Fixed

- Fix prometheus metrics being publicly exposed on /metrics.

## [6.41.0] - 2021-03-09

### Added

- Added an interface to the `userTranslations` query of the MessagesGraphQL client.

## [6.40.0] - 2021-03-02

### Added

- `getAppState` method to `registry` client

## [6.39.1] - 2021-02-05

- Increase HTTP agents connection pools freeSockets and lifetime

## [6.39.0] - 2021-01-27

### Added

- `TranslateTo` schema directive.
- `translations` util.
- README's `Development with IO clients` directions.

### Changed

- Moved the `TranslatableMessageV2` interface, `parseTranslatableStringV2`, `formatTranslatableStringV2` and `handleSingleString` methods and `CONTEXT_REGEX`, `FROM_REGEX` and `CONTENT_REGEX` constants from the `TranslatableV2` schema directive to the `translations` util.
- README's `Development` section format.

## [6.37.1] - 2020-12-10

### Changed

- Add logs to MineWinsConflictResolver

## [6.37.0] - 2020-10-08

### Added

- `searchDocumentsWithPaginationInfo` on Masterdata client

## [6.36.3] - 2020-09-09

### Changed

- Allow sending events to any resource

## [6.36.2] - 2020-08-19

### Fixed

- Set wait time to force shutdown workers based on service timeout
- Stop removing response from error.
- Update @vtex/node-error-report to remove sensitive information from errors logged to splunk and to distributed tracing.
- Remove sensitive information from headers before logging onto tracing spans.

## [6.36.1] - 2020-08-17

### Fixed

- Remove sensitive exception data before responding to browser.

## [6.36.0] - 2020-07-30

### Added

- [metric] Created new Prometheus metrics related to Event Loop Lag between scrapes:
  - runtime_event_loop_lag_max_between_scrapes_seconds
  - runtime_event_loop_lag_percentiles_between_scrapes_seconds

## [6.35.2] - 2020-07-24

### Added

- `timestamp` field to VTEX IO Billing log.

## [6.35.1] - 2020-07-22

### Added

- [metrics] Export jaeger metrics.

### Fixed

- [metrics] Typo on event listened to increment `runtime_http_aborted_requests_total`.
- [tracing:entrypoint] Fix waiting for response stream to finish.

## [6.35.0] - 2020-07-08

### Added

- [metrics] Create new Prometheus exported metrics:
  - runtime_http_requests_total
  - runtime_http_aborted_requests_total
  - runtime_http_requests_duration_milliseconds
  - runtime_http_response_size_bytes
- [tracing] Finish entrypoint span when response finishes streaming.

### Changed

- Update `billingOptions` type.

## [6.34.0] - 2020-07-03

### Fixed

- Remove fallback to x-vtex-credential as adminUserAuthToken.

### Added

- Send workspace to session service.
- Add channelPrivacy to SegmentData type.

## [6.33.0] - 2020-06-25

### Added

- [clients:tracing] Create span wrapping HttpClient middlewares with information on caching and retries.

## [6.32.0] - 2020-06-25

### Changed

- [tracing] Remove span wrapping user middlewares.
- [tracing] Add entrypoint span tags and logs after the execution of middlewares.
- [ErrorReport] Do not allow creating recursive ErrorReports.

## [6.31.1] - 2020-06-05

### Fixed

- Release the 6.31.0 again due to issues.

## [6.31.0] - 2020-06-04

### Added

- Add `putRaw` method on HttpClient.
- Support to `If-Match` header usage on VBase client.

### Changed

- [ErrorReport] Log ErrorReport errors created on `HttpClient` requests or thrown by user handlers to splunk.
- [ErrorReport] Add error metadata on span logs instead of on span tags.
- [tracing:entrypoint] Log incoming request headers and outgoing response headers.
- [tracing] Use remote sampling.

### Fixed

- [tracing:entrypoint] Fix URL tag on entrypoint span - use `ctx.request.href` instead of `ctx.request.originalUrl`.
- Masterdata sort typing and scroll pagination.

## [6.30.1] - 2020-05-21

### Changed

- Remove `serverTiming` metrics from client headers.
- Add `serverTiming` metrics on error report.

## [6.30.0] - 2020-05-20

### Added

- Masterdata client

## [6.29.0] - 2020-05-18

### Changed

- Create an option to disable conditional segment/session vary
- Set vary: x-vtex-session if the scope is private

## [6.28.3] - 2020-05-15

### Fixed

- [ErrorReport] Update `@vtex/node-error-report` package:
  - Clone objects before sanitizing them.

## [6.28.2] - 2020-05-13

### Changed

- [ErrorReport] Use `@vtex/node-error-report` package.

## [6.28.1] - 2020-05-05

### Fixed

- [tracing:logger] Make Logger serializable again.

## [6.28.0] - 2020-05-04

### Changed

- [tracing:init] Increase sampling rate to 5%.
- [ErrorReport] Serialize buffer only as a `byteCount` and a `type: buffer`.
- [ErrorReport] Increase ErrorReport serialization depth from 6 to 8.

### Added

- [tracing:entrypoint-span] Add `vtex.request_id` tag.
- [ErrorReport] Add `error.server.code`, `error.server.source`, `error.server.request_id` to tags added to error spans.
- [response:headers] Add `x-trace-id` when request is traced.
- [logger] Log `trace-id` when request is traced.
- [tracing:tags] Use snake case to conform with OpenTracing.

## [6.27.0] - 2020-04-28

## [6.26.2-beta] - 2020-04-28

## [6.26.1-beta] - 2020-04-27

## [6.25.1-beta] - 2020-04-27

### Added

- Settings from settings builder to events.

## [6.26.0] - 2020-04-22

### Changed

- Tracing utilities export.

### Added

- `NODE_ENV` tag to process tracing tags.
- `tracingConfig` argument to all clients request functions.
- Option on request spans to define if request is childOf rootSpan or followsFrom it.
- Option on request span to add suffix on request span name - it will be `http-request:suffx`.
- Helper `createTracingContextFromCarrier` to allow worker threads and child processes to be traced.

## [6.25.0] - 2020-04-15

### Added

- Extensions field to graphql client.

## [6.24.4] - 2020-04-08

### Fixed

- Adds missing `@` in BillingMetrics client

## [6.24.3] - 2020-04-01

### Fixed

- [tracing] Fix `ErrorReport` object strings truncating (StackOverflow error in some cases).
- [tracing] Make `ctx.vtex.tracer` a required field on `IOContext`.

### Added

- [tracing] Add `fallbackSpanContext` method to `UserLandTracer`.

## [6.24.2] - 2020-03-31

- Workspaces sharing apps metainfo.

## [6.24.1] - 2020-03-31

- Bump version.

## [6.24.0] - 2020-03-31

## Changed

- Send events using `Courier` instead of `Colossus`.

## [6.23.1] - 2020-03-26

### Fixed

- Trace only 1% of the requests.

## [6.23.0] - 2020-03-26

### Added

- Tracing instrumentation.

## [6.22.0] - 2020-03-20

### Changed

- Updated `Billing Options` types

### Added

- Apps' Install API response type
- Skidder topic names on logs are not based on account anymore

### Fixed

- Fixed params for VBase list

## [6.21.0] - 2020-03-05

### Added

- createHttpsAgent helper function so devs can import it in their apps and use our agent
- httpsAgent added to instanceOptions so we can add the agent in the client's constructor

### Removed

- Https interceptor agent

## [6.20.0] - 2020-03-04

### Added

- Support for a external schema to be passed into graphql Service configuration.

## [6.19.0] - 2020-03-02

### Added

- Get `adminUserAuthToken` from header `X-Vtex-Credential`.

## [6.18.0] - 2020-02-27

### Added

- Adds stale while revalidating to apps get meta infos function

## [6.17.0] - 2020-02-18

### Added

- Injects `__SKIDDER_TOPIC_1` and `__SKIDDER_TOPIC_2` keys in logs

## [6.16.1] - 2020-02-17

### Changed

- Exponential timeout and backoff variables can now be set by request and not only by client.

### Fixed

- Fix revalidation for cached buffer responses.

## [6.16.0] - 2020-02-13

### Changed

- Removes slowRecorder from code

## [6.15.2] - 2020-02-13

### Added

- Payment Provider client

## [6.15.1] - 2020-02-10

### Fixed

- Fix `x-vtex-etag-control` set by SmartCacheDirective.

## [6.15.0] - 2020-02-06

### Added

- Add support for router binding header.

## [6.14.0] - 2020-02-06

## [6.13.1] - 2020-02-04

### Fixed

- Adds catalog Graphql client to IOClients

## [6.13.0] - 2020-02-03

## [6.12.1] - 2020-02-03

### Changed

- Make it usable outside of IO

## [6.12.0] - 2020-01-31

### Added

- Adds `catalogGraphQL` client

## [6.11.1] - 2020-01-30

### Fixed

- Export tenant data

## [6.11.0] - 2020-01-30

### Changed

- Update axios from 0.18.0 to 0.19.2

## [6.10.1] - 2020-01-29

### Fixed

- getAppsMetaInfos typings from Apps client

## [6.10.0] - 2020-01-29

### Changed

- Improve `cacheKey` performance and sort params in the key.

## [6.9.0] - 2020-01-29

### Added

- Adds new query to messages client
- Uses new resolver in Translatable resolver

## [6.8.1] - 2020-01-28

### Chore

- Increase query size limit from 1mb to 3mb.

### Fixed

- Settings format is now the same delivered by settings server.

## [6.8.0] - 2020-01-23

### Added

- New settings middleware.
- New directive in graphql for declaring route settings type.

## [6.7.1] - 2020-01-22

### Fixed

- Encodes Buffer with base64 to cache it correctly

## [6.7.0] - 2020-01-22

### Added

- `@deprecated` directive logs to Splunk when used. To avoid overflowing splunk with useless logs, we only log once at every minute

## [6.6.2] - 2020-01-16

### Added

- Parameters to customize exponential backoff delay and increase timeout at each retry.

### Changed

- Stop using `axios-retry` logic, implement retry manually.

## [6.6.1] - 2020-01-16

### Fixed

- Vbase `getJSON` typings. Do not return type `{}`

### Changed

- Do not rely on state for flushing `x-vtex-meta` headers

## [6.6.0] - 2020-01-16

## [6.6.0-beta] - 2020-01-15

### Changed

- Enables fast recorder

## [6.5.0] - 2020-01-15

### Changed

- Sets `x-vtex-meta` header _ONCE_ in the `recorder` middleware to tackle performance issues

## [6.4.1] - 2020-01-09

### Fixed

- Internal app path log in toolbelt

## [6.4.0] - 2020-01-09

### Added

- Allow getting segment data with default locale and currency from binding instead of tenant.

## [6.3.0] - 2020-01-08

### Added

- New route to get files from Apps with only the app name, account and workspace

## [6.2.2] - 2020-01-08

### Fixed

- Logic to get cancellable methods for cancellation token

## [6.2.1] - 2020-01-08

### Fixed

- There was a HUGE performance drop when setting `x-vtex-meta` header via `ctx.set` using an array. Joining in a single string solved the problem

## [6.2.0] - 2020-01-07

### Added

- Batches messages to be translated

## [6.1.7] - 2020-01-02

### Changed

- Added correct getFile function to Assets client

## [6.1.6] - 2019-12-17

### Changed

- When linking only one worker will be available
- Gracefull shutdown when receiving `sigterm` from master and child processes

### Fixed

- Remote debugger now debugs worker instead of master process
- @transltableV2 directive arguments

## [6.1.5] - 2019-12-12

## [6.1.4] - 2019-12-12

### Fixed

- Add binding to context when receiving header

## [6.1.3] - 2019-12-11

### Fixed

- Public routes now working

## [6.1.2] - 2019-12-11

## [6.1.1] - 2019-12-10

## [6.1.0] - 2019-12-09

## [6.0.0] - 2019-11-27

## [6.0.0-beta.12] - 2019-11-26

## [3.66.3] - 2019-11-26

### Removed

- Splunk log in clients to console.log only

## [3.66.2] - 2019-11-26

### Fixed

- Flag `fireEvent` in Messages `saveV2` should be optional

## [3.66.1] - 2019-11-25

### Fixed

- Checks if logger.warn is a function before calling it

## [3.66.0] - 2019-11-25

### Added

- Add binding information to HttpClient requests

## [3.65.4] - 2019-11-25

### Fixed

- Conflicts Resolver only use `comparableKeys` when objects owns them

## [3.65.3] - 2019-11-25

## Added

- Allows filter dependencies from app list

## [3.65.2] - 2019-11-25

### Added

- New attribute to messages API

## [3.65.1] - 2019-11-21

## [3.65.1-beta] - 2019-11-21

### Fixed

- Uses http in old routes

## [3.65.0] - 2019-11-21

### Added

- Error type `TooManyRequestsError` that returns status code 429

## [3.64.0] - 2019-11-19

### Added

- Uses https if request is from outside IO

### Changed

- Updates internal routing

## [3.63.0] - 2019-11-18

### Added

- Update Messages SaveArgsV2 interface

## [3.62.6] - 2019-11-14

### Fixed

- Removes `ctx.graphql` object sharing and make it have a request cycle duration

## [3.62.5] - 2019-11-11

### Changed

- Upgrades new error query format for splunk 72

### Fixed

- Fix "socket hang up" by preventing client request abortion after server response is finished or client response is completed.
- Fix cancellation error not being thrown if the request does not have metric.

## [3.62.4] - 2019-11-04

### Changed

- Removes tracing from graphqlruntime

## [3.62.3] - 2019-10-30

### Fixed

- stale getAppFile accepts MAJOR.x app name

## [3.62.2] - 2019-10-30

### Fixed

- Handle nullable nested objects in MineWinsConflictsResolver

## [3.62.1] - 2019-10-29

### Fixed

- Export error type RequestCancelledError in index

## [3.62.0] - 2019-10-29

### Added

- New scalar type and directive to sanitize strings

### Fixed

- Handle error without response in VBase getJSON calls

## [3.61.1] - 2019-10-29

### Fixed

- Throw error in `getAppsMetaInfos` method if `staleIfError`` is false.

## [3.60.0] - 2019-10-28

## [3.59.2] - 2019-10-24

### Fixed

- Handle nullable arrays passed to MineWinsConflictsResolver

## [3.59.1] - 2019-10-18

### Fixed

- Correctly handle errors caused by requests cancelled with cancellation token

## [3.59.0] - 2019-10-16

## [3.58.0] - 2019-10-14

### Added

- **environment** arg to `JanusClient`.

## [3.57.1] - 2019-10-11

## Added

- Apps install accepts `infra:service-*` apps

## [3.56.0] - 2019-10-10

### Added

- New getAppMetaInfos function with diskCache fallback
- Add MineWinsConflict resolver logic to VBase client
- New getAppFiles with fallback strategies

## [3.55.4-beta] - 2019-10-09

## [3.55.3] - 2019-10-09

### Fixed

- Messages Save v2 interface

## [3.55.2] - 2019-10-01

### Fixed

- Warnings logged as errors

## [3.55.1] - 2019-09-27

## [3.55.0] - 2019-09-25

## [3.54.1] - 2019-09-23

### Added

- Tenant client added

## [3.54.0] - 2019-09-23

### Changed

- Logger client instantiated in service-node
- `@translatableV2` directive uses language from context instead of making an IO

## [3.53.0] - 2019-09-16

### Changed

- TranslatableV2 support for context and from in message encoding

### Changed

- Resolve context in message at directive translatableV2

## [3.52.0] - 2019-09-16

### Added

- Add saveV2 method in MessagesGraphQL client

## [3.51.1] - 2019-09-13

### Fixed

- Add host to IOContext

## [3.51.0] - 2019-09-13

### Added

- Forward x-forwarded-host header.
- Add vary x-forwarded-host.

## [3.50.2] - 2019-09-13

## [3.50.2-beta] - 2019-09-12

### Added

- Add `platform` to `ctx`

## [3.50.1] - 2019-09-11

## [3.50.0] - 2019-09-11

## [3.50.0-beta] - 2019-09-11

### Added

- Export list of all available public domains

## [3.49.0] - 2019-09-10

## [3.48.3] - 2019-09-09

### Fixed

- Added logger middleware to events pipeline.

## [3.48.2] - 2019-09-04

## [3.48.1] - 2019-09-04

## [3.48.1-beta.0] - 2019-09-04

## [3.48.1-beta] - 2019-09-03

## [3.48.0] - 2019-09-03

### Added

- Route for testing apps on `builder-hub`.

## [3.47.2] - 2019-09-02

### Fixed

- Update missing changelog.
- Remove if statements on existence of ctx.vtex.logger

## [3.47.1] - 2019-08-29

### Fixed

- Fix ramda typings errors.

## [3.47.0] - 2019-08-29

### Added

- Add parameter `skipSemVerEnsure` in app publish.

## [3.46.0] - 2019-08-26

### Added

- Create event handler similar to http requests, providing vtex clients, timings and error logs.

## [3.46.0-beta.2] - 2019-08-26

## [3.46.0-beta.1] - 2019-08-26

## [3.46.0-beta.0] - 2019-08-26

## [3.46.0-beta] - 2019-08-26

## [3.45.0] - 2019-08-22

## [3.44.3] - 2019-08-20

### Fixed

- Stop ignoring 0ms metrics.
- Rename GraphQL middlewares to resolve metrics conflict.

### Changed

- Stop measuring event-loop overhead.

## [3.44.2] - 2019-08-19

## [3.44.1] - 2019-08-19

### Fixed

- Truncate long GraphQL errors so they can be sent to Splunk.

## [3.44.0] - 2019-08-19

### Changed

- Deprecate Colossus logger completely, using stdout instead.

## [3.43.0] - 2019-08-19

### Changed

- Properly times metrics, considering total elapsed and code run after `await next()`.
- Avoid broken metrics when a middleware throws.
- Do not batch metrics for unsuccessful handlers and middlewares.
- Rename `http-handler-success-*` to `http-handler-*` and only count non-success statuses.

## [3.42.0] - 2019-08-19

### Changed

- Disable caching if response varies with session. (Before, we incorrectly disabled caching if _we had a session token_)

## [3.41.1] - 2019-08-15

## [3.41.1-beta] - 2019-08-15

## [3.41.0] - 2019-08-13

## [3.40.1] - 2019-08-12

### Fixed

- Typo on segment path.

## [3.40.0] - 2019-08-09

## [3.39.0] - 2019-08-09

## [3.38.0] - 2019-08-08

### Added

- Inside the class `Translatable`, allow `string` arrays to be translated too.

## [3.37.2] - 2019-08-08

## [3.37.1] - 2019-08-08

## [3.37.0] - 2019-08-08

## [3.36.1] - 2019-08-08

## [3.36.0] - 2019-08-08

## [3.35.0] - 2019-08-01

### Fixed

- Use POST requests for queries only in the `MessagesGraphQL` client, not in the `GraphQLClient`.

## [3.34.1] - 2019-07-31

## [3.34.0] - 2019-07-30

### Fixed

- Create middleware that deletes headers passed to make cache behavior consistent regarldess of CDN.

## [3.33.1] - 2019-07-29

### Changed

- `getAccountData` now requires to pass the param `VtexIdclientAutCookie`.

## [3.33.0] - 2019-07-26

## [3.32.2] - 2019-07-24

### Added

- Accept `VtexIdclientAutCookie` as param to `getAccountData`.

## [3.32.1] - 2019-07-23

### Fixed

- Revert changes made in release 3.31.0.

## [3.32.0] - 2019-07-22

### Added

- Function to check resource access in License Manager Client

## [3.31.0] - 2019-07-15

### Changed

- Do not separate messages `translate` queries in batches. Instead, use a single POST request for all translations.

## [3.30.2] - 2019-07-10

## [3.30.1] - 2019-07-10

## [3.30.0] - 2019-07-09

## [3.29.1] - 2019-07-09

## [3.29.0] - 2019-07-09

## [3.28.1] - 2019-07-08

## [3.28.0] - 2019-07-08

## [3.27.2] - 2019-07-08

## [3.27.1] - 2019-07-02

### Added

- Http head request
- VBase get file metadata

## [3.27.0] - 2019-06-27

## [3.26.5] - 2019-06-27

## [3.26.4] - 2019-06-27

### Fixed

- Removal of circular references in logs.

## [3.26.3] - 2019-06-24

## [3.26.2] - 2019-06-24

## [3.26.1] - 2019-06-21

### Fixed

- Problem with `recorder` inside `context` - Assure that `recorder` is inside `context` at the right moment.

## [3.26.0] - 2019-06-19

## [3.25.0] - 2019-06-19

## [3.24.1] - 2019-06-17

### Fixed

- Fixes `Please use a named function as handler for better metrics` warnings

## [3.24.0] - 2019-06-14

## [3.24.0-beta.0] - 2019-06-13

## [3.24.0-beta] - 2019-06-13

### Added

- Propagate `x-vtex-session` across requests.

## [3.23.0] - 2019-06-13

### Added

- Enable environment selection, e.g beta, when cookie `vtex-commerce-env` is set

## [3.22.0] - 2019-06-06

### Added

- Typings for Free and Paid Billing Options
- Typings for Fixed and Metric-Based Calculation Items
- Type guards for Billing Options

## [3.21.3] - 2019-06-04

## [3.21.2] - 2019-05-27

## [3.21.1] - 2019-05-27

## [3.21.0] - 2019-05-27

## [3.20.0] - 2019-05-27

## [3.20.0-beta] - 2019-05-25

## [3.19.0] - 2019-05-24

## [3.18.2] - 2019-05-23

## [3.18.1] - 2019-05-21

## [3.18.0] - 2019-05-20

### Added

- Generate `manifest.json` schema from TypeScript definition.

## [3.17.0] - 2019-05-20

### Added

- GraphQL Client

## [3.16.0] - 2019-05-17

## [3.15.1] - 2019-05-17

### Changed

- Change type of `buildFeatures` to `Record<string, string[]>`

## [3.15.0] - 2019-05-13

## [3.14.1] - 2019-05-10

## [3.14.1-beta] - 2019-05-09

## [3.14.0] - 2019-05-09

## [3.13.1] - 2019-05-09

## [3.13.0] - 2019-05-08

### Changed

- Made query string param serialization `repeat` by default. This means arrays, which were previously encoded as e.g. `files[]=a&files[]=b` become `files=a&files=b`.

### Added

- Implement Settings client for `vtex.settings-server`.

## [3.12.1] - 2019-05-08

## [3.12.0] - 2019-05-07

### Added

- Add "buildFeatures" inside "manifest".

## [3.11.0] - 2019-05-06

## [3.10.0] - 2019-05-06

### Changed

- Add caller, params and query to error logs
- Relax error typing and capture stack automatically

## [3.9.2] - 2019-05-02

### Fixed

- Usage of `routes.Links` function in the `routes.Unlink` function (Apps client)

## [3.9.1] - 2019-05-02

## [3.9.0] - 2019-04-30

## [3.8.2-beta] - 2019-04-30

## [3.8.1] - 2019-04-26

## [3.8.0] - 2019-04-26

### Changed

- Add `adminUserAuthToken` (from cookie `VtexIdclientAutCookie`) and `storeUserAuthToken` (from cookie `VtexIdclientAutCookie_${account}`) to `ctx.vtex`

## [3.7.0] - 2019-04-25

### Changed

- Add LicenseManager client
- Add Session client
- Restructure HttpClient
- Implement IOClient
- Implement IOClient subclasses
- Port all native clients
- Reduced default timeout to 1s
- Added default `params` to HttpClient

## [3.6.1] - 2019-04-24

## [3.6.0] - 2019-04-24

## [3.5.2-beta] - 2019-04-24

## [3.5.1] - 2019-04-23

## [3.5.0] - 2019-04-22

### Added

- Add native error and warning classes and log these appropriately.

## [3.4.4] - 2019-04-22

## [3.4.4-beta] - 2019-04-19

### Changed

- Fixed host reference for Billing metrics sending

## [3.4.3] - 2019-04-18

## [3.4.2] - 2019-04-18

## [3.4.1] - 2019-04-18

## [3.4.0] - 2019-04-18

## [3.3.1] - 2019-04-16

## [3.3.1-beta.1] - 2019-04-17

## [3.3.1-beta.0] - 2019-04-17

## [3.3.1-beta] - 2019-04-15

## [3.3.0] - 2019-04-11

### Added

- Messages `saveTransalation` method

## [3.2.4] - 2019-04-10

## [3.2.3] - 2019-04-10

## [3.2.2] - 2019-04-09

## [3.2.1] - 2019-04-09

### Fixed

- Security hole as `Authorization`, `Proxy-Authorization` and `vtexIdClientAutCookie` headers were being sent to graphql errors

## [3.2.0] - 2019-04-09

## [3.2.0-beta.7] - 2019-04-09

## [3.2.0-beta.6] - 2019-04-09

## [3.2.0-beta.5] - 2019-04-09

## [3.2.0-beta.4] - 2019-04-08

## [3.2.0-beta.3] - 2019-04-08

### Added

- `segment.getSegment` and `segment.getSegmentByToken`

## [3.2.0-beta.2] - 2019-04-08

## [3.2.0-beta.1] - 2019-04-08

## [3.2.0-beta.0] - 2019-04-08

## [3.2.0-beta] - 2019-04-08

### Added

- Option `forceMaxAge` option to `HttpClient` request config. This allows certain requests to forceably be cached for `forceMaxAge` seconds, regardless of the responses' `Cache-control` header, as long as status is 200.

## [3.1.2] - 2019-04-09

### Changed

- Makes errors compliant to [apollo's specification](https://www.apollographql.com/docs/apollo-server/features/errors)
- Makes it possible to use graphql handler with a scary warning

## [3.1.2-beta.0] - 2019-04-08

## [3.1.2-beta] - 2019-04-08

## [3.1.0] - 2019-04-04

## [3.1.0-beta.0] - 2019-04-04

## [3.1.0-beta] - 2019-04-04

## [3.0.16] - 2019-04-04

## [3.0.16-beta.0] - 2019-04-04

## [3.0.16-beta] - 2019-04-04

## [3.0.15] - 2019-04-03

### Changed

- Added type inference for `IOClients.getOrSet` method. No need to type instantiations like

```ts
export class IOClients {
  public get logger(): Logger {
    return this.getOrSet('logger', Logger)
  }
}
```

You can just do

```ts
export class IOClients {
  public get logger() {
    return this.getOrSet('logger', Logger)
  }
}
```

instead

## [3.0.14] - 2019-04-03

## [3.0.14-beta.0] - 2019-04-03

## [3.0.14-beta] - 2019-04-03

## [3.0.13] - 2019-04-03

## [3.0.12] - 2019-04-02

## [3.0.11] - 2019-03-31

## [3.0.11-beta.7] - 2019-03-29

## [3.0.11-beta.6] - 2019-03-29

## [3.0.11-beta.5] - 2019-03-29

## [3.0.11-beta.4] - 2019-03-29

## [3.0.11-beta.3] - 2019-03-29

## [3.0.11-beta.2] - 2019-03-29

## [3.0.11-beta.1] - 2019-03-29

## [3.0.11-beta.0] - 2019-03-29

## [3.0.11-beta] - 2019-03-29

## [3.0.10] - 2019-03-28

## [3.0.9] - 2019-03-28

### Changed

- Expose more details on all errors (e.g. operationId, requestId, query source, variables).

## [3.0.9-beta.4] - 2019-03-28

## [3.0.9-beta.3] - 2019-03-28

## [3.0.9-beta.2] - 2019-03-28

## [3.0.9-beta.1] - 2019-03-28

## [3.0.9-beta.0] - 2019-03-28

## [3.0.9-beta] - 2019-03-28

## [3.0.8] - 2019-03-28

## [3.0.8-beta] - 2019-03-28

### Changed

- Conflate 2xx and 5xx status labels to success and error respectively.
- Adds `graphql-operation` metric that considers if _any_ resolver had errors, with two dimensions: success and error
- Logs each resolver error individually and add request information
- Stop logging successful route handlers
- Add single hardcoded retry for sending error logs
- Prepare for `graphql` route id (deprecating `__graphql`)
- Disallow declaration of `graphql` as http route handler

## [3.0.7-beta.0] - 2019-03-28

## [3.0.7] - 2019-03-28

### Added

- tsErrorsAsWarnings parameter for the `linkApp` and `relinkApp` methods of the `Builder` class

## [3.0.7-beta] - 2019-03-28

## [3.0.6] - 2019-03-28

## [3.0.5] - 2019-03-27

## [3.0.4] - 2019-03-27

## [3.0.3] - 2019-03-27

### Added

- Implement new Service() wrapper and port graphql route generation from service-runtime-node.

## [3.0.3-beta.4] - 2019-03-27

## [3.0.3-beta.3] - 2019-03-27

## [3.0.3-beta.2] - 2019-03-27

## [3.0.3-beta.1] - 2019-03-26

## [3.0.3-beta.0] - 2019-03-26

## [3.0.1-beta.28] - 2019-03-26

## [3.0.1-beta.27] - 2019-03-26

## [3.0.1-beta.26] - 2019-03-26

## [3.0.1-beta.25] - 2019-03-26

## [3.0.1-beta.24] - 2019-03-26

## [3.0.1-beta.23] - 2019-03-26

## [3.0.1-beta.22] - 2019-03-26

## [3.0.1-beta.21] - 2019-03-26

## [3.0.1-beta.20] - 2019-03-25

## [3.0.1-beta.19] - 2019-03-25

## [3.0.1-beta.18] - 2019-03-25

## [3.0.1-beta.17] - 2019-03-21

## [3.0.1-beta.16] - 2019-03-21

## [3.0.1-beta.15] - 2019-03-21

## [3.0.1-beta.14] - 2019-03-21

## [3.0.1-beta.13] - 2019-03-20

## [3.0.1-beta.12] - 2019-03-20

## [3.0.1-beta.11] - 2019-03-20

## [3.0.0-beta.16] - 2019-03-20

## [3.0.0-beta.15] - 2019-03-20

## [3.0.0-beta.14] - 2019-03-20

## [3.0.0-beta.13] - 2019-03-20

## [3.0.0-beta.12] - 2019-03-20

## [3.0.0-beta.11] - 2019-03-20

## [3.0.0-beta.10] - 2019-03-19

## [3.0.0-beta.9] - 2019-03-19

## [3.0.0-beta.8] - 2019-03-18

## [3.0.0-beta.7] - 2019-03-18

## [3.0.0-beta.6] - 2019-03-18

## [3.0.0-beta.5] - 2019-03-18

## [3.0.0-beta.4] - 2019-03-17

## [3.0.0-beta.3] - 2019-03-17

## [3.0.0-beta.2] - 2019-03-17

## [3.0.0-beta.1] - 2019-03-17

## [3.0.0-beta.0] - 2019-03-17

## [3.0.0-beta] - 2019-03-17

## [2.4.0] - 2019-03-16

## [2.3.6] - 2019-03-16

## [2.3.6-beta] - 2019-03-16

## [2.3.5] - 2019-03-14

## [2.3.4] - 2019-03-14

### Changed

- Add production dimension to all metrics

## [2.3.3] - 2019-03-13

## [2.3.2] - 2019-03-13

## [2.3.1] - 2019-03-13

## [2.3.0] - 2019-03-13

## [2.3.0-beta.3] - 2019-03-13

## [2.3.0-beta.2] - 2019-03-13

## [2.3.0-beta.1] - 2019-03-13

## [2.3.0-beta.0] - 2019-03-13

## [2.3.0-beta] - 2019-03-13

### Changed

- Remove production from MetricsAccumulator methods and add cacheHits

## [2.2.0] - 2019-03-12

## [2.2.0-beta.0] - 2019-03-11

## [2.2.0-beta] - 2019-03-11

### Changed

- Only retry safe requests
- Add metrics for proxy timeout and retries
- Add `metric` config to clients requests
- Add `concurrency` option to HttpClient to limit amount of parallel requests

## [2.1.0] - 2019-03-07

### Changed

- Change default retry behaviour to only retry on network error once
- Accept retryConfig on each HttpClient

## [2.1.0-beta.1] - 2019-02-28

## [2.1.0-beta.0] - 2019-02-27

## [2.1.0-beta] - 2019-02-27

### Changed

- Added new required parameter to create a new workspace on Workspaces API.

## [1.9.0] - 2019-02-25

### Added

- Functions that call new Apps API for dependency resolution.

## [1.8.3] - 2019-02-22

### Changed

- Updated App Manifest types

## [1.8.2] - 2019-02-22

## [1.8.2-beta] - 2019-02-22

## [1.8.1] - 2019-02-13

## [1.8.1-beta] - 2019-02-12

## [1.8.0-beta] - 2019-02-12

## [1.7.0] - 2019-02-12

### Added

- segmentToken and sessionToken to IOContext type definition

## [1.7.0-beta] - 2019-02-12

## [1.6.0] - 2019-01-25

## [1.5.4] - 2019-01-17

### Added

- protected context in favor of private one in IODataSource

## [1.5.3] - 2019-01-11

### Fixed

- IOContext types mismatch with service-runtime-node

## [1.5.2] - 2018-11-27

## [1.5.1] - 2018-10-31

## [1.5.0] - 2018-10-31

## [1.4.0] - 2018-10-29

## [1.2.0] - 2018-10-16

## [1.1.0] - 2018-10-15

## [1.0.0] - 2018-10-08

## [1.0.0-beta.16] - 2018-10-08

## [1.0.0-beta.15] - 2018-09-28

## [1.0.0-beta.14] - 2018-09-25

## [1.0.0-beta.13] - 2018-09-25

## [1.0.0-beta.12] - 2018-09-25

## [1.0.0-beta.11] - 2018-09-25

## [1.0.0-beta.10] - 2018-09-25

## [1.0.0-beta.9] - 2018-09-25

## [1.0.0-beta] - 2018-09-21

### Added

- Added changelog :grimacing:.
- Added MetricsAccumulator
- Added Metrics support in HttpClient

### Changed

- Lint the whole damn thing.
- Update all dependencies.

## [0.48.0] - 2018-09-21

### Changed

- `HttpClient` now adds `'Accept-Encoding': 'gzip'` header by default.


[7.0.0]: https://github.com/vtex/node-vtex-api/compare/v7.0.0...v6.49.6
[6.45.15]: https://github.com/vtex/node-vtex-api/compare/v6.45.14...v6.45.15
[6.45.14]: https://github.com/vtex/node-vtex-api/compare/v6.45.13...v6.45.14
[6.45.13]: https://github.com/vtex/node-vtex-api/compare/v6.45.12...v6.45.13

[6.45.22]: https://github.com/vtex/node-vtex-api/compare/v6.45.21...v6.45.22
[6.45.21]: https://github.com/vtex/node-vtex-api/compare/v6.45.21-beta.2...v6.45.21
[6.45.21-beta.2]: https://github.com/vtex/node-vtex-api/compare/v6.45.21-beta.1...v6.45.21-beta.2
[6.45.21-beta.1]: https://github.com/vtex/node-vtex-api/compare/v6.45.21-beta.0...v6.45.21-beta.1
[6.45.21-beta.0]: https://github.com/vtex/node-vtex-api/compare/v6.45.21-beta...v6.45.21-beta.0
[6.45.21-beta]: https://github.com/vtex/node-vtex-api/compare/v6.45.20...v6.45.21-beta
[6.45.20]: https://github.com/vtex/node-vtex-api/compare/v6.45.20-beta...v6.45.20
[6.45.20-beta]: https://github.com/vtex/node-vtex-api/compare/v6.45.19...v6.45.20-beta
