restless-sdk 0.1.0

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.
@@ -0,0 +1,120 @@
1
+ {
2
+ "$generated": "GENERATED FILE - do not edit by hand. Inputs live in spec/cases.ts; run `npm run spec:vectors` to regenerate.",
3
+ "$contract": "spec/CONTRACT.md",
4
+ "specVersion": "1.0.0",
5
+ "cases": [
6
+ {
7
+ "id": "reqid/format-with-prefix",
8
+ "requirement": "REQID-004",
9
+ "op": "formatRequestId",
10
+ "input": {
11
+ "rawId": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f",
12
+ "prefix": "TST"
13
+ },
14
+ "expected": "TST-9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
15
+ },
16
+ {
17
+ "id": "reqid/format-without-prefix",
18
+ "requirement": "REQID-004",
19
+ "op": "formatRequestId",
20
+ "input": {
21
+ "rawId": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
22
+ },
23
+ "expected": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
24
+ },
25
+ {
26
+ "id": "reqid/strip",
27
+ "requirement": "REQID-005",
28
+ "op": "stripRequestIdPrefix",
29
+ "input": {
30
+ "requestId": "TST-9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
31
+ },
32
+ "expected": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
33
+ },
34
+ {
35
+ "id": "reqid/strip-noop",
36
+ "requirement": "REQID-005",
37
+ "op": "stripRequestIdPrefix",
38
+ "input": {
39
+ "requestId": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
40
+ },
41
+ "expected": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
42
+ },
43
+ {
44
+ "id": "reqid/strip-rejects-non-uuid-tail",
45
+ "requirement": "REQID-005",
46
+ "op": "stripRequestIdPrefix",
47
+ "input": {
48
+ "requestId": "TST-not-a-uuid"
49
+ },
50
+ "expected": "TST-not-a-uuid",
51
+ "note": "Group 1 must itself be a valid UUID, otherwise the input is returned untouched."
52
+ },
53
+ {
54
+ "id": "reqid/strip-rejects-long-prefix",
55
+ "requirement": "REQID-005",
56
+ "op": "stripRequestIdPrefix",
57
+ "input": {
58
+ "requestId": "TOOLONGP-9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
59
+ },
60
+ "expected": "TOOLONGP-9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f",
61
+ "note": "Prefixes are 1 to 7 alphanumerics."
62
+ },
63
+ {
64
+ "id": "reqid/headers-fresh",
65
+ "requirement": "REQID-010",
66
+ "op": "requestIdHeaders",
67
+ "input": {
68
+ "ourId": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f",
69
+ "incomingHeaders": {},
70
+ "hasApiKey": true
71
+ },
72
+ "expected": {
73
+ "x-request-id": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
74
+ }
75
+ },
76
+ {
77
+ "id": "reqid/headers-incoming-chain",
78
+ "requirement": "REQID-010",
79
+ "op": "requestIdHeaders",
80
+ "input": {
81
+ "ourId": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f",
82
+ "incomingHeaders": {
83
+ "x-request-id": "upstream-value"
84
+ },
85
+ "hasApiKey": true
86
+ },
87
+ "expected": {
88
+ "x-restless-id": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
89
+ },
90
+ "note": "An existing chain is never clobbered; we fall back to our own header name."
91
+ },
92
+ {
93
+ "id": "reqid/headers-with-prefix",
94
+ "requirement": "REQID-004",
95
+ "op": "requestIdHeaders",
96
+ "input": {
97
+ "ourId": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f",
98
+ "incomingHeaders": {},
99
+ "prefix": "TST",
100
+ "hasApiKey": true
101
+ },
102
+ "expected": {
103
+ "x-request-id": "TST-9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f"
104
+ }
105
+ },
106
+ {
107
+ "id": "reqid/headers-missing-key",
108
+ "requirement": "REQID-011",
109
+ "op": "requestIdHeaders",
110
+ "input": {
111
+ "ourId": "9f18a0e2-1c3d-4b5a-8e7f-0a1b2c3d4e5f",
112
+ "incomingHeaders": {},
113
+ "hasApiKey": false
114
+ },
115
+ "expected": {
116
+ "x-request-id": "missing-key"
117
+ }
118
+ }
119
+ ]
120
+ }
metadata ADDED
@@ -0,0 +1,82 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: restless-sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Restless
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2026-08-11 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: |
14
+ Rack middleware that captures API traffic, redacts secrets before anything
15
+ leaves the process, fingerprints error responses so they can be grouped and
16
+ recovered from, and uploads the result to Restless. Works with Rails,
17
+ Sinatra, Hanami, Grape, Roda and anything else that speaks Rack.
18
+
19
+ Implements version 1.0.0 of the Restless SDK Contract at
20
+ level L2.
21
+ email:
22
+ executables: []
23
+ extensions: []
24
+ extra_rdoc_files: []
25
+ files:
26
+ - CONFORMANCE.md
27
+ - README.md
28
+ - exe/restless-conformance
29
+ - install.md
30
+ - lib/restless.rb
31
+ - lib/restless/caches.rb
32
+ - lib/restless/capture.rb
33
+ - lib/restless/client.rb
34
+ - lib/restless/conformance.rb
35
+ - lib/restless/env.rb
36
+ - lib/restless/fingerprint.rb
37
+ - lib/restless/har.rb
38
+ - lib/restless/injection.rb
39
+ - lib/restless/mask.rb
40
+ - lib/restless/rack.rb
41
+ - lib/restless/redact.rb
42
+ - lib/restless/request_id.rb
43
+ - lib/restless/settings.rb
44
+ - lib/restless/stack_frames.rb
45
+ - lib/restless/text.rb
46
+ - lib/restless/uploader.rb
47
+ - lib/restless/version.rb
48
+ - spec/VECTORS_VERSION
49
+ - spec/vectors/fingerprint.json
50
+ - spec/vectors/har.json
51
+ - spec/vectors/mask.json
52
+ - spec/vectors/recovery-slug.json
53
+ - spec/vectors/redact.json
54
+ - spec/vectors/request-id.json
55
+ homepage: https://restless.ai
56
+ licenses:
57
+ - ISC
58
+ metadata:
59
+ source_code_uri: https://github.com/restlesshq/ruby
60
+ bug_tracker_uri: https://github.com/restlesshq/ruby/issues
61
+ restless_spec_version: 1.0.0
62
+ restless_conformance_level: L2
63
+ post_install_message:
64
+ rdoc_options: []
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '2.6'
72
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ requirements: []
78
+ rubygems_version: 3.0.3.1
79
+ signing_key:
80
+ specification_version: 4
81
+ summary: Capture your API traffic and send it to Restless.
82
+ test_files: []