noresponse 9.5.1 → 9.5.2

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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/lib/no_response/accounts.rb +314 -0
  3. data/lib/no_response/models/operations/listlinkedaccounts_request.rb +45 -0
  4. data/lib/no_response/models/operations/listlinkedaccounts_request.rbi +26 -0
  5. data/lib/no_response/models/operations/listlinkedaccounts_response.rb +44 -0
  6. data/lib/no_response/models/operations/listlinkedaccounts_response.rbi +20 -0
  7. data/lib/no_response/models/operations.rb +2 -0
  8. data/lib/no_response/models/shared/accountbinding.rb +2 -2
  9. data/lib/no_response/models/shared/accountbindingrequest.rb +1 -1
  10. data/lib/no_response/models/shared/accountdecisionlist.rb +1 -1
  11. data/lib/no_response/models/shared/accountdeleted.rb +1 -1
  12. data/lib/no_response/models/shared/accountdirectorypageitem.rb +1 -1
  13. data/lib/no_response/models/shared/accountdirectorysearchrequest.rb +1 -1
  14. data/lib/no_response/models/shared/accountenforcementlist.rb +1 -1
  15. data/lib/no_response/models/shared/accountexport.rb +1 -1
  16. data/lib/no_response/models/shared/accountoutcome.rb +1 -1
  17. data/lib/no_response/models/shared/accountoutcomepage.rb +1 -1
  18. data/lib/no_response/models/shared/assessmentdetail.rb +1 -1
  19. data/lib/no_response/models/shared/assessmentexpired.rb +1 -1
  20. data/lib/no_response/models/shared/assessmentlist.rb +1 -1
  21. data/lib/no_response/models/shared/assessmentquery.rb +1 -1
  22. data/lib/no_response/models/shared/assessmentrequest.rb +1 -1
  23. data/lib/no_response/models/shared/assessmentsearchrequest.rb +1 -1
  24. data/lib/no_response/models/shared/credentialassociation.rb +1 -1
  25. data/lib/no_response/models/shared/credentialpage.rb +1 -1
  26. data/lib/no_response/models/shared/customerexportrequest.rb +1 -1
  27. data/lib/no_response/models/shared/identifiersubmission.rb +49 -0
  28. data/lib/no_response/models/shared/identifiersubmission.rbi +26 -0
  29. data/lib/no_response/models/shared/linkedaccount.rb +41 -0
  30. data/lib/no_response/models/shared/linkedaccount.rbi +20 -0
  31. data/lib/no_response/models/shared/linkedaccountpage.rb +87 -0
  32. data/lib/no_response/models/shared/linkedaccountpage.rbi +44 -0
  33. data/lib/no_response/models/shared/review.rb +1 -1
  34. data/lib/no_response/models/shared/reviewcreaterequest.rb +1 -1
  35. data/lib/no_response/models/shared/sharedidentifier.rb +105 -0
  36. data/lib/no_response/models/shared/sharedidentifier.rbi +44 -0
  37. data/lib/no_response/models/shared.rb +4 -0
  38. data/lib/no_response/sdkconfiguration.rb +2 -2
  39. metadata +13 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a38cb0fcaa5a2432b34567ef9cd9f96a97748f8c8573466f4d9bd9ddb0f11266
4
- data.tar.gz: 96f6861bbb27d324c5e07e996375b356084892c6992dc6df11add8f5ccf51429
3
+ metadata.gz: 7d7f354d284ee47eccab7628fd5c4ac2e7bb0f4debc9cff24877174fd74b49d8
4
+ data.tar.gz: 2fceb66b6f130b34b3a6762d47e89a258d000b69e59c06357aa8a91b6b74190b
5
5
  SHA512:
6
- metadata.gz: 7fcacf2819e0d838d4ddbfc77ead1998ef526ca89c4b640786148eb30f31a29087b2488de5809541e80718a00abb086c0c11d540664ac64d727c5ec53a4b9083
7
- data.tar.gz: e9cd8ab8325646ce2a0c5793f1383b238a7cd6067dc0b5440e0912ee3368b1398c4730e340982e3690f05379d546413e76cd25c413fe10a1023b24543c36301d
6
+ metadata.gz: 4c039bd1efe19f1073621737c4b1d0cfea03e8d54e4d9a5bd328e871b99d1ca380697341096c3370fd0a007894cf05c7cf2618c10261ad8585dbc4148c49b310
7
+ data.tar.gz: 0daa956f3af881268e1f48bc0d9417d324edf7c6482dfbb3a16de70eabe0ea47c42772e91ec5c0a238449c6da0156772e617198c07289571da6673b8f6649738
@@ -1228,6 +1228,320 @@ module NoResponse
1228
1228
  end
