all repos

onasty @ 10fe031

a one-time notes service
55 files changed, 1516 insertions(+), 2 deletions(-)
api: add openapi docs (#181)

* api: setup swagger

* api: document /auth

* chore(ci): setup linting for openapi

* api: add /me and /ping routes

* api: document /note

* api: remove redocly preview task

* api: update openapi.yml structure

* chore: add api:lint to general lint suite

* chore: add swagger ui to CORS
Author: Oleksandr Smirnov olexsmir@gmail.com
Committed by: GitHub noreply@github.com
Committed at: 2025-09-06 13:21:49 +0300
Parent: dc18a80
jump to
M .env.example
A .github/workflows/open_api.yml
M Taskfile.yml
A api/.gitignore
A api/Taskfile.yml
A api/bun.lock
A api/components/requests/ChangeEmail.yml
A api/components/requests/ChangePassword.yml
A api/components/requests/CreateNote.yml
A api/components/requests/EmailRequest.yml
A api/components/requests/Logout.yml
A api/components/requests/RefreshTokens.yml
A api/components/requests/ResetPassword.yml
A api/components/requests/Signin.yml
A api/components/requests/Signup.yml
A api/components/responses/ErrorResponse.yml
A api/components/responses/Me.yml
A api/components/responses/NoteCreated.yml
A api/components/responses/NoteGet.yml
A api/components/responses/NoteGetAll.yml
A api/components/responses/NoteMetadata.yml
A api/components/responses/NoteNotFound.yml
A api/components/responses/NoteNotFoundMaybeWithContent.yml
A api/components/responses/UserNotFound.yml
A api/components/schemas/Error.yml
A api/components/schemas/JwtTokens.yml
A api/components/schemas/Note.yml
A api/openapi.yml
A api/package.json
A api/paths/auth/change-email-token.yml
A api/paths/auth/change-email.yml
A api/paths/auth/change-password.yml
A api/paths/auth/logout-all.yml
A api/paths/auth/logout.yml
A api/paths/auth/me.yml
A api/paths/auth/oauth-provider-callback.yml
A api/paths/auth/oauth-provider.yml
A api/paths/auth/refresh-tokens.yml
A api/paths/auth/resend-verification-email.yml
A api/paths/auth/reset-password-token.yml
A api/paths/auth/reset-password.yml
A api/paths/auth/signin.yml
A api/paths/auth/signup.yml
A api/paths/auth/verify-token.yml
A api/paths/note/note-read.yml
A api/paths/note/note-slug-expires.yml
A api/paths/note/note-slug-meta.yml
A api/paths/note/note-slug-password.yml
A api/paths/note/note-slug-view.yml
A api/paths/note/note-slug.yml
A api/paths/note/note-unread.yml
A api/paths/note/note.yml
A api/paths/ping.yml
A api/redocly.yml
M docker-compose.yml
M .env.example
···
        7
        7
         PASSWORD_SALT=onasty

      
        8
        8
         NOTE_PASSWORD_SALT=secret

      
        9
        9
         

      
        10
        
        -CORS_ALLOWED_ORIGINS=http://localhost:3000,http://onasty.localhost,http://localhost:1234

      
        
        10
        +CORS_ALLOWED_ORIGINS=http://localhost:3000,http://onasty.localhost,http://localhost:1234,http://localhost:8080

      
        11
        11
         CORS_MAX_AGE=12h

      
        12
        12
         

      
        13
        13
         METRICS_ENABLED=true

      
A .github/workflows/open_api.yml
···
        
        1
        +name: openapi

      
        
        2
        +

      
        
        3
        +on:

      
        
        4
        +  workflow_dispatch:

      
        
        5
        +  push:

      
        
        6
        +    branches: [main]

      
        
        7
        +    paths: ["api/**"]

      
        
        8
        +  pull_request:

      
        
        9
        +    paths: ["api/**"]

      
        
        10
        +

      
        
        11
        +

      
        
        12
        +jobs:

      
        
        13
        +  release:

      
        
        14
        +    runs-on: ubuntu-latest

      
        
        15
        +    defaults:

      
        
        16
        +      run:

      
        
        17
        +        working-directory: web

      
        
        18
        +    steps:

      
        
        19
        +      - uses: actions/checkout@v5

      
        
        20
        +      - name: Read .tool-versions

      
        
        21
        +        uses: marocchino/tool-versions-action@v1

      
        
        22
        +        id: versions

      
        
        23
        +

      
        
        24
        +      - uses: oven-sh/setup-bun@v2

      
        
        25
        +        with:

      
        
        26
        +          bun-version: ${{ steps.versions.outputs.bun }}

      
        
        27
        +

      
        
        28
        +      - name: Install deps

      
        
        29
        +        run: bun install --frozen-lockfile

      
        
        30
        +

      
        
        31
        +      - name: Lint

      
        
        32
        +        run: bunx redocly lint --config redocly.yml openapi.yml

      
M Taskfile.yml
···
        9
        9
             taskfile: ./web/Taskfile.yml

      
        10
        10
             dir: ./web/

      
        11
        11
         

      
        
        12
        +  api:

      
        
        13
        +    taskfile: ./api/Taskfile.yml

      
        
        14
        +    dir: ./api/

      
        
        15
        +

      
        12
        16
         env:

      
        13
        17
           COMPOSE_BAKE: 1

      
        14
        18
         

      ···
        22
        26
         

      
        23
        27
           lint:

      
        24
        28
             - golangci-lint run

      
        25
        
        -    - task: frontend:lint

      
        
        29
        +

      
        
        30
        +  lint:all:

      
        
        31
        +    deps:

      
        
        32
        +      - lint

      
        
        33
        +      - frontend:lint

      
        
        34
        +      - api:lint

      
        26
        35
         

      
        27
        36
           docker:up:

      
        28
        37
             - docker compose up -d --build --remove-orphans

      
A api/.gitignore
···
        
        1
        +/node_modules/

      
        
        2
        +/dist/

      
A api/Taskfile.yml
···
        
        1
        +version: "3"

      
        
        2
        +

      
        
        3
        +tasks:

      
        
        4
        +  bundle:

      
        
        5
        +    - bunx redocly bundle openapi.yml -o dist/bundle.yml

      
        
        6
        +

      
        
        7
        +  lint:

      
        
        8
        +    - bunx redocly lint --config redocly.yml openapi.yml

      
A api/bun.lock
···
        
        1
        +{

      
        
        2
        +  "lockfileVersion": 1,

      
        
        3
        +  "workspaces": {

      
        
        4
        +    "": {

      
        
        5
        +      "name": "api",

      
        
        6
        +      "devDependencies": {

      
        
        7
        +        "@redocly/cli": "^2.0.8",

      
        
        8
        +      },

      
        
        9
        +    },

      
        
        10
        +  },

      
        
        11
        +  "packages": {

      
        
        12
        +    "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="],

      
        
        13
        +

      
        
        14
        +    "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="],

      
        
        15
        +

      
        
        16
        +    "@babel/runtime": ["@babel/runtime@7.28.3", "", {}, "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA=="],

      
        
        17
        +

      
        
        18
        +    "@emotion/is-prop-valid": ["@emotion/is-prop-valid@1.2.2", "", { "dependencies": { "@emotion/memoize": "^0.8.1" } }, "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw=="],

      
        
        19
        +

      
        
        20
        +    "@emotion/memoize": ["@emotion/memoize@0.8.1", "", {}, "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="],

      
        
        21
        +

      
        
        22
        +    "@emotion/unitless": ["@emotion/unitless@0.8.1", "", {}, "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ=="],

      
        
        23
        +

      
        
        24
        +    "@exodus/schemasafe": ["@exodus/schemasafe@1.3.0", "", {}, "sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw=="],

      
        
        25
        +

      
        
        26
        +    "@faker-js/faker": ["@faker-js/faker@7.6.0", "", {}, "sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw=="],

      
        
        27
        +

      
        
        28
        +    "@humanwhocodes/momoa": ["@humanwhocodes/momoa@2.0.4", "", {}, "sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA=="],

      
        
        29
        +

      
        
        30
        +    "@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="],

      
        
        31
        +

      
        
        32
        +    "@isaacs/brace-expansion": ["@isaacs/brace-expansion@5.0.0", "", { "dependencies": { "@isaacs/balanced-match": "^4.0.1" } }, "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA=="],

      
        
        33
        +

      
        
        34
        +    "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="],

      
        
        35
        +

      
        
        36
        +    "@jest/schemas": ["@jest/schemas@29.6.3", "", { "dependencies": { "@sinclair/typebox": "^0.27.8" } }, "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA=="],

      
        
        37
        +

      
        
        38
        +    "@jsep-plugin/assignment": ["@jsep-plugin/assignment@1.3.0", "", { "peerDependencies": { "jsep": "^0.4.0||^1.0.0" } }, "sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ=="],

      
        
        39
        +

      
        
        40
        +    "@jsep-plugin/regex": ["@jsep-plugin/regex@1.0.4", "", { "peerDependencies": { "jsep": "^0.4.0||^1.0.0" } }, "sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg=="],

      
        
        41
        +

      
        
        42
        +    "@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="],

      
        
        43
        +

      
        
        44
        +    "@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="],

      
        
        45
        +

      
        
        46
        +    "@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.202.0", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-fTBjMqKCfotFWfLzaKyhjLvyEyq5vDKTTFfBmx21btv3gvy8Lq6N5Dh2OzqeuN4DjtpSvNT1uNVfg08eD2Rfxw=="],

      
        
        47
        +

      
        
        48
        +    "@opentelemetry/context-async-hooks": ["@opentelemetry/context-async-hooks@2.0.1", "", { "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-XuY23lSI3d4PEqKA+7SLtAgwqIfc6E/E9eAQWLN1vlpC53ybO3o6jW4BsXo1xvz9lYyyWItfQDDLzezER01mCw=="],

      
        
        49
        +

      
        
        50
        +    "@opentelemetry/core": ["@opentelemetry/core@2.0.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-MaZk9SJIDgo1peKevlbhP6+IwIiNPNmswNL4AF0WaQJLbHXjr9SrZMgS12+iqr9ToV4ZVosCcc0f8Rg67LXjxw=="],

      
        
        51
        +

      
        
        52
        +    "@opentelemetry/exporter-trace-otlp-http": ["@opentelemetry/exporter-trace-otlp-http@0.202.0", "", { "dependencies": { "@opentelemetry/core": "2.0.1", "@opentelemetry/otlp-exporter-base": "0.202.0", "@opentelemetry/otlp-transformer": "0.202.0", "@opentelemetry/resources": "2.0.1", "@opentelemetry/sdk-trace-base": "2.0.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-/hKE8DaFCJuaQqE1IxpgkcjOolUIwgi3TgHElPVKGdGRBSmJMTmN/cr6vWa55pCJIXPyhKvcMrbrya7DZ3VmzA=="],

      
        
        53
        +

      
        
        54
        +    "@opentelemetry/otlp-exporter-base": ["@opentelemetry/otlp-exporter-base@0.202.0", "", { "dependencies": { "@opentelemetry/core": "2.0.1", "@opentelemetry/otlp-transformer": "0.202.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-nMEOzel+pUFYuBJg2znGmHJWbmvMbdX5/RhoKNKowguMbURhz0fwik5tUKplLcUtl8wKPL1y9zPnPxeBn65N0Q=="],

      
        
        55
        +

      
        
        56
        +    "@opentelemetry/otlp-transformer": ["@opentelemetry/otlp-transformer@0.202.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.202.0", "@opentelemetry/core": "2.0.1", "@opentelemetry/resources": "2.0.1", "@opentelemetry/sdk-logs": "0.202.0", "@opentelemetry/sdk-metrics": "2.0.1", "@opentelemetry/sdk-trace-base": "2.0.1", "protobufjs": "^7.3.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-5XO77QFzs9WkexvJQL9ksxL8oVFb/dfi9NWQSq7Sv0Efr9x3N+nb1iklP1TeVgxqJ7m1xWiC/Uv3wupiQGevMw=="],

      
        
        57
        +

      
        
        58
        +    "@opentelemetry/resources": ["@opentelemetry/resources@2.0.1", "", { "dependencies": { "@opentelemetry/core": "2.0.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-dZOB3R6zvBwDKnHDTB4X1xtMArB/d324VsbiPkX/Yu0Q8T2xceRthoIVFhJdvgVM2QhGVUyX9tzwiNxGtoBJUw=="],

      
        
        59
        +

      
        
        60
        +    "@opentelemetry/sdk-logs": ["@opentelemetry/sdk-logs@0.202.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.202.0", "@opentelemetry/core": "2.0.1", "@opentelemetry/resources": "2.0.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, "sha512-pv8QiQLQzk4X909YKm0lnW4hpuQg4zHwJ4XBd5bZiXcd9urvrJNoNVKnxGHPiDVX/GiLFvr5DMYsDBQbZCypRQ=="],

      
        
        61
        +

      
        
        62
        +    "@opentelemetry/sdk-metrics": ["@opentelemetry/sdk-metrics@2.0.1", "", { "dependencies": { "@opentelemetry/core": "2.0.1", "@opentelemetry/resources": "2.0.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, "sha512-wf8OaJoSnujMAHWR3g+/hGvNcsC16rf9s1So4JlMiFaFHiE4HpIA3oUh+uWZQ7CNuK8gVW/pQSkgoa5HkkOl0g=="],

      
        
        63
        +

      
        
        64
        +    "@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@2.0.1", "", { "dependencies": { "@opentelemetry/core": "2.0.1", "@opentelemetry/resources": "2.0.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-xYLlvk/xdScGx1aEqvxLwf6sXQLXCjk3/1SQT9X9AoN5rXRhkdvIFShuNNmtTEPRBqcsMbS4p/gJLNI2wXaDuQ=="],

      
        
        65
        +

      
        
        66
        +    "@opentelemetry/sdk-trace-node": ["@opentelemetry/sdk-trace-node@2.0.1", "", { "dependencies": { "@opentelemetry/context-async-hooks": "2.0.1", "@opentelemetry/core": "2.0.1", "@opentelemetry/sdk-trace-base": "2.0.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-UhdbPF19pMpBtCWYP5lHbTogLWx9N0EBxtdagvkn5YtsAnCBZzL7SjktG+ZmupRgifsHMjwUaCCaVmqGfSADmA=="],

      
        
        67
        +

      
        
        68
        +    "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.34.0", "", {}, "sha512-aKcOkyrorBGlajjRdVoJWHTxfxO1vCNHLJVlSDaRHDIdjU+pX8IYQPvPDkYiujKLbRnWU+1TBwEt0QRgSm4SGA=="],

      
        
        69
        +

      
        
        70
        +    "@protobufjs/aspromise": ["@protobufjs/aspromise@1.1.2", "", {}, "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="],

      
        
        71
        +

      
        
        72
        +    "@protobufjs/base64": ["@protobufjs/base64@1.1.2", "", {}, "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="],

      
        
        73
        +

      
        
        74
        +    "@protobufjs/codegen": ["@protobufjs/codegen@2.0.4", "", {}, "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="],

      
        
        75
        +

      
        
        76
        +    "@protobufjs/eventemitter": ["@protobufjs/eventemitter@1.1.0", "", {}, "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="],

      
        
        77
        +

      
        
        78
        +    "@protobufjs/fetch": ["@protobufjs/fetch@1.1.0", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" } }, "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ=="],

      
        
        79
        +

      
        
        80
        +    "@protobufjs/float": ["@protobufjs/float@1.0.2", "", {}, "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="],

      
        
        81
        +

      
        
        82
        +    "@protobufjs/inquire": ["@protobufjs/inquire@1.1.0", "", {}, "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q=="],

      
        
        83
        +

      
        
        84
        +    "@protobufjs/path": ["@protobufjs/path@1.1.2", "", {}, "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="],

      
        
        85
        +

      
        
        86
        +    "@protobufjs/pool": ["@protobufjs/pool@1.1.0", "", {}, "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="],

      
        
        87
        +

      
        
        88
        +    "@protobufjs/utf8": ["@protobufjs/utf8@1.1.0", "", {}, "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="],

      
        
        89
        +

      
        
        90
        +    "@redocly/ajv": ["@redocly/ajv@8.11.3", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", "uri-js-replace": "^1.0.1" } }, "sha512-4P3iZse91TkBiY+Dx5DUgxQ9GXkVJf++cmI0MOyLDxV9b5MUBI4II6ES8zA5JCbO72nKAJxWrw4PUPW+YP3ZDQ=="],

      
        
        91
        +

      
        
        92
        +    "@redocly/cli": ["@redocly/cli@2.0.8", "", { "dependencies": { "@opentelemetry/exporter-trace-otlp-http": "0.202.0", "@opentelemetry/resources": "2.0.1", "@opentelemetry/sdk-trace-node": "2.0.1", "@opentelemetry/semantic-conventions": "1.34.0", "@redocly/openapi-core": "2.0.8", "@redocly/respect-core": "2.0.8", "abort-controller": "^3.0.0", "chokidar": "^3.5.1", "colorette": "^1.2.0", "cookie": "^0.7.2", "dotenv": "16.4.7", "form-data": "^4.0.4", "glob": "^11.0.1", "handlebars": "^4.7.6", "https-proxy-agent": "^7.0.5", "mobx": "^6.0.4", "pluralize": "^8.0.0", "react": "^17.0.0 || ^18.2.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.2.0 || ^19.0.0", "redoc": "2.5.0", "semver": "^7.5.2", "set-cookie-parser": "^2.3.5", "simple-websocket": "^9.0.0", "styled-components": "^6.0.7", "undici": "^6.21.1", "yargs": "17.0.1" }, "bin": { "redocly": "bin/cli.js", "openapi": "bin/cli.js" } }, "sha512-FWBhB2hvF8rXWViCVgbKT3AmQH9ChRDNCmN3SyLRaL0GQ5SLi10p9rV26/7GktcMAKetM9XC4ETQQJMup3CVQQ=="],

      
        
        93
        +

      
        
        94
        +    "@redocly/config": ["@redocly/config@0.29.0", "", { "dependencies": { "json-schema-to-ts": "2.7.2" } }, "sha512-AkP1Berx9GvD15aN6r0IcOo289ElHp52XgeFTxXCumJ4gaUXUmvzqfZTfFFJWDaGgZvUZvmQrs1UdaPjZEXeHA=="],

      
        
        95
        +

      
        
        96
        +    "@redocly/openapi-core": ["@redocly/openapi-core@2.0.8", "", { "dependencies": { "@redocly/ajv": "^8.11.2", "@redocly/config": "^0.29.0", "ajv-formats": "^2.1.1", "colorette": "^1.2.0", "js-levenshtein": "^1.1.6", "js-yaml": "^4.1.0", "minimatch": "^10.0.1", "pluralize": "^8.0.0", "yaml-ast-parser": "0.0.43" } }, "sha512-ShnpeEgcQY0YxopFDH/m94PWiHgCuWGa9FIcHchdHMZGA0mgV/Eojhi46A/hi2KP7TaVsgZc6+8u7GxTTeTC5g=="],

      
        
        97
        +

      
        
        98
        +    "@redocly/respect-core": ["@redocly/respect-core@2.0.8", "", { "dependencies": { "@faker-js/faker": "^7.6.0", "@noble/hashes": "^1.8.0", "@redocly/ajv": "8.11.2", "@redocly/openapi-core": "2.0.8", "better-ajv-errors": "^1.2.0", "colorette": "^2.0.20", "jest-diff": "^29.3.1", "jest-matcher-utils": "^29.3.1", "json-pointer": "^0.6.2", "jsonpath-plus": "^10.0.6", "openapi-sampler": "^1.6.1", "outdent": "^0.8.0" } }, "sha512-gKOjUn/UmoHYIDKHV7RanAvFkhQIgQh9oiA3qfYHMI/N4+tWGoJd03Soc+2bn3Zie8DTXjKwQIy0k5n2kZA7hw=="],

      
        
        99
        +

      
        
        100
        +    "@sinclair/typebox": ["@sinclair/typebox@0.27.8", "", {}, "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA=="],

      
        
        101
        +

      
        
        102
        +    "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="],

      
        
        103
        +

      
        
        104
        +    "@types/node": ["@types/node@24.3.1", "", { "dependencies": { "undici-types": "~7.10.0" } }, "sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g=="],

      
        
        105
        +

      
        
        106
        +    "@types/stylis": ["@types/stylis@4.2.5", "", {}, "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw=="],

      
        
        107
        +

      
        
        108
        +    "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="],

      
        
        109
        +

      
        
        110
        +    "abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "^5.0.0" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="],

      
        
        111
        +

      
        
        112
        +    "agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="],

      
        
        113
        +

      
        
        114
        +    "ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="],

      
        
        115
        +

      
        
        116
        +    "ajv-formats": ["ajv-formats@2.1.1", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA=="],

      
        
        117
        +

      
        
        118
        +    "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],

      
        
        119
        +

      
        
        120
        +    "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],

      
        
        121
        +

      
        
        122
        +    "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="],

      
        
        123
        +

      
        
        124
        +    "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],

      
        
        125
        +

      
        
        126
        +    "asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="],

      
        
        127
        +

      
        
        128
        +    "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],

      
        
        129
        +

      
        
        130
        +    "better-ajv-errors": ["better-ajv-errors@1.2.0", "", { "dependencies": { "@babel/code-frame": "^7.16.0", "@humanwhocodes/momoa": "^2.0.2", "chalk": "^4.1.2", "jsonpointer": "^5.0.0", "leven": "^3.1.0 < 4" }, "peerDependencies": { "ajv": "4.11.8 - 8" } }, "sha512-UW+IsFycygIo7bclP9h5ugkNH8EjCSgqyFB/yQ4Hqqa1OEYDtb0uFIkYE0b6+CjkgJYVM5UKI/pJPxjYe9EZlA=="],

      
        
        131
        +

      
        
        132
        +    "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="],

      
        
        133
        +

      
        
        134
        +    "brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="],

      
        
        135
        +

      
        
        136
        +    "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],

      
        
        137
        +

      
        
        138
        +    "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="],

      
        
        139
        +

      
        
        140
        +    "call-me-maybe": ["call-me-maybe@1.0.2", "", {}, "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ=="],

      
        
        141
        +

      
        
        142
        +    "camelize": ["camelize@1.0.1", "", {}, "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ=="],

      
        
        143
        +

      
        
        144
        +    "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],

      
        
        145
        +

      
        
        146
        +    "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="],

      
        
        147
        +

      
        
        148
        +    "classnames": ["classnames@2.5.1", "", {}, "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow=="],

      
        
        149
        +

      
        
        150
        +    "cliui": ["cliui@7.0.4", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ=="],

      
        
        151
        +

      
        
        152
        +    "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="],

      
        
        153
        +

      
        
        154
        +    "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],

      
        
        155
        +

      
        
        156
        +    "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],

      
        
        157
        +

      
        
        158
        +    "colorette": ["colorette@1.4.0", "", {}, "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g=="],

      
        
        159
        +

      
        
        160
        +    "combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="],

      
        
        161
        +

      
        
        162
        +    "cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="],

      
        
        163
        +

      
        
        164
        +    "core-js": ["core-js@3.45.1", "", {}, "sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg=="],

      
        
        165
        +

      
        
        166
        +    "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],

      
        
        167
        +

      
        
        168
        +    "css-color-keywords": ["css-color-keywords@1.0.0", "", {}, "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg=="],

      
        
        169
        +

      
        
        170
        +    "css-to-react-native": ["css-to-react-native@3.2.0", "", { "dependencies": { "camelize": "^1.0.0", "css-color-keywords": "^1.0.0", "postcss-value-parser": "^4.0.2" } }, "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ=="],

      
        
        171
        +

      
        
        172
        +    "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="],

      
        
        173
        +

      
        
        174
        +    "debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="],

      
        
        175
        +

      
        
        176
        +    "decko": ["decko@1.2.0", "", {}, "sha512-m8FnyHXV1QX+S1cl+KPFDIl6NMkxtKsy6+U/aYyjrOqWMuwAwYWu7ePqrsUHtDR5Y8Yk2pi/KIDSgF+vT4cPOQ=="],

      
        
        177
        +

      
        
        178
        +    "delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="],

      
        
        179
        +

      
        
        180
        +    "diff-sequences": ["diff-sequences@29.6.3", "", {}, "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q=="],

      
        
        181
        +

      
        
        182
        +    "dompurify": ["dompurify@3.2.6", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ=="],

      
        
        183
        +

      
        
        184
        +    "dotenv": ["dotenv@16.4.7", "", {}, "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ=="],

      
        
        185
        +

      
        
        186
        +    "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="],

      
        
        187
        +

      
        
        188
        +    "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="],

      
        
        189
        +

      
        
        190
        +    "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],

      
        
        191
        +

      
        
        192
        +    "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="],

      
        
        193
        +

      
        
        194
        +    "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="],

      
        
        195
        +

      
        
        196
        +    "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="],

      
        
        197
        +

      
        
        198
        +    "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="],

      
        
        199
        +

      
        
        200
        +    "es6-promise": ["es6-promise@3.3.1", "", {}, "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg=="],

      
        
        201
        +

      
        
        202
        +    "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="],

      
        
        203
        +

      
        
        204
        +    "event-target-shim": ["event-target-shim@5.0.1", "", {}, "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="],

      
        
        205
        +

      
        
        206
        +    "eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="],

      
        
        207
        +

      
        
        208
        +    "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],

      
        
        209
        +

      
        
        210
        +    "fast-safe-stringify": ["fast-safe-stringify@2.1.1", "", {}, "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="],

      
        
        211
        +

      
        
        212
        +    "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="],

      
        
        213
        +

      
        
        214
        +    "fast-xml-parser": ["fast-xml-parser@4.5.3", "", { "dependencies": { "strnum": "^1.1.1" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig=="],

      
        
        215
        +

      
        
        216
        +    "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],

      
        
        217
        +

      
        
        218
        +    "foreach": ["foreach@2.0.6", "", {}, "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg=="],

      
        
        219
        +

      
        
        220
        +    "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="],

      
        
        221
        +

      
        
        222
        +    "form-data": ["form-data@4.0.4", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow=="],

      
        
        223
        +

      
        
        224
        +    "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],

      
        
        225
        +

      
        
        226
        +    "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="],

      
        
        227
        +

      
        
        228
        +    "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="],

      
        
        229
        +

      
        
        230
        +    "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="],

      
        
        231
        +

      
        
        232
        +    "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="],

      
        
        233
        +

      
        
        234
        +    "glob": ["glob@11.0.3", "", { "dependencies": { "foreground-child": "^3.3.1", "jackspeak": "^4.1.1", "minimatch": "^10.0.3", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA=="],

      
        
        235
        +

      
        
        236
        +    "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],

      
        
        237
        +

      
        
        238
        +    "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="],

      
        
        239
        +

      
        
        240
        +    "handlebars": ["handlebars@4.7.8", "", { "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.2", "source-map": "^0.6.1", "wordwrap": "^1.0.0" }, "optionalDependencies": { "uglify-js": "^3.1.4" }, "bin": { "handlebars": "bin/handlebars" } }, "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ=="],

      
        
        241
        +

      
        
        242
        +    "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="],

      
        
        243
        +

      
        
        244
        +    "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="],

      
        
        245
        +

      
        
        246
        +    "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="],

      
        
        247
        +

      
        
        248
        +    "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="],

      
        
        249
        +

      
        
        250
        +    "http2-client": ["http2-client@1.3.5", "", {}, "sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA=="],

      
        
        251
        +

      
        
        252
        +    "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="],

      
        
        253
        +

      
        
        254
        +    "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],

      
        
        255
        +

      
        
        256
        +    "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="],

      
        
        257
        +

      
        
        258
        +    "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],

      
        
        259
        +

      
        
        260
        +    "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],

      
        
        261
        +

      
        
        262
        +    "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],

      
        
        263
        +

      
        
        264
        +    "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],

      
        
        265
        +

      
        
        266
        +    "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],

      
        
        267
        +

      
        
        268
        +    "jackspeak": ["jackspeak@4.1.1", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" } }, "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ=="],

      
        
        269
        +

      
        
        270
        +    "jest-diff": ["jest-diff@29.7.0", "", { "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.6.3", "jest-get-type": "^29.6.3", "pretty-format": "^29.7.0" } }, "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw=="],

      
        
        271
        +

      
        
        272
        +    "jest-get-type": ["jest-get-type@29.6.3", "", {}, "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw=="],

      
        
        273
        +

      
        
        274
        +    "jest-matcher-utils": ["jest-matcher-utils@29.7.0", "", { "dependencies": { "chalk": "^4.0.0", "jest-diff": "^29.7.0", "jest-get-type": "^29.6.3", "pretty-format": "^29.7.0" } }, "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g=="],

      
        
        275
        +

      
        
        276
        +    "js-levenshtein": ["js-levenshtein@1.1.6", "", {}, "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g=="],

      
        
        277
        +

      
        
        278
        +    "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="],

      
        
        279
        +

      
        
        280
        +    "js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="],

      
        
        281
        +

      
        
        282
        +    "jsep": ["jsep@1.4.0", "", {}, "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw=="],

      
        
        283
        +

      
        
        284
        +    "json-pointer": ["json-pointer@0.6.2", "", { "dependencies": { "foreach": "^2.0.4" } }, "sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw=="],

      
        
        285
        +

      
        
        286
        +    "json-schema-to-ts": ["json-schema-to-ts@2.7.2", "", { "dependencies": { "@babel/runtime": "^7.18.3", "@types/json-schema": "^7.0.9", "ts-algebra": "^1.2.0" } }, "sha512-R1JfqKqbBR4qE8UyBR56Ms30LL62/nlhoz+1UkfI/VE7p54Awu919FZ6ZUPG8zIa3XB65usPJgr1ONVncUGSaQ=="],

      
        
        287
        +

      
        
        288
        +    "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="],

      
        
        289
        +

      
        
        290
        +    "jsonpath-plus": ["jsonpath-plus@10.3.0", "", { "dependencies": { "@jsep-plugin/assignment": "^1.3.0", "@jsep-plugin/regex": "^1.0.4", "jsep": "^1.4.0" }, "bin": { "jsonpath": "bin/jsonpath-cli.js", "jsonpath-plus": "bin/jsonpath-cli.js" } }, "sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA=="],

      
        
        291
        +

      
        
        292
        +    "jsonpointer": ["jsonpointer@5.0.1", "", {}, "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ=="],

      
        
        293
        +

      
        
        294
        +    "leven": ["leven@3.1.0", "", {}, "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="],

      
        
        295
        +

      
        
        296
        +    "long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="],

      
        
        297
        +

      
        
        298
        +    "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="],

      
        
        299
        +

      
        
        300
        +    "lru-cache": ["lru-cache@11.2.1", "", {}, "sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ=="],

      
        
        301
        +

      
        
        302
        +    "lunr": ["lunr@2.3.9", "", {}, "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow=="],

      
        
        303
        +

      
        
        304
        +    "mark.js": ["mark.js@8.11.1", "", {}, "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ=="],

      
        
        305
        +

      
        
        306
        +    "marked": ["marked@4.3.0", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A=="],

      
        
        307
        +

      
        
        308
        +    "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="],

      
        
        309
        +

      
        
        310
        +    "mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],

      
        
        311
        +

      
        
        312
        +    "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],

      
        
        313
        +

      
        
        314
        +    "minimatch": ["minimatch@10.0.3", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw=="],

      
        
        315
        +

      
        
        316
        +    "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="],

      
        
        317
        +

      
        
        318
        +    "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="],

      
        
        319
        +

      
        
        320
        +    "mobx": ["mobx@6.13.7", "", {}, "sha512-aChaVU/DO5aRPmk1GX8L+whocagUUpBQqoPtJk+cm7UOXUk87J4PeWCh6nNmTTIfEhiR9DI/+FnA8dln/hTK7g=="],

      
        
        321
        +

      
        
        322
        +    "mobx-react": ["mobx-react@9.2.0", "", { "dependencies": { "mobx-react-lite": "^4.1.0" }, "peerDependencies": { "mobx": "^6.9.0", "react": "^16.8.0 || ^17 || ^18 || ^19" } }, "sha512-dkGWCx+S0/1mfiuFfHRH8D9cplmwhxOV5CkXMp38u6rQGG2Pv3FWYztS0M7ncR6TyPRQKaTG/pnitInoYE9Vrw=="],

      
        
        323
        +

      
        
        324
        +    "mobx-react-lite": ["mobx-react-lite@4.1.0", "", { "dependencies": { "use-sync-external-store": "^1.4.0" }, "peerDependencies": { "mobx": "^6.9.0", "react": "^16.8.0 || ^17 || ^18 || ^19" } }, "sha512-QEP10dpHHBeQNv1pks3WnHRCem2Zp636lq54M2nKO2Sarr13pL4u6diQXf65yzXUn0mkk18SyIDCm9UOJYTi1w=="],

      
        
        325
        +

      
        
        326
        +    "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],

      
        
        327
        +

      
        
        328
        +    "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],

      
        
        329
        +

      
        
        330
        +    "neo-async": ["neo-async@2.6.2", "", {}, "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="],

      
        
        331
        +

      
        
        332
        +    "node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="],

      
        
        333
        +

      
        
        334
        +    "node-fetch-h2": ["node-fetch-h2@2.3.0", "", { "dependencies": { "http2-client": "^1.2.5" } }, "sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg=="],

      
        
        335
        +

      
        
        336
        +    "node-readfiles": ["node-readfiles@0.2.0", "", { "dependencies": { "es6-promise": "^3.2.1" } }, "sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA=="],

      
        
        337
        +

      
        
        338
        +    "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="],

      
        
        339
        +

      
        
        340
        +    "oas-kit-common": ["oas-kit-common@1.0.8", "", { "dependencies": { "fast-safe-stringify": "^2.0.7" } }, "sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ=="],

      
        
        341
        +

      
        
        342
        +    "oas-linter": ["oas-linter@3.2.2", "", { "dependencies": { "@exodus/schemasafe": "^1.0.0-rc.2", "should": "^13.2.1", "yaml": "^1.10.0" } }, "sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ=="],

      
        
        343
        +

      
        
        344
        +    "oas-resolver": ["oas-resolver@2.5.6", "", { "dependencies": { "node-fetch-h2": "^2.3.0", "oas-kit-common": "^1.0.8", "reftools": "^1.1.9", "yaml": "^1.10.0", "yargs": "^17.0.1" }, "bin": { "resolve": "resolve.js" } }, "sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ=="],

      
        
        345
        +

      
        
        346
        +    "oas-schema-walker": ["oas-schema-walker@1.1.5", "", {}, "sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ=="],

      
        
        347
        +

      
        
        348
        +    "oas-validator": ["oas-validator@5.0.8", "", { "dependencies": { "call-me-maybe": "^1.0.1", "oas-kit-common": "^1.0.8", "oas-linter": "^3.2.2", "oas-resolver": "^2.5.6", "oas-schema-walker": "^1.1.5", "reftools": "^1.1.9", "should": "^13.2.1", "yaml": "^1.10.0" } }, "sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw=="],

      
        
        349
        +

      
        
        350
        +    "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="],

      
        
        351
        +

      
        
        352
        +    "openapi-sampler": ["openapi-sampler@1.6.1", "", { "dependencies": { "@types/json-schema": "^7.0.7", "fast-xml-parser": "^4.5.0", "json-pointer": "0.6.2" } }, "sha512-s1cIatOqrrhSj2tmJ4abFYZQK6l5v+V4toO5q1Pa0DyN8mtyqy2I+Qrj5W9vOELEtybIMQs/TBZGVO/DtTFK8w=="],

      
        
        353
        +

      
        
        354
        +    "outdent": ["outdent@0.8.0", "", {}, "sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A=="],

      
        
        355
        +

      
        
        356
        +    "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="],

      
        
        357
        +

      
        
        358
        +    "path-browserify": ["path-browserify@1.0.1", "", {}, "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="],

      
        
        359
        +

      
        
        360
        +    "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],

      
        
        361
        +

      
        
        362
        +    "path-scurry": ["path-scurry@2.0.0", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg=="],

      
        
        363
        +

      
        
        364
        +    "perfect-scrollbar": ["perfect-scrollbar@1.5.6", "", {}, "sha512-rixgxw3SxyJbCaSpo1n35A/fwI1r2rdwMKOTCg/AcG+xOEyZcE8UHVjpZMFCVImzsFoCZeJTT+M/rdEIQYO2nw=="],

      
        
        365
        +

      
        
        366
        +    "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],

      
        
        367
        +

      
        
        368
        +    "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],

      
        
        369
        +

      
        
        370
        +    "pluralize": ["pluralize@8.0.0", "", {}, "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA=="],

      
        
        371
        +

      
        
        372
        +    "polished": ["polished@4.3.1", "", { "dependencies": { "@babel/runtime": "^7.17.8" } }, "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA=="],

      
        
        373
        +

      
        
        374
        +    "postcss": ["postcss@8.4.49", "", { "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA=="],

      
        
        375
        +

      
        
        376
        +    "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="],

      
        
        377
        +

      
        
        378
        +    "pretty-format": ["pretty-format@29.7.0", "", { "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" } }, "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ=="],

      
        
        379
        +

      
        
        380
        +    "prismjs": ["prismjs@1.30.0", "", {}, "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw=="],

      
        
        381
        +

      
        
        382
        +    "prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="],

      
        
        383
        +

      
        
        384
        +    "protobufjs": ["protobufjs@7.5.4", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.4", "@protobufjs/eventemitter": "^1.1.0", "@protobufjs/fetch": "^1.1.0", "@protobufjs/float": "^1.0.2", "@protobufjs/inquire": "^1.1.0", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.0", "@types/node": ">=13.7.0", "long": "^5.0.0" } }, "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg=="],

      
        
        385
        +

      
        
        386
        +    "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="],

      
        
        387
        +

      
        
        388
        +    "randombytes": ["randombytes@2.1.0", "", { "dependencies": { "safe-buffer": "^5.1.0" } }, "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ=="],

      
        
        389
        +

      
        
        390
        +    "react": ["react@19.1.1", "", {}, "sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ=="],

      
        
        391
        +

      
        
        392
        +    "react-dom": ["react-dom@19.1.1", "", { "dependencies": { "scheduler": "^0.26.0" }, "peerDependencies": { "react": "^19.1.1" } }, "sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw=="],

      
        
        393
        +

      
        
        394
        +    "react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="],

      
        
        395
        +

      
        
        396
        +    "react-tabs": ["react-tabs@6.1.0", "", { "dependencies": { "clsx": "^2.0.0", "prop-types": "^15.5.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0" } }, "sha512-6QtbTRDKM+jA/MZTTefvigNxo0zz+gnBTVFw2CFVvq+f2BuH0nF0vDLNClL045nuTAdOoK/IL1vTP0ZLX0DAyQ=="],

      
        
        397
        +

      
        
        398
        +    "readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="],

      
        
        399
        +

      
        
        400
        +    "readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="],

      
        
        401
        +

      
        
        402
        +    "redoc": ["redoc@2.5.0", "", { "dependencies": { "@redocly/openapi-core": "^1.4.0", "classnames": "^2.3.2", "decko": "^1.2.0", "dompurify": "^3.2.4", "eventemitter3": "^5.0.1", "json-pointer": "^0.6.2", "lunr": "^2.3.9", "mark.js": "^8.11.1", "marked": "^4.3.0", "mobx-react": "^9.1.1", "openapi-sampler": "^1.5.0", "path-browserify": "^1.0.1", "perfect-scrollbar": "^1.5.5", "polished": "^4.2.2", "prismjs": "^1.29.0", "prop-types": "^15.8.1", "react-tabs": "^6.0.2", "slugify": "~1.4.7", "stickyfill": "^1.1.1", "swagger2openapi": "^7.0.8", "url-template": "^2.0.8" }, "peerDependencies": { "core-js": "^3.1.4", "mobx": "^6.0.4", "react": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0", "styled-components": "^4.1.1 || ^5.1.1 || ^6.0.5" } }, "sha512-NpYsOZ1PD9qFdjbLVBZJWptqE+4Y6TkUuvEOqPUmoH7AKOmPcE+hYjotLxQNTqVoWL4z0T2uxILmcc8JGDci+Q=="],

      
        
        403
        +

      
        
        404
        +    "reftools": ["reftools@1.1.9", "", {}, "sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w=="],

      
        
        405
        +

      
        
        406
        +    "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="],

      
        
        407
        +

      
        
        408
        +    "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="],

      
        
        409
        +

      
        
        410
        +    "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],

      
        
        411
        +

      
        
        412
        +    "scheduler": ["scheduler@0.26.0", "", {}, "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA=="],

      
        
        413
        +

      
        
        414
        +    "semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="],

      
        
        415
        +

      
        
        416
        +    "set-cookie-parser": ["set-cookie-parser@2.7.1", "", {}, "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ=="],

      
        
        417
        +

      
        
        418
        +    "shallowequal": ["shallowequal@1.1.0", "", {}, "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="],

      
        
        419
        +

      
        
        420
        +    "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="],

      
        
        421
        +

      
        
        422
        +    "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="],

      
        
        423
        +

      
        
        424
        +    "should": ["should@13.2.3", "", { "dependencies": { "should-equal": "^2.0.0", "should-format": "^3.0.3", "should-type": "^1.4.0", "should-type-adaptors": "^1.0.1", "should-util": "^1.0.0" } }, "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ=="],

      
        
        425
        +

      
        
        426
        +    "should-equal": ["should-equal@2.0.0", "", { "dependencies": { "should-type": "^1.4.0" } }, "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA=="],

      
        
        427
        +

      
        
        428
        +    "should-format": ["should-format@3.0.3", "", { "dependencies": { "should-type": "^1.3.0", "should-type-adaptors": "^1.0.1" } }, "sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q=="],

      
        
        429
        +

      
        
        430
        +    "should-type": ["should-type@1.4.0", "", {}, "sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ=="],

      
        
        431
        +

      
        
        432
        +    "should-type-adaptors": ["should-type-adaptors@1.1.0", "", { "dependencies": { "should-type": "^1.3.0", "should-util": "^1.0.0" } }, "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA=="],

      
        
        433
        +

      
        
        434
        +    "should-util": ["should-util@1.0.1", "", {}, "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g=="],

      
        
        435
        +

      
        
        436
        +    "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="],

      
        
        437
        +

      
        
        438
        +    "simple-websocket": ["simple-websocket@9.1.0", "", { "dependencies": { "debug": "^4.3.1", "queue-microtask": "^1.2.2", "randombytes": "^2.1.0", "readable-stream": "^3.6.0", "ws": "^7.4.2" } }, "sha512-8MJPnjRN6A8UCp1I+H/dSFyjwJhp6wta4hsVRhjf8w9qBHRzxYt14RaOcjvQnhD1N4yKOddEjflwMnQM4VtXjQ=="],

      
        
        439
        +

      
        
        440
        +    "slugify": ["slugify@1.4.7", "", {}, "sha512-tf+h5W1IrjNm/9rKKj0JU2MDMruiopx0jjVA5zCdBtcGjfp0+c5rHw/zADLC3IeKlGHtVbHtpfzvYA0OYT+HKg=="],

      
        
        441
        +

      
        
        442
        +    "source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="],

      
        
        443
        +

      
        
        444
        +    "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],

      
        
        445
        +

      
        
        446
        +    "stickyfill": ["stickyfill@1.1.1", "", {}, "sha512-GCp7vHAfpao+Qh/3Flh9DXEJ/qSi0KJwJw6zYlZOtRYXWUIpMM6mC2rIep/dK8RQqwW0KxGJIllmjPIBOGN8AA=="],

      
        
        447
        +

      
        
        448
        +    "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],

      
        
        449
        +

      
        
        450
        +    "string-width-cjs": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],

      
        
        451
        +

      
        
        452
        +    "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="],

      
        
        453
        +

      
        
        454
        +    "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],

      
        
        455
        +

      
        
        456
        +    "strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],

      
        
        457
        +

      
        
        458
        +    "strnum": ["strnum@1.1.2", "", {}, "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA=="],

      
        
        459
        +

      
        
        460
        +    "styled-components": ["styled-components@6.1.19", "", { "dependencies": { "@emotion/is-prop-valid": "1.2.2", "@emotion/unitless": "0.8.1", "@types/stylis": "4.2.5", "css-to-react-native": "3.2.0", "csstype": "3.1.3", "postcss": "8.4.49", "shallowequal": "1.1.0", "stylis": "4.3.2", "tslib": "2.6.2" }, "peerDependencies": { "react": ">= 16.8.0", "react-dom": ">= 16.8.0" } }, "sha512-1v/e3Dl1BknC37cXMhwGomhO8AkYmN41CqyX9xhUDxry1ns3BFQy2lLDRQXJRdVVWB9OHemv/53xaStimvWyuA=="],

      
        
        461
        +

      
        
        462
        +    "stylis": ["stylis@4.3.2", "", {}, "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg=="],

      
        
        463
        +

      
        
        464
        +    "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],

      
        
        465
        +

      
        
        466
        +    "swagger2openapi": ["swagger2openapi@7.0.8", "", { "dependencies": { "call-me-maybe": "^1.0.1", "node-fetch": "^2.6.1", "node-fetch-h2": "^2.3.0", "node-readfiles": "^0.2.0", "oas-kit-common": "^1.0.8", "oas-resolver": "^2.5.6", "oas-schema-walker": "^1.1.5", "oas-validator": "^5.0.8", "reftools": "^1.1.9", "yaml": "^1.10.0", "yargs": "^17.0.1" }, "bin": { "swagger2openapi": "swagger2openapi.js", "oas-validate": "oas-validate.js", "boast": "boast.js" } }, "sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g=="],

      
        
        467
        +

      
        
        468
        +    "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],

      
        
        469
        +

      
        
        470
        +    "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="],

      
        
        471
        +

      
        
        472
        +    "ts-algebra": ["ts-algebra@1.2.2", "", {}, "sha512-kloPhf1hq3JbCPOTYoOWDKxebWjNb2o/LKnNfkWhxVVisFFmMJPPdJeGoGmM+iRLyoXAR61e08Pb+vUXINg8aA=="],

      
        
        473
        +

      
        
        474
        +    "tslib": ["tslib@2.6.2", "", {}, "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="],

      
        
        475
        +

      
        
        476
        +    "uglify-js": ["uglify-js@3.19.3", "", { "bin": { "uglifyjs": "bin/uglifyjs" } }, "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ=="],

      
        
        477
        +

      
        
        478
        +    "undici": ["undici@6.21.3", "", {}, "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw=="],

      
        
        479
        +

      
        
        480
        +    "undici-types": ["undici-types@7.10.0", "", {}, "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag=="],

      
        
        481
        +

      
        
        482
        +    "uri-js-replace": ["uri-js-replace@1.0.1", "", {}, "sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g=="],

      
        
        483
        +

      
        
        484
        +    "url-template": ["url-template@2.0.8", "", {}, "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw=="],

      
        
        485
        +

      
        
        486
        +    "use-sync-external-store": ["use-sync-external-store@1.5.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A=="],

      
        
        487
        +

      
        
        488
        +    "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="],

      
        
        489
        +

      
        
        490
        +    "webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="],

      
        
        491
        +

      
        
        492
        +    "whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="],

      
        
        493
        +

      
        
        494
        +    "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],

      
        
        495
        +

      
        
        496
        +    "wordwrap": ["wordwrap@1.0.0", "", {}, "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="],

      
        
        497
        +

      
        
        498
        +    "wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],

      
        
        499
        +

      
        
        500
        +    "wrap-ansi-cjs": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],

      
        
        501
        +

      
        
        502
        +    "ws": ["ws@7.5.10", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ=="],

      
        
        503
        +

      
        
        504
        +    "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="],

      
        
        505
        +

      
        
        506
        +    "yaml": ["yaml@1.10.2", "", {}, "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="],

      
        
        507
        +

      
        
        508
        +    "yaml-ast-parser": ["yaml-ast-parser@0.0.43", "", {}, "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A=="],

      
        
        509
        +

      
        
        510
        +    "yargs": ["yargs@17.0.1", "", { "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" } }, "sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ=="],

      
        
        511
        +

      
        
        512
        +    "yargs-parser": ["yargs-parser@20.2.9", "", {}, "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="],

      
        
        513
        +

      
        
        514
        +    "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="],

      
        
        515
        +

      
        
        516
        +    "@isaacs/cliui/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="],

      
        
        517
        +

      
        
        518
        +    "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="],

      
        
        519
        +

      
        
        520
        +    "@redocly/respect-core/@redocly/ajv": ["@redocly/ajv@8.11.2", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", "uri-js-replace": "^1.0.1" } }, "sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg=="],

      
        
        521
        +

      
        
        522
        +    "@redocly/respect-core/colorette": ["colorette@2.0.20", "", {}, "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="],

      
        
        523
        +

      
        
        524
        +    "oas-resolver/yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="],

      
        
        525
        +

      
        
        526
        +    "pretty-format/ansi-styles": ["ansi-styles@5.2.0", "", {}, "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="],

      
        
        527
        +

      
        
        528
        +    "pretty-format/react-is": ["react-is@18.3.1", "", {}, "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="],

      
        
        529
        +

      
        
        530
        +    "redoc/@redocly/openapi-core": ["@redocly/openapi-core@1.34.5", "", { "dependencies": { "@redocly/ajv": "^8.11.2", "@redocly/config": "^0.22.0", "colorette": "^1.2.0", "https-proxy-agent": "^7.0.5", "js-levenshtein": "^1.1.6", "js-yaml": "^4.1.0", "minimatch": "^5.0.1", "pluralize": "^8.0.0", "yaml-ast-parser": "0.0.43" } }, "sha512-0EbE8LRbkogtcCXU7liAyC00n9uNG9hJ+eMyHFdUsy9lB/WGqnEBgwjA9q2cyzAVcdTkQqTBBU1XePNnN3OijA=="],

      
        
        531
        +

      
        
        532
        +    "swagger2openapi/yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="],

      
        
        533
        +

      
        
        534
        +    "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="],

      
        
        535
        +

      
        
        536
        +    "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.2.0", "", {}, "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg=="],

      
        
        537
        +

      
        
        538
        +    "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="],

      
        
        539
        +

      
        
        540
        +    "oas-resolver/yargs/cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],

      
        
        541
        +

      
        
        542
        +    "oas-resolver/yargs/yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],

      
        
        543
        +

      
        
        544
        +    "redoc/@redocly/openapi-core/@redocly/config": ["@redocly/config@0.22.2", "", {}, "sha512-roRDai8/zr2S9YfmzUfNhKjOF0NdcOIqF7bhf4MVC5UxpjIysDjyudvlAiVbpPHp3eDRWbdzUgtkK1a7YiDNyQ=="],

      
        
        545
        +

      
        
        546
        +    "redoc/@redocly/openapi-core/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="],

      
        
        547
        +

      
        
        548
        +    "swagger2openapi/yargs/cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],

      
        
        549
        +

      
        
        550
        +    "swagger2openapi/yargs/yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],

      
        
        551
        +  }

      
        
        552
        +}

      
