@vibexp/api-client 0.103.0 → 0.105.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -363,6 +363,10 @@ export type Prompt = {
363
363
  */
364
364
  project: ProjectSummary | null;
365
365
  freshness?: ResourceFreshnessState;
366
+ /**
367
+ * The lock held on this resource (epic #1285), or null when it is not locked. Present on every read, list and write response. Always null on a prompt read through a share link: lock state is internal to the team.
368
+ */
369
+ lock: ResourceLock | null;
366
370
  };
367
371
  export type CreatePromptRequest = {
368
372
  name: string;
@@ -1593,6 +1597,10 @@ export type Artifact = {
1593
1597
  */
1594
1598
  project: ProjectSummary | null;
1595
1599
  freshness?: ResourceFreshnessState;
1600
+ /**
1601
+ * The lock held on this resource (epic #1285), or null when it is not locked. Present on every read, list and write response.
1602
+ */
1603
+ lock: ResourceLock | null;
1596
1604
  };
1597
1605
  export type CreateArtifactRequest = {
1598
1606
  /**
@@ -2055,6 +2063,101 @@ export type ProjectSummary = {
2055
2063
  */
2056
2064
  slug: string;
2057
2065
  };
2066
+ /**
2067
+ * A user named on a resource lock or a lock history event.
2068
+ */
2069
+ export type ResourceLockActor = {
2070
+ /**
2071
+ * ID of the user.
2072
+ */
2073
+ user_id: string;
2074
+ /**
2075
+ * The user's display name.
2076
+ */
2077
+ display_name: string;
2078
+ };
2079
+ /**
2080
+ * The lock held on a prompt, blueprint or artifact. A resource carries one while it is locked and `null` when it is not.
2081
+ */
2082
+ export type ResourceLock = {
2083
+ /**
2084
+ * The team member holding the lock.
2085
+ */
2086
+ locked_by: ResourceLockActor;
2087
+ /**
2088
+ * Why the resource was locked, as given by the locker.
2089
+ */
2090
+ comment: string;
2091
+ /**
2092
+ * When the lock was taken.
2093
+ */
2094
+ locked_at: string;
2095
+ };
2096
+ /**
2097
+ * RFC 9457 problem returned with `423 Locked` and code `RESOURCE_WRITE_LOCKED` when a write is refused because the prompt, blueprint or artifact is locked. A locked resource cannot be deleted, and an update may not change one of its frozen fields; content, title/name and description stay editable. Unlock the resource to make the change.
2098
+ *
2099
+ * Frozen fields, as `metadata.field` names them: `slug`, `status`, `project_id`, `labels` and `mcp_expose` on a prompt; `slug`, `status`, `type`, `subtype`, `project_id`, `labels`, `metadata` and `path` on a blueprint; `slug`, `status`, `type`, `project_id`, `labels` and `metadata` on an artifact. A frozen field sent with its current value is not a change.
2100
+ */
2101
+ export type ResourceWriteLockedError = ErrorResponse & {
2102
+ /**
2103
+ * The lock that refused the write.
2104
+ */
2105
+ metadata: {
2106
+ /**
2107
+ * The kind of resource that is locked.
2108
+ */
2109
+ resource_type: 'prompt' | 'blueprint' | 'artifact';
2110
+ /**
2111
+ * The frozen field the update tried to change, by its request name. Absent when a delete was refused.
2112
+ */
2113
+ field?: string;
2114
+ /**
2115
+ * The team member holding the lock.
2116
+ */
2117
+ locked_by: ResourceLockActor;
2118
+ /**
2119
+ * Why the resource was locked, as given by the locker.
2120
+ */
2121
+ comment: string;
2122
+ };
2123
+ };
2124
+ export type LockResourceRequest = {
2125
+ /**
2126
+ * Why the resource is being locked. Required: surrounding whitespace is trimmed, and a comment that is then empty or longer than 500 characters is rejected with 400.
2127
+ */
2128
+ comment: string;
2129
+ };
2130
+ /**
2131
+ * One entry of a resource's append-only lock history.
2132
+ */
2133
+ export type ResourceLockEvent = {
2134
+ /**
2135
+ * ID of the history event.
2136
+ */
2137
+ id: string;
2138
+ /**
2139
+ * Whether the resource was locked or unlocked.
2140
+ */
2141
+ action: 'lock' | 'unlock';
2142
+ /**
2143
+ * Who locked or unlocked the resource. Null once that user's account has been deleted.
2144
+ */
2145
+ actor: ResourceLockActor | null;
2146
+ /**
2147
+ * The lock comment for a `lock` event; null for an `unlock`.
2148
+ */
2149
+ comment: string | null;
2150
+ /**
2151
+ * When the event happened.
2152
+ */
2153
+ created_at: string;
2154
+ };
2155
+ export type ResourceLockHistoryResponse = {
2156
+ /**
2157
+ * Lock and unlock events, newest first. Not paginated: at most the 100 most recent events are returned.
2158
+ */
2159
+ events: Array<ResourceLockEvent>;
2160
+ };
2058
2161
  export type CreateProjectRequest = {
2059
2162
  /**
2060
2163
  * Human-readable name of the project
@@ -2565,6 +2668,10 @@ export type Blueprint = {
2565
2668
  */
2566
2669
  project: ProjectSummary | null;
2567
2670
  freshness?: ResourceFreshnessState;
2671
+ /**
2672
+ * The lock held on this resource (epic #1285), or null when it is not locked. Present on every read, list and write response.
2673
+ */
2674
+ lock: ResourceLock | null;
2568
2675
  };
2569
2676
  /**
2570
2677
  * Read-only import provenance; present only for imported blueprints.
@@ -7902,6 +8009,10 @@ export type ListArtifactsData = {
7902
8009
  team_id: string;
7903
8010
  };
7904
8011
  query?: {
8012
+ /**
8013
+ * Filter by lock state (epic #1285): `true` returns only locked resources, `false` only unlocked ones. Omit for no lock filtering. Returns 400 for a value that is not a boolean.
8014
+ */
8015
+ locked?: boolean;
7905
8016
  /**
7906
8017
  * Filter to resources currently flagged stale by the team's freshness rules (epic #726). Omit for no freshness filtering. Returns 400 for any other value — a silently ignored filter would return the full list, which looks like a legitimate answer.
7907
8018
  */
@@ -8050,6 +8161,10 @@ export type ListArtifactsByProjectData = {
8050
8161
  project_id: string;
8051
8162
  };
8052
8163
  query?: {
8164
+ /**
8165
+ * Filter by lock state (epic #1285): `true` returns only locked resources, `false` only unlocked ones. Omit for no lock filtering. Returns 400 for a value that is not a boolean.
8166
+ */
8167
+ locked?: boolean;
8053
8168
  /**
8054
8169
  * Filter to resources currently flagged stale by the team's freshness rules (epic #726). Omit for no freshness filtering. Returns 400 for any other value — a silently ignored filter would return the full list, which looks like a legitimate answer.
8055
8170
  */
@@ -8147,6 +8262,10 @@ export type DeleteArtifactErrors = {
8147
8262
  * Artifact not found
8148
8263
  */
8149
8264
  404: ErrorResponse;
8265
+ /**
8266
+ * The artifact is locked, so it cannot be deleted (code `RESOURCE_WRITE_LOCKED`). The lock is in `metadata`.
8267
+ */
8268
+ 423: ResourceWriteLockedError;
8150
8269
  };
8151
8270
  export type DeleteArtifactError = DeleteArtifactErrors[keyof DeleteArtifactErrors];
8152
8271
  export type DeleteArtifactResponses = {
@@ -8237,6 +8356,10 @@ export type UpdateArtifactErrors = {
8237
8356
  * Artifact with same slug already exists in project
8238
8357
  */
8239
8358
  409: ErrorResponse;
8359
+ /**
8360
+ * The artifact is locked and the update changes a frozen field (code `RESOURCE_WRITE_LOCKED`). The lock is in `metadata`.
8361
+ */
8362
+ 423: ResourceWriteLockedError;
8240
8363
  };
8241
8364
  export type UpdateArtifactError = UpdateArtifactErrors[keyof UpdateArtifactErrors];
8242
8365
  export type UpdateArtifactResponses = {
@@ -8246,6 +8369,161 @@ export type UpdateArtifactResponses = {
8246
8369
  200: Artifact;
8247
8370
  };
8248
8371
  export type UpdateArtifactResponse = UpdateArtifactResponses[keyof UpdateArtifactResponses];
8372
+ export type UnlockArtifactData = {
8373
+ body?: never;
8374
+ path: {
8375
+ /**
8376
+ * Team identifier
8377
+ */
8378
+ team_id: string;
8379
+ /**
8380
+ * UUID of the project
8381
+ */
8382
+ project_id: string;
8383
+ /**
8384
+ * Artifact slug
8385
+ */
8386
+ slug: string;
8387
+ };
8388
+ query?: never;
8389
+ url: '/api/v1/{team_id}/artifacts/{project_id}/{slug}/lock';
8390
+ };
8391
+ export type UnlockArtifactErrors = {
8392
+ /**
8393
+ * Bad request: a malformed path parameter
8394
+ */
8395
+ 400: ErrorResponse;
8396
+ /**
8397
+ * Unauthorized
8398
+ */
8399
+ 401: ErrorResponse;
8400
+ /**
8401
+ * Forbidden: not a member of the team, or the lock was placed by someone else and the caller's role does not hold `resource.unlock.any`
8402
+ */
8403
+ 403: ErrorResponse;
8404
+ /**
8405
+ * Artifact not found
8406
+ */
8407
+ 404: ErrorResponse;
8408
+ /**
8409
+ * The artifact is not locked (code `RESOURCE_NOT_LOCKED`)
8410
+ */
8411
+ 409: ErrorResponse;
8412
+ /**
8413
+ * Internal server error
8414
+ */
8415
+ 500: ErrorResponse;
8416
+ };
8417
+ export type UnlockArtifactError = UnlockArtifactErrors[keyof UnlockArtifactErrors];
8418
+ export type UnlockArtifactResponses = {
8419
+ /**
8420
+ * Artifact unlocked; the updated artifact is returned
8421
+ */
8422
+ 200: Artifact;
8423
+ };
8424
+ export type UnlockArtifactResponse = UnlockArtifactResponses[keyof UnlockArtifactResponses];
8425
+ export type LockArtifactData = {
8426
+ body: LockResourceRequest;
8427
+ path: {
8428
+ /**
8429
+ * Team identifier
8430
+ */
8431
+ team_id: string;
8432
+ /**
8433
+ * UUID of the project
8434
+ */
8435
+ project_id: string;
8436
+ /**
8437
+ * Artifact slug
8438
+ */
8439
+ slug: string;
8440
+ };
8441
+ query?: never;
8442
+ url: '/api/v1/{team_id}/artifacts/{project_id}/{slug}/lock';
8443
+ };
8444
+ export type LockArtifactErrors = {
8445
+ /**
8446
+ * Bad request: a malformed path parameter or request body, or a missing, blank or too long comment
8447
+ */
8448
+ 400: ErrorResponse;
8449
+ /**
8450
+ * Unauthorized
8451
+ */
8452
+ 401: ErrorResponse;
8453
+ /**
8454
+ * Forbidden: not a member of the team
8455
+ */
8456
+ 403: ErrorResponse;
8457
+ /**
8458
+ * Artifact not found
8459
+ */
8460
+ 404: ErrorResponse;
8461
+ /**
8462
+ * The artifact is already locked (code `RESOURCE_LOCKED`)
8463
+ */
8464
+ 409: ErrorResponse;
8465
+ /**
8466
+ * Internal server error
8467
+ */
8468
+ 500: ErrorResponse;
8469
+ };
8470
+ export type LockArtifactError = LockArtifactErrors[keyof LockArtifactErrors];
8471
+ export type LockArtifactResponses = {
8472
+ /**
8473
+ * Artifact locked; the updated artifact is returned
8474
+ */
8475
+ 200: Artifact;
8476
+ };
8477
+ export type LockArtifactResponse = LockArtifactResponses[keyof LockArtifactResponses];
8478
+ export type GetArtifactLockHistoryData = {
8479
+ body?: never;
8480
+ path: {
8481
+ /**
8482
+ * Team identifier
8483
+ */
8484
+ team_id: string;
8485
+ /**
8486
+ * UUID of the project
8487
+ */
8488
+ project_id: string;
8489
+ /**
8490
+ * Artifact slug
8491
+ */
8492
+ slug: string;
8493
+ };
8494
+ query?: never;
8495
+ url: '/api/v1/{team_id}/artifacts/{project_id}/{slug}/lock/history';
8496
+ };
8497
+ export type GetArtifactLockHistoryErrors = {
8498
+ /**
8499
+ * Bad request: a malformed path parameter
8500
+ */
8501
+ 400: ErrorResponse;
8502
+ /**
8503
+ * Unauthorized
8504
+ */
8505
+ 401: ErrorResponse;
8506
+ /**
8507
+ * Forbidden: not a member of the team
8508
+ */
8509
+ 403: ErrorResponse;
8510
+ /**
8511
+ * Artifact not found
8512
+ */
8513
+ 404: ErrorResponse;
8514
+ /**
8515
+ * Internal server error
8516
+ */
8517
+ 500: ErrorResponse;
8518
+ };
8519
+ export type GetArtifactLockHistoryError = GetArtifactLockHistoryErrors[keyof GetArtifactLockHistoryErrors];
8520
+ export type GetArtifactLockHistoryResponses = {
8521
+ /**
8522
+ * Lock history retrieved successfully
8523
+ */
8524
+ 200: ResourceLockHistoryResponse;
8525
+ };
8526
+ export type GetArtifactLockHistoryResponse = GetArtifactLockHistoryResponses[keyof GetArtifactLockHistoryResponses];
8249
8527
  export type ListAttachmentsData = {
8250
8528
  body?: never;
8251
8529
  path: {
@@ -9305,6 +9583,10 @@ export type ListSpecLibrariesData = {
9305
9583
  team_id: string;
9306
9584
  };
9307
9585
  query?: {
9586
+ /**
9587
+ * Filter by lock state (epic #1285): `true` returns only locked resources, `false` only unlocked ones. Omit for no lock filtering. Returns 400 for a value that is not a boolean.
9588
+ */
9589
+ locked?: boolean;
9308
9590
  /**
9309
9591
  * Filter to resources currently flagged stale by the team's freshness rules (epic #726). Omit for no freshness filtering. Returns 400 for any other value — a silently ignored filter would return the full list, which looks like a legitimate answer.
9310
9592
  */
@@ -9461,6 +9743,10 @@ export type ListSpecLibrariesByProjectData = {
9461
9743
  project_id: string;
9462
9744
  };
9463
9745
  query?: {
9746
+ /**
9747
+ * Filter by lock state (epic #1285): `true` returns only locked resources, `false` only unlocked ones. Omit for no lock filtering. Returns 400 for a value that is not a boolean.
9748
+ */
9749
+ locked?: boolean;
9464
9750
  /**
9465
9751
  * Filter to resources currently flagged stale by the team's freshness rules (epic #726). Omit for no freshness filtering. Returns 400 for any other value — a silently ignored filter would return the full list, which looks like a legitimate answer.
9466
9752
  */
@@ -9562,6 +9848,10 @@ export type DeleteBlueprintErrors = {
9562
9848
  * Spec library not found
9563
9849
  */
9564
9850
  404: ErrorResponse;
9851
+ /**
9852
+ * The blueprint is locked, so it cannot be deleted (code `RESOURCE_WRITE_LOCKED`). The lock is in `metadata`.
9853
+ */
9854
+ 423: ResourceWriteLockedError;
9565
9855
  /**
9566
9856
  * Internal server error
9567
9857
  */
@@ -9660,6 +9950,10 @@ export type UpdateBlueprintErrors = {
9660
9950
  * Spec library with same slug already exists in project
9661
9951
  */
9662
9952
  409: ErrorResponse;
9953
+ /**
9954
+ * The blueprint is locked and the update changes a frozen field (code `RESOURCE_WRITE_LOCKED`). The lock is in `metadata`.
9955
+ */
9956
+ 423: ResourceWriteLockedError;
9663
9957
  /**
9664
9958
  * Internal server error
9665
9959
  */
@@ -9673,6 +9967,161 @@ export type UpdateBlueprintResponses = {
9673
9967
  200: Blueprint;
9674
9968
  };
9675
9969
  export type UpdateBlueprintResponse = UpdateBlueprintResponses[keyof UpdateBlueprintResponses];
9970
+ export type UnlockBlueprintData = {
9971
+ body?: never;
9972
+ path: {
9973
+ /**
9974
+ * Team identifier
9975
+ */
9976
+ team_id: string;
9977
+ /**
9978
+ * Project identifier (URL-encoded)
9979
+ */
9980
+ project_id: string;
9981
+ /**
9982
+ * Blueprint slug (URL-encoded)
9983
+ */
9984
+ slug: string;
9985
+ };
9986
+ query?: never;
9987
+ url: '/api/v1/{team_id}/blueprints/{project_id}/{slug}/lock';
9988
+ };
9989
+ export type UnlockBlueprintErrors = {
9990
+ /**
9991
+ * Bad request: a malformed path parameter
9992
+ */
9993
+ 400: ErrorResponse;
9994
+ /**
9995
+ * Unauthorized
9996
+ */
9997
+ 401: ErrorResponse;
9998
+ /**
9999
+ * Forbidden: not a member of the team, or the lock was placed by someone else and the caller's role does not hold `resource.unlock.any`
10000
+ */
10001
+ 403: ErrorResponse;
10002
+ /**
10003
+ * Blueprint not found
10004
+ */
10005
+ 404: ErrorResponse;
10006
+ /**
10007
+ * The blueprint is not locked (code `RESOURCE_NOT_LOCKED`)
10008
+ */
10009
+ 409: ErrorResponse;
10010
+ /**
10011
+ * Internal server error
10012
+ */
10013
+ 500: ErrorResponse;
10014
+ };
10015
+ export type UnlockBlueprintError = UnlockBlueprintErrors[keyof UnlockBlueprintErrors];
10016
+ export type UnlockBlueprintResponses = {
10017
+ /**
10018
+ * Blueprint unlocked; the updated blueprint is returned
10019
+ */
10020
+ 200: BlueprintDetail;
10021
+ };
10022
+ export type UnlockBlueprintResponse = UnlockBlueprintResponses[keyof UnlockBlueprintResponses];
10023
+ export type LockBlueprintData = {
10024
+ body: LockResourceRequest;
10025
+ path: {
10026
+ /**
10027
+ * Team identifier
10028
+ */
10029
+ team_id: string;
10030
+ /**
10031
+ * Project identifier (URL-encoded)
10032
+ */
10033
+ project_id: string;
10034
+ /**
10035
+ * Blueprint slug (URL-encoded)
10036
+ */
10037
+ slug: string;
10038
+ };
10039
+ query?: never;
10040
+ url: '/api/v1/{team_id}/blueprints/{project_id}/{slug}/lock';
10041
+ };
10042
+ export type LockBlueprintErrors = {
10043
+ /**
10044
+ * Bad request: a malformed path parameter or request body, or a missing, blank or too long comment
10045
+ */
10046
+ 400: ErrorResponse;
10047
+ /**
10048
+ * Unauthorized
10049
+ */
10050
+ 401: ErrorResponse;
10051
+ /**
10052
+ * Forbidden: not a member of the team
10053
+ */
10054
+ 403: ErrorResponse;
10055
+ /**
10056
+ * Blueprint not found
10057
+ */
10058
+ 404: ErrorResponse;
10059
+ /**
10060
+ * The blueprint is already locked (code `RESOURCE_LOCKED`)
10061
+ */
10062
+ 409: ErrorResponse;
10063
+ /**
10064
+ * Internal server error
10065
+ */
10066
+ 500: ErrorResponse;
10067
+ };
10068
+ export type LockBlueprintError = LockBlueprintErrors[keyof LockBlueprintErrors];
10069
+ export type LockBlueprintResponses = {
10070
+ /**
10071
+ * Blueprint locked; the updated blueprint is returned
10072
+ */
10073
+ 200: BlueprintDetail;
10074
+ };
10075
+ export type LockBlueprintResponse = LockBlueprintResponses[keyof LockBlueprintResponses];
10076
+ export type GetBlueprintLockHistoryData = {
10077
+ body?: never;
10078
+ path: {
10079
+ /**
10080
+ * Team identifier
10081
+ */
10082
+ team_id: string;
10083
+ /**
10084
+ * Project identifier (URL-encoded)
10085
+ */
10086
+ project_id: string;
10087
+ /**
10088
+ * Blueprint slug (URL-encoded)
10089
+ */
10090
+ slug: string;
10091
+ };
10092
+ query?: never;
10093
+ url: '/api/v1/{team_id}/blueprints/{project_id}/{slug}/lock/history';
10094
+ };
10095
+ export type GetBlueprintLockHistoryErrors = {
10096
+ /**
10097
+ * Bad request: a malformed path parameter
10098
+ */
10099
+ 400: ErrorResponse;
10100
+ /**
10101
+ * Unauthorized
10102
+ */
10103
+ 401: ErrorResponse;
10104
+ /**
10105
+ * Forbidden: not a member of the team
10106
+ */
10107
+ 403: ErrorResponse;
10108
+ /**
10109
+ * Blueprint not found
10110
+ */
10111
+ 404: ErrorResponse;
10112
+ /**
10113
+ * Internal server error
10114
+ */
10115
+ 500: ErrorResponse;
10116
+ };
10117
+ export type GetBlueprintLockHistoryError = GetBlueprintLockHistoryErrors[keyof GetBlueprintLockHistoryErrors];
10118
+ export type GetBlueprintLockHistoryResponses = {
10119
+ /**
10120
+ * Lock history retrieved successfully
10121
+ */
10122
+ 200: ResourceLockHistoryResponse;
10123
+ };
10124
+ export type GetBlueprintLockHistoryResponse = GetBlueprintLockHistoryResponses[keyof GetBlueprintLockHistoryResponses];
9676
10125
  export type ListBlueprintVersionsData = {
9677
10126
  body?: never;
9678
10127
  path: {
@@ -9821,6 +10270,10 @@ export type ListPromptsData = {
9821
10270
  team_id: string;
9822
10271
  };
9823
10272
  query?: {
10273
+ /**
10274
+ * Filter by lock state (epic #1285): `true` returns only locked resources, `false` only unlocked ones. Omit for no lock filtering. Returns 400 for a value that is not a boolean.
10275
+ */
10276
+ locked?: boolean;
9824
10277
  /**
9825
10278
  * Filter to resources currently flagged stale by the team's freshness rules (epic #726). Omit for no freshness filtering. Returns 400 for any other value — a silently ignored filter would return the full list, which looks like a legitimate answer.
9826
10279
  */
@@ -9984,6 +10437,10 @@ export type DeletePromptErrors = {
9984
10437
  * Prompt not found
9985
10438
  */
9986
10439
  404: ErrorResponse;
10440
+ /**
10441
+ * The prompt is locked, so it cannot be deleted (code `RESOURCE_WRITE_LOCKED`). The lock is in `metadata`.
10442
+ */
10443
+ 423: ResourceWriteLockedError;
9987
10444
  };
9988
10445
  export type DeletePromptError = DeletePromptErrors[keyof DeletePromptErrors];
9989
10446
  export type DeletePromptResponses = {
@@ -10066,6 +10523,10 @@ export type UpdatePromptErrors = {
10066
10523
  * Conflict (slug already exists)
10067
10524
  */
10068
10525
  409: ErrorResponse;
10526
+ /**
10527
+ * The prompt is locked and the update changes a frozen field (code `RESOURCE_WRITE_LOCKED`). The lock is in `metadata`.
10528
+ */
10529
+ 423: ResourceWriteLockedError;
10069
10530
  };
10070
10531
  export type UpdatePromptError = UpdatePromptErrors[keyof UpdatePromptErrors];
10071
10532
  export type UpdatePromptResponses = {
@@ -10075,6 +10536,149 @@ export type UpdatePromptResponses = {
10075
10536
  200: Prompt;
10076
10537
  };
10077
10538
  export type UpdatePromptResponse = UpdatePromptResponses[keyof UpdatePromptResponses];
10539
+ export type UnlockPromptData = {
10540
+ body?: never;
10541
+ path: {
10542
+ /**
10543
+ * Team identifier
10544
+ */
10545
+ team_id: string;
10546
+ /**
10547
+ * Prompt slug identifier
10548
+ */
10549
+ slug: string;
10550
+ };
10551
+ query?: never;
10552
+ url: '/api/v1/{team_id}/prompts/{slug}/lock';
10553
+ };
10554
+ export type UnlockPromptErrors = {
10555
+ /**
10556
+ * Bad request: a malformed path parameter
10557
+ */
10558
+ 400: ErrorResponse;
10559
+ /**
10560
+ * Unauthorized
10561
+ */
10562
+ 401: ErrorResponse;
10563
+ /**
10564
+ * Forbidden: not a member of the team, or the lock was placed by someone else and the caller's role does not hold `resource.unlock.any`
10565
+ */
10566
+ 403: ErrorResponse;
10567
+ /**
10568
+ * Prompt not found
10569
+ */
10570
+ 404: ErrorResponse;
10571
+ /**
10572
+ * The prompt is not locked (code `RESOURCE_NOT_LOCKED`)
10573
+ */
10574
+ 409: ErrorResponse;
10575
+ /**
10576
+ * Internal server error
10577
+ */
10578
+ 500: ErrorResponse;
10579
+ };
10580
+ export type UnlockPromptError = UnlockPromptErrors[keyof UnlockPromptErrors];
10581
+ export type UnlockPromptResponses = {
10582
+ /**
10583
+ * Prompt unlocked; the updated prompt is returned
10584
+ */
10585
+ 200: Prompt;
10586
+ };
10587
+ export type UnlockPromptResponse = UnlockPromptResponses[keyof UnlockPromptResponses];
10588
+ export type LockPromptData = {
10589
+ body: LockResourceRequest;
10590
+ path: {
10591
+ /**
10592
+ * Team identifier
10593
+ */
10594
+ team_id: string;
10595
+ /**
10596
+ * Prompt slug identifier
10597
+ */
10598
+ slug: string;
10599
+ };
10600
+ query?: never;
10601
+ url: '/api/v1/{team_id}/prompts/{slug}/lock';
10602
+ };
10603
+ export type LockPromptErrors = {
10604
+ /**
10605
+ * Bad request: a malformed path parameter or request body, or a missing, blank or too long comment
10606
+ */
10607
+ 400: ErrorResponse;
10608
+ /**
10609
+ * Unauthorized
10610
+ */
10611
+ 401: ErrorResponse;
10612
+ /**
10613
+ * Forbidden: not a member of the team
10614
+ */
10615
+ 403: ErrorResponse;
10616
+ /**
10617
+ * Prompt not found
10618
+ */
10619
+ 404: ErrorResponse;
10620
+ /**
10621
+ * The prompt is already locked (code `RESOURCE_LOCKED`)
10622
+ */
10623
+ 409: ErrorResponse;
10624
+ /**
10625
+ * Internal server error
10626
+ */
10627
+ 500: ErrorResponse;
10628
+ };
10629
+ export type LockPromptError = LockPromptErrors[keyof LockPromptErrors];
10630
+ export type LockPromptResponses = {
10631
+ /**
10632
+ * Prompt locked; the updated prompt is returned
10633
+ */
10634
+ 200: Prompt;
10635
+ };
10636
+ export type LockPromptResponse = LockPromptResponses[keyof LockPromptResponses];
10637
+ export type GetPromptLockHistoryData = {
10638
+ body?: never;
10639
+ path: {
10640
+ /**
10641
+ * Team identifier
10642
+ */
10643
+ team_id: string;
10644
+ /**
10645
+ * Prompt slug identifier
10646
+ */
10647
+ slug: string;
10648
+ };
10649
+ query?: never;
10650
+ url: '/api/v1/{team_id}/prompts/{slug}/lock/history';
10651
+ };
10652
+ export type GetPromptLockHistoryErrors = {
10653
+ /**
10654
+ * Bad request: a malformed path parameter
10655
+ */
10656
+ 400: ErrorResponse;
10657
+ /**
10658
+ * Unauthorized
10659
+ */
10660
+ 401: ErrorResponse;
10661
+ /**
10662
+ * Forbidden: not a member of the team
10663
+ */
10664
+ 403: ErrorResponse;
10665
+ /**
10666
+ * Prompt not found
10667
+ */
10668
+ 404: ErrorResponse;
10669
+ /**
10670
+ * Internal server error
10671
+ */
10672
+ 500: ErrorResponse;
10673
+ };
10674
+ export type GetPromptLockHistoryError = GetPromptLockHistoryErrors[keyof GetPromptLockHistoryErrors];
10675
+ export type GetPromptLockHistoryResponses = {
10676
+ /**
10677
+ * Lock history retrieved successfully
10678
+ */
10679
+ 200: ResourceLockHistoryResponse;
10680
+ };
10681
+ export type GetPromptLockHistoryResponse = GetPromptLockHistoryResponses[keyof GetPromptLockHistoryResponses];
10078
10682
  export type GetPromptPlaceholdersData = {
10079
10683
  body?: never;
10080
10684
  path: {