1229
1229
  end
1230
1230
 
1231
+ sig {
1232
+ params(
1233
+ account_id: ::String,
1234
+ limit: T.nilable(::Integer),
1235
+ cursor: T.nilable(::String),
1236
+ retries: T.nilable(Utils::RetryConfig),
1237
+ timeout_ms: T.nilable(Integer),
1238
+ http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])
1239
+ )
1240
+ .returns(Models::Operations::ListLinkedAccountsResponse)
1241
+ }
1242
+ def list_linked(account_id:, limit: nil, cursor: nil, retries: nil, timeout_ms: nil, http_headers: nil)
1243
+ # list_linked - List accounts that share a submitted identifier with this account.
1244
+ # Lists the other accounts in this environment whose retained assessments submitted an email, phone or customer-namespace username that one of this account's retained assessments also submitted. Matching uses the identifier search rules: exact, canonical and, for email, mailbox. Each linked account names one entry per shared kind, at the strictest basis that links the two accounts, with the original value, assessment_id and submitted_at of each account's newest retained submission of it. Only customer-submitted identifiers link accounts; source-discovered identifiers do not. Expired, deleted and erased assessments link nothing. The account itself is not listed, and an account with no retained submissions answers 200 with empty items. A shared identifier is not verified ownership. Totals are exact below 10000 and capped at 10000. The cursor is opaque, expiring and bound to your workspace, environment and the account; a tampered or expired cursor answers 400 invalid_cursor. Requires the history scope, or investigate with evidence. Read-only and safe to retry.
1245
+ request = Models::Operations::ListLinkedAccountsRequest.new(
1246
+ account_id: account_id,
1247
+ limit: limit,
1248
+ cursor: cursor
1249
+ )
1250
+ url, params = @sdk_configuration.get_server_details
1251
+ base_url = Utils.template_url(url, params)
1252
+ url = Utils.generate_url(
1253
+ Models::Operations::ListLinkedAccountsRequest,
1254
+ base_url,
1255
+ "/v1/accounts/{account_id}/linked_accounts",
1256
+ request
1257
+ )
1258
+ headers = {}
1259
+ headers = T.cast(headers, T::Hash[String, String])
1260
+ query_params = Utils.get_query_params(Models::Operations::ListLinkedAccountsRequest, request, nil)
1261
+ headers["Accept"] = "application/json"
1262
+ headers["user-agent"] = @sdk_configuration.user_agent
1263
+ retries ||= @sdk_configuration.retry_config
1264
+ retries ||= Utils::RetryConfig.new(
1265
+ backoff: Utils::BackoffStrategy.new(
1266
+ exponent: 2.0,
1267
+ initial_interval: 500,
1268
+ max_elapsed_time: 30_000,
1269
+ max_interval: 8000
1270
+ ),
1271
+ retry_connection_errors: true,
1272
+ strategy: "backoff"
1273
+ )
1274
+ retry_options = retries.to_faraday_retry_options(initial_time: Time.now)
1275
+ retry_options[:retry_statuses] = [408, 429, 500, 501, 502, 503, 504, 505]
1276
+
1277
+ security = @sdk_configuration.security_source&.call
1278
+
1279
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
1280
+ timeout ||= @sdk_configuration.timeout
1281
+
1282
+ connection = @sdk_configuration.client.dup
1283
+ connection.use(Utils::RetryMiddleware, retry_options)
1284
+
1285
+ hook_ctx = SDKHooks::HookContext.new(
1286
+ config: @sdk_configuration,
1287
+ base_url: base_url,
1288
+ oauth2_scopes: nil,
1289
+ operation_id: "listLinkedAccounts",
1290
+ security_source: @sdk_configuration.security_source
1291
+ )
1292
+
1293
+ error = T.let(nil, T.nilable(StandardError))
1294
+ http_response = T.let(nil, T.nilable(Faraday::Response))
1295
+
1296
+ begin
1297
+ http_response = T.must(connection).get(url) do |req|
1298
+ req.headers.merge!(headers)
1299
+ req.options.timeout = timeout unless timeout.nil?
1300
+ req.params = query_params
1301
+ Utils.configure_request_security(req, security)
1302
+ http_headers&.each do |key, value|
1303
+ req.headers[key.to_s] = value
1304
+ end
1305
+
1306
+ @sdk_configuration.hooks.before_request(
1307
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
1308
+ hook_ctx: hook_ctx
1309
+ ),
1310
+ request: req
1311
+ )
1312
+ end
1313
+
1314
+ rescue StandardError => e
1315
+ error = e
1316
+ ensure
1317
+ if http_response.nil? || Utils.error_status?(http_response.status)
1318
+ http_response = @sdk_configuration.hooks.after_error(
1319
+ error: error,
1320
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
1321
+ hook_ctx: hook_ctx
1322
+ ),
1323
+ response: http_response
1324
+ )
1325
+ else
1326
+ http_response = @sdk_configuration.hooks.after_success(
1327
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1328
+ hook_ctx: hook_ctx
1329
+ ),
1330
+ response: http_response
1331
+ )
1332
+ end
1333
+
1334
+ if http_response.nil?
1335
+ raise error if !error.nil?
1336
+ raise "no response"
1337
+ end
1338
+ end
1339
+
1340
+ content_type = http_response.headers.fetch("Content-Type", "application/octet-stream")
1341
+ if Utils.match_status_code(http_response.status, ["200"])
1342
+ if Utils.match_content_type(content_type, "application/json")
1343
+ @sdk_configuration.hooks.after_success(
1344
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1345
+ hook_ctx: hook_ctx
1346
+ ),
1347
+ response: http_response
1348
+ )
1349
+ response_data = http_response.env.response_body
1350
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Shared::LinkedAccountPage)
1351
+ result = obj
1352
+ response = Models::Operations::ListLinkedAccountsResponse.new(
1353
+ result: result,
1354
+ headers: http_response.headers
1355
+ )
1356
+ sdk = self
1357
+
1358
+ response.next_page = proc do
1359
+ next_cursor = Janeway.enum_for("$.next_cursor", JSON.parse(response_data)).search
1360
+ if next_cursor.nil?
1361
+ next nil
1362
+ else
1363
+ next_cursor = next_cursor[0]
1364
+ if next_cursor.nil?
1365
+ next nil
1366
+ end
1367
+ end
1368
+
1369
+ sdk.list_linked(
1370
+ account_id: request.account_id,
1371
+ limit: request.limit,
1372
+ cursor: next_cursor,
1373
+ http_headers: http_headers
1374
+ )
1375
+ end
1376
+
1377
+ return response
1378
+ else
1379
+ raise(
1380
+ ::NoResponse::Models::Errors::APIStatusError.new(
1381
+ status_code: http_response.status,
1382
+ body: http_response.env.response_body,
1383
+ raw_response: http_response
1384
+ ),
1385
+ "Unknown content type received"
1386
+ )
1387
+ end
1388
+ elsif Utils.match_status_code(http_response.status, ["400"])
1389
+ if Utils.match_content_type(content_type, "application/problem+json")
1390
+ @sdk_configuration.hooks.after_success(
1391
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1392
+ hook_ctx: hook_ctx
1393
+ ),
1394
+ response: http_response
1395
+ )
1396
+ response_data = http_response.env.response_body
1397
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::BadRequestError)
1398
+ raise obj
1399
+ else
1400
+ raise(
1401
+ ::NoResponse::Models::Errors::APIStatusError.new(
1402
+ status_code: http_response.status,
1403
+ body: http_response.env.response_body,
1404
+ raw_response: http_response
1405
+ ),
1406
+ "Unknown content type received"
1407
+ )
1408
+ end
1409
+ elsif Utils.match_status_code(http_response.status, ["401"])
1410
+ if Utils.match_content_type(content_type, "application/problem+json")
1411
+ @sdk_configuration.hooks.after_success(
1412
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1413
+ hook_ctx: hook_ctx
1414
+ ),
1415
+ response: http_response
1416
+ )
1417
+ response_data = http_response.env.response_body
1418
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::AuthenticationError)
1419
+ raise obj
1420
+ else
1421
+ raise(
1422
+ ::NoResponse::Models::Errors::APIStatusError.new(
1423
+ status_code: http_response.status,
1424
+ body: http_response.env.response_body,
1425
+ raw_response: http_response
1426
+ ),
1427
+ "Unknown content type received"
1428
+ )
1429
+ end
1430
+ elsif Utils.match_status_code(http_response.status, ["403"])
1431
+ if Utils.match_content_type(content_type, "application/problem+json")
1432
+ @sdk_configuration.hooks.after_success(
1433
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1434
+ hook_ctx: hook_ctx
1435
+ ),
1436
+ response: http_response
1437
+ )
1438
+ response_data = http_response.env.response_body
1439
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::PermissionDeniedError)
1440
+ raise obj
1441
+ else
1442
+ raise(
1443
+ ::NoResponse::Models::Errors::APIStatusError.new(
1444
+ status_code: http_response.status,
1445
+ body: http_response.env.response_body,
1446
+ raw_response: http_response
1447
+ ),
1448
+ "Unknown content type received"
1449
+ )
1450
+ end
1451
+ elsif Utils.match_status_code(http_response.status, ["404"])
1452
+ if Utils.match_content_type(content_type, "application/problem+json")
1453
+ @sdk_configuration.hooks.after_success(
1454
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1455
+ hook_ctx: hook_ctx
1456
+ ),
1457
+ response: http_response
1458
+ )
1459
+ response_data = http_response.env.response_body
1460
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::NotFoundError)
1461
+ raise obj
1462
+ else
1463
+ raise(
1464
+ ::NoResponse::Models::Errors::APIStatusError.new(
1465
+ status_code: http_response.status,
1466
+ body: http_response.env.response_body,
1467
+ raw_response: http_response
1468
+ ),
1469
+ "Unknown content type received"
1470
+ )
1471
+ end
1472
+ elsif Utils.match_status_code(http_response.status, ["409"])
1473
+ if Utils.match_content_type(content_type, "application/problem+json")
1474
+ @sdk_configuration.hooks.after_success(
1475
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1476
+ hook_ctx: hook_ctx
1477
+ ),
1478
+ response: http_response
1479
+ )
1480
+ response_data = http_response.env.response_body
1481
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::ConflictError)
1482
+ raise obj
1483
+ else
1484
+ raise(
1485
+ ::NoResponse::Models::Errors::APIStatusError.new(
1486
+ status_code: http_response.status,
1487
+ body: http_response.env.response_body,
1488
+ raw_response: http_response
1489
+ ),
1490
+ "Unknown content type received"
1491
+ )
1492
+ end
1493
+ elsif Utils.match_status_code(http_response.status, ["429"])
1494
+ if Utils.match_content_type(content_type, "application/problem+json")
1495
+ @sdk_configuration.hooks.after_success(
1496
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1497
+ hook_ctx: hook_ctx
1498
+ ),
1499
+ response: http_response
1500
+ )
1501
+ response_data = http_response.env.response_body
1502
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::RateLimitError)
1503
+ raise obj
1504
+ else
1505
+ raise(
1506
+ ::NoResponse::Models::Errors::APIStatusError.new(
1507
+ status_code: http_response.status,
1508
+ body: http_response.env.response_body,
1509
+ raw_response: http_response
1510
+ ),
1511
+ "Unknown content type received"
1512
+ )
1513
+ end
1514
+ elsif Utils.match_status_code(http_response.status, ["4XX"])
1515
+ raise(
1516
+ ::NoResponse::Models::Errors::APIStatusError.new(
1517
+ status_code: http_response.status,
1518
+ body: http_response.env.response_body,
1519
+ raw_response: http_response
1520
+ ),
1521
+ "API error occurred"
1522
+ )
1523
+ elsif Utils.match_status_code(http_response.status, ["5XX"])
1524
+ raise(
1525
+ ::NoResponse::Models::Errors::APIStatusError.new(
1526
+ status_code: http_response.status,
1527
+ body: http_response.env.response_body,
1528
+ raw_response: http_response
1529
+ ),
1530
+ "API error occurred"
1531
+ )
1532
+ else
1533
+ raise(
1534
+ ::NoResponse::Models::Errors::APIStatusError.new(
1535
+ status_code: http_response.status,
1536
+ body: http_response.env.response_body,
1537
+ raw_response: http_response
1538
+ ),
1539
+ "Unknown status code received"
1540
+ )
1541
+
1542
+ end
1543
+ end
1544
+
1231
1545
  sig {
1232
1546
  params(
1233
1547
  body: Models::Shared::EnforcementRequest,
@@ -0,0 +1,45 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Operations
7
+
8
+ class ListLinkedAccountsRequest
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # The account_id the workspace sends with its assessments, as one path segment (percent-encode '|' and ':' if the client requires it). A value that does not match the account_id shape answers 400 invalid_request.
13
+ field :account_id, ::String, {'path_param': {'field_name': "account_id", 'style': "simple", 'explode': false}}
14
+ # next_cursor from the previous page, unchanged.
15
+ field(
16
+ :cursor,
17
+ Crystalline::Nilable.new(::String),
18
+ {'query_param': {'field_name': "cursor", 'style': "form", 'explode': true}}
19
+ )
20
+ # Linked accounts per page.
21
+ field(
22
+ :limit,
23
+ Crystalline::Nilable.new(::Integer),
24
+ {'query_param': {'field_name': "limit", 'style': "form", 'explode': true}}
25
+ )
26
+
27
+ sig { params(account_id: ::String, cursor: T.nilable(::String), limit: T.nilable(::Integer)).void }
28
+ def initialize(account_id:, cursor: nil, limit: 25)
29
+ @account_id = account_id
30
+ @cursor = cursor
31
+ @limit = limit
32
+ end
33
+
34
+ sig { params(other: T.untyped).returns(T::Boolean) }
35
+ def ==(other)
36
+ return false unless other.is_a?(self.class)
37
+ return false unless @account_id == other.account_id
38
+ return false unless @cursor == other.cursor
39
+ return false unless @limit == other.limit
40
+ true
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,26 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Operations::ListLinkedAccountsRequest
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Operations::ListLinkedAccountsRequest
9
+ def account_id
10
+ end
11
+
12
+ def account_id=(str_)
13
+ end
14
+
15
+ def cursor
16
+ end
17
+
18
+ def cursor=(str_)
19
+ end
20
+
21
+ def limit
22
+ end
23
+
24
+ def limit=(str_)
25
+ end
26
+ end
@@ -0,0 +1,44 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Operations
7
+
8
+ class ListLinkedAccountsResponse
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+ sig { returns(T.proc.returns(T.nilable(ListLinkedAccountsResponse))) }
12
+ attr_accessor :next_page
13
+
14
+ field :headers, Crystalline::Hash.new(Symbol, Crystalline::Array.new(::String))
15
+
16
+ field :result, Models::Shared::LinkedAccountPage, {}
17
+
18
+ sig { params(headers: T::Hash[Symbol, T::Array[::String]], result: Models::Shared::LinkedAccountPage).void }
19
+ def initialize(headers:, result:)
20
+ @headers = headers
21
+ @result = result
22
+ end
23
+
24
+ sig { params(other: T.untyped).returns(T::Boolean) }
25
+ def ==(other)
26
+ return false unless other.is_a?(self.class)
27
+ return false unless @headers == other.headers
28
+ return false unless @result == other.result
29
+ true
30
+ end
31
+
32
+ def each
33
+ page = self
34
+ loop do
35
+ yield page
36
+ next_page = page.next_page.call if page.next_page
37
+ break if next_page.nil?
38
+ page = T.must(next_page)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,20 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Operations::ListLinkedAccountsResponse
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Operations::ListLinkedAccountsResponse
9
+ def headers
10
+ end
11
+
12
+ def headers=(str_)
13
+ end
14
+
15
+ def result
16
+ end
17
+
18
+ def result=(str_)
19
+ end
20
+ end
@@ -117,6 +117,8 @@ module NoResponse
117
117
  autoload :ListInvitesResponse, "no_response/models/operations/listinvites_response.rb"
118
118
  autoload :ListKeysRequest, "no_response/models/operations/listkeys_request.rb"
119
119
  autoload :ListKeysResponse, "no_response/models/operations/listkeys_response.rb"
120
+ autoload :ListLinkedAccountsRequest, "no_response/models/operations/listlinkedaccounts_request.rb"
121
+ autoload :ListLinkedAccountsResponse, "no_response/models/operations/listlinkedaccounts_response.rb"
120
122
  autoload :ListListEntriesRequest, "no_response/models/operations/listlistentries_request.rb"
121
123
  autoload :ListListEntriesResponse, "no_response/models/operations/listlistentries_response.rb"
122
124
  autoload :ListMembersRequest, "no_response/models/operations/listmembers_request.rb"
@@ -15,13 +15,13 @@ module NoResponse
15
15
  ::String,
16
16
  {'format_json': {'letter_case': ::NoResponse::Utils.field_name("assessment_id"), required: true}}
17
17
  )
18
- # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id} and its /assessments. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
18
+ # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id}, its /assessments and its /linked_accounts. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
19
19
  field(
20
20
  :provisional_account_id,
21
21
  ::String,
22
22
  {'format_json': {'letter_case': ::NoResponse::Utils.field_name("provisional_account_id"), required: true}}
23
23
  )
24
- # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id} and its /assessments. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
24
+ # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id}, its /assessments and its /linked_accounts. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
25
25
  field(
26
26
  :account_id,
27
27
  ::String,
@@ -9,7 +9,7 @@ module NoResponse
9
9
  extend T::Sig
10
10
  include Crystalline::MetadataFields
11
11
 
12
- # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id} and its /assessments. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
12
+ # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id}, its /assessments and its /linked_accounts. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
13
13
  field(
14
14
  :account_id,
15
15
  ::String,
@@ -9,7 +9,7 @@ module NoResponse
9
9
  extend T::Sig
10
10
  include Crystalline::MetadataFields
11
11
 
12
- # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id} and its /assessments. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
12
+ # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id}, its /assessments and its /linked_accounts. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
13
13
  field(
14
14
  :account_id,
15
15
  ::String,
@@ -9,7 +9,7 @@ module NoResponse
9
9
  extend T::Sig
10
10
  include Crystalline::MetadataFields
11
11
 
12
- # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id} and its /assessments. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
12
+ # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id}, its /assessments and its /linked_accounts. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
13
13
  field(
14
14
  :account_id,
15
15
  ::String,
@@ -9,7 +9,7 @@ module NoResponse
9
9
  extend T::Sig
10
10
  include Crystalline::MetadataFields
11
11
 
12
- # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id} and its /assessments. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
12
+ # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id}, its /assessments and its /linked_accounts. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
13
13
  field(
14
14
  :account_id,
15
15
  ::String,
@@ -9,7 +9,7 @@ module NoResponse
9
9
  extend T::Sig
10
10
  include Crystalline::MetadataFields
11
11
 
12
- # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id} and its /assessments. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
12
+ # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id}, its /assessments and its /linked_accounts. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
13
13
  field(
14
14
  :account_id,
15
15
  Crystalline::Nilable.new(::String),
@@ -9,7 +9,7 @@ module NoResponse
9
9
  extend T::Sig
10
10
  include Crystalline::MetadataFields
11
11
 
12
- # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id} and its /assessments. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
12
+ # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id}, its /assessments and its /linked_accounts. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
13
13
  field(
14
14
  :account_id,
15
15
  ::String,
@@ -9,7 +9,7 @@ module NoResponse
9
9
  extend T::Sig
10
10
  include Crystalline::MetadataFields
11
11
 
12
- # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id} and its /assessments. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
12
+ # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id}, its /assessments and its /linked_accounts. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
13
13
  field(
14
14
  :account_id,
15
15
  ::String,
@@ -11,7 +11,7 @@ module NoResponse
11
11
 
12
12
  # Opaque, server-assigned id of one recorded outcome: 'out_' and a 26-character Crockford base32 ULID. Unique within the workspace.
13
13
  field :id, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("id"), required: true}}
14
- # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id} and its /assessments. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
14
+ # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id}, its /assessments and its /linked_accounts. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
15
15
  field(
16
16
  :account_id,
17
17
  ::String,
@@ -9,7 +9,7 @@ module NoResponse
9
9
  extend T::Sig
10
10
  include Crystalline::MetadataFields
11
11
 
12
- # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id} and its /assessments. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
12
+ # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id}, its /assessments and its /linked_accounts. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
13
13
  field(
14
14
  :account_id,
15
15
  ::String,
@@ -15,7 +15,7 @@ module NoResponse
15
15
  ::String,
16
16
  {'format_json': {'letter_case': ::NoResponse::Utils.field_name("assessment_id"), required: true}}
17
17
  )
18
- # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id} and its /assessments. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
18
+ # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id}, its /assessments and its /linked_accounts. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
19
19
  field(
20
20
  :account_id,
21
21
  ::String,
@@ -15,7 +15,7 @@ module NoResponse
15
15
  ::String,
16
16
  {'format_json': {'letter_case': ::NoResponse::Utils.field_name("assessment_id"), required: true}}
17
17
  )
18
- # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id} and its /assessments. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
18
+ # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id}, its /assessments and its /linked_accounts. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
19
19
  field(
20
20
  :account_id,
21
21
  ::String,