A api/components/requests/ChangeEmail.yml
···
        
        1
        +type: object

      
        
        2
        +required:

      
        
        3
        +  - new_email

      
        
        4
        +properties:

      
        
        5
        +  new_email:

      
        
        6
        +    type: string

      
        
        7
        +    format: email

      
        
        8
        +    example: "new_email@example.com"

      
A api/components/requests/ChangePassword.yml
···
        
        1
        +type: object

      
        
        2
        +required:

      
        
        3
        +  - current_password

      
        
        4
        +  - new_password

      
        
        5
        +properties:

      
        
        6
        +  current_password:

      
        
        7
        +    type: string

      
        
        8
        +    minLength: 6

      
        
        9
        +    example: "currentSecurePassword"

      
        
        10
        +  new_password:

      
        
        11
        +    type: string

      
        
        12
        +    minLength: 6

      
        
        13
        +    example: "newSuperSecurePassword"

      
A api/components/requests/CreateNote.yml
···
        
        1
        +type: object

      
        
        2
        +required:

      
        
        3
        +  - content

      
        
        4
        +properties:

      
        
        5
        +  content:

      
        
        6
        +    type: string

      
        
        7
        +    example: some-secret-content

      
        
        8
        +  slug:

      
        
        9
        +    type: string

      
        
        10
        +    example: unique-slug

      
        
        11
        +  password:

      
        
        12
        +    type: string

      
        
        13
        +    example: securePassword123

      
        
        14
        +  keep_before_expiration:

      
        
        15
        +    type: boolean

      
        
        16
        +  expires_at:

      
        
        17
        +    type: string

      
        
        18
        +    format: date-time

      
        
        19
        +    example: 2025-09-05T16:30:00Z

      
