{"id":15655901,"url":"https://github.com/fcmam5/nest-problem-details","last_synced_at":"2026-05-11T23:04:46.605Z","repository":{"id":50012611,"uuid":"371474396","full_name":"Fcmam5/nest-problem-details","owner":"Fcmam5","description":"A Nest.js HTTP exceptions filter returning RFC 9457 / RFC-7807 responses","archived":false,"fork":false,"pushed_at":"2026-05-11T22:30:56.000Z","size":556,"stargazers_count":46,"open_issues_count":3,"forks_count":1,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2026-05-11T22:31:08.178Z","etag":null,"topics":["api-rest","hacktoberfest","nest","nestjs","nodejs","problem-details","restful-api","rfc-7807","rfc-9457"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/nest-problem-details-filter","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Fcmam5.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"ko_fi":"fcmam5","buy_me_a_coffee":"ngcmbf6"}},"created_at":"2021-05-27T18:53:00.000Z","updated_at":"2026-05-11T21:41:35.000Z","dependencies_parsed_at":"2023-10-02T01:01:28.292Z","dependency_job_id":"d935cdc6-a4d5-409f-a7e3-e0545c714e05","html_url":"https://github.com/Fcmam5/nest-problem-details","commit_stats":{"total_commits":21,"total_committers":2,"mean_commits":10.5,"dds":0.04761904761904767,"last_synced_commit":"4530cfdc2e647d29c66d5bddfc9c4a2c33aa6e33"},"previous_names":["fcmam5/nest-problem-details","fcmam5/nest-http-problem-details"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/Fcmam5/nest-problem-details","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fcmam5%2Fnest-problem-details","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fcmam5%2Fnest-problem-details/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fcmam5%2Fnest-problem-details/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fcmam5%2Fnest-problem-details/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Fcmam5","download_url":"https://codeload.github.com/Fcmam5/nest-problem-details/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fcmam5%2Fnest-problem-details/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32916340,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-11T17:09:15.040Z","status":"ssl_error","status_checked_at":"2026-05-11T17:08:45.420Z","response_time":120,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-rest","hacktoberfest","nest","nestjs","nodejs","problem-details","restful-api","rfc-7807","rfc-9457"],"created_at":"2024-10-03T13:00:46.203Z","updated_at":"2026-05-11T23:04:46.599Z","avatar_url":"https://github.com/Fcmam5.png","language":"TypeScript","funding_links":["https://ko-fi.com/fcmam5","https://buymeacoffee.com/ngcmbf6"],"categories":[],"sub_categories":[],"readme":"# NestHttpProblemDetails (RFC 9457 / RFC 7807)\n\n[![npm version](https://img.shields.io/npm/v/nest-problem-details-filter)](https://www.npmjs.com/package/nest-problem-details-filter)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Main pipeline](https://github.com/Fcmam5/nest-problem-details/actions/workflows/main.yml/badge.svg)](https://github.com/Fcmam5/nest-problem-details/actions/workflows/main.yml) ![CodeRabbit Pull Request Reviews](https://img.shields.io/coderabbit/prs/github/Fcmam5/nest-problem-details?utm_source=oss\u0026utm_medium=github\u0026utm_campaign=Fcmam5%2Fnest-problem-details\u0026labelColor=171717\u0026color=FF570A\u0026link=https%3A%2F%2Fcoderabbit.ai\u0026label=CodeRabbit+Reviews) [![Coverage Status](https://coveralls.io/repos/github/Fcmam5/nest-problem-details/badge.svg?branch=develop)](https://coveralls.io/github/Fcmam5/nest-problem-details?branch=develop)\n\nMake NestJS return [RFC 9457](https://datatracker.ietf.org/doc/html/rfc9457) (formerly [RFC 7807](https://datatracker.ietf.org/doc/html/rfc7807))-compliant **Problem Details for HTTP APIs**.\n\n\u003e Keywords: RFC 9457, RFC 7807, Problem Details, HTTP API errors, NestJS, application/problem+json.\n\n## Features\n\n- **RFC 9457 / RFC 7807 Compliant** - Standardized Problem Details for HTTP APIs\n- **`Retry-After` header support** - Per RFC 9110 §10.2.3, opt-in via `ProblemDetailsException` or any `HttpException` subclass exposing `retryAfter`\n- **Swagger / OpenAPI decorator (optional)** - `@ApiProblemResponse()` via `nest-problem-details-filter/swagger` subpath auto-documents `application/problem+json` without forcing `@nestjs/swagger` on users who don't need it\n- **Docs / runtime alignment** - Shared resolvers guarantee OpenAPI examples match the wire format (status-to-type map, title fallbacks, base-URI resolution)\n- **Flexible validation error handling** - Three approaches from zero-config to full RFC 9457 JSON Pointer compliance (see [Validation errors](#validation-errors))\n- **Zero runtime dependencies** - Core filter has no runtime dependencies\n\n\u003c!-- omit from toc --\u003e \n## Table of contents:\n\n- [NestHttpProblemDetails (RFC 9457 / RFC 7807)](#nesthttpproblemdetails-rfc-9457--rfc-7807)\n  - [Features](#features)\n  - [Usage](#usage)\n    - [As a global filter](#as-a-global-filter)\n      - [Suppressing `detail` in production](#suppressing-detail-in-production)\n    - [As a module](#as-a-module)\n    - [Throwing exceptions](#throwing-exceptions)\n      - [`Retry-After` header](#retry-after-header)\n    - [Swagger / OpenAPI](#swagger--openapi)\n    - [Example response](#example-response)\n    - [OpenAPI schema](#openapi-schema)\n    - [Documentation](#documentation)\n    - [Validation errors](#validation-errors)\n      - [Approach 1 — Zero config](#approach-1--zero-config)\n      - [Approach 2 — Field-map via `BadRequestException`](#approach-2--field-map-via-badrequestexception)\n      - [Approach 3 — `ProblemDetailsException` (field-map or RFC pointer array)](#approach-3--problemdetailsexception-field-map-or-rfc-pointer-array)\n  - [Development](#development)\n    - [Tests](#tests)\n    - [Mock app](#mock-app)\n    - [Lint \\\u0026 format](#lint--format)\n    - [Build](#build)\n  - [Resources](#resources)\n  - [Contributing](#contributing)\n  - [Security](#security)\n  - [License](#license)\n\n## Usage\n\nInstall the library with:\n\n```bash\n# npm\nnpm i nest-problem-details-filter\n\n# or, pnpm\npnpm i nest-problem-details-filter\n```\n\nThen check [NestJS documentation](https://docs.nestjs.com/exception-filters#binding-filters) on how to bind exception filters.\n\n### As a global filter\n\nIn `main.ts` add `app.useGlobalFilters(new HttpExceptionFilter(app.get(HttpAdapterHost)))` as the following\n\n```ts\nimport { NestFactory, HttpAdapterHost } from '@nestjs/core';\nimport { HttpExceptionFilter } from 'nest-problem-details-filter';\nimport { AppModule } from './app/app.module';\n\nasync function bootstrap() {\n  ...\n\n  const app = await NestFactory.create(AppModule);\n\n  app.useGlobalFilters(new HttpExceptionFilter(app.get(HttpAdapterHost)));\n\n  ...\n}\n```\n\nNote that the `app.get(HttpAdapterHost)` argument is needed because the `HttpExceptionFilter` works for any kind of [NestJS HTTP adapter](https://docs.nestjs.com/faq/http-adapter)!\n\n`HttpExceptionFilter` accepts a base URI for if you want to return absolute URIs for your problem types, e.g:\n\n```ts\n  app.useGlobalFilters(new HttpExceptionFilter(app.get(HttpAdapterHost), 'https://example.org'));\n```\n\nWill return:\n\n```json\n{\n  \"type\": \"https://example.org/not-found\",\n  \"title\": \"Dragon not found\",\n  \"status\": 404,\n  \"detail\": \"Could not find any dragon with ID: 99\"\n}\n```\n\n#### Suppressing `detail` in production\n\n\u003e **Recommended for production deployments.** The `detail` field can expose internal error messages to clients. Use the `suppressDetail` option to omit it — either always, or based on custom logic.\n\nWhen you use Nest's built-in exceptions (e.g. `NotFoundException`, `BadRequestException`) or throw a plain `HttpException` without a custom `ProblemDetailsException`, the filter maps the exception's built-in message directly into `detail`. This means stack traces, database error strings, or other sensitive messages can leak to the client without any extra effort on your part.\n\nFor example, throwing `new InternalServerErrorException('Database connection timeout')` will produce:\n\n```json\n{\n  \"type\": \"internal-server-error\",\n  \"title\": \"Internal Server Error\",\n  \"status\": 500,\n  \"detail\": \"Database connection timeout\"\n}\n```\n\nThe `suppressDetail` option accepts either a boolean or a callback:\n\n```ts\nimport { HttpExceptionFilter, SuppressDetail } from 'nest-problem-details-filter';\n\n// Always suppress detail on every response:\napp.useGlobalFilters(\n  new HttpExceptionFilter(app.get(HttpAdapterHost), '', undefined, true),\n);\n\n// Or suppress selectively with a callback:\napp.useGlobalFilters(\n  new HttpExceptionFilter(\n    app.get(HttpAdapterHost),\n    '',\n    undefined,\n    ({ status }) =\u003e status \u003e= 500,\n  ),\n);\n```\n\nWith the callback above, `detail` is stripped from all 5xx responses while remaining visible on 4xx responses (where it is typically safe and useful, e.g. validation messages). See [`docs/usage.md`](./docs/usage.md#suppressing-detail-in-production) for the full API including the `SUPPRESS_DETAIL_KEY` DI token for module usage.\n\n### As a module\n\nThe library can be imported as a module, and then can use `HTTP_EXCEPTION_FILTER_KEY` to set `APP_FILTER`\n\n```typescript\nimport { APP_FILTER } from '@nestjs/core';\nimport {\n  NestProblemDetailsModule,\n  HTTP_EXCEPTION_FILTER_KEY,\n} from 'nest-problem-details-filter';\n\n@Module({\n  imports: [NestProblemDetailsModule],\n  ...\n  providers: [\n    {\n      provide: APP_FILTER,\n      useExisting: HTTP_EXCEPTION_FILTER_KEY,\n    },\n    ...\n  ],\n})\n```\n\nSee:\n\n- [Custom providers: Alias providers (`useExisting`)](https://docs.nestjs.com/fundamentals/custom-providers#alias-providers-useexisting)\n- [Using `APP_FILTER` token](https://docs.nestjs.com/exception-filters#binding-filters)\n\n### Throwing exceptions\n\nTo produce a Problem Details response, throw either:\n\n- `ProblemDetailsException` — accepts a flat RFC 9457 payload directly (recommended for new code), or\n- a native `HttpException` (`NotFoundException`, `ForbiddenException`, custom subclasses, ...) — the filter recognizes the standard Nest payload shape.\n\n```ts\nimport { ProblemDetailsException } from 'nest-problem-details-filter';\n\nthrow new ProblemDetailsException({\n  type: 'out-of-credit',\n  title: 'You do not have enough credit.',\n  status: 403,\n  detail: 'Your balance is 30, but that costs 50.',\n  balance: 30,\n});\n```\n\n`type` is optional; when omitted, the filter resolves it from its status-to-type map (or falls back to `about:blank`, per RFC 9457 §4.2.1).\n\n#### `Retry-After` header\n\nPass `retryAfter` as a number (delta-seconds), `Date` (absolute), or pre-formatted string on any retriable error response. The filter sets the `Retry-After` header per [RFC 9110 §10.2.3](https://datatracker.ietf.org/doc/html/rfc9110#section-10.2.3) and strips the value from the JSON body. Common cases are `429 Too Many Requests` (rate limiting) and `503 Service Unavailable` (maintenance / backpressure), but the library imposes no status restriction.\n\n```ts\nthrow new ProblemDetailsException({\n  type: 'rate-limit-exceeded',\n  title: 'Too Many Requests',\n  status: 429,\n  detail: 'Quota exceeded.',\n  retryAfter: 3600, // → \"Retry-After: 3600\"\n});\n```\n\nThe filter reads `retryAfter` from any `HttpException` instance (duck-typed), so you can extend Nest's built-in exceptions instead:\n\n```ts\nimport { ServiceUnavailableException } from '@nestjs/common';\nimport { RetryAfterValue } from 'nest-problem-details-filter';\n\nclass MaintenanceException extends ServiceUnavailableException {\n  constructor(public readonly retryAfter: RetryAfterValue) {\n    super('Maintenance window in progress.');\n  }\n}\n\nthrow new MaintenanceException(300); // → \"Retry-After: 300\"\n```\n\nSee [`docs/usage.md`](./docs/usage.md) for the full set of examples (including the native `HttpException` form and `Retry-After` details).\n\n### Swagger / OpenAPI\n\nIf you use `@nestjs/swagger`, import `@ApiProblemResponse` from the `nest-problem-details-filter/swagger` subpath to document `application/problem+json` responses:\n\n```ts\nimport { ApiProblemResponse } from 'nest-problem-details-filter/swagger';\n\n@Controller('dragons')\nexport class DragonsController {\n  @Get(':id')\n  @ApiProblemResponse({ status: 404, type: 'not-found', title: 'Dragon not found' })\n  @ApiProblemResponse({ status: 429, type: 'rate-limit-exceeded', retryAfter: 3600 })\n  findOne(@Param('id') id: string) { ... }\n}\n```\n\nThe decorator is **stackable**: apply once per status code. It auto-generates:\n\n- The canonical `ProblemDetails` schema under `content['application/problem+json']`\n- A response example with `type`, `title`, and `status`\n- The `Retry-After` header schema when `retryAfter` is provided\n\nIf your filter is configured with a `BASE_PROBLEMS_URI`, pass the same value as `baseUri` so the OpenAPI docs match the runtime wire format:\n\n```ts\n@ApiProblemResponse({ status: 404, type: 'not-found', baseUri: 'https://api.example.com/problems' })\n// OpenAPI example type → \"https://api.example.com/problems/not-found\"\n```\n\nLikewise, if you override the default status-to-type map via `HTTP_ERRORS_MAP_KEY`, pass the same map as `httpErrors`:\n\n```ts\n@ApiProblemResponse({ status: 404, httpErrors: { 404: 'missing-resource' } })\n// OpenAPI example type → \"missing-resource\" (not the built-in default)\n```\n\nBy default the decorator inlines the schema in every response so it works out of the box. If you want a named `ProblemDetails` entry in Swagger UI's **Schemas** section, call `addProblemDetailsSchema()` after creating the document:\n\n```ts\nimport { addProblemDetailsSchema } from 'nest-problem-details-filter/swagger';\n\nconst document = SwaggerModule.createDocument(app, builder);\naddProblemDetailsSchema(document);\n```\n\nSee [`docs/usage.md`](./docs/usage.md) for the full decorator API (custom schemas, explicit `examples`, `headers`, etc.).\n\n\u003e **Preview**: copy [`tests/fixtures/swagger-document.json`](./tests/fixtures/swagger-document.json) and paste it into [editor.swagger.io](https://editor.swagger.io) to see how the decorator renders in Swagger UI.\n\n### Example response\n\n```bash\n# curl -i http://localhost:3333/api/dragons/99?title=true\u0026details=true\n\nHTTP/1.1 404 Not Found\nContent-Type: application/problem+json; charset=utf-8\nContent-Length: 109\n...\n\n{\n  \"type\": \"not-found\",\n  \"title\": \"Dragon not found\",\n  \"status\": 404,\n  \"detail\": \"Could not find any dragon with ID: 99\"\n}\n```\n\n### OpenAPI schema\n\nFull JSON Schema and OpenAPI 3.0 definitions are available in [`docs/openapi.md`](./docs/openapi.md).\n\n```yaml\ncomponents:\n  schemas:\n    ProblemDetails:\n      type: object\n      description: \u003e\n        Problem Details object as defined by RFC 9457 (formerly RFC 7807).\n        Returned with media type `application/problem+json`.\n      required:\n        - type\n        - title\n        - status\n      properties:\n        type:\n          type: string\n          format: uri-reference\n          maxLength: 1024\n          default: 'about:blank'\n          description: \u003e\n            A URI reference that identifies the problem type. Per RFC 9457\n            this is a URI-reference (may be relative). Defaults to\n            \"about:blank\" when not provided.\n          example: 'about:blank'\n        title:\n          type: string\n          maxLength: 1024\n          description: \u003e\n            A short, human-readable summary of the problem type. It should\n            not change from occurrence to occurrence of the problem, except\n            for purposes of localization.\n          example: 'Not Found'\n        status:\n          type: integer\n          format: int32\n          minimum: 100\n          maximum: 599\n          description: \u003e\n            The HTTP status code generated by the origin server for this\n            occurrence of the problem.\n          example: 404\n        detail:\n          type: string\n          maxLength: 4096\n          description: \u003e\n            A human-readable explanation specific to this occurrence of the\n            problem.\n          example: 'Could not find any dragon with ID: 99'\n        instance:\n          type: string\n          format: uri-reference\n          maxLength: 1024\n          description: \u003e\n            A URI reference that identifies the specific occurrence of the\n            problem.\n          example: '/dragons/99'\n      additionalProperties: true\n```\n\n### Documentation\n\nCheck the [`docs/`](./docs/) folder for usage examples and the [OpenAPI schema](./docs/openapi.md).\n\n### Validation errors\n\nThe filter ships three flexible approaches for surfacing `class-validator` validation errors — all using the `errors` RFC 9457 extension member (not `detail`, per §3.1.4).\n\n\u003e **Peer dependency:** the helpers below require `class-validator` (already a NestJS validation standard). Install it alongside the filter:\n\u003e ```bash\n\u003e npm install class-validator\n\u003e ```\n\n#### Approach 1 — Zero config\n\nJust register `ValidationPipe` + `HttpExceptionFilter`. The filter detects the `string[]` message Nest emits and moves it to `errors` automatically ([why not using `details` as array?](./docs/usage.md#validation-error-handling)):\n\n```json\n{\n  \"type\": \"bad-request\",\n  \"title\": \"Bad Request\",\n  \"status\": 400,\n  \"detail\": \"Bad Request\",\n  \"errors\": [\n    \"username must be longer than or equal to 3 characters\",\n    \"email must be an email\"\n  ]\n}\n```\n\n#### Approach 2 — Field-map via `BadRequestException`\n\nUse `mapClassValidatorErrors()` in `exceptionFactory` for per-field grouping with dotted-path nesting:\n\n```ts\nimport { mapClassValidatorErrors } from 'nest-problem-details-filter/class-validator-mappers';\n\nnew ValidationPipe({\n  exceptionFactory: (e) =\u003e\n    new BadRequestException({ message: 'Validation failed', errors: mapClassValidatorErrors(e) }),\n})\n```\n\n```json\n{\n  \"type\": \"bad-request\",\n  \"title\": \"Validation failed\",\n  \"status\": 400,\n  \"errors\": {\n    \"email\": [\"must be an email\"],\n    \"address.street\": [\"should not be empty\"]\n  }\n}\n```\n\n#### Approach 3 — `ProblemDetailsException` (field-map or RFC pointer array)\n\nUse `toValidationProblemDetails()` for a one-liner that returns a `ProblemDetailsException` directly:\n\n```ts\nimport { toValidationProblemDetails } from 'nest-problem-details-filter/class-validator-mappers';\n\n// Field-map (default)\nnew ValidationPipe({ exceptionFactory: (e) =\u003e toValidationProblemDetails(e) })\n\n// RFC 9457 JSON Pointer array\nnew ValidationPipe({ exceptionFactory: (e) =\u003e toValidationProblemDetails(e, { usePointers: true }) })\n```\n\nPointer format output:\n\n```json\n{\n  \"type\": \"validation-error\",\n  \"title\": \"Validation Failed\",\n  \"status\": 400,\n  \"errors\": [\n    { \"detail\": \"must be an email\", \"pointer\": \"#/email\" },\n    { \"detail\": \"should not be empty\", \"pointer\": \"#/address/street\" }\n  ]\n}\n```\n\nSee [`docs/usage.md`](./docs/usage.md#validation-error-handling) for the full walkthrough including nested objects, custom validators, and all options.\n\n## Development\n\n### Tests\n\nThe library includes reusable integration tests that run against real NestJS applications backed by **Express** and **Fastify** to verify that the filter works correctly with each HTTP adapter.\n\n```bash\n# Run all tests (unit + integration)\nnpm test\n\n# Watch mode\nnpm run test:watch\n\n# With coverage\nnpm run test:cov\n```\n\n### Mock app\n\nA local NestJS server is available for manual testing and exploring the Swagger / OpenAPI output. It reuses the same controllers as the integration tests, decorated with `@ApiProblemResponse` so the generated spec includes `application/problem+json` response examples.\n\n```bash\n# Start the mock app (reuses the same controllers as the integration tests)\nnpm run start:mock\n```\n\n- API endpoints: `http://localhost:3000/api/test/...`\n- Swagger UI: `http://localhost:3000/api`\n\nThe mock app automatically restarts when you edit `tests/mock-main.ts` or `tests/test-app.module.ts`.\n\n### Lint \u0026 format\n\n```bash\nnpm run lint        # ESLint with auto-fix\nnpm run format      # Prettier (src/**/*.ts)\n```\n\n### Build\n\n```bash\nnpm run build       # Compiles src/ → dist/ via nest build\n```\n\n## Resources\n\n- [IETF RFC 9457: Problem Details for HTTP APIs](https://datatracker.ietf.org/doc/html/rfc9457) (obsoletes RFC 7807)\n- [IETF RFC 7807: Problem Details for HTTP APIs (obsoleted)](https://datatracker.ietf.org/doc/html/rfc7807)\n- [Zalando RESTful API:](https://opensource.zalando.com/restful-api-guidelines/#176)\n- And of course, Nest's awesome community:\n  - [Exception filters](https://docs.nestjs.com/exception-filters#exception-filters-1)\n  - [@kamilmysliwiec's comment](https://github.com/nestjs/nest/issues/2953#issuecomment-531678153)\n\n## Contributing\n\nWe welcome contributions! Please see our [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines on how to contribute to this project.\n\n## Security\n\nFor security-related issues, please review our [SECURITY.md](./SECURITY.md) for responsible disclosure guidelines.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffcmam5%2Fnest-problem-details","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffcmam5%2Fnest-problem-details","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffcmam5%2Fnest-problem-details/lists"}