windmill-client 1.811.0 → 1.812.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.
@@ -937,6 +937,18 @@ export type AiAgent = {
937
937
  *
938
938
  */
939
939
  user_attachments?: InputTransform;
940
+ /**
941
+ * Array of strings naming which of the tools configured in `tools` the agent may call
942
+ * this run. Leaving it unset carries every one of them; an empty array carries none.
943
+ * A tool is named as the model is shown it. An entry the model is shown nothing of is
944
+ * named by what identifies it instead: an MCP server by its resource path, carrying
945
+ * every tool it exposes (which of them stays that entry's include_tools/exclude_tools),
946
+ * and a websearch entry by the reserved name '__wm_web_search', whatever summary it carries
947
+ * (no tool may take that name).
948
+ * Example: ['get_user', 'u/admin/github_mcp', '__wm_web_search']
949
+ *
950
+ */
951
+ enabled_tools?: InputTransform;
940
952
  /**
941
953
  * Integer. Maximum number of tokens the AI will generate in its response.
942
954
  * Range: 1 to 4,294,967,295. Typical values: 256-4096 for most use cases.
@@ -1011,7 +1023,7 @@ export type AiAgent = {
1011
1023
  * Path of a reusable `ai_agent` resource (hybrid linking). When set, the agent brain
1012
1024
  * config (provider/model/system prompt/etc.) and tool set are resolved at runtime from
1013
1025
  * that resource; the module's input_transforms then only carry the flow-local inputs
1014
- * (user_message/user_attachments).
1026
+ * (user_message/user_attachments/enabled_tools).
1015
1027
  *
1016
1028
  */
1017
1029
  agent?: string;
@@ -1946,6 +1958,15 @@ export type AITokenUsageBucket = {
1946
1958
  reported_cost_nano_usd?: number;
1947
1959
  requests: number;
1948
1960
  };
1961
+ export type SharedAiArtifactInfo = {
1962
+ id: string;
1963
+ name: string;
1964
+ kind: 'md' | 'html';
1965
+ version: number;
1966
+ created_by: string;
1967
+ shared_at: string;
1968
+ expires_at: string;
1969
+ };
1949
1970
  export type InstanceAIProviderSummary = {
1950
1971
  provider: AIProvider;
1951
1972
  models: Array<(string)>;
@@ -2792,6 +2813,30 @@ export type AuditLog = {
2792
2813
  };
2793
2814
  span?: string;
2794
2815
  };
2816
+ export type TrashItem = {
2817
+ id: number;
2818
+ workspace_id: string;
2819
+ /**
2820
+ * script, flow, app, schedule, variable, resource, or a trigger kind such as http_trigger
2821
+ */
2822
+ item_kind: string;
2823
+ item_path: string;
2824
+ deleted_by: string;
2825
+ deleted_at: string;
2826
+ /**
2827
+ * when the item is permanently deleted unless restored first
2828
+ */
2829
+ expires_at: string;
2830
+ };
2831
+ export type TrashItemWithData = TrashItem & {
2832
+ /**
2833
+ * the deleted rows as they were stored; the shape depends on the kind, and a secret variable's value stays encrypted
2834
+ *
2835
+ */
2836
+ item_data: {
2837
+ [key: string]: unknown;
2838
+ };
2839
+ };
2795
2840
  export type MainArgSignature = {
2796
2841
  type: 'Valid' | 'Invalid';
2797
2842
  error: string;
@@ -3008,6 +3053,10 @@ export type ResourceType = {
3008
3053
  edited_at?: string;
3009
3054
  format_extension?: string;
3010
3055
  is_fileset?: boolean;
3056
+ /**
3057
+ * The name the product goes by, e.g. "Google Sheets" for gsheets. Absent where nobody named the type.
3058
+ */
3059
+ display_name?: string;
3011
3060
  };
3012
3061
  export type EditResourceType = {
3013
3062
  schema?: unknown;
@@ -3017,6 +3066,10 @@ export type EditResourceType = {
3017
3066
  * File extension for a type whose value is one file rather than a set of fields. Omit to leave it unchanged; send null to clear it.
3018
3067
  */
3019
3068
  format_extension?: string | null;
3069
+ /**
3070
+ * The name the product goes by. Omit to leave it unchanged; send null to clear it.
3071
+ */
3072
+ display_name?: string | null;
3020
3073
  };
3021
3074
  export type TriggerHistoryEntry = {
3022
3075
  id: number;
@@ -3523,6 +3576,10 @@ export type HttpTrigger = TriggerExtraProperty & {
3523
3576
  * If true, passes the request body as a raw string instead of parsing as JSON
3524
3577
  */
3525
3578
  raw_string: boolean;
3579
+ /**
3580
+ * Origins allowed to call this route cross-origin, matched against the request's Origin header (ignoring case) and echoed back on a match. When set, the list governs both the preflight and the response, overriding any Access-Control-Allow-Origin the runnable returns via wm_headers. Use ['*'] to opt out of any restriction, including the http_route_default_allowed_origins instance setting. An empty list is not a configuration and resolves exactly as null does. When null, the instance setting applies, or Access-Control-Allow-Origin: * if it is unset. Ignored on a static website, which has no authentication of its own and so hands out public files: restricting which browsers may read them protects nothing while breaking cross-origin webfonts and fetches. A single-file static asset is not exempt, since it can carry an authentication_method.
3581
+ */
3582
+ allowed_origins?: Array<(string)> | null;
3526
3583
  /**
3527
3584
  * Path to a script to run when the triggered job fails. A bare path, without the script/ or flow/ prefix a schedule error handler takes; it cannot be a flow.
3528
3585
  */
@@ -3615,6 +3672,10 @@ export type NewHttpTrigger = {
3615
3672
  * If true, passes the request body as a raw string instead of parsing as JSON
3616
3673
  */
3617
3674
  raw_string?: boolean;
3675
+ /**
3676
+ * Origins allowed to call this route cross-origin, matched against the request's Origin header (ignoring case) and echoed back on a match. When set, the list governs both the preflight and the response, overriding any Access-Control-Allow-Origin the runnable returns via wm_headers. Use ['*'] to opt out of any restriction, including the http_route_default_allowed_origins instance setting. An empty list is not a configuration and resolves exactly as null does. When null, the instance setting applies, or Access-Control-Allow-Origin: * if it is unset. Ignored on a static website, which has no authentication of its own and so hands out public files: restricting which browsers may read them protects nothing while breaking cross-origin webfonts and fetches. A single-file static asset is not exempt, since it can carry an authentication_method.
3677
+ */
3678
+ allowed_origins?: Array<(string)> | null;
3618
3679
  /**
3619
3680
  * Path to a script to run when the triggered job fails. A bare path, without the script/ or flow/ prefix a schedule error handler takes; it cannot be a flow.
3620
3681
  */
@@ -3715,6 +3776,10 @@ export type EditHttpTrigger = {
3715
3776
  * If true, passes the request body as a raw string instead of parsing as JSON
3716
3777
  */
3717
3778
  raw_string?: boolean;
3779
+ /**
3780
+ * Origins allowed to call this route cross-origin, matched against the request's Origin header (ignoring case) and echoed back on a match. When set, the list governs both the preflight and the response, overriding any Access-Control-Allow-Origin the runnable returns via wm_headers. Use ['*'] to opt out of any restriction, including the http_route_default_allowed_origins instance setting. An empty list is not a configuration and resolves exactly as null does. When null, the instance setting applies, or Access-Control-Allow-Origin: * if it is unset. Ignored on a static website, which has no authentication of its own and so hands out public files: restricting which browsers may read them protects nothing while breaking cross-origin webfonts and fetches. A single-file static asset is not exempt, since it can carry an authentication_method.
3781
+ */
3782
+ allowed_origins?: Array<(string)> | null;
3718
3783
  /**
3719
3784
  * Path to a script to run when the triggered job fails. A bare path, without the script/ or flow/ prefix a schedule error handler takes; it cannot be a flow.
3720
3785
  */
@@ -5489,7 +5554,7 @@ export type WorkspaceInvite = {
5489
5554
  };
5490
5555
  export type GlobalUserInfo = {
5491
5556
  email: string;
5492
- login_type: 'password' | 'github' | 'service_account';
5557
+ login_type: 'password' | 'github' | 'service_account' | 'pending_oauth';
5493
5558
  super_admin: boolean;
5494
5559
  devops?: boolean;
5495
5560
  verified: boolean;
@@ -5647,7 +5712,7 @@ export type Policy = {
5647
5712
  */
5648
5713
  sandbox?: boolean;
5649
5714
  /**
5650
- * Raw apps: author-declared scopes for the frontend SDK token. Takes effect only when `sandbox` is also true — an unsandboxed bundle runs with the viewer's own session, so no token is advertised or minted for it and this list stays inert. On a sandboxed app a non-empty list lets viewers mint (after consenting) a short-lived token carrying their own identity restricted to these scopes, handed to the app bundle so `windmill-client` calls run as the viewer. Must be a subset of the server's curated allowlist (jobs:run, jobs:read, users:read, resources:read, variables:read).
5715
+ * Raw apps: author-declared scopes for the frontend SDK token. Takes effect only when `sandbox` is also true — an unsandboxed bundle runs with the viewer's own session, so no token is advertised or minted for it and this list stays inert. On a sandboxed app a non-empty list lets viewers mint (after consenting) a short-lived token carrying their own identity restricted to these scopes, handed to the app bundle so `windmill-client` calls run as the viewer. Must be a subset of the server's curated allowlist (jobs:run, jobs:read, users:read, resources:read, variables:read, flow_conversations:read, flow_conversations:write).
5651
5716
  *
5652
5717
  */
5653
5718
  frontend_sdk_scopes?: Array<(string)>;
@@ -6118,6 +6183,10 @@ export type AutoPullSettings = {
6118
6183
  [key: string]: (string);
6119
6184
  };
6120
6185
  last_pull_status?: AutoPullStatus;
6186
+ /**
6187
+ * Email of the admin automatic pulls apply changes as. Set by the server when the settings are saved.
6188
+ */
6189
+ enabled_by?: string;
6121
6190
  };
6122
6191
  export type MetricMetadata = {
6123
6192
  id: string;
@@ -7416,6 +7485,42 @@ export type ListAuditLogsData = {
7416
7485
  workspace: string;
7417
7486
  };
7418
7487
  export type ListAuditLogsResponse = Array<AuditLog>;
7488
+ export type ListTrashData = {
7489
+ /**
7490
+ * only return items of this kind: script, flow, app, schedule, variable, resource, or a trigger kind such as http_trigger
7491
+ *
7492
+ */
7493
+ itemKind?: string;
7494
+ /**
7495
+ * which page to return (starts at 0, default 0)
7496
+ */
7497
+ page?: number;
7498
+ /**
7499
+ * number of items to return for a given page (default 100, max 1000)
7500
+ */
7501
+ perPage?: number;
7502
+ workspace: string;
7503
+ };
7504
+ export type ListTrashResponse = Array<TrashItem>;
7505
+ export type GetTrashItemData = {
7506
+ id: number;
7507
+ workspace: string;
7508
+ };
7509
+ export type GetTrashItemResponse = TrashItemWithData;
7510
+ export type RestoreTrashItemData = {
7511
+ id: number;
7512
+ workspace: string;
7513
+ };
7514
+ export type RestoreTrashItemResponse = string;
7515
+ export type PermanentlyDeleteTrashItemData = {
7516
+ id: number;
7517
+ workspace: string;
7518
+ };
7519
+ export type PermanentlyDeleteTrashItemResponse = string;
7520
+ export type EmptyTrashData = {
7521
+ workspace: string;
7522
+ };
7523
+ export type EmptyTrashResponse = string;
7419
7524
  export type LoginData = {
7420
7525
  /**
7421
7526
  * credentials
@@ -7435,6 +7540,10 @@ export type RequestPasswordResetData = {
7435
7540
  };
7436
7541
  };
7437
7542
  export type RequestPasswordResetResponse = PasswordResetResponse;
7543
+ export type ConsumeLoginLinkData = {
7544
+ rd?: string;
7545
+ token: string;
7546
+ };
7438
7547
  export type ResetPasswordData = {
7439
7548
  /**
7440
7549
  * token and new password
@@ -7499,7 +7608,7 @@ export type CreateUserGloballyData = {
7499
7608
  */
7500
7609
  requestBody: {
7501
7610
  email: string;
7502
- password: string;
7611
+ password?: string;
7503
7612
  super_admin: boolean;
7504
7613
  name?: string;
7505
7614
  company?: string;
@@ -7507,6 +7616,10 @@ export type CreateUserGloballyData = {
7507
7616
  * Skip sending email notifications to the user
7508
7617
  */
7509
7618
  skip_email?: boolean;
7619
+ /**
7620
+ * password (default, requires `password`), pending_oauth (no credential until the first OAuth login proving the address adopts the account), or a configured OAuth login client key
7621
+ */
7622
+ login_type?: string;
7510
7623
  };
7511
7624
  };
7512
7625
  export type CreateUserGloballyResponse = string;
@@ -7754,6 +7867,67 @@ export type CreateTokenImpersonateData = {
7754
7867
  requestBody: NewTokenImpersonate;
7755
7868
  };
7756
7869
  export type CreateTokenImpersonateResponse = string;
7870
+ export type CreateLoginLinkData = {
7871
+ /**
7872
+ * target account and link options
7873
+ */
7874
+ requestBody: {
7875
+ email: string;
7876
+ /**
7877
+ * link lifetime in seconds, at most 900 (default 600)
7878
+ */
7879
+ expires_in_s?: number;
7880
+ /**
7881
+ * same-origin path the browser lands on after login (default /user/workspaces)
7882
+ */
7883
+ rd?: string;
7884
+ /**
7885
+ * mint only while the account still has this login type (for example pending_oauth), so a link stops working once the owner has set a password or signed in with a provider
7886
+ */
7887
+ require_login_type?: string;
7888
+ };
7889
+ };
7890
+ export type CreateLoginLinkResponse = {
7891
+ url: string;
7892
+ expires_at: string;
7893
+ };
7894
+ export type SetCloudTrialOfferData = {
7895
+ requestBody: {
7896
+ email: string;
7897
+ /**
7898
+ * mark the offer used (a trial or subscription now exists) instead of recording it
7899
+ */
7900
+ consumed?: boolean;
7901
+ };
7902
+ };
7903
+ export type SetCloudTrialOfferResponse = string;
7904
+ export type GetCloudTrialOfferResponse = {
7905
+ offered: boolean;
7906
+ };
7907
+ export type GoCloudTrialOfferResponse = {
7908
+ location: string;
7909
+ /**
7910
+ * present when the portal refused (e.g. the account already has a subscription); the offer is then spent
7911
+ */
7912
+ reason?: string;
7913
+ };
7914
+ export type SetOnboardingProfileData = {
7915
+ requestBody: {
7916
+ email: string;
7917
+ /**
7918
+ * free-form context from the invite, every key optional. The frontend reads `touch_point` (answers onboarding's source question), `company` and `workspace_name` (prefill the first workspace's name), `hub_projects` (slugs surfaced first on an empty workspace), `tools` (integrations, used to pick hub projects when none are named) and `starter_prompts` (`[{label, prompt}]`, replacing the home page's example prompts); unknown keys are kept and ignored
7919
+ */
7920
+ profile: {
7921
+ [key: string]: unknown;
7922
+ };
7923
+ };
7924
+ };
7925
+ export type SetOnboardingProfileResponse = string;
7926
+ export type GetOnboardingProfileResponse = {
7927
+ profile?: {
7928
+ [key: string]: unknown;
7929
+ } | null;
7930
+ };
7757
7931
  export type DeleteTokenData = {
7758
7932
  tokenPrefix: string;
7759
7933
  };
@@ -10381,6 +10555,10 @@ export type ListHubIntegrationsResponse = Array<{
10381
10555
  * how often the integration has been picked, absent on a hub that does not count picks
10382
10556
  */
10383
10557
  picks?: number;
10558
+ /**
10559
+ * the label the hub curates for the integration, null or absent where it names none
10560
+ */
10561
+ display_name?: string | null;
10384
10562
  }>;
10385
10563
  export type ListHubFlowsResponse = {
10386
10564
  flows?: Array<{
@@ -14796,6 +14974,44 @@ export type ListAiUsageResponse = {
14796
14974
  */
14797
14975
  truncated: boolean;
14798
14976
  };
14977
+ export type ShareAiArtifactData = {
14978
+ requestBody: {
14979
+ /**
14980
+ * the artifact's id in the author's session
14981
+ */
14982
+ artifact_id: string;
14983
+ name: string;
14984
+ kind: 'md' | 'html';
14985
+ version: number;
14986
+ content: string;
14987
+ };
14988
+ workspace: string;
14989
+ };
14990
+ export type ShareAiArtifactResponse = SharedAiArtifactInfo;
14991
+ export type GetAiArtifactShareStatusData = {
14992
+ artifactId: string;
14993
+ workspace: string;
14994
+ };
14995
+ export type GetAiArtifactShareStatusResponse = {
14996
+ retention_secs: number;
14997
+ share?: SharedAiArtifactInfo;
14998
+ };
14999
+ export type GetSharedAiArtifactData = {
15000
+ id: string;
15001
+ workspace: string;
15002
+ };
15003
+ export type GetSharedAiArtifactResponse = SharedAiArtifactInfo & {
15004
+ content: string;
15005
+ /**
15006
+ * whether the caller authored the share or is a workspace admin
15007
+ */
15008
+ can_unshare: boolean;
15009
+ };
15010
+ export type UnshareAiArtifactData = {
15011
+ id: string;
15012
+ workspace: string;
15013
+ };
15014
+ export type UnshareAiArtifactResponse = string;
14799
15015
  export type ResumeSuspendedTriggerJobsData = {
14800
15016
  /**
14801
15017
  * Optional list of job IDs to reassign
@@ -18281,6 +18497,87 @@ export type $OpenApiTs = {
18281
18497
  };
18282
18498
  };
18283
18499
  };
18500
+ '/w/{workspace}/trash/list': {
18501
+ get: {
18502
+ req: {
18503
+ /**
18504
+ * only return items of this kind: script, flow, app, schedule, variable, resource, or a trigger kind such as http_trigger
18505
+ *
18506
+ */
18507
+ itemKind?: string;
18508
+ /**
18509
+ * which page to return (starts at 0, default 0)
18510
+ */
18511
+ page?: number;
18512
+ /**
18513
+ * number of items to return for a given page (default 100, max 1000)
18514
+ */
18515
+ perPage?: number;
18516
+ workspace: string;
18517
+ };
18518
+ res: {
18519
+ /**
18520
+ * the trashed items, most recently deleted first
18521
+ */
18522
+ 200: Array<TrashItem>;
18523
+ };
18524
+ };
18525
+ };
18526
+ '/w/{workspace}/trash/get/{id}': {
18527
+ get: {
18528
+ req: {
18529
+ id: number;
18530
+ workspace: string;
18531
+ };
18532
+ res: {
18533
+ /**
18534
+ * the trashed item
18535
+ */
18536
+ 200: TrashItemWithData;
18537
+ };
18538
+ };
18539
+ };
18540
+ '/w/{workspace}/trash/restore/{id}': {
18541
+ post: {
18542
+ req: {
18543
+ id: number;
18544
+ workspace: string;
18545
+ };
18546
+ res: {
18547
+ /**
18548
+ * item restored
18549
+ */
18550
+ 200: string;
18551
+ };
18552
+ };
18553
+ };
18554
+ '/w/{workspace}/trash/delete/{id}': {
18555
+ delete: {
18556
+ req: {
18557
+ id: number;
18558
+ workspace: string;
18559
+ };
18560
+ res: {
18561
+ /**
18562
+ * item permanently deleted
18563
+ */
18564
+ 200: string;
18565
+ };
18566
+ };
18567
+ };
18568
+ '/w/{workspace}/trash/empty': {
18569
+ post: {
18570
+ req: {
18571
+ workspace: string;
18572
+ };
18573
+ res: {
18574
+ /**
18575
+ * trashbin emptied
18576
+ */
18577
+ 200: string;
18578
+ };
18579
+ };
18580
+ };
18284
18581
  '/auth/login': {
18285
18582
  post: {
18286
18583
  req: {
@@ -18350,6 +18647,20 @@ export type $OpenApiTs = {
18350
18647
  };
18351
18648
  };
18352
18649
  };
18650
+ '/auth/login_link/{token}': {
18651
+ get: {
18652
+ req: {
18653
+ rd?: string;
18654
+ token: string;
18655
+ };
18656
+ res: {
18657
+ /**
18658
+ * redirected to the post-login destination, or to /user/login_link_expired when the link is used, expired or unknown
18659
+ */
18660
+ 302: unknown;
18661
+ };
18662
+ };
18663
+ };
18353
18664
  '/auth/reset_password': {
18354
18665
  post: {
18355
18666
  req: {
@@ -18483,7 +18794,7 @@ export type $OpenApiTs = {
18483
18794
  */
18484
18795
  requestBody: {
18485
18796
  email: string;
18486
- password: string;
18797
+ password?: string;
18487
18798
  super_admin: boolean;
18488
18799
  name?: string;
18489
18800
  company?: string;
@@ -18491,6 +18802,10 @@ export type $OpenApiTs = {
18491
18802
  * Skip sending email notifications to the user
18492
18803
  */
18493
18804
  skip_email?: boolean;
18805
+ /**
18806
+ * password (default, requires `password`), pending_oauth (no credential until the first OAuth login proving the address adopts the account), or a configured OAuth login client key
18807
+ */
18808
+ login_type?: string;
18494
18809
  };
18495
18810
  };
18496
18811
  res: {
@@ -19103,6 +19418,129 @@ export type $OpenApiTs = {
19103
19418
  };
19104
19419
  };
19105
19420
  };
19421
+ '/users/login_links': {
19422
+ post: {
19423
+ req: {
19424
+ /**
19425
+ * target account and link options
19426
+ */
19427
+ requestBody: {
19428
+ email: string;
19429
+ /**
19430
+ * link lifetime in seconds, at most 900 (default 600)
19431
+ */
19432
+ expires_in_s?: number;
19433
+ /**
19434
+ * same-origin path the browser lands on after login (default /user/workspaces)
19435
+ */
19436
+ rd?: string;
19437
+ /**
19438
+ * mint only while the account still has this login type (for example pending_oauth), so a link stops working once the owner has set a password or signed in with a provider
19439
+ */
19440
+ require_login_type?: string;
19441
+ };
19442
+ };
19443
+ res: {
19444
+ /**
19445
+ * login link minted
19446
+ */
19447
+ 201: {
19448
+ url: string;
19449
+ expires_at: string;
19450
+ };
19451
+ /**
19452
+ * the account does not have the required login type
19453
+ */
19454
+ 409: unknown;
19455
+ };
19456
+ };
19457
+ };
19458
+ '/users/cloud_trial_offer': {
19459
+ post: {
19460
+ req: {
19461
+ requestBody: {
19462
+ email: string;
19463
+ /**
19464
+ * mark the offer used (a trial or subscription now exists) instead of recording it
19465
+ */
19466
+ consumed?: boolean;
19467
+ };
19468
+ };
19469
+ res: {
19470
+ /**
19471
+ * offer recorded or consumed
19472
+ */
19473
+ 200: string;
19474
+ };
19475
+ };
19476
+ get: {
19477
+ res: {
19478
+ /**
19479
+ * offer state
19480
+ */
19481
+ 200: {
19482
+ offered: boolean;
19483
+ };
19484
+ };
19485
+ };
19486
+ };
19487
+ '/users/cloud_trial_offer/go': {
19488
+ post: {
19489
+ res: {
19490
+ /**
19491
+ * where to go — the customer portal signed in with the trial being started, or the portal home with the reason the offer could not be used
19492
+ */
19493
+ 200: {
19494
+ location: string;
19495
+ /**
19496
+ * present when the portal refused (e.g. the account already has a subscription); the offer is then spent
19497
+ */
19498
+ reason?: string;
19499
+ };
19500
+ /**
19501
+ * called with a job token
19502
+ */
19503
+ 403: unknown;
19504
+ /**
19505
+ * no offer for this account
19506
+ */
19507
+ 404: unknown;
19508
+ };
19509
+ };
19510
+ };
19511
+ '/users/onboarding_profile': {
19512
+ post: {
19513
+ req: {
19514
+ requestBody: {
19515
+ email: string;
19516
+ /**
19517
+ * free-form context from the invite, every key optional. The frontend reads `touch_point` (answers onboarding's source question), `company` and `workspace_name` (prefill the first workspace's name), `hub_projects` (slugs surfaced first on an empty workspace), `tools` (integrations, used to pick hub projects when none are named) and `starter_prompts` (`[{label, prompt}]`, replacing the home page's example prompts); unknown keys are kept and ignored
19518
+ */
19519
+ profile: {
19520
+ [key: string]: unknown;
19521
+ };
19522
+ };
19523
+ };
19524
+ res: {
19525
+ /**
19526
+ * profile recorded
19527
+ */
19528
+ 200: string;
19529
+ };
19530
+ };
19531
+ get: {
19532
+ res: {
19533
+ /**
19534
+ * the profile, or null when none was recorded
19535
+ */
19536
+ 200: {
19537
+ profile?: {
19538
+ [key: string]: unknown;
19539
+ } | null;
19540
+ };
19541
+ };
19542
+ };
19543
+ };
19106
19544
  '/users/tokens/delete/{token_prefix}': {
19107
19545
  delete: {
19108
19546
  req: {
@@ -24135,6 +24573,10 @@ export type $OpenApiTs = {
24135
24573
  * how often the integration has been picked, absent on a hub that does not count picks
24136
24574
  */
24137
24575
  picks?: number;
24576
+ /**
24577
+ * the label the hub curates for the integration, null or absent where it names none
24578
+ */
24579
+ display_name?: string | null;
24138
24580
  }>;
24139
24581
  };
24140
24582
  };
@@ -30734,6 +31176,80 @@ export type $OpenApiTs = {
30734
31176
  };
30735
31177
  };
30736
31178
  };
31179
+ '/w/{workspace}/ai/shared_artifacts/share': {
31180
+ post: {
31181
+ req: {
31182
+ requestBody: {
31183
+ /**
31184
+ * the artifact's id in the author's session
31185
+ */
31186
+ artifact_id: string;
31187
+ name: string;
31188
+ kind: 'md' | 'html';
31189
+ version: number;
31190
+ content: string;
31191
+ };
31192
+ workspace: string;
31193
+ };
31194
+ res: {
31195
+ /**
31196
+ * the shared copy
31197
+ */
31198
+ 200: SharedAiArtifactInfo;
31199
+ };
31200
+ };
31201
+ };
31202
+ '/w/{workspace}/ai/shared_artifacts/status': {
31203
+ get: {
31204
+ req: {
31205
+ artifactId: string;
31206
+ workspace: string;
31207
+ };
31208
+ res: {
31209
+ /**
31210
+ * the live share, if any, and how long shares last
31211
+ */
31212
+ 200: {
31213
+ retention_secs: number;
31214
+ share?: SharedAiArtifactInfo;
31215
+ };
31216
+ };
31217
+ };
31218
+ };
31219
+ '/w/{workspace}/ai/shared_artifacts/get/{id}': {
31220
+ get: {
31221
+ req: {
31222
+ id: string;
31223
+ workspace: string;
31224
+ };
31225
+ res: {
31226
+ /**
31227
+ * the shared artifact
31228
+ */
31229
+ 200: SharedAiArtifactInfo & {
31230
+ content: string;
31231
+ /**
31232
+ * whether the caller authored the share or is a workspace admin
31233
+ */
31234
+ can_unshare: boolean;
31235
+ };
31236
+ };
31237
+ };
31238
+ };
31239
+ '/w/{workspace}/ai/shared_artifacts/delete/{id}': {
31240
+ delete: {
31241
+ req: {
31242
+ id: string;
31243
+ workspace: string;
31244
+ };
31245
+ res: {
31246
+ /**
31247
+ * share deleted
31248
+ */
31249
+ 200: string;
31250
+ };
31251
+ };
31252
+ };
30737
31253
  '/w/{workspace}/trigger/{trigger_kind}/resume_suspended_trigger_jobs/{trigger_path}': {
30738
31254
  post: {
30739
31255
  req: {