A api/components/requests/EmailRequest.yml
···
        
        1
        +type: object

      
        
        2
        +required:

      
        
        3
        +  - email

      
        
        4
        +properties:

      
        
        5
        +  email:

      
        
        6
        +    type: string

      
        
        7
        +    format: email

      
        
        8
        +    example: "user@example.com"

      
A api/components/requests/Logout.yml
···
        
        1
        +type: object

      
        
        2
        +required:

      
        
        3
        +  - refresh_token

      
        
        4
        +properties:

      
        
        5
        +  refresh_token:

      
        
        6
        +    type: string

      
        
        7
        +    format: string

      
        
        8
        +    example: "refresh-token"

      
A api/components/requests/RefreshTokens.yml
···
        
        1
        +type: object

      
        
        2
        +required:

      
        
        3
        +  - refresh_token

      
        
        4
        +properties:

      
        
        5
        +  refresh_token:

      
        
        6
        +    type: string

      
        
        7
        +    format: string

      
        
        8
        +    example: "refresh-token"

      
A api/components/requests/ResetPassword.yml
···
        
        1
        +type: object

      
        
        2
        +required:

      
        
        3
        +  - password

      
        
        4
        +properties:

      
        
        5
        +  password:

      
        
        6
        +    type: string

      
        
        7
        +    minLength: 6

      
        
        8
        +    example: "securePassword123"

      
