@probelabs/visor 0.1.132 → 0.1.137

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dist/config/config-reloader.d.ts +1 -0
  2. package/dist/config/config-reloader.d.ts.map +1 -1
  3. package/dist/config/config-watcher.d.ts +1 -0
  4. package/dist/config/config-watcher.d.ts.map +1 -1
  5. package/dist/config.d.ts +4 -0
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/docs/ai-custom-tools-usage.md +37 -0
  8. package/dist/docs/ai-custom-tools.md +43 -1
  9. package/dist/docs/custom-tools.md +70 -1
  10. package/dist/docs/script.md +542 -27
  11. package/dist/docs/testing/cookbook.md +47 -0
  12. package/dist/examples/README.md +4 -0
  13. package/dist/examples/api-tools-ai-example.yaml +63 -0
  14. package/dist/examples/api-tools-inline-overlay-example.yaml +126 -0
  15. package/dist/examples/api-tools-library.yaml +18 -0
  16. package/dist/examples/api-tools-mcp-example.yaml +55 -0
  17. package/dist/examples/openapi/profiles-overlay-rename.yaml +3 -0
  18. package/dist/examples/openapi/users-api.json +91 -0
  19. package/dist/examples/openapi/users-overlay-rename.yaml +3 -0
  20. package/dist/generated/config-schema.d.ts +223 -74
  21. package/dist/generated/config-schema.d.ts.map +1 -1
  22. package/dist/generated/config-schema.json +251 -79
  23. package/dist/index.js +45128 -25001
  24. package/dist/output/traces/{run-2026-02-18T11-06-48-673Z.ndjson → run-2026-02-23T08-59-32-321Z.ndjson} +84 -84
  25. package/dist/{traces/run-2026-02-18T11-07-37-310Z.ndjson → output/traces/run-2026-02-23T09-00-20-148Z.ndjson} +1148 -1063
  26. package/dist/providers/ai-check-provider.d.ts.map +1 -1
  27. package/dist/providers/api-tool-executor.d.ts +43 -0
  28. package/dist/providers/api-tool-executor.d.ts.map +1 -0
  29. package/dist/providers/command-check-provider.d.ts.map +1 -1
  30. package/dist/providers/custom-tool-executor.d.ts +21 -0
  31. package/dist/providers/custom-tool-executor.d.ts.map +1 -1
  32. package/dist/providers/mcp-check-provider.d.ts.map +1 -1
  33. package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -1
  34. package/dist/providers/script-check-provider.d.ts +18 -2
  35. package/dist/providers/script-check-provider.d.ts.map +1 -1
  36. package/dist/sdk/{check-provider-registry-7TCA3NSG.mjs → check-provider-registry-BCGP62RY.mjs} +9 -8
  37. package/dist/sdk/{check-provider-registry-RRUZHGJI.mjs → check-provider-registry-SA2WHPLO.mjs} +9 -8
  38. package/dist/sdk/{check-provider-registry-4WLTLPMU.mjs → check-provider-registry-SCL4KP55.mjs} +9 -8
  39. package/dist/sdk/{chunk-LMJNI6RM.mjs → chunk-ALB3N4ZQ.mjs} +12 -5
  40. package/dist/sdk/{chunk-LMJNI6RM.mjs.map → chunk-ALB3N4ZQ.mjs.map} +1 -1
  41. package/dist/sdk/{chunk-27RV5RR2.mjs → chunk-BRD36I43.mjs} +3 -3
  42. package/dist/sdk/{chunk-5VY5QJTY.mjs → chunk-DFKP7LY6.mjs} +1896 -1762
  43. package/dist/sdk/chunk-DFKP7LY6.mjs.map +1 -0
  44. package/dist/sdk/{chunk-UBDHAGYY.mjs → chunk-E2N3U5HU.mjs} +5 -5
  45. package/dist/sdk/{chunk-XGI47XIH.mjs → chunk-F4K5WFSM.mjs} +1896 -1762
  46. package/dist/sdk/chunk-F4K5WFSM.mjs.map +1 -0
  47. package/dist/sdk/{chunk-BOGVSF57.mjs → chunk-J6F5K5EG.mjs} +1896 -1762
  48. package/dist/sdk/chunk-J6F5K5EG.mjs.map +1 -0
  49. package/dist/sdk/{chunk-U3BLLEW3.mjs → chunk-KPRFDKQX.mjs} +329 -80
  50. package/dist/sdk/chunk-KPRFDKQX.mjs.map +1 -0
  51. package/dist/sdk/{chunk-VF6XIUE4.mjs → chunk-LW3INISN.mjs} +32 -1
  52. package/dist/sdk/{chunk-VF6XIUE4.mjs.map → chunk-LW3INISN.mjs.map} +1 -1
  53. package/dist/sdk/{chunk-VG7FWDC2.mjs → chunk-QUEWQWDX.mjs} +11 -4
  54. package/dist/sdk/{chunk-VG7FWDC2.mjs.map → chunk-QUEWQWDX.mjs.map} +1 -1
  55. package/dist/sdk/{chunk-BGBXLPLL.mjs → chunk-UMFEBYCN.mjs} +5 -5
  56. package/dist/sdk/chunk-XKCER23W.mjs +1490 -0
  57. package/dist/sdk/chunk-XKCER23W.mjs.map +1 -0
  58. package/dist/sdk/{chunk-FAKITJ3J.mjs → chunk-YTAGJZHN.mjs} +3 -3
  59. package/dist/sdk/{chunk-XJQKTK6V.mjs → chunk-ZUEQNCKB.mjs} +2 -2
  60. package/dist/sdk/{config-FMIIATKX.mjs → config-3UIU4TMP.mjs} +3 -3
  61. package/dist/sdk/{failure-condition-evaluator-PNONVBXD.mjs → failure-condition-evaluator-3B3G5NYW.mjs} +4 -4
  62. package/dist/sdk/{failure-condition-evaluator-MUUAK7MN.mjs → failure-condition-evaluator-B5JJFYKU.mjs} +4 -4
  63. package/dist/sdk/{github-frontend-DWF6BLZH.mjs → github-frontend-VAWVSCNX.mjs} +4 -4
  64. package/dist/sdk/{github-frontend-WR4S3NG5.mjs → github-frontend-ZOVXPPHQ.mjs} +4 -4
  65. package/dist/sdk/{host-S3LSWESP.mjs → host-LOQWBHWT.mjs} +2 -2
  66. package/dist/sdk/{host-U7V54J2H.mjs → host-TEQ7HKKH.mjs} +2 -2
  67. package/dist/sdk/{liquid-extensions-YDIIH33Q.mjs → liquid-extensions-PLBOMRLI.mjs} +3 -3
  68. package/dist/sdk/{routing-MVDVJDYJ.mjs → routing-HR6N43RQ.mjs} +6 -6
  69. package/dist/sdk/{routing-F4FOWVKF.mjs → routing-SEQYM4N6.mjs} +6 -6
  70. package/dist/sdk/schedule-tool-2COUUTF7.mjs +18 -0
  71. package/dist/sdk/{schedule-tool-handler-FRN3KKRM.mjs → schedule-tool-handler-5BDMLHS5.mjs} +9 -8
  72. package/dist/sdk/{schedule-tool-handler-VFES42DD.mjs → schedule-tool-handler-OXGTPLST.mjs} +9 -8
  73. package/dist/sdk/{schedule-tool-handler-7DNEGDZC.mjs → schedule-tool-handler-Y2UABBXN.mjs} +9 -8
  74. package/dist/sdk/sdk.d.mts +55 -2
  75. package/dist/sdk/sdk.d.ts +55 -2
  76. package/dist/sdk/sdk.js +2367 -482
  77. package/dist/sdk/sdk.js.map +1 -1
  78. package/dist/sdk/sdk.mjs +8 -7
  79. package/dist/sdk/sdk.mjs.map +1 -1
  80. package/dist/sdk/{trace-helpers-RDPXIN4S.mjs → trace-helpers-FAAGLXBI.mjs} +2 -2
  81. package/dist/sdk/{trace-helpers-KSPGA24B.mjs → trace-helpers-IGMH7ZPP.mjs} +2 -2
  82. package/dist/sdk/{workflow-check-provider-BMVJ6X7N.mjs → workflow-check-provider-7SR7ZWSV.mjs} +9 -8
  83. package/dist/sdk/{workflow-check-provider-CPGIRZMH.mjs → workflow-check-provider-L2ZUOMJR.mjs} +9 -8
  84. package/dist/sdk/{workflow-check-provider-4NFWH6YO.mjs → workflow-check-provider-WLA7LO56.mjs} +9 -8
  85. package/dist/sdk/workflow-check-provider-WLA7LO56.mjs.map +1 -0
  86. package/dist/state-machine/dispatch/execution-invoker.d.ts.map +1 -1
  87. package/dist/state-machine-execution-engine.d.ts.map +1 -1
  88. package/dist/test-runner/core/test-execution-wrapper.d.ts.map +1 -1
  89. package/dist/test-runner/index.d.ts.map +1 -1
  90. package/dist/test-runner/validator.d.ts.map +1 -1
  91. package/dist/traces/{run-2026-02-18T11-06-48-673Z.ndjson → run-2026-02-23T08-59-32-321Z.ndjson} +84 -84
  92. package/dist/{output/traces/run-2026-02-18T11-07-37-310Z.ndjson → traces/run-2026-02-23T09-00-20-148Z.ndjson} +1148 -1063
  93. package/dist/types/config.d.ts +55 -2
  94. package/dist/types/config.d.ts.map +1 -1
  95. package/dist/utils/config-loader.d.ts +5 -0
  96. package/dist/utils/config-loader.d.ts.map +1 -1
  97. package/dist/utils/sandbox.d.ts +8 -0
  98. package/dist/utils/sandbox.d.ts.map +1 -1
  99. package/dist/utils/script-tool-environment.d.ts +90 -0
  100. package/dist/utils/script-tool-environment.d.ts.map +1 -0
  101. package/dist/utils/tool-resolver.d.ts +18 -0
  102. package/dist/utils/tool-resolver.d.ts.map +1 -0
  103. package/package.json +11 -4
  104. package/dist/sdk/chunk-5VY5QJTY.mjs.map +0 -1
  105. package/dist/sdk/chunk-BOGVSF57.mjs.map +0 -1
  106. package/dist/sdk/chunk-U3BLLEW3.mjs.map +0 -1
  107. package/dist/sdk/chunk-XGI47XIH.mjs.map +0 -1
  108. /package/dist/sdk/{check-provider-registry-4WLTLPMU.mjs.map → check-provider-registry-BCGP62RY.mjs.map} +0 -0
  109. /package/dist/sdk/{check-provider-registry-7TCA3NSG.mjs.map → check-provider-registry-SA2WHPLO.mjs.map} +0 -0
  110. /package/dist/sdk/{check-provider-registry-RRUZHGJI.mjs.map → check-provider-registry-SCL4KP55.mjs.map} +0 -0
  111. /package/dist/sdk/{chunk-27RV5RR2.mjs.map → chunk-BRD36I43.mjs.map} +0 -0
  112. /package/dist/sdk/{chunk-BGBXLPLL.mjs.map → chunk-E2N3U5HU.mjs.map} +0 -0
  113. /package/dist/sdk/{chunk-UBDHAGYY.mjs.map → chunk-UMFEBYCN.mjs.map} +0 -0
  114. /package/dist/sdk/{chunk-FAKITJ3J.mjs.map → chunk-YTAGJZHN.mjs.map} +0 -0
  115. /package/dist/sdk/{chunk-XJQKTK6V.mjs.map → chunk-ZUEQNCKB.mjs.map} +0 -0
  116. /package/dist/sdk/{config-FMIIATKX.mjs.map → config-3UIU4TMP.mjs.map} +0 -0
  117. /package/dist/sdk/{failure-condition-evaluator-MUUAK7MN.mjs.map → failure-condition-evaluator-3B3G5NYW.mjs.map} +0 -0
  118. /package/dist/sdk/{failure-condition-evaluator-PNONVBXD.mjs.map → failure-condition-evaluator-B5JJFYKU.mjs.map} +0 -0
  119. /package/dist/sdk/{github-frontend-DWF6BLZH.mjs.map → github-frontend-VAWVSCNX.mjs.map} +0 -0
  120. /package/dist/sdk/{github-frontend-WR4S3NG5.mjs.map → github-frontend-ZOVXPPHQ.mjs.map} +0 -0
  121. /package/dist/sdk/{host-S3LSWESP.mjs.map → host-LOQWBHWT.mjs.map} +0 -0
  122. /package/dist/sdk/{host-U7V54J2H.mjs.map → host-TEQ7HKKH.mjs.map} +0 -0
  123. /package/dist/sdk/{liquid-extensions-YDIIH33Q.mjs.map → liquid-extensions-PLBOMRLI.mjs.map} +0 -0
  124. /package/dist/sdk/{routing-F4FOWVKF.mjs.map → routing-HR6N43RQ.mjs.map} +0 -0
  125. /package/dist/sdk/{routing-MVDVJDYJ.mjs.map → routing-SEQYM4N6.mjs.map} +0 -0
  126. /package/dist/sdk/{schedule-tool-handler-7DNEGDZC.mjs.map → schedule-tool-2COUUTF7.mjs.map} +0 -0
  127. /package/dist/sdk/{schedule-tool-handler-FRN3KKRM.mjs.map → schedule-tool-handler-5BDMLHS5.mjs.map} +0 -0
  128. /package/dist/sdk/{schedule-tool-handler-VFES42DD.mjs.map → schedule-tool-handler-OXGTPLST.mjs.map} +0 -0
  129. /package/dist/sdk/{trace-helpers-KSPGA24B.mjs.map → schedule-tool-handler-Y2UABBXN.mjs.map} +0 -0
  130. /package/dist/sdk/{trace-helpers-RDPXIN4S.mjs.map → trace-helpers-FAAGLXBI.mjs.map} +0 -0
  131. /package/dist/sdk/{workflow-check-provider-4NFWH6YO.mjs.map → trace-helpers-IGMH7ZPP.mjs.map} +0 -0
  132. /package/dist/sdk/{workflow-check-provider-BMVJ6X7N.mjs.map → workflow-check-provider-7SR7ZWSV.mjs.map} +0 -0
  133. /package/dist/sdk/{workflow-check-provider-CPGIRZMH.mjs.map → workflow-check-provider-L2ZUOMJR.mjs.map} +0 -0
