@wspc/cli 0.0.15 → 0.0.16

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.
package/spec/openapi.json CHANGED
@@ -3361,20 +3361,17 @@
3361
3361
  }
3362
3362
  ],
3363
3363
  "summary": "Accept an invite and switch into the inviting organization",
3364
- "description": "Switches the caller's org to the invite's org and records the previous org. The caller loses access to data scoped to their previous org.",
3365
- "x-codeSamples": [
3364
+ "parameters": [
3366
3365
  {
3367
- "lang": "shell",
3368
- "label": "curl",
3369
- "source": "curl -X POST ${EXAMPLE_API_BASE_URL}/auth/invites/inv_01KT43YKZ8CX14WS6ENXQ8397E/accept \\\n -H \"Authorization: Bearer $WSPC_API_KEY\""
3366
+ "name": "x-consistency-bookmark",
3367
+ "in": "header",
3368
+ "required": false,
3369
+ "description": "Optional opaque consistency bookmark returned by a previous auth response. Send it back unchanged to continue read-after-write consistency.",
3370
+ "schema": {
3371
+ "type": "string"
3372
+ },
3373
+ "example": "opaque-consistency-bookmark"
3370
3374
  },
3371
- {
3372
- "lang": "bash",
3373
- "label": "wspc CLI",
3374
- "source": "wspc invite accept inv_01KT43YKZ8CX14WS6ENXQ8397E"
3375
- }
3376
- ],
3377
- "parameters": [
3378
3375
  {
3379
3376
  "schema": {
3380
3377
  "type": "string",
@@ -3386,9 +3383,30 @@
3386
3383
  "in": "path"
3387
3384
  }
3388
3385
  ],
3386
+ "description": "Switches the caller's org to the invite's org and records the previous org. The caller loses access to data scoped to their previous org.",
3387
+ "x-codeSamples": [
3388
+ {
3389
+ "lang": "shell",
3390
+ "label": "curl",
3391
+ "source": "curl -X POST ${EXAMPLE_API_BASE_URL}/auth/invites/inv_01KT43YKZ8CX14WS6ENXQ8397E/accept \\\n -H \"Authorization: Bearer $WSPC_API_KEY\""
3392
+ },
3393
+ {
3394
+ "lang": "bash",
3395
+ "label": "wspc CLI",
3396
+ "source": "wspc invite accept inv_01KT43YKZ8CX14WS6ENXQ8397E"
3397
+ }
3398
+ ],
3389
3399
  "responses": {
3390
3400
  "200": {
3391
3401
  "description": "The organization the caller now belongs to.",
3402
+ "headers": {
3403
+ "x-consistency-bookmark": {
3404
+ "description": "Opaque consistency bookmark for the latest auth database position observed by this request. Store and send it on the next auth request to continue read-after-write consistency.",
3405
+ "schema": {
3406
+ "type": "string"
3407
+ }
3408
+ }
3409
+ },
3392
3410
  "content": {
3393
3411
  "application/json": {
3394
3412
  "schema": {
@@ -3735,6 +3753,18 @@
3735
3753
  }
3736
3754
  ],
3737
3755
  "summary": "Create a new API key (full value returned once)",
3756
+ "parameters": [
3757
+ {
3758
+ "name": "x-consistency-bookmark",
3759
+ "in": "header",
3760
+ "required": false,
3761
+ "description": "Optional opaque consistency bookmark returned by a previous auth response. Send it back unchanged to continue read-after-write consistency.",
3762
+ "schema": {
3763
+ "type": "string"
3764
+ },
3765
+ "example": "opaque-consistency-bookmark"
3766
+ }
3767
+ ],
3738
3768
  "description": "### Overview\nCreates and provisions a new long-lived API key for the authenticated user. The complete plaintext API key value (`api_key`) is returned **only once** in this endpoint's response and cannot be retrieved again.\n\n### When to Use\n- Use this endpoint when a user requests a new API key (e.g., `wspc keys create --label \"My Agent\"`) to isolate access for specific environments, applications, or developers.\n\n### Constraints\n- Requires a valid Bearer token in the `Authorization` header.\n- **Key Limit**: A user is limited to a maximum of 25 active API keys. Requesting a new key beyond this limit will result in a `KEY_LIMIT_EXCEEDED` error.\n- **Label Validation**: The `label` parameter must be between 1 and 60 characters after trimming whitespace. Failing to provide a valid label results in an `INVALID_LABEL` error.\n\n### Troubleshooting\n- **401 Unauthorized**: The Bearer token is missing or invalid.\n- **400 Bad Request**: The `label` parameter is empty, too long, or missing.\n- **400 Bad Request (Limit Exceeded)**: The user has hit the maximum limit of 25 active keys. An existing active key must be revoked before creating a new one.",
3739
3769
  "x-cli": {
3740
3770
  "command": "keys create",
@@ -3778,6 +3808,14 @@
3778
3808
  "responses": {
3779
3809
  "200": {
3780
3810
  "description": "New key created. Store `api_key` securely — the full value is not available after this response.",
3811
+ "headers": {
3812
+ "x-consistency-bookmark": {
3813
+ "description": "Opaque consistency bookmark for the latest auth database position observed by this request. Store and send it on the next auth request to continue read-after-write consistency.",
3814
+ "schema": {
3815
+ "type": "string"
3816
+ }
3817
+ }
3818
+ },
3781
3819
  "content": {
3782
3820
  "application/json": {
3783
3821
  "schema": {
@@ -4122,6 +4160,18 @@
4122
4160
  }
4123
4161
  ],
4124
4162
  "summary": "List active API keys",
4163
+ "parameters": [
4164
+ {
4165
+ "name": "x-consistency-bookmark",
4166
+ "in": "header",
4167
+ "required": false,
4168
+ "description": "Optional opaque consistency bookmark returned by a previous auth response. Send it back unchanged to continue read-after-write consistency.",
4169
+ "schema": {
4170
+ "type": "string"
4171
+ },
4172
+ "example": "opaque-consistency-bookmark"
4173
+ }
4174
+ ],
4125
4175
  "description": "### Overview\nReturns a list of all active (non-revoked) API keys belonging to the authenticated user. It also includes the `current_key_id` identifying the specific key used to authenticate the current request.\n\n### When to Use\n- Use this endpoint to view active API keys (e.g., when running `wspc keys list` or displaying API key management screens in user profiles).\n- Use the `current_key_id` to identify which key is making the current call, facilitating self-rotation or auditing.\n\n### Constraints\n- Requires a valid Bearer token in the `Authorization` header.\n- Only active keys are returned; keys that have been revoked are filtered out and excluded from the response.\n- The full secret key is never returned; only the last 4 characters (`key_last4`) are provided for identification.\n\n### Troubleshooting\n- **401 Unauthorized**: The provided Bearer token is missing, expired, or invalid. Ensure you are passing a valid, active API key.",
4126
4176
  "x-cli": {
4127
4177
  "command": "keys ls",
@@ -4158,6 +4208,14 @@
4158
4208
  "responses": {
4159
4209
  "200": {
4160
4210
  "description": "List of active API keys and the id of the key used for this request.",
4211
+ "headers": {
4212
+ "x-consistency-bookmark": {
4213
+ "description": "Opaque consistency bookmark for the latest auth database position observed by this request. Store and send it on the next auth request to continue read-after-write consistency.",
4214
+ "schema": {
4215
+ "type": "string"
4216
+ }
4217
+ }
4218
+ },
4161
4219
  "content": {
4162
4220
  "application/json": {
4163
4221
  "schema": {
@@ -4520,6 +4578,18 @@
4520
4578
  }
4521
4579
  ],
4522
4580
  "summary": "Invite an email to join the caller's organization",
4581
+ "parameters": [
4582
+ {
4583
+ "name": "x-consistency-bookmark",
4584
+ "in": "header",
4585
+ "required": false,
4586
+ "description": "Optional opaque consistency bookmark returned by a previous auth response. Send it back unchanged to continue read-after-write consistency.",
4587
+ "schema": {
4588
+ "type": "string"
4589
+ },
4590
+ "example": "opaque-consistency-bookmark"
4591
+ }
4592
+ ],
4523
4593
  "description": "Creates a pending invite for `email` and sends an invite email. Idempotent for an existing pending invite. The invitee accepts after signing in with the invited email.",
4524
4594
  "x-codeSamples": [
4525
4595
  {
@@ -4545,6 +4615,14 @@
4545
4615
  "responses": {
4546
4616
  "201": {
4547
4617
  "description": "The created (or existing pending) invite.",
4618
+ "headers": {
4619
+ "x-consistency-bookmark": {
4620
+ "description": "Opaque consistency bookmark for the latest auth database position observed by this request. Store and send it on the next auth request to continue read-after-write consistency.",
4621
+ "schema": {
4622
+ "type": "string"
4623
+ }
4624
+ }
4625
+ },
4548
4626
  "content": {
4549
4627
  "application/json": {
4550
4628
  "schema": {
@@ -4906,6 +4984,18 @@
4906
4984
  }
4907
4985
  ],
4908
4986
  "summary": "List invites issued by the caller's organization",
4987
+ "parameters": [
4988
+ {
4989
+ "name": "x-consistency-bookmark",
4990
+ "in": "header",
4991
+ "required": false,
4992
+ "description": "Optional opaque consistency bookmark returned by a previous auth response. Send it back unchanged to continue read-after-write consistency.",
4993
+ "schema": {
4994
+ "type": "string"
4995
+ },
4996
+ "example": "opaque-consistency-bookmark"
4997
+ }
4998
+ ],
4909
4999
  "description": "Retrieves a list of all active pending or expired organization invites issued by the caller's organization.",
4910
5000
  "x-codeSamples": [
4911
5001
  {
@@ -4922,6 +5012,14 @@
4922
5012
  "responses": {
4923
5013
  "200": {
4924
5014
  "description": "Invites for this org.",
5015
+ "headers": {
5016
+ "x-consistency-bookmark": {
5017
+ "description": "Opaque consistency bookmark for the latest auth database position observed by this request. Store and send it on the next auth request to continue read-after-write consistency.",
5018
+ "schema": {
5019
+ "type": "string"
5020
+ }
5021
+ }
5022
+ },
4925
5023
  "content": {
4926
5024
  "application/json": {
4927
5025
  "schema": {
@@ -5507,6 +5605,18 @@
5507
5605
  }
5508
5606
  ],
5509
5607
  "summary": "Get the authenticated user's organization",
5608
+ "parameters": [
5609
+ {
5610
+ "name": "x-consistency-bookmark",
5611
+ "in": "header",
5612
+ "required": false,
5613
+ "description": "Optional opaque consistency bookmark returned by a previous auth response. Send it back unchanged to continue read-after-write consistency.",
5614
+ "schema": {
5615
+ "type": "string"
5616
+ },
5617
+ "example": "opaque-consistency-bookmark"
5618
+ }
5619
+ ],
5510
5620
  "description": "### Overview\nReturns the metadata of the organization owned by the authenticated user. In the current version, this represents the user's personal organization space containing all their projects and tokens.\n\n### When to Use\n- Use this endpoint to retrieve the organization ID and name for display or context setup (e.g., when running `wspc org show` or rendering user dashboards).\n- Use this to verify that the API token / credentials are linked to a valid organization.\n\n### Constraints\n- Requires a valid Bearer token (API Key or Session Token) in the `Authorization` header.\n- In the current API version (v1), every user is automatically provisioned a single personal organization. Selecting or switching organizations is not supported.\n\n### Troubleshooting\n- **401 Unauthorized**: The provided Bearer token is missing, expired, or invalid. Verify your `Authorization` header format (`Bearer <token>`).\n- **403 Forbidden**: The token does not have access to read organization metadata.\n- **404 Not Found**: The organization associated with this token could not be found or has been deactivated.",
5511
5621
  "x-codeSamples": [
5512
5622
  {
@@ -5523,6 +5633,14 @@
5523
5633
  "responses": {
5524
5634
  "200": {
5525
5635
  "description": "The authenticated user's organization.",
5636
+ "headers": {
5637
+ "x-consistency-bookmark": {
5638
+ "description": "Opaque consistency bookmark for the latest auth database position observed by this request. Store and send it on the next auth request to continue read-after-write consistency.",
5639
+ "schema": {
5640
+ "type": "string"
5641
+ }
5642
+ }
5643
+ },
5526
5644
  "content": {
5527
5645
  "application/json": {
5528
5646
  "schema": {
@@ -5889,6 +6007,18 @@
5889
6007
  }
5890
6008
  ],
5891
6009
  "summary": "Update the authenticated user's organization",
6010
+ "parameters": [
6011
+ {
6012
+ "name": "x-consistency-bookmark",
6013
+ "in": "header",
6014
+ "required": false,
6015
+ "description": "Optional opaque consistency bookmark returned by a previous auth response. Send it back unchanged to continue read-after-write consistency.",
6016
+ "schema": {
6017
+ "type": "string"
6018
+ },
6019
+ "example": "opaque-consistency-bookmark"
6020
+ }
6021
+ ],
5892
6022
  "description": "### Overview\nUpdates the metadata (currently, the name) of the organization associated with the authenticated user.\n\n### Constraints\n- Requires a valid Bearer token.\n- The organization name cannot be empty or purely whitespace.\n- Maximum length is capped by `MAX_ORG_NAME_LEN`.",
5893
6023
  "x-codeSamples": [
5894
6024
  {
@@ -5914,6 +6044,14 @@
5914
6044
  "responses": {
5915
6045
  "200": {
5916
6046
  "description": "The updated organization metadata.",
6047
+ "headers": {
6048
+ "x-consistency-bookmark": {
6049
+ "description": "Opaque consistency bookmark for the latest auth database position observed by this request. Store and send it on the next auth request to continue read-after-write consistency.",
6050
+ "schema": {
6051
+ "type": "string"
6052
+ }
6053
+ }
6054
+ },
5917
6055
  "content": {
5918
6056
  "application/json": {
5919
6057
  "schema": {
@@ -6266,20 +6404,17 @@
6266
6404
  }
6267
6405
  ],
6268
6406
  "summary": "Get a single invite addressed to the caller",
6269
- "description": "Retrieves the metadata of a specific organization invite addressed to the caller by its ID.",
6270
- "x-codeSamples": [
6407
+ "parameters": [
6271
6408
  {
6272
- "lang": "shell",
6273
- "label": "curl",
6274
- "source": "curl ${EXAMPLE_API_BASE_URL}/auth/invites/inv_01KT43YKZ8CX14WS6ENXQ8397E \\\n -H \"Authorization: Bearer $WSPC_API_KEY\""
6409
+ "name": "x-consistency-bookmark",
6410
+ "in": "header",
6411
+ "required": false,
6412
+ "description": "Optional opaque consistency bookmark returned by a previous auth response. Send it back unchanged to continue read-after-write consistency.",
6413
+ "schema": {
6414
+ "type": "string"
6415
+ },
6416
+ "example": "opaque-consistency-bookmark"
6275
6417
  },
6276
- {
6277
- "lang": "bash",
6278
- "label": "wspc CLI",
6279
- "source": "wspc invite show inv_01KT43YKZ8CX14WS6ENXQ8397E"
6280
- }
6281
- ],
6282
- "parameters": [
6283
6418
  {
6284
6419
  "schema": {
6285
6420
  "type": "string",
@@ -6291,9 +6426,30 @@
6291
6426
  "in": "path"
6292
6427
  }
6293
6428
  ],
6429
+ "description": "Retrieves the metadata of a specific organization invite addressed to the caller by its ID.",
6430
+ "x-codeSamples": [
6431
+ {
6432
+ "lang": "shell",
6433
+ "label": "curl",
6434
+ "source": "curl ${EXAMPLE_API_BASE_URL}/auth/invites/inv_01KT43YKZ8CX14WS6ENXQ8397E \\\n -H \"Authorization: Bearer $WSPC_API_KEY\""
6435
+ },
6436
+ {
6437
+ "lang": "bash",
6438
+ "label": "wspc CLI",
6439
+ "source": "wspc invite show inv_01KT43YKZ8CX14WS6ENXQ8397E"
6440
+ }
6441
+ ],
6294
6442
  "responses": {
6295
6443
  "200": {
6296
6444
  "description": "The invite.",
6445
+ "headers": {
6446
+ "x-consistency-bookmark": {
6447
+ "description": "Opaque consistency bookmark for the latest auth database position observed by this request. Store and send it on the next auth request to continue read-after-write consistency.",
6448
+ "schema": {
6449
+ "type": "string"
6450
+ }
6451
+ }
6452
+ },
6297
6453
  "content": {
6298
6454
  "application/json": {
6299
6455
  "schema": {
@@ -6660,6 +6816,18 @@
6660
6816
  }
6661
6817
  ],
6662
6818
  "summary": "Fetch the user identified by the bearer token",
6819
+ "parameters": [
6820
+ {
6821
+ "name": "x-consistency-bookmark",
6822
+ "in": "header",
6823
+ "required": false,
6824
+ "description": "Optional opaque consistency bookmark returned by a previous auth response. Send it back unchanged to continue read-after-write consistency.",
6825
+ "schema": {
6826
+ "type": "string"
6827
+ },
6828
+ "example": "opaque-consistency-bookmark"
6829
+ }
6830
+ ],
6663
6831
  "description": "### Overview\nRetrieves the stable identity profile (user ID, email, and optional display name) of the user associated with the active Bearer token. Works for both long-lived `wspc_*` API keys and OAuth access tokens.\n\n### When to Use\n- Use this endpoint (e.g., in `wspc verify` or `wspc whoami`) to confirm that the active environment's API key or OAuth access token remains valid.\n- Use it in UIs to display the logged-in user's profile details and retrieve the stable `user_id`.\n\n### Constraints\n- Requires a valid Bearer token (either a long-lived `wspc_*` API key or a temporary OAuth access token) in the `Authorization` header.\n- **Response Fields**: The `api_key_id` field is only returned if authenticated via a WSPC API key (prefixed with `wspc_`). OAuth access tokens will omit `api_key_id`. `display_name` is omitted if not configured.\n\n### Troubleshooting\n- **401 Unauthorized**: The Bearer token is missing, malformed, or has been revoked. Ensure the `Authorization` header matches the `Bearer <token>` format.",
6664
6832
  "x-codeSamples": [
6665
6833
  {
@@ -6676,6 +6844,14 @@
6676
6844
  "responses": {
6677
6845
  "200": {
6678
6846
  "description": "The bearer token is valid. The response carries the stable `user_id`, the user's email, and — for `wspc_*` API keys only — the `api_key_id` that authenticated the call.",
6847
+ "headers": {
6848
+ "x-consistency-bookmark": {
6849
+ "description": "Opaque consistency bookmark for the latest auth database position observed by this request. Store and send it on the next auth request to continue read-after-write consistency.",
6850
+ "schema": {
6851
+ "type": "string"
6852
+ }
6853
+ }
6854
+ },
6679
6855
  "content": {
6680
6856
  "application/json": {
6681
6857
  "schema": {
@@ -7058,6 +7234,18 @@
7058
7234
  }
7059
7235
  ],
7060
7236
  "summary": "List invites addressed to the authenticated user's email",
7237
+ "parameters": [
7238
+ {
7239
+ "name": "x-consistency-bookmark",
7240
+ "in": "header",
7241
+ "required": false,
7242
+ "description": "Optional opaque consistency bookmark returned by a previous auth response. Send it back unchanged to continue read-after-write consistency.",
7243
+ "schema": {
7244
+ "type": "string"
7245
+ },
7246
+ "example": "opaque-consistency-bookmark"
7247
+ }
7248
+ ],
7061
7249
  "description": "Retrieves all pending or expired organization invites addressed to the caller's verified email address.",
7062
7250
  "x-codeSamples": [
7063
7251
  {
@@ -7074,6 +7262,14 @@
7074
7262
  "responses": {
7075
7263
  "200": {
7076
7264
  "description": "Invites addressed to the caller.",
7265
+ "headers": {
7266
+ "x-consistency-bookmark": {
7267
+ "description": "Opaque consistency bookmark for the latest auth database position observed by this request. Store and send it on the next auth request to continue read-after-write consistency.",
7268
+ "schema": {
7269
+ "type": "string"
7270
+ }
7271
+ }
7272
+ },
7077
7273
  "content": {
7078
7274
  "application/json": {
7079
7275
  "schema": {
@@ -7437,20 +7633,17 @@
7437
7633
  }
7438
7634
  ],
7439
7635
  "summary": "List members of the authenticated user's organization",
7440
- "description": "### Overview\nRetrieves a paginated list of all members belonging to the authenticated user's organization, including their basic profile information, emails, and roles.\n\n### When to Use\n- Use this endpoint to list members in command-line tools (e.g., `wspc org members ls`) or to display a team directory in a user dashboard.\n- Use this to paginate through large lists of organization members using cursor-based pagination.\n\n### Constraints\n- Requires a valid Bearer token in the `Authorization` header.\n- In the current version (v1), organizations are single-user only, meaning this endpoint will always return exactly one member (the caller).\n- **Pagination**: Supports cursor-based pagination. The `limit` query parameter must be a positive integer, defaulting to 50 and capped at a maximum of 100. Pass `cursor` from the previous response's `next_cursor` to fetch subsequent pages.\n\n### Troubleshooting\n- **401 Unauthorized**: The Bearer token is invalid or has expired.\n- **400 Bad Request**: The query parameters `limit` or `cursor` are malformed. Ensure `limit` is an integer between 1 and 100.\n- **404 Not Found**: The organization associated with this user was not found.",
7441
- "x-codeSamples": [
7636
+ "parameters": [
7442
7637
  {
7443
- "lang": "shell",
7444
- "label": "curl",
7445
- "source": "curl https://api.wspc.ai/auth/me/org/members \\\n -H \"Authorization: Bearer $WSPC_API_KEY\""
7638
+ "name": "x-consistency-bookmark",
7639
+ "in": "header",
7640
+ "required": false,
7641
+ "description": "Optional opaque consistency bookmark returned by a previous auth response. Send it back unchanged to continue read-after-write consistency.",
7642
+ "schema": {
7643
+ "type": "string"
7644
+ },
7645
+ "example": "opaque-consistency-bookmark"
7446
7646
  },
7447
- {
7448
- "lang": "bash",
7449
- "label": "wspc CLI",
7450
- "source": "wspc org members ls"
7451
- }
7452
- ],
7453
- "parameters": [
7454
7647
  {
7455
7648
  "schema": {
7456
7649
  "type": "string",
@@ -7472,18 +7665,39 @@
7472
7665
  "in": "query"
7473
7666
  }
7474
7667
  ],
7475
- "responses": {
7476
- "200": {
7477
- "description": "List of organization members and optional cursor for next page.",
7478
- "content": {
7479
- "application/json": {
7480
- "schema": {
7481
- "$ref": "#/components/schemas/ListOrgMembersResponse"
7482
- }
7483
- }
7484
- }
7485
- },
7486
- "400": {
7668
+ "description": "### Overview\nRetrieves a paginated list of all members belonging to the authenticated user's organization, including their basic profile information, emails, and roles.\n\n### When to Use\n- Use this endpoint to list members in command-line tools (e.g., `wspc org members ls`) or to display a team directory in a user dashboard.\n- Use this to paginate through large lists of organization members using cursor-based pagination.\n\n### Constraints\n- Requires a valid Bearer token in the `Authorization` header.\n- In the current version (v1), organizations are single-user only, meaning this endpoint will always return exactly one member (the caller).\n- **Pagination**: Supports cursor-based pagination. The `limit` query parameter must be a positive integer, defaulting to 50 and capped at a maximum of 100. Pass `cursor` from the previous response's `next_cursor` to fetch subsequent pages.\n\n### Troubleshooting\n- **401 Unauthorized**: The Bearer token is invalid or has expired.\n- **400 Bad Request**: The query parameters `limit` or `cursor` are malformed. Ensure `limit` is an integer between 1 and 100.\n- **404 Not Found**: The organization associated with this user was not found.",
7669
+ "x-codeSamples": [
7670
+ {
7671
+ "lang": "shell",
7672
+ "label": "curl",
7673
+ "source": "curl https://api.wspc.ai/auth/me/org/members \\\n -H \"Authorization: Bearer $WSPC_API_KEY\""
7674
+ },
7675
+ {
7676
+ "lang": "bash",
7677
+ "label": "wspc CLI",
7678
+ "source": "wspc org members ls"
7679
+ }
7680
+ ],
7681
+ "responses": {
7682
+ "200": {
7683
+ "description": "List of organization members and optional cursor for next page.",
7684
+ "headers": {
7685
+ "x-consistency-bookmark": {
7686
+ "description": "Opaque consistency bookmark for the latest auth database position observed by this request. Store and send it on the next auth request to continue read-after-write consistency.",
7687
+ "schema": {
7688
+ "type": "string"
7689
+ }
7690
+ }
7691
+ },
7692
+ "content": {
7693
+ "application/json": {
7694
+ "schema": {
7695
+ "$ref": "#/components/schemas/ListOrgMembersResponse"
7696
+ }
7697
+ }
7698
+ }
7699
+ },
7700
+ "400": {
7487
7701
  "description": "Request validation failed. The body, query, or path parameters did not match the operation's schema.",
7488
7702
  "content": {
7489
7703
  "application/json": {
@@ -8797,20 +9011,17 @@
8797
9011
  }
8798
9012
  ],
8799
9013
  "summary": "Reject an invite",
8800
- "description": "Rejects an organization invite addressed to the caller. The invite will be marked as rejected.",
8801
- "x-codeSamples": [
9014
+ "parameters": [
8802
9015
  {
8803
- "lang": "shell",
8804
- "label": "curl",
8805
- "source": "curl -X POST ${EXAMPLE_API_BASE_URL}/auth/invites/inv_01KT43YKZ8CX14WS6ENXQ8397E/reject \\\n -H \"Authorization: Bearer $WSPC_API_KEY\""
9016
+ "name": "x-consistency-bookmark",
9017
+ "in": "header",
9018
+ "required": false,
9019
+ "description": "Optional opaque consistency bookmark returned by a previous auth response. Send it back unchanged to continue read-after-write consistency.",
9020
+ "schema": {
9021
+ "type": "string"
9022
+ },
9023
+ "example": "opaque-consistency-bookmark"
8806
9024
  },
8807
- {
8808
- "lang": "bash",
8809
- "label": "wspc CLI",
8810
- "source": "wspc invite reject inv_01KT43YKZ8CX14WS6ENXQ8397E"
8811
- }
8812
- ],
8813
- "parameters": [
8814
9025
  {
8815
9026
  "schema": {
8816
9027
  "type": "string",
@@ -8822,9 +9033,30 @@
8822
9033
  "in": "path"
8823
9034
  }
8824
9035
  ],
9036
+ "description": "Rejects an organization invite addressed to the caller. The invite will be marked as rejected.",
9037
+ "x-codeSamples": [
9038
+ {
9039
+ "lang": "shell",
9040
+ "label": "curl",
9041
+ "source": "curl -X POST ${EXAMPLE_API_BASE_URL}/auth/invites/inv_01KT43YKZ8CX14WS6ENXQ8397E/reject \\\n -H \"Authorization: Bearer $WSPC_API_KEY\""
9042
+ },
9043
+ {
9044
+ "lang": "bash",
9045
+ "label": "wspc CLI",
9046
+ "source": "wspc invite reject inv_01KT43YKZ8CX14WS6ENXQ8397E"
9047
+ }
9048
+ ],
8825
9049
  "responses": {
8826
9050
  "204": {
8827
- "description": "Invite rejected."
9051
+ "description": "Invite rejected.",
9052
+ "headers": {
9053
+ "x-consistency-bookmark": {
9054
+ "description": "Opaque consistency bookmark for the latest auth database position observed by this request. Store and send it on the next auth request to continue read-after-write consistency.",
9055
+ "schema": {
9056
+ "type": "string"
9057
+ }
9058
+ }
9059
+ }
8828
9060
  },
8829
9061
  "400": {
8830
9062
  "description": "Request validation failed. The body, query, or path parameters did not match the operation's schema.",
@@ -9164,15 +9396,17 @@
9164
9396
  }
9165
9397
  ],
9166
9398
  "summary": "Remove a member from the organization",
9167
- "description": "### Overview\nRemoves a member from the authenticated user's organization by their user ID, restoring their original organization ID if applicable.\n\n### Constraints\n- Requires a valid Bearer token.\n- Cannot remove the organization creator/owner.",
9168
- "x-codeSamples": [
9169
- {
9170
- "lang": "shell",
9171
- "label": "curl",
9172
- "source": "curl -X DELETE https://api.wspc.ai/auth/me/org/members/usr_member \\\n -H \"Authorization: Bearer $WSPC_API_KEY\""
9173
- }
9174
- ],
9175
9399
  "parameters": [
9400
+ {
9401
+ "name": "x-consistency-bookmark",
9402
+ "in": "header",
9403
+ "required": false,
9404
+ "description": "Optional opaque consistency bookmark returned by a previous auth response. Send it back unchanged to continue read-after-write consistency.",
9405
+ "schema": {
9406
+ "type": "string"
9407
+ },
9408
+ "example": "opaque-consistency-bookmark"
9409
+ },
9176
9410
  {
9177
9411
  "schema": {
9178
9412
  "type": "string",
@@ -9184,9 +9418,25 @@
9184
9418
  "in": "path"
9185
9419
  }
9186
9420
  ],
9421
+ "description": "### Overview\nRemoves a member from the authenticated user's organization by their user ID, restoring their original organization ID if applicable.\n\n### Constraints\n- Requires a valid Bearer token.\n- Cannot remove the organization creator/owner.",
9422
+ "x-codeSamples": [
9423
+ {
9424
+ "lang": "shell",
9425
+ "label": "curl",
9426
+ "source": "curl -X DELETE https://api.wspc.ai/auth/me/org/members/usr_member \\\n -H \"Authorization: Bearer $WSPC_API_KEY\""
9427
+ }
9428
+ ],
9187
9429
  "responses": {
9188
9430
  "204": {
9189
- "description": "Member removed successfully."
9431
+ "description": "Member removed successfully.",
9432
+ "headers": {
9433
+ "x-consistency-bookmark": {
9434
+ "description": "Opaque consistency bookmark for the latest auth database position observed by this request. Store and send it on the next auth request to continue read-after-write consistency.",
9435
+ "schema": {
9436
+ "type": "string"
9437
+ }
9438
+ }
9439
+ }
9190
9440
  },
9191
9441
  "400": {
9192
9442
  "description": "Request validation failed. The body, query, or path parameters did not match the operation's schema.",
@@ -9523,6 +9773,18 @@
9523
9773
  "excludeActorHeaders": true,
9524
9774
  "security": [],
9525
9775
  "summary": "Request an email magic code",
9776
+ "parameters": [
9777
+ {
9778
+ "name": "x-consistency-bookmark",
9779
+ "in": "header",
9780
+ "required": false,
9781
+ "description": "Optional opaque consistency bookmark returned by a previous auth response. Send it back unchanged to continue read-after-write consistency.",
9782
+ "schema": {
9783
+ "type": "string"
9784
+ },
9785
+ "example": "opaque-consistency-bookmark"
9786
+ }
9787
+ ],
9526
9788
  "description": "### Overview\nInitiates the passwordless email magic-code authentication flow by sending a short, time-limited numeric verification code to the specified email address.\n\n### When to Use\n- Use this endpoint as the first step of the CLI login flow (`wspc login`) or any interactive UI where the user initiates authentication by inputting their email address.\n- Pair this request with `POST /auth/verify-code` once the user retrieves the code from their inbox.\n\n### Constraints\n- Does not require authentication (public endpoint).\n- **Security**: The same HTTP 200 response structure is returned regardless of whether the email address is already registered or not. This is an intentional security design to prevent account-existence disclosure (email harvesting).\n- **Rate Limiting**: This endpoint enforces strict rate limits based on both the requesting IP address and the target email address to prevent abuse. Too many consecutive requests will result in a `RATE_LIMITED` error.\n\n### Troubleshooting\n- **429 Too Many Requests**: The requesting IP or target email has exceeded the allowable request rate. Wait a few minutes before trying again.\n- **400 Bad Request**: The `email` payload is malformed or invalid. Verify that the email matches basic email formats.",
9527
9789
  "x-codeSamples": [
9528
9790
  {
@@ -9556,6 +9818,14 @@
9556
9818
  "responses": {
9557
9819
  "200": {
9558
9820
  "description": "The magic code was generated and an email was dispatched. The same response shape is returned for registered and unregistered addresses to avoid account-existence disclosure.",
9821
+ "headers": {
9822
+ "x-consistency-bookmark": {
9823
+ "description": "Opaque consistency bookmark for the latest auth database position observed by this request. Store and send it on the next auth request to continue read-after-write consistency.",
9824
+ "schema": {
9825
+ "type": "string"
9826
+ }
9827
+ }
9828
+ },
9559
9829
  "content": {
9560
9830
  "application/json": {
9561
9831
  "schema": {
@@ -9911,6 +10181,28 @@
9911
10181
  }
9912
10182
  ],
9913
10183
  "summary": "Soft-revoke an API key",
10184
+ "parameters": [
10185
+ {
10186
+ "name": "x-consistency-bookmark",
10187
+ "in": "header",
10188
+ "required": false,
10189
+ "description": "Optional opaque consistency bookmark returned by a previous auth response. Send it back unchanged to continue read-after-write consistency.",
10190
+ "schema": {
10191
+ "type": "string"
10192
+ },
10193
+ "example": "opaque-consistency-bookmark"
10194
+ },
10195
+ {
10196
+ "schema": {
10197
+ "type": "string",
10198
+ "description": "Id of the API key to revoke, as returned by `GET /auth/keys` (`key_<ULID>`)."
10199
+ },
10200
+ "required": true,
10201
+ "description": "Id of the API key to revoke, as returned by `GET /auth/keys` (`key_<ULID>`).",
10202
+ "name": "id",
10203
+ "in": "path"
10204
+ }
10205
+ ],
9914
10206
  "description": "### Overview\nPermanently revokes an active API key by its unique ID. Once revoked, the key becomes immediately invalid and will be rejected by all services.\n\n### When to Use\n- Use this endpoint to permanently deactivate an API key (e.g., when running `wspc keys revoke <id>`) due to token rotation, key leakage, or decommissioning of a machine/service.\n\n### Constraints\n- Requires a valid Bearer token in the `Authorization` header.\n- Revocation is permanent and cannot be undone.\n- A user can revoke any key they own, including the one they are currently using to make the call. If they revoke the current key, subsequent requests using that key will return `401 Unauthorized`.\n\n### Troubleshooting\n- **401 Unauthorized**: The active token is missing, expired, or invalid.\n- **404 Not Found**: The specified key ID does not exist, belongs to another user, or has already been revoked.\n- **400 Bad Request**: The `id` path parameter format is invalid. It must be in the format `key_<ULID>`.",
9915
10207
  "x-cli": {
9916
10208
  "command": "keys rm",
@@ -9930,21 +10222,17 @@
9930
10222
  "source": "wspc keys rm key_abcd1234efgh5678"
9931
10223
  }
9932
10224
  ],
9933
- "parameters": [
9934
- {
9935
- "schema": {
9936
- "type": "string",
9937
- "description": "Id of the API key to revoke, as returned by `GET /auth/keys` (`key_<ULID>`)."
9938
- },
9939
- "required": true,
9940
- "description": "Id of the API key to revoke, as returned by `GET /auth/keys` (`key_<ULID>`).",
9941
- "name": "id",
9942
- "in": "path"
9943
- }
9944
- ],
9945
10225
  "responses": {
9946
10226
  "200": {
9947
10227
  "description": "Key revoked successfully.",
10228
+ "headers": {
10229
+ "x-consistency-bookmark": {
10230
+ "description": "Opaque consistency bookmark for the latest auth database position observed by this request. Store and send it on the next auth request to continue read-after-write consistency.",
10231
+ "schema": {
10232
+ "type": "string"
10233
+ }
10234
+ }
10235
+ },
9948
10236
  "content": {
9949
10237
  "application/json": {
9950
10238
  "schema": {
@@ -10289,6 +10577,28 @@
10289
10577
  }
10290
10578
  ],
10291
10579
  "summary": "Update an active API key's label",
10580
+ "parameters": [
10581
+ {
10582
+ "name": "x-consistency-bookmark",
10583
+ "in": "header",
10584
+ "required": false,
10585
+ "description": "Optional opaque consistency bookmark returned by a previous auth response. Send it back unchanged to continue read-after-write consistency.",
10586
+ "schema": {
10587
+ "type": "string"
10588
+ },
10589
+ "example": "opaque-consistency-bookmark"
10590
+ },
10591
+ {
10592
+ "schema": {
10593
+ "type": "string",
10594
+ "description": "Id of the API key to update."
10595
+ },
10596
+ "required": true,
10597
+ "description": "Id of the API key to update.",
10598
+ "name": "id",
10599
+ "in": "path"
10600
+ }
10601
+ ],
10292
10602
  "description": "### Overview\nUpdates the human-readable label of an active API key. Only active (non-revoked) keys owned by the authenticated user can be updated.\n\n### Constraints\n- Requires a valid Bearer token in the `Authorization` header.\n- **Label Validation**: The `label` parameter must be between 1 and 60 characters after trimming whitespace. Failing to provide a valid label results in an `INVALID_LABEL` error.",
10293
10603
  "x-cli": {
10294
10604
  "command": "keys edit",
@@ -10308,18 +10618,6 @@
10308
10618
  "source": "wspc keys edit key_01HW3K4N9V5G6Z8C2Q7B1Y0M3F --label \"New Label\""
10309
10619
  }
10310
10620
  ],
10311
- "parameters": [
10312
- {
10313
- "schema": {
10314
- "type": "string",
10315
- "description": "Id of the API key to update."
10316
- },
10317
- "required": true,
10318
- "description": "Id of the API key to update.",
10319
- "name": "id",
10320
- "in": "path"
10321
- }
10322
- ],
10323
10621
  "requestBody": {
10324
10622
  "required": true,
10325
10623
  "content": {
@@ -10333,6 +10631,14 @@
10333
10631
  "responses": {
10334
10632
  "200": {
10335
10633
  "description": "API key label updated successfully.",
10634
+ "headers": {
10635
+ "x-consistency-bookmark": {
10636
+ "description": "Opaque consistency bookmark for the latest auth database position observed by this request. Store and send it on the next auth request to continue read-after-write consistency.",
10637
+ "schema": {
10638
+ "type": "string"
10639
+ }
10640
+ }
10641
+ },
10336
10642
  "content": {
10337
10643
  "application/json": {
10338
10644
  "schema": {
@@ -10895,20 +11201,17 @@
10895
11201
  }
10896
11202
  ],
10897
11203
  "summary": "Revoke a pending invite",
10898
- "description": "Permanently revokes a pending organization invite. The invitee will no longer be able to accept it.",
10899
- "x-codeSamples": [
11204
+ "parameters": [
10900
11205
  {
10901
- "lang": "shell",
10902
- "label": "curl",
10903
- "source": "curl -X DELETE ${EXAMPLE_API_BASE_URL}/auth/me/org/invites/inv_01KT43YKZ8CX14WS6ENXQ8397E \\\n -H \"Authorization: Bearer $WSPC_API_KEY\""
11206
+ "name": "x-consistency-bookmark",
11207
+ "in": "header",
11208
+ "required": false,
11209
+ "description": "Optional opaque consistency bookmark returned by a previous auth response. Send it back unchanged to continue read-after-write consistency.",
11210
+ "schema": {
11211
+ "type": "string"
11212
+ },
11213
+ "example": "opaque-consistency-bookmark"
10904
11214
  },
10905
- {
10906
- "lang": "bash",
10907
- "label": "wspc CLI",
10908
- "source": "wspc org invite revoke inv_01KT43YKZ8CX14WS6ENXQ8397E"
10909
- }
10910
- ],
10911
- "parameters": [
10912
11215
  {
10913
11216
  "schema": {
10914
11217
  "type": "string",
@@ -10920,9 +11223,30 @@
10920
11223
  "in": "path"
10921
11224
  }
10922
11225
  ],
11226
+ "description": "Permanently revokes a pending organization invite. The invitee will no longer be able to accept it.",
11227
+ "x-codeSamples": [
11228
+ {
11229
+ "lang": "shell",
11230
+ "label": "curl",
11231
+ "source": "curl -X DELETE ${EXAMPLE_API_BASE_URL}/auth/me/org/invites/inv_01KT43YKZ8CX14WS6ENXQ8397E \\\n -H \"Authorization: Bearer $WSPC_API_KEY\""
11232
+ },
11233
+ {
11234
+ "lang": "bash",
11235
+ "label": "wspc CLI",
11236
+ "source": "wspc org invite revoke inv_01KT43YKZ8CX14WS6ENXQ8397E"
11237
+ }
11238
+ ],
10923
11239
  "responses": {
10924
11240
  "204": {
10925
- "description": "Invite revoked."
11241
+ "description": "Invite revoked.",
11242
+ "headers": {
11243
+ "x-consistency-bookmark": {
11244
+ "description": "Opaque consistency bookmark for the latest auth database position observed by this request. Store and send it on the next auth request to continue read-after-write consistency.",
11245
+ "schema": {
11246
+ "type": "string"
11247
+ }
11248
+ }
11249
+ }
10926
11250
  },
10927
11251
  "400": {
10928
11252
  "description": "Request validation failed. The body, query, or path parameters did not match the operation's schema.",
@@ -11487,6 +11811,18 @@
11487
11811
  "excludeActorHeaders": true,
11488
11812
  "security": [],
11489
11813
  "summary": "Verify a magic code and issue an API key",
11814
+ "parameters": [
11815
+ {
11816
+ "name": "x-consistency-bookmark",
11817
+ "in": "header",
11818
+ "required": false,
11819
+ "description": "Optional opaque consistency bookmark returned by a previous auth response. Send it back unchanged to continue read-after-write consistency.",
11820
+ "schema": {
11821
+ "type": "string"
11822
+ },
11823
+ "example": "opaque-consistency-bookmark"
11824
+ }
11825
+ ],
11490
11826
  "description": "### Overview\nCompletes the passwordless login flow by verifying the magic code received via email. If the code is correct, it registers a new user (if not already registered) and issues a long-lived WSPC API key.\n\n### When to Use\n- Use this endpoint as the second step of the login flow, exchanging the user-provided code and email address for a valid credential.\n- Store the returned `api_key` securely client-side to authorize subsequent calls to all WSPC services.\n\n### Constraints\n- Does not require authentication (public endpoint).\n- **One-time Use & Expiry**: The verification code is single-use and expires after a short period (typically a few minutes). Re-using a code or attempting to guess code values results in `INVALID_CODE` or `CODE_EXPIRED`.\n- **Account Creation**: If the email address is not linked to an existing account, a new user profile and personal organization are automatically provisioned (`created: true` in response).\n\n### Troubleshooting\n- **400 Bad Request**: The code has expired (`CODE_EXPIRED`), is incorrect (`INVALID_CODE`), or has already been used. Request a fresh code via `POST /auth/request-code`.\n- **429 Too Many Requests**: The rate limit for verification attempts on this email address has been exceeded.",
11491
11827
  "x-codeSamples": [
11492
11828
  {
@@ -11521,9 +11857,17 @@
11521
11857
  "responses": {
11522
11858
  "200": {
11523
11859
  "description": "Code accepted. The response carries a fresh API key for the active environment plus the user's stable id. Persist these client-side.",
11524
- "content": {
11525
- "application/json": {
11526
- "schema": {
11860
+ "headers": {
11861
+ "x-consistency-bookmark": {
11862
+ "description": "Opaque consistency bookmark for the latest auth database position observed by this request. Store and send it on the next auth request to continue read-after-write consistency.",
11863
+ "schema": {
11864
+ "type": "string"
11865
+ }
11866
+ }
11867
+ },
11868
+ "content": {
11869
+ "application/json": {
11870
+ "schema": {
11527
11871
  "$ref": "#/components/schemas/VerifyCodeResponse"
11528
11872
  },
11529
11873
  "examples": {
@@ -20661,6 +21005,28 @@
20661
21005
  "bearerAuth": []
20662
21006
  }
20663
21007
  ],
21008
+ "parameters": [
21009
+ {
21010
+ "name": "x-consistency-bookmark",
21011
+ "in": "header",
21012
+ "required": false,
21013
+ "schema": {
21014
+ "type": "string"
21015
+ },
21016
+ "description": "Optional opaque consistency bookmark returned by a previous push response. Send it back unchanged to continue read-after-write consistency.",
21017
+ "example": "opaque-consistency-bookmark"
21018
+ },
21019
+ {
21020
+ "schema": {
21021
+ "type": "string",
21022
+ "description": "Transport name to delete (e.g. `telegram`). Only transports the caller has previously registered exist; unknown values return 400 `UNKNOWN_TRANSPORT`."
21023
+ },
21024
+ "required": true,
21025
+ "description": "Transport name to delete (e.g. `telegram`). Only transports the caller has previously registered exist; unknown values return 400 `UNKNOWN_TRANSPORT`.",
21026
+ "name": "transport",
21027
+ "in": "path"
21028
+ }
21029
+ ],
20664
21030
  "x-codeSamples": [
20665
21031
  {
20666
21032
  "lang": "shell",
@@ -20679,21 +21045,17 @@
20679
21045
  "transport"
20680
21046
  ]
20681
21047
  },
20682
- "parameters": [
20683
- {
20684
- "schema": {
20685
- "type": "string",
20686
- "description": "Transport name to delete (e.g. `telegram`). Only transports the caller has previously registered exist; unknown values return 400 `UNKNOWN_TRANSPORT`."
20687
- },
20688
- "required": true,
20689
- "description": "Transport name to delete (e.g. `telegram`). Only transports the caller has previously registered exist; unknown values return 400 `UNKNOWN_TRANSPORT`.",
20690
- "name": "transport",
20691
- "in": "path"
20692
- }
20693
- ],
20694
21048
  "responses": {
20695
21049
  "204": {
20696
- "description": "Config deleted (or no config existed — the call is idempotent)."
21050
+ "description": "Config deleted (or no config existed — the call is idempotent).",
21051
+ "headers": {
21052
+ "x-consistency-bookmark": {
21053
+ "description": "Opaque consistency bookmark for the latest push database position observed by this request. Store and send it on the next push request to continue read-after-write consistency.",
21054
+ "schema": {
21055
+ "type": "string"
21056
+ }
21057
+ }
21058
+ }
20697
21059
  },
20698
21060
  "400": {
20699
21061
  "description": "`transport` is not a value wspc supports.",
@@ -20929,6 +21291,18 @@
20929
21291
  "bearerAuth": []
20930
21292
  }
20931
21293
  ],
21294
+ "parameters": [
21295
+ {
21296
+ "name": "x-consistency-bookmark",
21297
+ "in": "header",
21298
+ "required": false,
21299
+ "schema": {
21300
+ "type": "string"
21301
+ },
21302
+ "description": "Optional opaque consistency bookmark returned by a previous push response. Send it back unchanged to continue read-after-write consistency.",
21303
+ "example": "opaque-consistency-bookmark"
21304
+ }
21305
+ ],
20932
21306
  "x-codeSamples": [
20933
21307
  {
20934
21308
  "lang": "shell",
@@ -20981,6 +21355,14 @@
20981
21355
  "responses": {
20982
21356
  "201": {
20983
21357
  "description": "Config stored. The transport is now eligible to receive product notifications for this user.",
21358
+ "headers": {
21359
+ "x-consistency-bookmark": {
21360
+ "description": "Opaque consistency bookmark for the latest push database position observed by this request. Store and send it on the next push request to continue read-after-write consistency.",
21361
+ "schema": {
21362
+ "type": "string"
21363
+ }
21364
+ }
21365
+ },
20984
21366
  "content": {
20985
21367
  "application/json": {
20986
21368
  "schema": {
@@ -21240,6 +21622,18 @@
21240
21622
  "bearerAuth": []
21241
21623
  }
21242
21624
  ],
21625
+ "parameters": [
21626
+ {
21627
+ "name": "x-consistency-bookmark",
21628
+ "in": "header",
21629
+ "required": false,
21630
+ "schema": {
21631
+ "type": "string"
21632
+ },
21633
+ "description": "Optional opaque consistency bookmark returned by a previous push response. Send it back unchanged to continue read-after-write consistency.",
21634
+ "example": "opaque-consistency-bookmark"
21635
+ }
21636
+ ],
21243
21637
  "x-codeSamples": [
21244
21638
  {
21245
21639
  "lang": "shell",
@@ -21290,6 +21684,14 @@
21290
21684
  "responses": {
21291
21685
  "200": {
21292
21686
  "description": "All push transports registered for the authenticated user.",
21687
+ "headers": {
21688
+ "x-consistency-bookmark": {
21689
+ "description": "Opaque consistency bookmark for the latest push database position observed by this request. Store and send it on the next push request to continue read-after-write consistency.",
21690
+ "schema": {
21691
+ "type": "string"
21692
+ }
21693
+ }
21694
+ },
21293
21695
  "content": {
21294
21696
  "application/json": {
21295
21697
  "schema": {
@@ -21525,6 +21927,18 @@
21525
21927
  "bearerAuth": []
21526
21928
  }
21527
21929
  ],
21930
+ "parameters": [
21931
+ {
21932
+ "name": "x-consistency-bookmark",
21933
+ "in": "header",
21934
+ "required": false,
21935
+ "schema": {
21936
+ "type": "string"
21937
+ },
21938
+ "description": "Optional opaque consistency bookmark returned by a previous push response. Send it back unchanged to continue read-after-write consistency.",
21939
+ "example": "opaque-consistency-bookmark"
21940
+ }
21941
+ ],
21528
21942
  "x-codeSamples": [
21529
21943
  {
21530
21944
  "lang": "shell",
@@ -21577,6 +21991,14 @@
21577
21991
  "responses": {
21578
21992
  "200": {
21579
21993
  "description": "Test attempted. Inspect `ok` to discriminate success from a transport-layer failure (network, upstream 4xx/5xx).",
21994
+ "headers": {
21995
+ "x-consistency-bookmark": {
21996
+ "description": "Opaque consistency bookmark for the latest push database position observed by this request. Store and send it on the next push request to continue read-after-write consistency.",
21997
+ "schema": {
21998
+ "type": "string"
21999
+ }
22000
+ }
22001
+ },
21580
22002
  "content": {
21581
22003
  "application/json": {
21582
22004
  "schema": {
@@ -21865,19 +22287,17 @@
21865
22287
  "bearerAuth": []
21866
22288
  }
21867
22289
  ],
21868
- "x-codeSamples": [
22290
+ "parameters": [
21869
22291
  {
21870
- "lang": "shell",
21871
- "label": "curl",
21872
- "source": "curl -X POST https://api.wspc.ai/todo/items/tod_01HW3K/comments -H \"Authorization: Bearer $WSPC_API_KEY\" -H \"Content-Type: application/json\" -d '{\"content\":\"Looks good\"}'"
22292
+ "name": "x-consistency-bookmark",
22293
+ "in": "header",
22294
+ "required": false,
22295
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
22296
+ "schema": {
22297
+ "type": "string"
22298
+ },
22299
+ "example": "opaque-consistency-bookmark"
21873
22300
  },
21874
- {
21875
- "lang": "bash",
21876
- "label": "wspc CLI",
21877
- "source": "wspc todo comment add tod_01HW3K \"Looks good\""
21878
- }
21879
- ],
21880
- "parameters": [
21881
22301
  {
21882
22302
  "schema": {
21883
22303
  "type": "string",
@@ -21890,6 +22310,18 @@
21890
22310
  "in": "path"
21891
22311
  }
21892
22312
  ],
22313
+ "x-codeSamples": [
22314
+ {
22315
+ "lang": "shell",
22316
+ "label": "curl",
22317
+ "source": "curl -X POST https://api.wspc.ai/todo/items/tod_01HW3K/comments -H \"Authorization: Bearer $WSPC_API_KEY\" -H \"Content-Type: application/json\" -d '{\"content\":\"Looks good\"}'"
22318
+ },
22319
+ {
22320
+ "lang": "bash",
22321
+ "label": "wspc CLI",
22322
+ "source": "wspc todo comment add tod_01HW3K \"Looks good\""
22323
+ }
22324
+ ],
21893
22325
  "requestBody": {
21894
22326
  "content": {
21895
22327
  "application/json": {
@@ -21910,6 +22342,14 @@
21910
22342
  "responses": {
21911
22343
  "201": {
21912
22344
  "description": "Created",
22345
+ "headers": {
22346
+ "x-consistency-bookmark": {
22347
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
22348
+ "schema": {
22349
+ "type": "string"
22350
+ }
22351
+ }
22352
+ },
21913
22353
  "content": {
21914
22354
  "application/json": {
21915
22355
  "schema": {
@@ -22289,19 +22729,17 @@
22289
22729
  "bearerAuth": []
22290
22730
  }
22291
22731
  ],
22292
- "x-codeSamples": [
22732
+ "parameters": [
22293
22733
  {
22294
- "lang": "shell",
22295
- "label": "curl",
22296
- "source": "curl https://api.wspc.ai/todo/items/tod_01HW3K/comments -H \"Authorization: Bearer $WSPC_API_KEY\""
22734
+ "name": "x-consistency-bookmark",
22735
+ "in": "header",
22736
+ "required": false,
22737
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
22738
+ "schema": {
22739
+ "type": "string"
22740
+ },
22741
+ "example": "opaque-consistency-bookmark"
22297
22742
  },
22298
- {
22299
- "lang": "bash",
22300
- "label": "wspc CLI",
22301
- "source": "wspc todo comment ls tod_01HW3K"
22302
- }
22303
- ],
22304
- "parameters": [
22305
22743
  {
22306
22744
  "schema": {
22307
22745
  "type": "string",
@@ -22354,9 +22792,29 @@
22354
22792
  "in": "query"
22355
22793
  }
22356
22794
  ],
22795
+ "x-codeSamples": [
22796
+ {
22797
+ "lang": "shell",
22798
+ "label": "curl",
22799
+ "source": "curl https://api.wspc.ai/todo/items/tod_01HW3K/comments -H \"Authorization: Bearer $WSPC_API_KEY\""
22800
+ },
22801
+ {
22802
+ "lang": "bash",
22803
+ "label": "wspc CLI",
22804
+ "source": "wspc todo comment ls tod_01HW3K"
22805
+ }
22806
+ ],
22357
22807
  "responses": {
22358
22808
  "200": {
22359
22809
  "description": "List",
22810
+ "headers": {
22811
+ "x-consistency-bookmark": {
22812
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
22813
+ "schema": {
22814
+ "type": "string"
22815
+ }
22816
+ }
22817
+ },
22360
22818
  "content": {
22361
22819
  "application/json": {
22362
22820
  "schema": {
@@ -22759,6 +23217,18 @@
22759
23217
  "bearerAuth": []
22760
23218
  }
22761
23219
  ],
23220
+ "parameters": [
23221
+ {
23222
+ "name": "x-consistency-bookmark",
23223
+ "in": "header",
23224
+ "required": false,
23225
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
23226
+ "schema": {
23227
+ "type": "string"
23228
+ },
23229
+ "example": "opaque-consistency-bookmark"
23230
+ }
23231
+ ],
22762
23232
  "x-codeSamples": [
22763
23233
  {
22764
23234
  "lang": "shell",
@@ -22798,6 +23268,14 @@
22798
23268
  "responses": {
22799
23269
  "201": {
22800
23270
  "description": "Created",
23271
+ "headers": {
23272
+ "x-consistency-bookmark": {
23273
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
23274
+ "schema": {
23275
+ "type": "string"
23276
+ }
23277
+ }
23278
+ },
22801
23279
  "content": {
22802
23280
  "application/json": {
22803
23281
  "schema": {
@@ -23178,19 +23656,17 @@
23178
23656
  "bearerAuth": []
23179
23657
  }
23180
23658
  ],
23181
- "x-codeSamples": [
23659
+ "parameters": [
23182
23660
  {
23183
- "lang": "shell",
23184
- "label": "curl",
23185
- "source": "curl https://api.wspc.ai/todo/projects -H \"Authorization: Bearer $WSPC_API_KEY\""
23661
+ "name": "x-consistency-bookmark",
23662
+ "in": "header",
23663
+ "required": false,
23664
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
23665
+ "schema": {
23666
+ "type": "string"
23667
+ },
23668
+ "example": "opaque-consistency-bookmark"
23186
23669
  },
23187
- {
23188
- "lang": "bash",
23189
- "label": "wspc CLI",
23190
- "source": "wspc project ls"
23191
- }
23192
- ],
23193
- "parameters": [
23194
23670
  {
23195
23671
  "schema": {
23196
23672
  "type": "string",
@@ -23203,9 +23679,29 @@
23203
23679
  "in": "query"
23204
23680
  }
23205
23681
  ],
23682
+ "x-codeSamples": [
23683
+ {
23684
+ "lang": "shell",
23685
+ "label": "curl",
23686
+ "source": "curl https://api.wspc.ai/todo/projects -H \"Authorization: Bearer $WSPC_API_KEY\""
23687
+ },
23688
+ {
23689
+ "lang": "bash",
23690
+ "label": "wspc CLI",
23691
+ "source": "wspc project ls"
23692
+ }
23693
+ ],
23206
23694
  "responses": {
23207
23695
  "200": {
23208
23696
  "description": "List",
23697
+ "headers": {
23698
+ "x-consistency-bookmark": {
23699
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
23700
+ "schema": {
23701
+ "type": "string"
23702
+ }
23703
+ }
23704
+ },
23209
23705
  "content": {
23210
23706
  "application/json": {
23211
23707
  "schema": {
@@ -23625,6 +24121,18 @@
23625
24121
  "bearerAuth": []
23626
24122
  }
23627
24123
  ],
24124
+ "parameters": [
24125
+ {
24126
+ "name": "x-consistency-bookmark",
24127
+ "in": "header",
24128
+ "required": false,
24129
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
24130
+ "schema": {
24131
+ "type": "string"
24132
+ },
24133
+ "example": "opaque-consistency-bookmark"
24134
+ }
24135
+ ],
23628
24136
  "x-codeSamples": [
23629
24137
  {
23630
24138
  "lang": "shell",
@@ -23671,6 +24179,14 @@
23671
24179
  "responses": {
23672
24180
  "201": {
23673
24181
  "description": "The rule was created. `materialized_instance_count` reports how many todo instances were materialized immediately within the 14-day horizon.",
24182
+ "headers": {
24183
+ "x-consistency-bookmark": {
24184
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
24185
+ "schema": {
24186
+ "type": "string"
24187
+ }
24188
+ }
24189
+ },
23674
24190
  "content": {
23675
24191
  "application/json": {
23676
24192
  "schema": {
@@ -24056,19 +24572,17 @@
24056
24572
  "bearerAuth": []
24057
24573
  }
24058
24574
  ],
24059
- "x-codeSamples": [
24575
+ "parameters": [
24060
24576
  {
24061
- "lang": "shell",
24062
- "label": "curl",
24063
- "source": "curl https://api.wspc.ai/todo/recurrence-rules \\\n -H \"Authorization: Bearer $WSPC_API_KEY\""
24577
+ "name": "x-consistency-bookmark",
24578
+ "in": "header",
24579
+ "required": false,
24580
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
24581
+ "schema": {
24582
+ "type": "string"
24583
+ },
24584
+ "example": "opaque-consistency-bookmark"
24064
24585
  },
24065
- {
24066
- "lang": "bash",
24067
- "label": "wspc CLI",
24068
- "source": "wspc todo rule ls"
24069
- }
24070
- ],
24071
- "parameters": [
24072
24586
  {
24073
24587
  "schema": {
24074
24588
  "type": "string",
@@ -24089,9 +24603,29 @@
24089
24603
  "in": "query"
24090
24604
  }
24091
24605
  ],
24606
+ "x-codeSamples": [
24607
+ {
24608
+ "lang": "shell",
24609
+ "label": "curl",
24610
+ "source": "curl https://api.wspc.ai/todo/recurrence-rules \\\n -H \"Authorization: Bearer $WSPC_API_KEY\""
24611
+ },
24612
+ {
24613
+ "lang": "bash",
24614
+ "label": "wspc CLI",
24615
+ "source": "wspc todo rule ls"
24616
+ }
24617
+ ],
24092
24618
  "responses": {
24093
24619
  "200": {
24094
24620
  "description": "Active recurrence rules for the caller. Empty `rules` array when none are configured.",
24621
+ "headers": {
24622
+ "x-consistency-bookmark": {
24623
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
24624
+ "schema": {
24625
+ "type": "string"
24626
+ }
24627
+ }
24628
+ },
24095
24629
  "content": {
24096
24630
  "application/json": {
24097
24631
  "schema": {
@@ -24492,6 +25026,18 @@
24492
25026
  "bearerAuth": []
24493
25027
  }
24494
25028
  ],
25029
+ "parameters": [
25030
+ {
25031
+ "name": "x-consistency-bookmark",
25032
+ "in": "header",
25033
+ "required": false,
25034
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
25035
+ "schema": {
25036
+ "type": "string"
25037
+ },
25038
+ "example": "opaque-consistency-bookmark"
25039
+ }
25040
+ ],
24495
25041
  "x-codeSamples": [
24496
25042
  {
24497
25043
  "lang": "shell",
@@ -24534,6 +25080,14 @@
24534
25080
  "responses": {
24535
25081
  "201": {
24536
25082
  "description": "The todo was created. The response carries the full row including server-assigned `id`, `version`, and `created_at`.",
25083
+ "headers": {
25084
+ "x-consistency-bookmark": {
25085
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
25086
+ "schema": {
25087
+ "type": "string"
25088
+ }
25089
+ }
25090
+ },
24537
25091
  "content": {
24538
25092
  "application/json": {
24539
25093
  "schema": {
@@ -24926,19 +25480,17 @@
24926
25480
  "bearerAuth": []
24927
25481
  }
24928
25482
  ],
24929
- "x-codeSamples": [
25483
+ "parameters": [
24930
25484
  {
24931
- "lang": "shell",
24932
- "label": "curl",
24933
- "source": "curl -G https://api.wspc.ai/todo/items \\\n -H \"Authorization: Bearer $WSPC_API_KEY\" \\\n --data-urlencode \"status=open\" \\\n --data-urlencode \"status=in_progress\""
25485
+ "name": "x-consistency-bookmark",
25486
+ "in": "header",
25487
+ "required": false,
25488
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
25489
+ "schema": {
25490
+ "type": "string"
25491
+ },
25492
+ "example": "opaque-consistency-bookmark"
24934
25493
  },
24935
- {
24936
- "lang": "bash",
24937
- "label": "wspc CLI",
24938
- "source": "wspc todo ls --status open in_progress"
24939
- }
24940
- ],
24941
- "parameters": [
24942
25494
  {
24943
25495
  "schema": {
24944
25496
  "type": "string",
@@ -25105,9 +25657,29 @@
25105
25657
  "in": "query"
25106
25658
  }
25107
25659
  ],
25660
+ "x-codeSamples": [
25661
+ {
25662
+ "lang": "shell",
25663
+ "label": "curl",
25664
+ "source": "curl -G https://api.wspc.ai/todo/items \\\n -H \"Authorization: Bearer $WSPC_API_KEY\" \\\n --data-urlencode \"status=open\" \\\n --data-urlencode \"status=in_progress\""
25665
+ },
25666
+ {
25667
+ "lang": "bash",
25668
+ "label": "wspc CLI",
25669
+ "source": "wspc todo ls --status open in_progress"
25670
+ }
25671
+ ],
25108
25672
  "responses": {
25109
25673
  "200": {
25110
25674
  "description": "List of todos matching the filters. Empty `todos` array when nothing matches.",
25675
+ "headers": {
25676
+ "x-consistency-bookmark": {
25677
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
25678
+ "schema": {
25679
+ "type": "string"
25680
+ }
25681
+ }
25682
+ },
25111
25683
  "content": {
25112
25684
  "application/json": {
25113
25685
  "schema": {
@@ -25500,6 +26072,18 @@
25500
26072
  "bearerAuth": []
25501
26073
  }
25502
26074
  ],
26075
+ "parameters": [
26076
+ {
26077
+ "name": "x-consistency-bookmark",
26078
+ "in": "header",
26079
+ "required": false,
26080
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
26081
+ "schema": {
26082
+ "type": "string"
26083
+ },
26084
+ "example": "opaque-consistency-bookmark"
26085
+ }
26086
+ ],
25503
26087
  "x-codeSamples": [
25504
26088
  {
25505
26089
  "lang": "shell",
@@ -25524,6 +26108,14 @@
25524
26108
  "responses": {
25525
26109
  "201": {
25526
26110
  "description": "Created",
26111
+ "headers": {
26112
+ "x-consistency-bookmark": {
26113
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
26114
+ "schema": {
26115
+ "type": "string"
26116
+ }
26117
+ }
26118
+ },
25527
26119
  "content": {
25528
26120
  "application/json": {
25529
26121
  "schema": {
@@ -25887,19 +26479,17 @@
25887
26479
  "bearerAuth": []
25888
26480
  }
25889
26481
  ],
25890
- "x-codeSamples": [
26482
+ "parameters": [
25891
26483
  {
25892
- "lang": "shell",
25893
- "label": "curl",
25894
- "source": "curl https://api.wspc.ai/todo/types -H \"Authorization: Bearer $WSPC_API_KEY\""
26484
+ "name": "x-consistency-bookmark",
26485
+ "in": "header",
26486
+ "required": false,
26487
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
26488
+ "schema": {
26489
+ "type": "string"
26490
+ },
26491
+ "example": "opaque-consistency-bookmark"
25895
26492
  },
25896
- {
25897
- "lang": "bash",
25898
- "label": "wspc CLI",
25899
- "source": "wspc todo types ls"
25900
- }
25901
- ],
25902
- "parameters": [
25903
26493
  {
25904
26494
  "schema": {
25905
26495
  "type": "string",
@@ -25929,9 +26519,29 @@
25929
26519
  "in": "query"
25930
26520
  }
25931
26521
  ],
26522
+ "x-codeSamples": [
26523
+ {
26524
+ "lang": "shell",
26525
+ "label": "curl",
26526
+ "source": "curl https://api.wspc.ai/todo/types -H \"Authorization: Bearer $WSPC_API_KEY\""
26527
+ },
26528
+ {
26529
+ "lang": "bash",
26530
+ "label": "wspc CLI",
26531
+ "source": "wspc todo types ls"
26532
+ }
26533
+ ],
25932
26534
  "responses": {
25933
26535
  "200": {
25934
26536
  "description": "List",
26537
+ "headers": {
26538
+ "x-consistency-bookmark": {
26539
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
26540
+ "schema": {
26541
+ "type": "string"
26542
+ }
26543
+ }
26544
+ },
25935
26545
  "content": {
25936
26546
  "application/json": {
25937
26547
  "schema": {
@@ -26310,19 +26920,17 @@
26310
26920
  "bearerAuth": []
26311
26921
  }
26312
26922
  ],
26313
- "x-codeSamples": [
26923
+ "parameters": [
26314
26924
  {
26315
- "lang": "shell",
26316
- "label": "curl",
26317
- "source": "curl -X DELETE https://api.wspc.ai/todo/comments/tdc_01HW3K -H \"Authorization: Bearer $WSPC_API_KEY\""
26925
+ "name": "x-consistency-bookmark",
26926
+ "in": "header",
26927
+ "required": false,
26928
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
26929
+ "schema": {
26930
+ "type": "string"
26931
+ },
26932
+ "example": "opaque-consistency-bookmark"
26318
26933
  },
26319
- {
26320
- "lang": "bash",
26321
- "label": "wspc CLI",
26322
- "source": "wspc todo comment rm tdc_01HW3K"
26323
- }
26324
- ],
26325
- "parameters": [
26326
26934
  {
26327
26935
  "schema": {
26328
26936
  "type": "string",
@@ -26335,9 +26943,29 @@
26335
26943
  "in": "path"
26336
26944
  }
26337
26945
  ],
26946
+ "x-codeSamples": [
26947
+ {
26948
+ "lang": "shell",
26949
+ "label": "curl",
26950
+ "source": "curl -X DELETE https://api.wspc.ai/todo/comments/tdc_01HW3K -H \"Authorization: Bearer $WSPC_API_KEY\""
26951
+ },
26952
+ {
26953
+ "lang": "bash",
26954
+ "label": "wspc CLI",
26955
+ "source": "wspc todo comment rm tdc_01HW3K"
26956
+ }
26957
+ ],
26338
26958
  "responses": {
26339
26959
  "200": {
26340
26960
  "description": "Soft-deleted",
26961
+ "headers": {
26962
+ "x-consistency-bookmark": {
26963
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
26964
+ "schema": {
26965
+ "type": "string"
26966
+ }
26967
+ }
26968
+ },
26341
26969
  "content": {
26342
26970
  "application/json": {
26343
26971
  "schema": {
@@ -26719,19 +27347,17 @@
26719
27347
  "bearerAuth": []
26720
27348
  }
26721
27349
  ],
26722
- "x-codeSamples": [
27350
+ "parameters": [
26723
27351
  {
26724
- "lang": "shell",
26725
- "label": "curl",
26726
- "source": "curl -X PATCH https://api.wspc.ai/todo/comments/tdc_01HW3K -H \"Authorization: Bearer $WSPC_API_KEY\" -H \"Content-Type: application/json\" -d '{\"content\":\"Edited\"}'"
27352
+ "name": "x-consistency-bookmark",
27353
+ "in": "header",
27354
+ "required": false,
27355
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
27356
+ "schema": {
27357
+ "type": "string"
27358
+ },
27359
+ "example": "opaque-consistency-bookmark"
26727
27360
  },
26728
- {
26729
- "lang": "bash",
26730
- "label": "wspc CLI",
26731
- "source": "wspc todo comment edit tdc_01HW3K \"Edited\""
26732
- }
26733
- ],
26734
- "parameters": [
26735
27361
  {
26736
27362
  "schema": {
26737
27363
  "type": "string",
@@ -26744,6 +27370,18 @@
26744
27370
  "in": "path"
26745
27371
  }
26746
27372
  ],
27373
+ "x-codeSamples": [
27374
+ {
27375
+ "lang": "shell",
27376
+ "label": "curl",
27377
+ "source": "curl -X PATCH https://api.wspc.ai/todo/comments/tdc_01HW3K -H \"Authorization: Bearer $WSPC_API_KEY\" -H \"Content-Type: application/json\" -d '{\"content\":\"Edited\"}'"
27378
+ },
27379
+ {
27380
+ "lang": "bash",
27381
+ "label": "wspc CLI",
27382
+ "source": "wspc todo comment edit tdc_01HW3K \"Edited\""
27383
+ }
27384
+ ],
26747
27385
  "requestBody": {
26748
27386
  "content": {
26749
27387
  "application/json": {
@@ -26764,6 +27402,14 @@
26764
27402
  "responses": {
26765
27403
  "200": {
26766
27404
  "description": "Updated",
27405
+ "headers": {
27406
+ "x-consistency-bookmark": {
27407
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
27408
+ "schema": {
27409
+ "type": "string"
27410
+ }
27411
+ }
27412
+ },
26767
27413
  "content": {
26768
27414
  "application/json": {
26769
27415
  "schema": {
@@ -27129,19 +27775,17 @@
27129
27775
  "bearerAuth": []
27130
27776
  }
27131
27777
  ],
27132
- "x-codeSamples": [
27778
+ "parameters": [
27133
27779
  {
27134
- "lang": "shell",
27135
- "label": "curl",
27136
- "source": "curl -X DELETE https://api.wspc.ai/todo/projects/prj_01HW3K -H \"Authorization: Bearer $WSPC_API_KEY\""
27780
+ "name": "x-consistency-bookmark",
27781
+ "in": "header",
27782
+ "required": false,
27783
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
27784
+ "schema": {
27785
+ "type": "string"
27786
+ },
27787
+ "example": "opaque-consistency-bookmark"
27137
27788
  },
27138
- {
27139
- "lang": "bash",
27140
- "label": "wspc CLI",
27141
- "source": "wspc project rm prj_01HW3K"
27142
- }
27143
- ],
27144
- "parameters": [
27145
27789
  {
27146
27790
  "schema": {
27147
27791
  "type": "string",
@@ -27154,10 +27798,30 @@
27154
27798
  "in": "path"
27155
27799
  }
27156
27800
  ],
27801
+ "x-codeSamples": [
27802
+ {
27803
+ "lang": "shell",
27804
+ "label": "curl",
27805
+ "source": "curl -X DELETE https://api.wspc.ai/todo/projects/prj_01HW3K -H \"Authorization: Bearer $WSPC_API_KEY\""
27806
+ },
27807
+ {
27808
+ "lang": "bash",
27809
+ "label": "wspc CLI",
27810
+ "source": "wspc project rm prj_01HW3K"
27811
+ }
27812
+ ],
27157
27813
  "responses": {
27158
27814
  "200": {
27159
27815
  "description": "Soft-deleted",
27160
- "content": {
27816
+ "headers": {
27817
+ "x-consistency-bookmark": {
27818
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
27819
+ "schema": {
27820
+ "type": "string"
27821
+ }
27822
+ }
27823
+ },
27824
+ "content": {
27161
27825
  "application/json": {
27162
27826
  "schema": {
27163
27827
  "$ref": "#/components/schemas/Project"
@@ -27522,19 +28186,17 @@
27522
28186
  "bearerAuth": []
27523
28187
  }
27524
28188
  ],
27525
- "x-codeSamples": [
28189
+ "parameters": [
27526
28190
  {
27527
- "lang": "shell",
27528
- "label": "curl",
27529
- "source": "curl https://api.wspc.ai/todo/projects/prj_01HW3K -H \"Authorization: Bearer $WSPC_API_KEY\""
28191
+ "name": "x-consistency-bookmark",
28192
+ "in": "header",
28193
+ "required": false,
28194
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
28195
+ "schema": {
28196
+ "type": "string"
28197
+ },
28198
+ "example": "opaque-consistency-bookmark"
27530
28199
  },
27531
- {
27532
- "lang": "bash",
27533
- "label": "wspc CLI",
27534
- "source": "wspc project show prj_01HW3K"
27535
- }
27536
- ],
27537
- "parameters": [
27538
28200
  {
27539
28201
  "schema": {
27540
28202
  "type": "string",
@@ -27547,9 +28209,29 @@
27547
28209
  "in": "path"
27548
28210
  }
27549
28211
  ],
28212
+ "x-codeSamples": [
28213
+ {
28214
+ "lang": "shell",
28215
+ "label": "curl",
28216
+ "source": "curl https://api.wspc.ai/todo/projects/prj_01HW3K -H \"Authorization: Bearer $WSPC_API_KEY\""
28217
+ },
28218
+ {
28219
+ "lang": "bash",
28220
+ "label": "wspc CLI",
28221
+ "source": "wspc project show prj_01HW3K"
28222
+ }
28223
+ ],
27550
28224
  "responses": {
27551
28225
  "200": {
27552
28226
  "description": "OK",
28227
+ "headers": {
28228
+ "x-consistency-bookmark": {
28229
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
28230
+ "schema": {
28231
+ "type": "string"
28232
+ }
28233
+ }
28234
+ },
27553
28235
  "content": {
27554
28236
  "application/json": {
27555
28237
  "schema": {
@@ -27914,19 +28596,17 @@
27914
28596
  "bearerAuth": []
27915
28597
  }
27916
28598
  ],
27917
- "x-codeSamples": [
28599
+ "parameters": [
27918
28600
  {
27919
- "lang": "shell",
27920
- "label": "curl",
27921
- "source": "curl -X PATCH https://api.wspc.ai/todo/projects/prj_01HW3K -H \"Authorization: Bearer $WSPC_API_KEY\" -H \"Content-Type: application/json\" -d '{\"name\":\"Renamed\"}'"
28601
+ "name": "x-consistency-bookmark",
28602
+ "in": "header",
28603
+ "required": false,
28604
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
28605
+ "schema": {
28606
+ "type": "string"
28607
+ },
28608
+ "example": "opaque-consistency-bookmark"
27922
28609
  },
27923
- {
27924
- "lang": "bash",
27925
- "label": "wspc CLI",
27926
- "source": "wspc project update prj_01HW3K --name \"Renamed\""
27927
- }
27928
- ],
27929
- "parameters": [
27930
28610
  {
27931
28611
  "schema": {
27932
28612
  "type": "string",
@@ -27939,6 +28619,18 @@
27939
28619
  "in": "path"
27940
28620
  }
27941
28621
  ],
28622
+ "x-codeSamples": [
28623
+ {
28624
+ "lang": "shell",
28625
+ "label": "curl",
28626
+ "source": "curl -X PATCH https://api.wspc.ai/todo/projects/prj_01HW3K -H \"Authorization: Bearer $WSPC_API_KEY\" -H \"Content-Type: application/json\" -d '{\"name\":\"Renamed\"}'"
28627
+ },
28628
+ {
28629
+ "lang": "bash",
28630
+ "label": "wspc CLI",
28631
+ "source": "wspc project update prj_01HW3K --name \"Renamed\""
28632
+ }
28633
+ ],
27942
28634
  "requestBody": {
27943
28635
  "content": {
27944
28636
  "application/json": {
@@ -27972,6 +28664,14 @@
27972
28664
  "responses": {
27973
28665
  "200": {
27974
28666
  "description": "Updated",
28667
+ "headers": {
28668
+ "x-consistency-bookmark": {
28669
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
28670
+ "schema": {
28671
+ "type": "string"
28672
+ }
28673
+ }
28674
+ },
27975
28675
  "content": {
27976
28676
  "application/json": {
27977
28677
  "schema": {
@@ -28344,6 +29044,26 @@
28344
29044
  "bearerAuth": []
28345
29045
  }
28346
29046
  ],
29047
+ "parameters": [
29048
+ {
29049
+ "name": "x-consistency-bookmark",
29050
+ "in": "header",
29051
+ "required": false,
29052
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
29053
+ "schema": {
29054
+ "type": "string"
29055
+ },
29056
+ "example": "opaque-consistency-bookmark"
29057
+ },
29058
+ {
29059
+ "schema": {
29060
+ "type": "string"
29061
+ },
29062
+ "required": true,
29063
+ "name": "id",
29064
+ "in": "path"
29065
+ }
29066
+ ],
28347
29067
  "x-codeSamples": [
28348
29068
  {
28349
29069
  "lang": "shell",
@@ -28356,16 +29076,6 @@
28356
29076
  "source": "wspc todo rule rm tdr_01HW3K4N9V5G6Z8C2Q7B1Y0M3F"
28357
29077
  }
28358
29078
  ],
28359
- "parameters": [
28360
- {
28361
- "schema": {
28362
- "type": "string"
28363
- },
28364
- "required": true,
28365
- "name": "id",
28366
- "in": "path"
28367
- }
28368
- ],
28369
29079
  "requestBody": {
28370
29080
  "content": {
28371
29081
  "application/json": {
@@ -28390,6 +29100,14 @@
28390
29100
  "responses": {
28391
29101
  "200": {
28392
29102
  "description": "The rule was soft-deleted; future materializations stop. Already-materialized todo instances remain on the user's list.",
29103
+ "headers": {
29104
+ "x-consistency-bookmark": {
29105
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
29106
+ "schema": {
29107
+ "type": "string"
29108
+ }
29109
+ }
29110
+ },
28393
29111
  "content": {
28394
29112
  "application/json": {
28395
29113
  "schema": {
@@ -28759,6 +29477,26 @@
28759
29477
  "bearerAuth": []
28760
29478
  }
28761
29479
  ],
29480
+ "parameters": [
29481
+ {
29482
+ "name": "x-consistency-bookmark",
29483
+ "in": "header",
29484
+ "required": false,
29485
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
29486
+ "schema": {
29487
+ "type": "string"
29488
+ },
29489
+ "example": "opaque-consistency-bookmark"
29490
+ },
29491
+ {
29492
+ "schema": {
29493
+ "type": "string"
29494
+ },
29495
+ "required": true,
29496
+ "name": "id",
29497
+ "in": "path"
29498
+ }
29499
+ ],
28762
29500
  "x-codeSamples": [
28763
29501
  {
28764
29502
  "lang": "shell",
@@ -28771,19 +29509,17 @@
28771
29509
  "source": "wspc todo rule show tdr_01HW3K4N9V5G6Z8C2Q7B1Y0M3F"
28772
29510
  }
28773
29511
  ],
28774
- "parameters": [
28775
- {
28776
- "schema": {
28777
- "type": "string"
28778
- },
28779
- "required": true,
28780
- "name": "id",
28781
- "in": "path"
28782
- }
28783
- ],
28784
29512
  "responses": {
28785
29513
  "200": {
28786
29514
  "description": "The requested rule along with its template todo snapshot and the count of todo instances currently materialized from it.",
29515
+ "headers": {
29516
+ "x-consistency-bookmark": {
29517
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
29518
+ "schema": {
29519
+ "type": "string"
29520
+ }
29521
+ }
29522
+ },
28787
29523
  "content": {
28788
29524
  "application/json": {
28789
29525
  "schema": {
@@ -29163,6 +29899,26 @@
29163
29899
  "bearerAuth": []
29164
29900
  }
29165
29901
  ],
29902
+ "parameters": [
29903
+ {
29904
+ "name": "x-consistency-bookmark",
29905
+ "in": "header",
29906
+ "required": false,
29907
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
29908
+ "schema": {
29909
+ "type": "string"
29910
+ },
29911
+ "example": "opaque-consistency-bookmark"
29912
+ },
29913
+ {
29914
+ "schema": {
29915
+ "type": "string"
29916
+ },
29917
+ "required": true,
29918
+ "name": "id",
29919
+ "in": "path"
29920
+ }
29921
+ ],
29166
29922
  "x-codeSamples": [
29167
29923
  {
29168
29924
  "lang": "shell",
@@ -29175,16 +29931,6 @@
29175
29931
  "source": "wspc todo rule set tdr_01HW3K4N9V5G6Z8C2Q7B1Y0M3F --rrule \"FREQ=WEEKLY;BYDAY=FR\""
29176
29932
  }
29177
29933
  ],
29178
- "parameters": [
29179
- {
29180
- "schema": {
29181
- "type": "string"
29182
- },
29183
- "required": true,
29184
- "name": "id",
29185
- "in": "path"
29186
- }
29187
- ],
29188
29934
  "requestBody": {
29189
29935
  "content": {
29190
29936
  "application/json": {
@@ -29216,6 +29962,14 @@
29216
29962
  "responses": {
29217
29963
  "200": {
29218
29964
  "description": "The rule was updated. Returns the post-update rule with a bumped `version` and refreshed `updated_at`. Future materializations follow the new schedule; existing instances are untouched.",
29965
+ "headers": {
29966
+ "x-consistency-bookmark": {
29967
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
29968
+ "schema": {
29969
+ "type": "string"
29970
+ }
29971
+ }
29972
+ },
29219
29973
  "content": {
29220
29974
  "application/json": {
29221
29975
  "schema": {
@@ -29602,6 +30356,26 @@
29602
30356
  "bearerAuth": []
29603
30357
  }
29604
30358
  ],
30359
+ "parameters": [
30360
+ {
30361
+ "name": "x-consistency-bookmark",
30362
+ "in": "header",
30363
+ "required": false,
30364
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
30365
+ "schema": {
30366
+ "type": "string"
30367
+ },
30368
+ "example": "opaque-consistency-bookmark"
30369
+ },
30370
+ {
30371
+ "schema": {
30372
+ "type": "string"
30373
+ },
30374
+ "required": true,
30375
+ "name": "id",
30376
+ "in": "path"
30377
+ }
30378
+ ],
29605
30379
  "x-codeSamples": [
29606
30380
  {
29607
30381
  "lang": "shell",
@@ -29614,16 +30388,6 @@
29614
30388
  "source": "wspc todo rm tod_01HW3K4N9V5G6Z8C2Q7B1Y0M3F --cascade"
29615
30389
  }
29616
30390
  ],
29617
- "parameters": [
29618
- {
29619
- "schema": {
29620
- "type": "string"
29621
- },
29622
- "required": true,
29623
- "name": "id",
29624
- "in": "path"
29625
- }
29626
- ],
29627
30391
  "requestBody": {
29628
30392
  "content": {
29629
30393
  "application/json": {
@@ -29649,6 +30413,14 @@
29649
30413
  "responses": {
29650
30414
  "200": {
29651
30415
  "description": "The todo was soft-deleted. `deleted_count` includes cascaded descendants when `cascade: true`.",
30416
+ "headers": {
30417
+ "x-consistency-bookmark": {
30418
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
30419
+ "schema": {
30420
+ "type": "string"
30421
+ }
30422
+ }
30423
+ },
29652
30424
  "content": {
29653
30425
  "application/json": {
29654
30426
  "schema": {
@@ -30037,19 +30809,17 @@
30037
30809
  "bearerAuth": []
30038
30810
  }
30039
30811
  ],
30040
- "x-codeSamples": [
30812
+ "parameters": [
30041
30813
  {
30042
- "lang": "shell",
30043
- "label": "curl",
30044
- "source": "curl https://api.wspc.ai/todo/items/tod_01HW3K4N9V5G6Z8C2Q7B1Y0M3F \\\n -H \"Authorization: Bearer $WSPC_API_KEY\""
30814
+ "name": "x-consistency-bookmark",
30815
+ "in": "header",
30816
+ "required": false,
30817
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
30818
+ "schema": {
30819
+ "type": "string"
30820
+ },
30821
+ "example": "opaque-consistency-bookmark"
30045
30822
  },
30046
- {
30047
- "lang": "bash",
30048
- "label": "wspc CLI",
30049
- "source": "wspc todo show tod_01HW3K4N9V5G6Z8C2Q7B1Y0M3F"
30050
- }
30051
- ],
30052
- "parameters": [
30053
30823
  {
30054
30824
  "schema": {
30055
30825
  "type": "string"
@@ -30103,9 +30873,29 @@
30103
30873
  "in": "query"
30104
30874
  }
30105
30875
  ],
30876
+ "x-codeSamples": [
30877
+ {
30878
+ "lang": "shell",
30879
+ "label": "curl",
30880
+ "source": "curl https://api.wspc.ai/todo/items/tod_01HW3K4N9V5G6Z8C2Q7B1Y0M3F \\\n -H \"Authorization: Bearer $WSPC_API_KEY\""
30881
+ },
30882
+ {
30883
+ "lang": "bash",
30884
+ "label": "wspc CLI",
30885
+ "source": "wspc todo show tod_01HW3K4N9V5G6Z8C2Q7B1Y0M3F"
30886
+ }
30887
+ ],
30106
30888
  "responses": {
30107
30889
  "200": {
30108
30890
  "description": "The requested todo. Includes `children` (first-level) when `include=children`, `comments` when `include=comments`, and `deleted_at` only when fetched with `include_deleted=true` on a soft-deleted row.",
30891
+ "headers": {
30892
+ "x-consistency-bookmark": {
30893
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
30894
+ "schema": {
30895
+ "type": "string"
30896
+ }
30897
+ }
30898
+ },
30109
30899
  "content": {
30110
30900
  "application/json": {
30111
30901
  "schema": {
@@ -30522,6 +31312,26 @@
30522
31312
  "bearerAuth": []
30523
31313
  }
30524
31314
  ],
31315
+ "parameters": [
31316
+ {
31317
+ "name": "x-consistency-bookmark",
31318
+ "in": "header",
31319
+ "required": false,
31320
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
31321
+ "schema": {
31322
+ "type": "string"
31323
+ },
31324
+ "example": "opaque-consistency-bookmark"
31325
+ },
31326
+ {
31327
+ "schema": {
31328
+ "type": "string"
31329
+ },
31330
+ "required": true,
31331
+ "name": "id",
31332
+ "in": "path"
31333
+ }
31334
+ ],
30525
31335
  "x-codeSamples": [
30526
31336
  {
30527
31337
  "lang": "shell",
@@ -30534,16 +31344,6 @@
30534
31344
  "source": "wspc todo done tod_01HW3K4N9V5G6Z8C2Q7B1Y0M3F"
30535
31345
  }
30536
31346
  ],
30537
- "parameters": [
30538
- {
30539
- "schema": {
30540
- "type": "string"
30541
- },
30542
- "required": true,
30543
- "name": "id",
30544
- "in": "path"
30545
- }
30546
- ],
30547
31347
  "requestBody": {
30548
31348
  "content": {
30549
31349
  "application/json": {
@@ -30581,6 +31381,14 @@
30581
31381
  "responses": {
30582
31382
  "200": {
30583
31383
  "description": "The todo was updated. The response carries the post-mutation row with the bumped `version` and refreshed `updated_at`.",
31384
+ "headers": {
31385
+ "x-consistency-bookmark": {
31386
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
31387
+ "schema": {
31388
+ "type": "string"
31389
+ }
31390
+ }
31391
+ },
30584
31392
  "content": {
30585
31393
  "application/json": {
30586
31394
  "schema": {
@@ -30951,6 +31759,26 @@
30951
31759
  "bearerAuth": []
30952
31760
  }
30953
31761
  ],
31762
+ "parameters": [
31763
+ {
31764
+ "name": "x-consistency-bookmark",
31765
+ "in": "header",
31766
+ "required": false,
31767
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
31768
+ "schema": {
31769
+ "type": "string"
31770
+ },
31771
+ "example": "opaque-consistency-bookmark"
31772
+ },
31773
+ {
31774
+ "schema": {
31775
+ "type": "string"
31776
+ },
31777
+ "required": true,
31778
+ "name": "id",
31779
+ "in": "path"
31780
+ }
31781
+ ],
30954
31782
  "x-codeSamples": [
30955
31783
  {
30956
31784
  "lang": "shell",
@@ -30963,19 +31791,17 @@
30963
31791
  "source": "wspc todo types rm typ_01HW3K"
30964
31792
  }
30965
31793
  ],
30966
- "parameters": [
30967
- {
30968
- "schema": {
30969
- "type": "string"
30970
- },
30971
- "required": true,
30972
- "name": "id",
30973
- "in": "path"
30974
- }
30975
- ],
30976
31794
  "responses": {
30977
31795
  "200": {
30978
31796
  "description": "Soft-deleted",
31797
+ "headers": {
31798
+ "x-consistency-bookmark": {
31799
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
31800
+ "schema": {
31801
+ "type": "string"
31802
+ }
31803
+ }
31804
+ },
30979
31805
  "content": {
30980
31806
  "application/json": {
30981
31807
  "schema": {
@@ -31325,6 +32151,26 @@
31325
32151
  "bearerAuth": []
31326
32152
  }
31327
32153
  ],
32154
+ "parameters": [
32155
+ {
32156
+ "name": "x-consistency-bookmark",
32157
+ "in": "header",
32158
+ "required": false,
32159
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
32160
+ "schema": {
32161
+ "type": "string"
32162
+ },
32163
+ "example": "opaque-consistency-bookmark"
32164
+ },
32165
+ {
32166
+ "schema": {
32167
+ "type": "string"
32168
+ },
32169
+ "required": true,
32170
+ "name": "id",
32171
+ "in": "path"
32172
+ }
32173
+ ],
31328
32174
  "x-codeSamples": [
31329
32175
  {
31330
32176
  "lang": "shell",
@@ -31337,19 +32183,17 @@
31337
32183
  "source": "wspc todo types show typ_01HW3K"
31338
32184
  }
31339
32185
  ],
31340
- "parameters": [
31341
- {
31342
- "schema": {
31343
- "type": "string"
31344
- },
31345
- "required": true,
31346
- "name": "id",
31347
- "in": "path"
31348
- }
31349
- ],
31350
32186
  "responses": {
31351
32187
  "200": {
31352
32188
  "description": "OK",
32189
+ "headers": {
32190
+ "x-consistency-bookmark": {
32191
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
32192
+ "schema": {
32193
+ "type": "string"
32194
+ }
32195
+ }
32196
+ },
31353
32197
  "content": {
31354
32198
  "application/json": {
31355
32199
  "schema": {
@@ -31699,6 +32543,26 @@
31699
32543
  "bearerAuth": []
31700
32544
  }
31701
32545
  ],
32546
+ "parameters": [
32547
+ {
32548
+ "name": "x-consistency-bookmark",
32549
+ "in": "header",
32550
+ "required": false,
32551
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
32552
+ "schema": {
32553
+ "type": "string"
32554
+ },
32555
+ "example": "opaque-consistency-bookmark"
32556
+ },
32557
+ {
32558
+ "schema": {
32559
+ "type": "string"
32560
+ },
32561
+ "required": true,
32562
+ "name": "id",
32563
+ "in": "path"
32564
+ }
32565
+ ],
31702
32566
  "x-codeSamples": [
31703
32567
  {
31704
32568
  "lang": "shell",
@@ -31711,16 +32575,6 @@
31711
32575
  "source": "wspc todo types update typ_01HW3K --label \"Renamed\""
31712
32576
  }
31713
32577
  ],
31714
- "parameters": [
31715
- {
31716
- "schema": {
31717
- "type": "string"
31718
- },
31719
- "required": true,
31720
- "name": "id",
31721
- "in": "path"
31722
- }
31723
- ],
31724
32578
  "requestBody": {
31725
32579
  "content": {
31726
32580
  "application/json": {
@@ -31733,6 +32587,14 @@
31733
32587
  "responses": {
31734
32588
  "200": {
31735
32589
  "description": "Updated",
32590
+ "headers": {
32591
+ "x-consistency-bookmark": {
32592
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
32593
+ "schema": {
32594
+ "type": "string"
32595
+ }
32596
+ }
32597
+ },
31736
32598
  "content": {
31737
32599
  "application/json": {
31738
32600
  "schema": {
@@ -32084,14 +32946,17 @@
32084
32946
  "bearerAuth": []
32085
32947
  }
32086
32948
  ],
32087
- "x-codeSamples": [
32088
- {
32089
- "lang": "shell",
32090
- "label": "curl",
32091
- "source": "curl -X POST https://api.wspc.ai/todo/projects/prj_01HW3K/restore -H \"Authorization: Bearer $WSPC_API_KEY\""
32092
- }
32093
- ],
32094
32949
  "parameters": [
32950
+ {
32951
+ "name": "x-consistency-bookmark",
32952
+ "in": "header",
32953
+ "required": false,
32954
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
32955
+ "schema": {
32956
+ "type": "string"
32957
+ },
32958
+ "example": "opaque-consistency-bookmark"
32959
+ },
32095
32960
  {
32096
32961
  "schema": {
32097
32962
  "type": "string",
@@ -32104,9 +32969,24 @@
32104
32969
  "in": "path"
32105
32970
  }
32106
32971
  ],
32972
+ "x-codeSamples": [
32973
+ {
32974
+ "lang": "shell",
32975
+ "label": "curl",
32976
+ "source": "curl -X POST https://api.wspc.ai/todo/projects/prj_01HW3K/restore -H \"Authorization: Bearer $WSPC_API_KEY\""
32977
+ }
32978
+ ],
32107
32979
  "responses": {
32108
32980
  "200": {
32109
32981
  "description": "Restored",
32982
+ "headers": {
32983
+ "x-consistency-bookmark": {
32984
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
32985
+ "schema": {
32986
+ "type": "string"
32987
+ }
32988
+ }
32989
+ },
32110
32990
  "content": {
32111
32991
  "application/json": {
32112
32992
  "schema": {
@@ -32473,14 +33353,17 @@
32473
33353
  "bearerAuth": []
32474
33354
  }
32475
33355
  ],
32476
- "x-codeSamples": [
32477
- {
32478
- "lang": "shell",
32479
- "label": "curl",
32480
- "source": "curl -X POST https://api.wspc.ai/todo/items/tod_01HW3K4N9V5G6Z8C2Q7B1Y0M3F/restore \\\n -H \"Authorization: Bearer $WSPC_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{}'"
32481
- }
32482
- ],
32483
33356
  "parameters": [
33357
+ {
33358
+ "name": "x-consistency-bookmark",
33359
+ "in": "header",
33360
+ "required": false,
33361
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
33362
+ "schema": {
33363
+ "type": "string"
33364
+ },
33365
+ "example": "opaque-consistency-bookmark"
33366
+ },
32484
33367
  {
32485
33368
  "schema": {
32486
33369
  "type": "string"
@@ -32490,6 +33373,13 @@
32490
33373
  "in": "path"
32491
33374
  }
32492
33375
  ],
33376
+ "x-codeSamples": [
33377
+ {
33378
+ "lang": "shell",
33379
+ "label": "curl",
33380
+ "source": "curl -X POST https://api.wspc.ai/todo/items/tod_01HW3K4N9V5G6Z8C2Q7B1Y0M3F/restore \\\n -H \"Authorization: Bearer $WSPC_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{}'"
33381
+ }
33382
+ ],
32493
33383
  "requestBody": {
32494
33384
  "content": {
32495
33385
  "application/json": {
@@ -32515,6 +33405,14 @@
32515
33405
  "responses": {
32516
33406
  "200": {
32517
33407
  "description": "The todo was restored. `restored_count` includes cascaded descendants when `cascade: true`; otherwise `descendants_in_trash_count` reports descendants left in trash.",
33408
+ "headers": {
33409
+ "x-consistency-bookmark": {
33410
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
33411
+ "schema": {
33412
+ "type": "string"
33413
+ }
33414
+ }
33415
+ },
32518
33416
  "content": {
32519
33417
  "application/json": {
32520
33418
  "schema": {
@@ -32884,14 +33782,17 @@
32884
33782
  "bearerAuth": []
32885
33783
  }
32886
33784
  ],
32887
- "x-codeSamples": [
32888
- {
32889
- "lang": "shell",
32890
- "label": "curl",
32891
- "source": "curl -X POST https://api.wspc.ai/todo/types/typ_01HW3K/restore -H \"Authorization: Bearer $WSPC_API_KEY\""
32892
- }
32893
- ],
32894
33785
  "parameters": [
33786
+ {
33787
+ "name": "x-consistency-bookmark",
33788
+ "in": "header",
33789
+ "required": false,
33790
+ "description": "Optional opaque consistency bookmark returned by a previous todo response. Send it back unchanged to continue read-after-write consistency.",
33791
+ "schema": {
33792
+ "type": "string"
33793
+ },
33794
+ "example": "opaque-consistency-bookmark"
33795
+ },
32895
33796
  {
32896
33797
  "schema": {
32897
33798
  "type": "string"
@@ -32901,9 +33802,24 @@
32901
33802
  "in": "path"
32902
33803
  }
32903
33804
  ],
33805
+ "x-codeSamples": [
33806
+ {
33807
+ "lang": "shell",
33808
+ "label": "curl",
33809
+ "source": "curl -X POST https://api.wspc.ai/todo/types/typ_01HW3K/restore -H \"Authorization: Bearer $WSPC_API_KEY\""
33810
+ }
33811
+ ],
32904
33812
  "responses": {
32905
33813
  "200": {
32906
33814
  "description": "Restored",
33815
+ "headers": {
33816
+ "x-consistency-bookmark": {
33817
+ "description": "Opaque consistency bookmark for the latest todo database position observed by this request. Store and send it on the next todo request to continue read-after-write consistency.",
33818
+ "schema": {
33819
+ "type": "string"
33820
+ }
33821
+ }
33822
+ },
32907
33823
  "content": {
32908
33824
  "application/json": {
32909
33825
  "schema": {