A api/components/requests/Signin.yml
···
        
        1
        +type: object

      
        
        2
        +required:

      
        
        3
        +  - email

      
        
        4
        +  - password

      
        
        5
        +properties:

      
        
        6
        +  email:

      
        
        7
        +    type: string

      
        
        8
        +    format: email

      
        
        9
        +    example: "user@example.com"

      
        
        10
        +  password:

      
        
        11
        +    type: string

      
        
        12
        +    minLength: 6

      
        
        13
        +    example: "securePassword123"

      
A api/components/requests/Signup.yml
···
        
        1
        +type: object

      
        
        2
        +required:

      
        
        3
        +  - email

      
        
        4
        +  - password

      
        
        5
        +properties:

      
        
        6
        +  email:

      
        
        7
        +    type: string

      
        
        8
        +    format: email

      
        
        9
        +    example: "user@example.com"

      
        
        10
        +  password:

      
        
        11
        +    type: string

      
        
        12
        +    minLength: 6

      
        
        13
        +    example: "securePassword123"

      
A api/components/responses/ErrorResponse.yml
···
        
        1
        +description: Error response

      
        
        2
        +content:

      
        
        3
        +  application/json:

      
        
        4
        +    schema:

      
        
        5
        +      $ref: '../schemas/Error.yml'

      