@@ -0,0 +1,63 @@
1
+ version: "1.0"
2
+
3
+ # Reuse the API bundle from a separate tools file and expose it to AI.
4
+ extends: ./api-tools-library.yaml
5
+
6
+ checks:
7
+ api-assistant:
8
+ type: ai
9
+ prompt: |
10
+ You have access to users-api MCP tools generated from OpenAPI.
11
+ Explain how to call getUser and which required fields are needed.
12
+ ai_custom_tools:
13
+ - users-api
14
+ ai:
15
+ provider: anthropic
16
+ model: claude-3-5-sonnet-20241022
17
+ on:
18
+ - manual
19
+
20
+ api-tool-whitelist-check:
21
+ type: mcp
22
+ transport: custom
23
+ method: createUser
24
+ methodArgs:
25
+ requestBody:
26
+ name: Alice
27
+ on:
28
+ - issue_comment
29
+
30
+ tests:
31
+ defaults:
32
+ strict: true
33
+ ai_provider: mock
34
+ cases:
35
+ - name: api-ai-example-loads-reusable-api-bundle
36
+ description: AI step resolves users-api from external library file
37
+ event: manual
38
+ fixture: local.minimal
39
+ mocks:
40
+ api-assistant:
41
+ text: getUser requires the id path parameter.
42
+ expect:
43
+ calls:
44
+ - step: api-assistant
45
+ exactly: 1
46
+ prompts:
47
+ - step: api-assistant
48
+ contains:
49
+ - users-api
50
+ - getUser
51
+
52
+ - name: api-ai-example-keeps-whitelist-enforcement
53
+ description: API bundle whitelist still applies when reused in AI config
54
+ event: issue_comment
55
+ fixture: gh.issue_comment.standard
56
+ expect:
57
+ calls:
58
+ - step: api-tool-whitelist-check
59
+ exactly: 1
60
+ outputs:
61
+ - step: api-tool-whitelist-check
62
+ path: issues[0].message
63
+ matches: "(?i)Custom tool not found: createUser"
@@ -0,0 +1,126 @@
1
+ version: "1.0"
2
+
3
+ tools:
4
+ users-api-file-overlay:
5
+ type: api
6
+ name: users-api-file-overlay
7
+ description: File-based OpenAPI and overlay definitions
8
+ spec: ./openapi/users-api.json
9
+ headers:
10
+ Authorization: "Bearer ${USERS_API_BEARER_TOKEN}"
11
+ X-Tenant-Id: "${USERS_API_TENANT_ID}"
12
+ overlays:
13
+ - ./openapi/users-overlay-rename.yaml
14
+ whitelist:
15
+ - getUserFromFileOverlay
16
+
17
+ users-api-inline-mixed-overlay:
18
+ type: api
19
+ name: users-api-inline-mixed-overlay
20
+ description: Inline OpenAPI plus mixed file + inline overlays
21
+ headers:
22
+ Authorization: "Bearer ${PROFILES_API_BEARER_TOKEN}"
23
+ X-Tenant-Id: "${USERS_API_TENANT_ID}"
24
+ spec:
25
+ openapi: "3.0.0"
26
+ info:
27
+ title: Profiles API Inline Example
28
+ version: "1.0.0"
29
+ servers:
30
+ - url: https://api.example.invalid
31
+ paths:
32
+ /profiles/{id}:
33
+ get:
34
+ operationId: getProfile
35
+ summary: Get profile by id
36
+ parameters:
37
+ - name: id
38
+ in: path
39
+ required: true
40
+ schema:
41
+ type: string
42
+ responses:
43
+ "200":
44
+ description: Profile payload
45
+ content:
46
+ application/json:
47
+ schema:
48
+ type: object
49
+ properties:
50
+ id:
51
+ type: string
52
+ handle:
53
+ type: string
54
+ overlays:
55
+ - ./openapi/profiles-overlay-rename.yaml
56
+ - actions:
57
+ - target: "$.paths['/profiles/{id}'].get.operationId"
58
+ update: getProfileFromInlineOverlay
59
+
60
+ checks:
61
+ api-file-overlay-required-input:
62
+ type: mcp
63
+ transport: custom
64
+ method: getUserFromFileOverlay
65
+ methodArgs: {}
66
+ on:
67
+ - manual
68
+
69
+ api-inline-overlay-required-input:
70
+ type: mcp
71
+ transport: custom
72
+ method: getProfileFromInlineOverlay
73
+ methodArgs: {}
74
+ on:
75
+ - issue_comment
76
+
77
+ api-inline-overlay-original-name-blocked:
78
+ type: mcp
79
+ transport: custom
80
+ method: getProfile
81
+ methodArgs: {}
82
+ on:
83
+ - pr_opened
84
+
85
+ tests:
86
+ defaults:
87
+ strict: true
88
+ cases:
89
+ - name: api-inline-example-file-overlay-tool-is-generated
90
+ description: File-based OpenAPI + overlay renames getUser to getUserFromFileOverlay
91
+ event: manual
92
+ fixture: local.minimal
93
+ expect:
94
+ calls:
95
+ - step: api-file-overlay-required-input
96
+ exactly: 1
97
+ outputs:
98
+ - step: api-file-overlay-required-input
99
+ path: issues[0].message
100
+ matches: "(?i)required property 'id'"
101
+
102
+ - name: api-inline-example-inline-spec-and-mixed-overlays-work
103
+ description: Inline OpenAPI supports file and inline overlays, applied in order
104
+ event: issue_comment
105
+ fixture: gh.issue_comment.standard
106
+ expect:
107
+ calls:
108
+ - step: api-inline-overlay-required-input
109
+ exactly: 1
110
+ outputs:
111
+ - step: api-inline-overlay-required-input
112
+ path: issues[0].message
113
+ matches: "(?i)required property 'id'"
114
+
115
+ - name: api-inline-example-original-operation-id-is-not-exposed
116
+ description: Final overlay output hides the original getProfile method name
117
+ event: pr_opened
118
+ fixture: gh.pr_open.minimal
119
+ expect:
120
+ calls:
121
+ - step: api-inline-overlay-original-name-blocked
122
+ exactly: 1
123
+ outputs:
124
+ - step: api-inline-overlay-original-name-blocked
125
+ path: issues[0].message
126
+ matches: "(?i)Custom tool not found: getProfile"
@@ -0,0 +1,18 @@
1
+ version: "1.0"
2
+
3
+ # Reusable OpenAPI API bundle.
4
+ # Import this file via `extends:` from other configs to expose generated MCP tools.
5
+ tools:
6
+ users-api:
7
+ type: api
8
+ name: users-api
9
+ description: Reusable users API tool bundle generated from OpenAPI
10
+ spec: ./openapi/users-api.json
11
+ headers:
12
+ Authorization: "Bearer ${USERS_API_BEARER_TOKEN}"
13
+ X-Tenant-Id: "${USERS_API_TENANT_ID}"
14
+ whitelist:
15
+ - "get*"
16
+
17
+ # Library-only file: no executable steps here.
18
+ steps: {}
@@ -0,0 +1,55 @@
1
+ version: "1.0"
2
+
3
+ # Reuse API bundle definition from a separate file.
4
+ extends: ./api-tools-library.yaml
5
+
6
+ checks:
7
+ # Generated operation tool validates required OpenAPI args before any HTTP call.
8
+ api-tool-missing-required-input:
9
+ type: mcp
10
+ transport: custom
11
+ method: getUser
12
+ methodArgs: {}
13
+ on:
14
+ - manual
15
+
16
+ # Whitelist in api-tools-library.yaml allows get* only, so createUser is blocked.
17
+ api-tool-whitelist-enforced:
18
+ type: mcp
19
+ transport: custom
20
+ method: createUser
21
+ methodArgs:
22
+ requestBody:
23
+ name: Alice
24
+ on:
25
+ - issue_comment
26
+
27
+ tests:
28
+ defaults:
29
+ strict: true
30
+ cases:
31
+ - name: api-example-validates-generated-operation-input
32
+ description: getUser requires path parameter id from the OpenAPI schema
33
+ event: manual
34
+ fixture: local.minimal
35
+ expect:
36
+ calls:
37
+ - step: api-tool-missing-required-input
38
+ exactly: 1
39
+ outputs:
40
+ - step: api-tool-missing-required-input
41
+ path: issues[0].message
42
+ matches: "(?i)required property 'id'"
43
+
44
+ - name: api-example-enforces-operation-whitelist
45
+ description: createUser is not exposed because api bundle whitelist is get*
46
+ event: issue_comment
47
+ fixture: gh.issue_comment.standard
48
+ expect:
49
+ calls:
50
+ - step: api-tool-whitelist-enforced
51
+ exactly: 1
52
+ outputs:
53
+ - step: api-tool-whitelist-enforced
54
+ path: issues[0].message
55
+ matches: "(?i)Custom tool not found: createUser"
@@ -0,0 +1,3 @@
1
+ actions:
2
+ - target: "$.paths['/profiles/{id}'].get.operationId"
3
+ update: getProfileFromFileOverlay
@@ -0,0 +1,91 @@
1
+ {
2
+ "openapi": "3.0.0",
3
+ "info": {
4
+ "title": "Users API Example Spec",
5
+ "version": "1.0.0"
6
+ },
7
+ "servers": [
8
+ {
9
+ "url": "https://api.example.invalid"
10
+ }
11
+ ],
12
+ "paths": {
13
+ "/users/{id}": {
14
+ "get": {
15
+ "operationId": "getUser",
16
+ "summary": "Get user by id",
17
+ "parameters": [
18
+ {
19
+ "name": "id",
20
+ "in": "path",
21
+ "required": true,
22
+ "schema": {
23
+ "type": "string"
24
+ }
25
+ }
26
+ ],
27
+ "responses": {
28
+ "200": {
29
+ "description": "User payload",
30
+ "content": {
31
+ "application/json": {
32
+ "schema": {
33
+ "type": "object",
34
+ "properties": {
35
+ "id": {
36
+ "type": "string"
37
+ },
38
+ "name": {
39
+ "type": "string"
40
+ }
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ }
47
+ }
48
+ },
49
+ "/users": {
50
+ "post": {
51
+ "operationId": "createUser",
52
+ "summary": "Create user",
53
+ "requestBody": {
54
+ "required": true,
55
+ "content": {
56
+ "application/json": {
57
+ "schema": {
58
+ "type": "object",
59
+ "properties": {
60
+ "name": {
61
+ "type": "string"
62
+ }
63
+ },
64
+ "required": [
65
+ "name"
66
+ ]
67
+ }
68
+ }
69
+ }
70
+ },
71
+ "responses": {
72
+ "200": {
73
+ "description": "Creation payload",
74
+ "content": {
75
+ "application/json": {
76
+ "schema": {
77
+ "type": "object",
78
+ "properties": {
79
+ "created": {
80
+ "type": "boolean"
81
+ }
82
+ }
83
+ }
84
+ }
85
+ }
86
+ }
87
+ }
88
+ }
89
+ }
90
+ }
91
+ }
@@ -0,0 +1,3 @@
1
+ actions:
2
+ - target: "$.paths['/users/{id}'].get.operationId"
3
+ update: getUserFromFileOverlay