A api/components/responses/Me.yml
···
        
        1
        +description: Account info

      
        
        2
        +content:

      
        
        3
        +  application/json:

      
        
        4
        +    schema:

      
        
        5
        +      type: object

      
        
        6
        +      properties:

      
        
        7
        +        email:

      
        
        8
        +          type: string

      
        
        9
        +          example: "user@email.com"

      
        
        10
        +        created_at:

      
        
        11
        +          type: string

      
        
        12
        +          format: date-time

      
        
        13
        +          example: 2025-07-05T16:30:00Z

      
        
        14
        +        last_login_at:

      
        
        15
        +          type: string

      
        
        16
        +          format: date-time

      
        
        17
        +          example: 2025-09-05T16:30:00Z

      
        
        18
        +        notes_created:

      
        
        19
        +          type: integer

      
        
        20
        +          example: 69

      
A api/components/responses/NoteCreated.yml
···
        
        1
        +description: Note created

      
        
        2
        +content:

      
        
        3
        +  application/json:

      
        
        4
        +    schema:

      
        
        5
        +      type: object

      
        
        6
        +      properties:

      
        
        7
        +        slug:

      
        
        8
        +          type: string

      
        
        9
        +          example: be541fd3-a716-46af-8bb4-89585e787b89

      
A api/components/responses/NoteGet.yml
···
        
        1
        +description: Get note

      
        
        2
        +content:

      
        
        3
        +  application/json:

      
        
        4
        +    schema:

      
        
        5
        +      $ref: '../schemas/Note.yml'

      
A api/components/responses/NoteGetAll.yml
···
        
        1
        +description: Get all notes

      
        
        2
        +content:

      
        
        3
        +  application/json:

      
        
        4
        +    schema:

      
        
        5
        +      type: array

      
        
        6
        +      items:

      
        
        7
        +        $ref: '../schemas/Note.yml'

      
A api/components/responses/NoteMetadata.yml
···
        
        1
        +description: Get note metadata

      
        
        2
        +content:

      
        
        3
        +  application/json:

      
        
        4
        +    schema:

      
        
        5
        +      type: object

      
        
        6
        +      properties:

      
        
        7
        +        created_at:

      
        
        8
        +          type: string

      
        
        9
        +          format: date-time

      
        
        10
        +          example: 2025-09-05T16:30:00Z

      
        
        11
        +        has_password:

      
        
        12
        +          type: boolean

      
A api/components/responses/NoteNotFound.yml
···
        
        1
        +description: Note not found

      
        
        2
        +content:

      
        
        3
        +  application/json:

      
        
        4
        +    schema:

      
        
        5
        +      type: object

      
        
        6
        +      properties:

      
        
        7
        +        message:

      
        
        8
        +          type: string

      
        
        9
        +          example: "note: not found"

      
A api/components/responses/NoteNotFoundMaybeWithContent.yml
···
        
        1
        +description: Note not found

      
        
        2
        +content:

      
        
        3
        +  application/json:

      
        
        4
        +    schema:

      
        
        5
        +      oneOf:

      
        
        6
        +        - type: object

      
        
        7
        +          properties:

      
        
        8
        +            message:

      
        
        9
        +              type: string

      
        
        10
        +              example: "note: not found"

      
        
        11
        +        - $ref: "../schemas/Note.yml"

      
A api/components/responses/UserNotFound.yml
···
        
        1
        +description: User not found

      
        
        2
        +content:

      
        
        3
        +  application/json:

      
        
        4
        +    schema:

      
        
        5
        +      type: object

      
        
        6
        +      properties:

      
        
        7
        +        message:

      
        
        8
        +          type: string

      
        
        9
        +          example: "user: not found"

      
A api/components/schemas/Error.yml
···
        
        1
        +type: object

      
        
        2
        +properties:

      
        
        3
        +  message:

      
        
        4
        +    type: string

      
        
        5
        +    example: "internal error"

      
A api/components/schemas/JwtTokens.yml
···
        
        1
        +type: object

      
        
        2
        +properties:

      
        
        3
        +  access_token:

      
        
        4
        +    type: string

      
        
        5
        +    example: "jwt.token.string"

      
        
        6
        +

      
        
        7
        +  refresh_token:

      
        
        8
        +    type: string

      
        
        9
        +    example: "refresh-token"

      
A api/components/schemas/Note.yml
···
        
        1
        +type: object

      
        
        2
        +required:

      
        
        3
        +  - content

      
        
        4
        +  - read_at

      
        
        5
        +  - keep_before_expiration

      
        
        6
        +  - created_at

      
        
        7
        +  - expires_at

      
        
        8
        +properties:

      
        
        9
        +  content:

      
        
        10
        +    type: string

      
        
        11
        +    example: note content

      
        
        12
        +  read_at:

      
        
        13
        +    type: string

      
        
        14
        +    format: date-time

      
        
        15
        +    example: 2025-09-05T16:30:00Z

      
        
        16
        +  keep_before_expiration:

      
        
        17
        +    type: boolean

      
        
        18
        +  created_at:

      
        
        19
        +    type: string

      
        
        20
        +    format: date-time

      
        
        21
        +    example: 2025-09-05T16:30:00Z

      
        
        22
        +  expires_at:

      
        
        23
        +    type: string

      
        
        24
        +    format: date-time

      
        
        25
        +    example: 2025-09-05T16:30:00Z

      
A api/openapi.yml
···
        
        1
        +openapi: 3.1.0

      
        
        2
        +info:

      
        
        3
        +  title: Onasty API

      
        
        4
        +  version: 1.0.0

      
        
        5
        +  description: |

      
        
        6
        +    Welcome to the reference for the Onasty API!

      
        
        7
        +

      
        
        8
        +    ## Rate limiting

      
        
        9
        +    All requests are rate limited using various strategies,

      
        
        10
        +    to ensure the API remains responsive for everyone.

      
        
        11
        +    Only make one request at a time.

      
        
        12
        +    If you receive an HTTP response with a [429 status](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#429),

      
        
        13
        +    please wait a full minute before resuming API usage.

      
        
        14
        +

      
        
        15
        +servers:

      
        
        16
        +  # TODO: add hosted url

      
        
        17
        +  - url: http://localhost:8000/api

      
        
        18
        +  - url: http://core:8000/api

      
        
        19
        +

      
        
        20
        +components:

      
        
        21
        +  securitySchemes:

      
        
        22
        +    Bearer:

      
        
        23
        +      type: http

      
        
        24
        +      scheme: bearer

      
        
        25
        +      bearerFormat: JWT

      
        
        26
        +

      
        
        27
        +paths:

      
        
        28
        +  /ping:

      
        
        29
        +    $ref: "./paths/ping.yml"

      
        
        30
        +

      
        
        31
        +  # -- AUTH V1 -------------------------------------------------------

      
        
        32
        +  /v1/auth/signup:

      
        
        33
        +    $ref: "./paths/auth/signup.yml"

      
        
        34
        +  /v1/auth/signin:

      
        
        35
        +    $ref: "./paths/auth/signin.yml"

      
        
        36
        +  /v1/auth/refresh-tokens:

      
        
        37
        +    $ref: "./paths/auth/refresh-tokens.yml"

      
        
        38
        +  /v1/auth/verify/{token}:

      
        
        39
        +    $ref: "./paths/auth/verify-token.yml"

      
        
        40
        +  /v1/auth/resend-verification-email:

      
        
        41
        +    $ref: "./paths/auth/resend-verification-email.yml"

      
        
        42
        +  /v1/auth/reset-password:

      
        
        43
        +    $ref: "./paths/auth/reset-password.yml"

      
        
        44
        +  /v1/auth/reset-password/{token}:

      
        
        45
        +    $ref: "./paths/auth/reset-password-token.yml"

      
        
        46
        +  /v1/auth/change-email/{token}:

      
        
        47
        +    $ref: "./paths/auth/change-email-token.yml"

      
        
        48
        +  /v1/auth/oauth/{provider}:

      
        
        49
        +    $ref: "./paths/auth/oauth-provider.yml"

      
        
        50
        +  /v1/auth/oauth/{provider}/callback:

      
        
        51
        +    $ref: "./paths/auth/oauth-provider-callback.yml"

      
        
        52
        +  # protected

      
        
        53
        +  /v1/auth/logout:

      
        
        54
        +    $ref: "./paths/auth/logout.yml"

      
        
        55
        +  /v1/auth/logout/all:

      
        
        56
        +    $ref: "./paths/auth/logout-all.yml"

      
        
        57
        +  /v1/auth/change-password:

      
        
        58
        +    $ref: "./paths/auth/change-password.yml"

      
        
        59
        +  /v1/auth/change-email:

      
        
        60
        +    $ref: "./paths/auth/change-email.yml"

      
        
        61
        +  /v1/me:

      
        
        62
        +    $ref: "./paths/auth/me.yml"

      
        
        63
        +

      
        
        64
        +  # -- NOTES V1 ------------------------------------------------------

      
        
        65
        +  /v1/note/{slug}/view:

      
        
        66
        +    $ref: "./paths/note/note-slug-view.yml"

      
        
        67
        +  /v1/note/{slug}/meta:

      
        
        68
        +    $ref: "./paths/note/note-slug-meta.yml"

      
        
        69
        +  # possibly protected

      
        
        70
        +  /v1/note:

      
        
        71
        +    $ref: "./paths/note/note.yml"

      
        
        72
        +  /v1/note/{slug}:

      
        
        73
        +    $ref: "./paths/note/note-slug.yml"

      
        
        74
        +  # protected

      
        
        75
        +  /v1/note/read:

      
        
        76
        +    $ref: "./paths/note/note-read.yml"

      
        
        77
        +  /v1/note/unread:

      
        
        78
        +    $ref: "./paths/note/note-unread.yml"

      
        
        79
        +  /v1/note/{slug}/expires:

      
        
        80
        +    $ref: "./paths/note/note-slug-expires.yml"

      
        
        81
        +  /v1/note/{slug}/password:

      
        
        82
        +    $ref: "./paths/note/note-slug-password.yml"

      
A api/package.json
···
        
        1
        +{

      
        
        2
        +  "private": true,

      
        
        3
        +  "devDependencies": {

      
        
        4
        +    "@redocly/cli": "^2.0.8"

      
        
        5
        +  }

      
        
        6
        +}

      
A api/paths/auth/change-email-token.yml
···
        
        1
        +get:

      
        
        2
        +  tags: [Account]

      
        
        3
        +  summary: Confirm email change

      
        
        4
        +  security:

      
        
        5
        +    - {}

      
        
        6
        +

      
        
        7
        +  parameters:

      
        
        8
        +    - name: token

      
        
        9
        +      in: path

      
        
        10
        +      required: true

      
        
        11
        +      schema:

      
        
        12
        +        type: string

      
        
        13
        +

      
        
        14
        +  responses:

      
        
        15
        +    '200':

      
        
        16
        +      description: Email change confirmed

      
        
        17
        +    '400':

      
        
        18
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        19
        +    '404':

      
        
        20
        +      $ref: '../../components/responses/UserNotFound.yml'

      
        
        21
        +    '500':

      
        
        22
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
A api/paths/auth/change-email.yml
···
        
        1
        +post:

      
        
        2
        +  tags: [Account]

      
        
        3
        +  summary: Change email (sends a confirmation email)

      
        
        4
        +  security:

      
        
        5
        +    - Bearer: []

      
        
        6
        +

      
        
        7
        +  requestBody:

      
        
        8
        +    required: true

      
        
        9
        +    content:

      
        
        10
        +      application/json:

      
        
        11
        +        schema:

      
        
        12
        +          $ref: '../../components/requests/ChangeEmail.yml'

      
        
        13
        +

      
        
        14
        +  responses:

      
        
        15
        +    '200':

      
        
        16
        +      description: Successfully send the email

      
        
        17
        +    '401':

      
        
        18
        +      description: Unauthorized

      
        
        19
        +    '400':

      
        
        20
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        21
        +    '404':

      
        
        22
        +      $ref: '../../components/responses/UserNotFound.yml'

      
        
        23
        +    '500':

      
        
        24
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
A api/paths/auth/change-password.yml
···
        
        1
        +post:

      
        
        2
        +  tags: [Account]

      
        
        3
        +  summary: Change password

      
        
        4
        +  security:

      
        
        5
        +    - Bearer: []

      
        
        6
        +

      
        
        7
        +  requestBody:

      
        
        8
        +    required: true

      
        
        9
        +    content:

      
        
        10
        +      application/json:

      
        
        11
        +        schema:

      
        
        12
        +          $ref: '../../components/requests/ChangePassword.yml'

      
        
        13
        +

      
        
        14
        +  responses:

      
        
        15
        +    '200':

      
        
        16
        +      description: Password changed

      
        
        17
        +    '401':

      
        
        18
        +      description: Unauthorized

      
        
        19
        +    '400':

      
        
        20
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        21
        +    '404':

      
        
        22
        +      $ref: '../../components/responses/UserNotFound.yml'

      
        
        23
        +    '500':

      
        
        24
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
A api/paths/auth/logout-all.yml
···
        
        1
        +post:

      
        
        2
        +  tags: [Auth]

      
        
        3
        +  summary: Logout (all sessions)

      
        
        4
        +  security:

      
        
        5
        +    - Bearer: []

      
        
        6
        +

      
        
        7
        +  responses:

      
        
        8
        +    '200':

      
        
        9
        +      description: User logged out

      
        
        10
        +    '401':

      
        
        11
        +      description: Unauthorized

      
        
        12
        +    '400':

      
        
        13
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        14
        +    '404':

      
        
        15
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        16
        +    '500':

      
        
        17
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
A api/paths/auth/logout.yml
···
        
        1
        +post:

      
        
        2
        +  tags: [Auth]

      
        
        3
        +  summary: Logout (current session)

      
        
        4
        +  security:

      
        
        5
        +    - Bearer: []

      
        
        6
        +

      
        
        7
        +  requestBody:

      
        
        8
        +    required: true

      
        
        9
        +    content:

      
        
        10
        +      application/json:

      
        
        11
        +        schema:

      
        
        12
        +          $ref: '../../components/requests/RefreshTokens.yml'

      
        
        13
        +

      
        
        14
        +  responses:

      
        
        15
        +    '200':

      
        
        16
        +      description: Logged out

      
        
        17
        +    '404':

      
        
        18
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        19
        +    '401':

      
        
        20
        +      description: Unauthorized

      
        
        21
        +    '400':

      
        
        22
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        23
        +    '500':

      
        
        24
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
A api/paths/auth/me.yml
···
        
        1
        +get:

      
        
        2
        +  tags: [Account]

      
        
        3
        +  summary: Get account info

      
        
        4
        +  security:

      
        
        5
        +    - Bearer: []

      
        
        6
        +

      
        
        7
        +  responses:

      
        
        8
        +    '200':

      
        
        9
        +      $ref: '../../components/responses/Me.yml'

      
        
        10
        +    '401':

      
        
        11
        +      description: Unauthorized

      
        
        12
        +    '500':

      
        
        13
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
A api/paths/auth/oauth-provider-callback.yml
···
        
        1
        +get:

      
        
        2
        +  tags: [OAuth]

      
        
        3
        +  summary: OAuth callback handler

      
        
        4
        +  security:

      
        
        5
        +    - {}

      
        
        6
        +

      
        
        7
        +  parameters:

      
        
        8
        +    - name: provider

      
        
        9
        +      in: path

      
        
        10
        +      required: true

      
        
        11
        +      schema:

      
        
        12
        +        type: string

      
        
        13
        +        enum: [google, github]

      
        
        14
        +

      
        
        15
        +    - name: code

      
        
        16
        +      in: query

      
        
        17
        +      required: true

      
        
        18
        +      description: Authorization code from OAuth provider

      
        
        19
        +      schema:

      
        
        20
        +        type: string

      
        
        21
        +        example: "4/0AX4XfWjYxT5..."

      
        
        22
        +

      
        
        23
        +    - name: state

      
        
        24
        +      in: query

      
        
        25
        +      required: false

      
        
        26
        +      description: CSRF protection state parameter

      
        
        27
        +      schema:

      
        
        28
        +        type: string

      
        
        29
        +

      
        
        30
        +  responses:

      
        
        31
        +    '200':

      
        
        32
        +      description: OAuth login successful

      
        
        33
        +      content:

      
        
        34
        +        application/json:

      
        
        35
        +          schema:

      
        
        36
        +            $ref: '../../components/schemas/JwtTokens.yml'

      
        
        37
        +

      
        
        38
        +    # TODO: unimplemented

      
        
        39
        +    # '302':

      
        
        40
        +    #   description: Redirect to frontend with tokens (alternative flow)

      
        
        41
        +    #   headers:

      
        
        42
        +    #     Location:

      
        
        43
        +    #       description: Frontend URL with tokens as query params or hash

      
        
        44
        +    #       schema:

      
        
        45
        +    #         type: string

      
        
        46
        +    #         example: "onasty.local/api/v1/auth/success?access=...&refresh=..."

      
        
        47
        +

      
        
        48
        +    '400':

      
        
        49
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        50
        +

      
        
        51
        +    '500':

      
        
        52
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
A api/paths/auth/oauth-provider.yml
···
        
        1
        +get:

      
        
        2
        +  tags: [OAuth]

      
        
        3
        +  summary: Initiate OAuth login

      
        
        4
        +  security:

      
        
        5
        +    - {}

      
        
        6
        +

      
        
        7
        +  parameters:

      
        
        8
        +    - name: provider

      
        
        9
        +      in: path

      
        
        10
        +      required: true

      
        
        11
        +      schema:

      
        
        12
        +        type: string

      
        
        13
        +        enum: [google, github]

      
        
        14
        +

      
        
        15
        +  responses:

      
        
        16
        +    '200':

      
        
        17
        +      description: CANNOT BE RETURNED it's here just to make redocly linter not angry at this code

      
        
        18
        +    '302':

      
        
        19
        +      description: Redirect to OAuth provider

      
        
        20
        +    '400':

      
        
        21
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        22
        +    '500':

      
        
        23
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
A api/paths/auth/refresh-tokens.yml
···
        
        1
        +post:

      
        
        2
        +  tags: [Auth]

      
        
        3
        +  summary: Refresh jwt tokens

      
        
        4
        +  security:

      
        
        5
        +    - {}

      
        
        6
        +

      
        
        7
        +  requestBody:

      
        
        8
        +    required: true

      
        
        9
        +    content:

      
        
        10
        +      application/json:

      
        
        11
        +        schema:

      
        
        12
        +          $ref: '../../components/requests/RefreshTokens.yml'

      
        
        13
        +  responses:

      
        
        14
        +    '200':

      
        
        15
        +      description: Successfully refreshed tokens

      
        
        16
        +      content:

      
        
        17
        +        application/json:

      
        
        18
        +          schema:

      
        
        19
        +            $ref: '../../components/schemas/JwtTokens.yml'

      
        
        20
        +

      
        
        21
        +    '400':

      
        
        22
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        23
        +

      
        
        24
        +    '500':

      
        
        25
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
A api/paths/auth/resend-verification-email.yml
···
        
        1
        +post:

      
        
        2
        +  tags: [Account]

      
        
        3
        +  summary: Resend verification email

      
        
        4
        +  security:

      
        
        5
        +    - {}

      
        
        6
        +

      
        
        7
        +  requestBody:

      
        
        8
        +    required: true

      
        
        9
        +    content:

      
        
        10
        +      application/json:

      
        
        11
        +        schema:

      
        
        12
        +          $ref: '../../components/requests/EmailRequest.yml'

      
        
        13
        +

      
        
        14
        +  responses:

      
        
        15
        +    '200':

      
        
        16
        +      description: Successfully resend the email

      
        
        17
        +    '400':

      
        
        18
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        19
        +    '404':

      
        
        20
        +      $ref: '../../components/responses/UserNotFound.yml'

      
        
        21
        +    '500':

      
        
        22
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
A api/paths/auth/reset-password-token.yml
···
        
        1
        +post:

      
        
        2
        +  tags: [Account]

      
        
        3
        +  summary: Reset password

      
        
        4
        +  security:

      
        
        5
        +    - {}

      
        
        6
        +

      
        
        7
        +  parameters:

      
        
        8
        +    - name: token

      
        
        9
        +      in: path

      
        
        10
        +      required: true

      
        
        11
        +      schema:

      
        
        12
        +        type: string

      
        
        13
        +

      
        
        14
        +  requestBody:

      
        
        15
        +    required: true

      
        
        16
        +    content:

      
        
        17
        +      application/json:

      
        
        18
        +        schema:

      
        
        19
        +          $ref: '../../components/requests/ResetPassword.yml'

      
        
        20
        +

      
        
        21
        +  responses:

      
        
        22
        +    '200':

      
        
        23
        +      description: Successfully resend the email

      
        
        24
        +    '400':

      
        
        25
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        26
        +    '404':

      
        
        27
        +      $ref: '../../components/responses/UserNotFound.yml'

      
        
        28
        +    '500':

      
        
        29
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
A api/paths/auth/reset-password.yml
···
        
        1
        +post:

      
        
        2
        +  tags: [Account]

      
        
        3
        +  summary: Reset password (sends an email with token for continuing reset)

      
        
        4
        +  security:

      
        
        5
        +    - {}

      
        
        6
        +

      
        
        7
        +  requestBody:

      
        
        8
        +    required: true

      
        
        9
        +    content:

      
        
        10
        +      application/json:

      
        
        11
        +        schema:

      
        
        12
        +          $ref: '../../components/requests/EmailRequest.yml'

      
        
        13
        +

      
        
        14
        +  responses:

      
        
        15
        +    '200':

      
        
        16
        +      description: Successfully send the email

      
        
        17
        +    '400':

      
        
        18
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        19
        +    '404':

      
        
        20
        +      $ref: '../../components/responses/UserNotFound.yml'

      
        
        21
        +    '500':

      
        
        22
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
A api/paths/auth/signin.yml
···
        
        1
        +post:

      
        
        2
        +  tags: [Auth]

      
        
        3
        +  summary: Sign in

      
        
        4
        +  security:

      
        
        5
        +    - {}

      
        
        6
        +

      
        
        7
        +  requestBody:

      
        
        8
        +    required: true

      
        
        9
        +    content:

      
        
        10
        +      application/json:

      
        
        11
        +        schema:

      
        
        12
        +          $ref: '../../components/requests/Signin.yml'

      
        
        13
        +  responses:

      
        
        14
        +    '200':

      
        
        15
        +      description: Successfully signed in

      
        
        16
        +      content:

      
        
        17
        +        application/json:

      
        
        18
        +          schema:

      
        
        19
        +            $ref: '../../components/schemas/JwtTokens.yml'

      
        
        20
        +

      
        
        21
        +    '400':

      
        
        22
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        23
        +

      
        
        24
        +    '500':

      
        
        25
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
A api/paths/auth/signup.yml
···
        
        1
        +post:

      
        
        2
        +  tags: [Auth]

      
        
        3
        +  summary: Sign up

      
        
        4
        +  security:

      
        
        5
        +    - {}

      
        
        6
        +

      
        
        7
        +  requestBody:

      
        
        8
        +    required: true

      
        
        9
        +    content:

      
        
        10
        +      application/json:

      
        
        11
        +        schema:

      
        
        12
        +          $ref: '../../components/requests/Signup.yml'

      
        
        13
        +  responses:

      
        
        14
        +    '201':

      
        
        15
        +      description: User created

      
        
        16
        +    '404':

      
        
        17
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        18
        +    '500':

      
        
        19
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
A api/paths/auth/verify-token.yml
···
        
        1
        +get:

      
        
        2
        +  tags: [Account]

      
        
        3
        +  summary: Verify account

      
        
        4
        +  security:

      
        
        5
        +    - {}

      
        
        6
        +

      
        
        7
        +  parameters:

      
        
        8
        +    - name: token

      
        
        9
        +      in: path

      
        
        10
        +      required: true

      
        
        11
        +      schema:

      
        
        12
        +        type: string

      
        
        13
        +

      
        
        14
        +  responses:

      
        
        15
        +    '200':

      
        
        16
        +      description: User activated

      
        
        17
        +    '400':

      
        
        18
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        19
        +    '500':

      
        
        20
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
A api/paths/note/note-read.yml
···
        
        1
        +get:

      
        
        2
        +  tags: [Notes]

      
        
        3
        +  summary: Get all read notes created by user

      
        
        4
        +  security:

      
        
        5
        +    - Bearer: []

      
        
        6
        +

      
        
        7
        +  responses:

      
        
        8
        +    '200':

      
        
        9
        +      $ref: '../../components/responses/NoteGetAll.yml'

      
        
        10
        +    '401':

      
        
        11
        +      description: Unauthorized

      
A api/paths/note/note-slug-expires.yml
···
        
        1
        +patch:

      
        
        2
        +  tags: [Notes]

      
        
        3
        +  summary: Change note's expiration time

      
        
        4
        +  security:

      
        
        5
        +    - Bearer: []

      
        
        6
        +

      
        
        7
        +  parameters:

      
        
        8
        +    - name: slug

      
        
        9
        +      in: path

      
        
        10
        +      required: true

      
        
        11
        +      schema:

      
        
        12
        +        type: string

      
        
        13
        +

      
        
        14
        +  requestBody:

      
        
        15
        +    required: true

      
        
        16
        +    content:

      
        
        17
        +      application/json:

      
        
        18
        +        schema:

      
        
        19
        +          type: object

      
        
        20
        +          properties:

      
        
        21
        +            expires_at:

      
        
        22
        +              type: string

      
        
        23
        +              format: date-time

      
        
        24
        +            keep_before_expiration:

      
        
        25
        +              type: boolean

      
        
        26
        +

      
        
        27
        +  responses:

      
        
        28
        +    '200':

      
        
        29
        +      description: Note updated

      
        
        30
        +    '400':

      
        
        31
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        32
        +    '401':

      
        
        33
        +      description: Unauthorized

      
        
        34
        +    '404':

      
        
        35
        +      $ref: '../../components/responses/NoteNotFound.yml'

      
A api/paths/note/note-slug-meta.yml
···
        
        1
        +get:

      
        
        2
        +  tags: [Notes]

      
        
        3
        +  summary: Get note metadata

      
        
        4
        +  security:

      
        
        5
        +    - {}

      
        
        6
        +

      
        
        7
        +  parameters:

      
        
        8
        +    - name: slug

      
        
        9
        +      in: path

      
        
        10
        +      required: true

      
        
        11
        +      schema:

      
        
        12
        +        type: string

      
        
        13
        +

      
        
        14
        +  responses:

      
        
        15
        +    '200':

      
        
        16
        +      $ref: '../../components/responses/NoteMetadata.yml'

      
        
        17
        +    '404':

      
        
        18
        +      $ref: '../../components/responses/NoteNotFound.yml'

      
A api/paths/note/note-slug-password.yml
···
        
        1
        +patch:

      
        
        2
        +  tags: [Notes]

      
        
        3
        +  summary: Change note's password

      
        
        4
        +  security:

      
        
        5
        +    - Bearer: []

      
        
        6
        +

      
        
        7
        +  parameters:

      
        
        8
        +    - name: slug

      
        
        9
        +      in: path

      
        
        10
        +      required: true

      
        
        11
        +      schema:

      
        
        12
        +        type: string

      
        
        13
        +

      
        
        14
        +  requestBody:

      
        
        15
        +    required: true

      
        
        16
        +    content:

      
        
        17
        +      application/json:

      
        
        18
        +        schema:

      
        
        19
        +          type: object

      
        
        20
        +          properties:

      
        
        21
        +            password:

      
        
        22
        +              type: string

      
        
        23
        +              example: newPassword

      
        
        24
        +

      
        
        25
        +  responses:

      
        
        26
        +    '200':

      
        
        27
        +      description: Note updated

      
        
        28
        +    '400':

      
        
        29
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        30
        +    '401':

      
        
        31
        +      description: Unauthorized

      
        
        32
        +    '404':

      
        
        33
        +      $ref: '../../components/responses/NoteNotFound.yml'

      
A api/paths/note/note-slug-view.yml
···
        
        1
        +post:

      
        
        2
        +  tags: [Notes]

      
        
        3
        +  summary: Read note with password

      
        
        4
        +  security:

      
        
        5
        +    - {}

      
        
        6
        +

      
        
        7
        +  parameters:

      
        
        8
        +    - name: slug

      
        
        9
        +      in: path

      
        
        10
        +      required: true

      
        
        11
        +      schema:

      
        
        12
        +        type: string

      
        
        13
        +

      
        
        14
        +  responses:

      
        
        15
        +    '200':

      
        
        16
        +      $ref: '../../components/responses/NoteGet.yml'

      
        
        17
        +    '400':

      
        
        18
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        19
        +    '404':

      
        
        20
        +      $ref: '../../components/responses/NoteNotFoundMaybeWithContent.yml'

      
A api/paths/note/note-slug.yml
···
        
        1
        +get:

      
        
        2
        +  tags: [Notes]

      
        
        3
        +  summary: Read note

      
        
        4
        +  security:

      
        
        5
        +    - {}

      
        
        6
        +

      
        
        7
        +  parameters:

      
        
        8
        +    - name: slug

      
        
        9
        +      in: path

      
        
        10
        +      required: true

      
        
        11
        +      schema:

      
        
        12
        +        type: string

      
        
        13
        +

      
        
        14
        +  responses:

      
        
        15
        +    '200':

      
        
        16
        +      $ref: '../../components/responses/NoteGet.yml'

      
        
        17
        +    '404':

      
        
        18
        +      $ref: '../../components/responses/NoteNotFoundMaybeWithContent.yml'

      
        
        19
        +

      
        
        20
        +

      
        
        21
        +delete:

      
        
        22
        +  tags: [Notes]

      
        
        23
        +  summary: Delete a note

      
        
        24
        +  security:

      
        
        25
        +    - Bearer: []

      
        
        26
        +

      
        
        27
        +  parameters:

      
        
        28
        +    - name: slug

      
        
        29
        +      in: path

      
        
        30
        +      required: true

      
        
        31
        +      schema:

      
        
        32
        +        type: string

      
        
        33
        +

      
        
        34
        +  responses:

      
        
        35
        +    '204':

      
        
        36
        +      description: Note deleted

      
        
        37
        +    '401':

      
        
        38
        +      description: Unauthorized

      
        
        39
        +    '404':

      
        
        40
        +      $ref: '../../components/responses/NoteNotFound.yml'

      
A api/paths/note/note-unread.yml
···
        
        1
        +get:

      
        
        2
        +  tags: [Notes]

      
        
        3
        +  summary: Get all unread notes created by user

      
        
        4
        +  security:

      
        
        5
        +    - Bearer: []

      
        
        6
        +

      
        
        7
        +  responses:

      
        
        8
        +    '200':

      
        
        9
        +      $ref: '../../components/responses/NoteGetAll.yml'

      
        
        10
        +    '401':

      
        
        11
        +      description: Unauthorized

      
A api/paths/note/note.yml
···
        
        1
        +post:

      
        
        2
        +  tags: [Notes]

      
        
        3
        +  summary: Create note

      
        
        4
        +  security:

      
        
        5
        +    - Bearer: []

      
        
        6
        +    - {}

      
        
        7
        +

      
        
        8
        +  requestBody:

      
        
        9
        +    required: true

      
        
        10
        +    content:

      
        
        11
        +      application/json:

      
        
        12
        +        schema:

      
        
        13
        +          $ref: '../../components/requests/CreateNote.yml'

      
        
        14
        +

      
        
        15
        +  responses:

      
        
        16
        +    '201':

      
        
        17
        +      $ref: '../../components/responses/NoteCreated.yml'

      
        
        18
        +    '400':

      
        
        19
        +      $ref: '../../components/responses/ErrorResponse.yml'

      
        
        20
        +

      
        
        21
        +get:

      
        
        22
        +  tags: [Notes]

      
        
        23
        +  summary: Get all note created by user

      
        
        24
        +  security:

      
        
        25
        +    - Bearer: []

      
        
        26
        +

      
        
        27
        +  responses:

      
        
        28
        +    '200':

      
        
        29
        +      $ref: '../../components/responses/NoteGetAll.yml'

      
        
        30
        +    '401':

      
        
        31
        +      description: Unauthorized

      
A api/paths/ping.yml
···
        
        1
        +get:

      
        
        2
        +  tags: [API health]

      
        
        3
        +  summary: Check if api is up

      
        
        4
        +  security:

      
        
        5
        +    - {}

      
        
        6
        +

      
        
        7
        +  responses:

      
        
        8
        +    '200':

      
        
        9
        +      description: API is up

      
        
        10
        +      content:

      
        
        11
        +        application/json:

      
        
        12
        +          schema:

      
        
        13
        +            type: object

      
        
        14
        +            properties:

      
        
        15
        +              message:

      
        
        16
        +                type: string

      
        
        17
        +                example: "pong"

      
        
        18
        +

      
        
        19
        +    '400':

      
        
        20
        +      $ref: '../components/responses/ErrorResponse.yml'

      
A api/redocly.yml
···
        
        1
        +extends:

      
        
        2
        +  - recommended-strict

      
        
        3
        +

      
        
        4
        +rules:

      
        
        5
        +  info-license: off

      
        
        6
        +  operation-operationId: off

      
        
        7
        +  no-server-example.com: off

      
M docker-compose.yml
···
        114
        114
             volumes:

      
        115
        115
               - /var/run/docker.sock:/var/run/docker.sock

      
        116
        116
               - ./infra/promtail/config.yaml:/etc/promtail/config.yaml

      
        
        117
        +

      
        
        118
        +  swagger-ui:

      
        
        119
        +    image: swaggerapi/swagger-ui

      
        
        120
        +    container_name: swagger-ui

      
        
        121
        +    ports:

      
        
        122
        +      - 8080:8080

      
        
        123
        +    volumes:

      
        
        124
        +      - ./api/dist/bundle.yml:/usr/share/nginx/html/openapi.yml:ro

      
        
        125
        +    environment:

      
        
        126
        +      SWAGGER_JSON_URL: openapi.yml

      
        
        127
        +    depends_on:

      
        
        128
        +      - core