@deepraxis/sdk 0.1.1-dev.de0a917 → 0.1.1-dev.e47a392

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.
@@ -7908,6 +7908,1717 @@ export const operations = [
7908
7908
  ]
7909
7909
  }
7910
7910
  },
7911
+ {
7912
+ "resource": "crm.changes",
7913
+ "method": "revert",
7914
+ "summary": "Revert change set",
7915
+ "description": "Reverse property changes made by one earlier request. Unlike HubSpot, CRM exposes change-set reversal because agents need to undo a whole recorded action rather than manually reconstructing individual values. Supply the changeSetId recorded in property history. A later conflicting value prevents reversal with HTTP 409 CONFLICT; inspect current records before resolving the conflict. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.",
7916
+ "http": "POST",
7917
+ "path": "/crm/v1/changes/{changeSetId}:revert",
7918
+ "streaming": "no",
7919
+ "pagination": false,
7920
+ "pathParams": [
7921
+ {
7922
+ "name": "changeSetId",
7923
+ "sdkName": "changeSetId",
7924
+ "description": "Change-set identifier recorded for the original write in property history; one request forms one change set."
7925
+ }
7926
+ ],
7927
+ "query": []
7928
+ },
7929
+ {
7930
+ "resource": "crm.layouts",
7931
+ "method": "retrieve",
7932
+ "summary": "Retrieve record layout",
7933
+ "description": "Read the shared record-page layout for an object type from schemas.list. Unlike HubSpot, CRM exposes this presentation as an API resource so people and agents can share the same record layout instead of relying on interface-only settings. The response orders summary tiles, sidebar properties and main-column sections.",
7934
+ "http": "GET",
7935
+ "path": "/crm/v1/layouts/{objectType}",
7936
+ "streaming": "no",
7937
+ "pagination": false,
7938
+ "pathParams": [
7939
+ {
7940
+ "name": "objectType",
7941
+ "sdkName": "objectType",
7942
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
7943
+ }
7944
+ ],
7945
+ "query": []
7946
+ },
7947
+ {
7948
+ "resource": "crm.layouts",
7949
+ "method": "update",
7950
+ "summary": "Update record layout",
7951
+ "description": "Replace the shared record-page layout for an object type from schemas.list. Unlike HubSpot, CRM exposes this presentation as an API resource so agents can configure the same record view used by people. Send the complete layout with at most three summary tiles and property names from properties.list; omitted prior sections are removed. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.",
7952
+ "http": "PUT",
7953
+ "path": "/crm/v1/layouts/{objectType}",
7954
+ "streaming": "no",
7955
+ "pagination": false,
7956
+ "pathParams": [
7957
+ {
7958
+ "name": "objectType",
7959
+ "sdkName": "objectType",
7960
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
7961
+ }
7962
+ ],
7963
+ "query": [],
7964
+ "body": {
7965
+ "required": true,
7966
+ "fields": [
7967
+ {
7968
+ "name": "objectType",
7969
+ "type": "string",
7970
+ "required": true,
7971
+ "description": "Object type whose record page uses this layout, matching the path parameter."
7972
+ },
7973
+ {
7974
+ "name": "summary",
7975
+ "type": "array",
7976
+ "itemType": "object",
7977
+ "required": true,
7978
+ "description": "Ordered statistic tiles below the record header, with at most three tiles."
7979
+ },
7980
+ {
7981
+ "name": "sidebar",
7982
+ "type": "array",
7983
+ "itemType": "string",
7984
+ "required": true,
7985
+ "description": "Ordered internal property names shown in the record property sidebar."
7986
+ },
7987
+ {
7988
+ "name": "sections",
7989
+ "type": "array",
7990
+ "itemType": "string",
7991
+ "required": true,
7992
+ "description": "Ordered main-column sections for activity, relationships, tables and property groups."
7993
+ }
7994
+ ]
7995
+ }
7996
+ },
7997
+ {
7998
+ "resource": "crm.leads",
7999
+ "method": "qualify",
8000
+ "summary": "Qualify lead",
8001
+ "description": "Qualify a lead with explicit contact, company and optional deal choices in one operation. Unlike HubSpot, CRM exposes these decisions as a single action because qualification coordinates several related record edits rather than editing only the lead stage. Obtain leadId from objects.list for leads and qualifiedStageId from its pipeline; choose a won stage and satisfy its required properties. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.",
8002
+ "http": "POST",
8003
+ "path": "/crm/v1/leads/{leadId}:qualify",
8004
+ "streaming": "no",
8005
+ "pagination": false,
8006
+ "pathParams": [
8007
+ {
8008
+ "name": "leadId",
8009
+ "sdkName": "leadId",
8010
+ "description": "Lead record identifier from objects.list or objects.search with objectType=leads."
8011
+ }
8012
+ ],
8013
+ "query": [],
8014
+ "body": {
8015
+ "required": true,
8016
+ "fields": [
8017
+ {
8018
+ "name": "contact",
8019
+ "type": "object",
8020
+ "required": true,
8021
+ "description": "Keep the existing contact, or merge it into the chosen contact record."
8022
+ },
8023
+ {
8024
+ "name": "company",
8025
+ "type": "object",
8026
+ "required": true,
8027
+ "description": "Leave company unchanged, associate an existing company, or create one with explicit properties."
8028
+ },
8029
+ {
8030
+ "name": "deal",
8031
+ "type": "object",
8032
+ "required": false,
8033
+ "description": "Optional deal to create as part of qualification; omit to qualify without creating a deal."
8034
+ },
8035
+ {
8036
+ "name": "qualifiedStageId",
8037
+ "type": "string",
8038
+ "required": true,
8039
+ "description": "Lead stage id with praxis_category=won, obtained from the leads pipeline."
8040
+ }
8041
+ ]
8042
+ }
8043
+ },
8044
+ {
8045
+ "resource": "crm.objects",
8046
+ "method": "list",
8047
+ "summary": "List records",
8048
+ "description": "Browse records of one object type and obtain ids for retrieval or edits. Discover objectType with schemas.list; select properties by internal names from properties.list. Omit after for the first page, then copy paging.next.after until no next page is returned. archived defaults to false; use objects.search for property filters.",
8049
+ "http": "GET",
8050
+ "path": "/crm/v1/objects/{objectType}",
8051
+ "streaming": "no",
8052
+ "pagination": false,
8053
+ "pathParams": [
8054
+ {
8055
+ "name": "objectType",
8056
+ "sdkName": "objectType",
8057
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8058
+ }
8059
+ ],
8060
+ "query": [
8061
+ {
8062
+ "name": "after",
8063
+ "type": "string",
8064
+ "required": false,
8065
+ "description": "The paging cursor token of the last successfully read resource will be returned as the `paging.next.after` JSON property of a paged response containing more results."
8066
+ },
8067
+ {
8068
+ "name": "archived",
8069
+ "type": "boolean",
8070
+ "required": false,
8071
+ "description": "Whether to return only results that have been archived."
8072
+ },
8073
+ {
8074
+ "name": "associations",
8075
+ "type": "array",
8076
+ "itemType": "string",
8077
+ "required": false,
8078
+ "description": "A comma separated list of object types to retrieve associated IDs for. If any of the specified associations do not exist, they will be ignored."
8079
+ },
8080
+ {
8081
+ "name": "limit",
8082
+ "type": "integer",
8083
+ "required": false,
8084
+ "description": "The maximum number of results to display per page."
8085
+ },
8086
+ {
8087
+ "name": "properties",
8088
+ "type": "array",
8089
+ "itemType": "string",
8090
+ "required": false,
8091
+ "description": "A comma separated list of the properties to be returned in the response. If any of the specified properties are not present on the requested object(s), they will be ignored."
8092
+ },
8093
+ {
8094
+ "name": "propertiesWithHistory",
8095
+ "type": "array",
8096
+ "itemType": "string",
8097
+ "required": false,
8098
+ "description": "A comma separated list of the properties to be returned along with their history of previous values. If any of the specified properties are not present on the requested object(s), they will be ignored. Usage of this parameter will reduce the maximum number of objects that can be read by a single request."
8099
+ }
8100
+ ]
8101
+ },
8102
+ {
8103
+ "resource": "crm.objects",
8104
+ "method": "create",
8105
+ "summary": "Create record",
8106
+ "description": "Create a customer record with property values and optional initial associations. Discover objectType with schemas.list and allowed property names with properties.list; save the returned id for subsequent calls. Each call creates a record. Example for contacts: {\"properties\":{\"email\":\"person@example.com\"}}. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.",
8107
+ "http": "POST",
8108
+ "path": "/crm/v1/objects/{objectType}",
8109
+ "streaming": "no",
8110
+ "pagination": false,
8111
+ "pathParams": [
8112
+ {
8113
+ "name": "objectType",
8114
+ "sdkName": "objectType",
8115
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8116
+ }
8117
+ ],
8118
+ "query": [],
8119
+ "body": {
8120
+ "required": true,
8121
+ "fields": [
8122
+ {
8123
+ "name": "associations",
8124
+ "type": "array",
8125
+ "itemType": "object",
8126
+ "required": true,
8127
+ "description": "Initial relationships to existing records; choose destination ids and association type ids before creating the record."
8128
+ },
8129
+ {
8130
+ "name": "properties",
8131
+ "type": "object",
8132
+ "required": true,
8133
+ "description": "Key-value pairs for setting properties for the new object."
8134
+ }
8135
+ ]
8136
+ }
8137
+ },
8138
+ {
8139
+ "resource": "crm.objects.batch",
8140
+ "method": "archive",
8141
+ "summary": "Batch archive records",
8142
+ "description": "Archive known records of one object type using inputs[].id from objects.list or objects.search. Archived records leave active lists but retain their history; confirm all ids before calling. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Unlike HubSpot, this own-face archive returns HTTP 200 with a JSON refs body instead of HTTP 204.",
8143
+ "http": "POST",
8144
+ "path": "/crm/v1/objects/{objectType}/batch/archive",
8145
+ "streaming": "no",
8146
+ "pagination": false,
8147
+ "pathParams": [
8148
+ {
8149
+ "name": "objectType",
8150
+ "sdkName": "objectType",
8151
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8152
+ }
8153
+ ],
8154
+ "query": [],
8155
+ "body": {
8156
+ "required": true,
8157
+ "fields": [
8158
+ {
8159
+ "name": "inputs",
8160
+ "type": "array",
8161
+ "itemType": "object",
8162
+ "required": true,
8163
+ "description": "Records to process in this batch, each using the identifiers and properties described by its item schema."
8164
+ }
8165
+ ]
8166
+ }
8167
+ },
8168
+ {
8169
+ "resource": "crm.objects.batch",
8170
+ "method": "create",
8171
+ "summary": "Batch create records",
8172
+ "description": "Create several records of one object type using inputs with properties and optional associations. Obtain property names from properties.list; each successful input creates a record, so inspect per-item errors before resubmitting failed inputs. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.",
8173
+ "http": "POST",
8174
+ "path": "/crm/v1/objects/{objectType}/batch/create",
8175
+ "streaming": "no",
8176
+ "pagination": false,
8177
+ "pathParams": [
8178
+ {
8179
+ "name": "objectType",
8180
+ "sdkName": "objectType",
8181
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8182
+ }
8183
+ ],
8184
+ "query": [],
8185
+ "body": {
8186
+ "required": true,
8187
+ "fields": [
8188
+ {
8189
+ "name": "inputs",
8190
+ "type": "array",
8191
+ "itemType": "object",
8192
+ "required": true,
8193
+ "description": "Records to process in this batch, each using the identifiers and properties described by its item schema."
8194
+ }
8195
+ ]
8196
+ }
8197
+ },
8198
+ {
8199
+ "resource": "crm.objects.batch",
8200
+ "method": "read",
8201
+ "summary": "Batch read records",
8202
+ "description": "Read a set of known record ids in one call; use objects.search to discover ids first. Supply inputs with ids plus requested properties; set idProperty only when the inputs use unique-property values rather than record ids.",
8203
+ "http": "POST",
8204
+ "path": "/crm/v1/objects/{objectType}/batch/read",
8205
+ "streaming": "no",
8206
+ "pagination": false,
8207
+ "pathParams": [
8208
+ {
8209
+ "name": "objectType",
8210
+ "sdkName": "objectType",
8211
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8212
+ }
8213
+ ],
8214
+ "query": [
8215
+ {
8216
+ "name": "archived",
8217
+ "type": "boolean",
8218
+ "required": false,
8219
+ "description": "Whether to return only results that have been archived."
8220
+ }
8221
+ ],
8222
+ "body": {
8223
+ "required": true,
8224
+ "fields": [
8225
+ {
8226
+ "name": "idProperty",
8227
+ "type": "string",
8228
+ "required": false,
8229
+ "description": "When using a custom unique value property to retrieve records, the name of the property. Do not include this parameter if retrieving by record ID."
8230
+ },
8231
+ {
8232
+ "name": "inputs",
8233
+ "type": "array",
8234
+ "itemType": "object",
8235
+ "required": true,
8236
+ "description": "Records to process in this batch, each using the identifiers and properties described by its item schema."
8237
+ },
8238
+ {
8239
+ "name": "properties",
8240
+ "type": "array",
8241
+ "itemType": "string",
8242
+ "required": true,
8243
+ "description": "Internal property names to include in each returned record; obtain them from properties.list."
8244
+ },
8245
+ {
8246
+ "name": "propertiesWithHistory",
8247
+ "type": "array",
8248
+ "itemType": "string",
8249
+ "required": true,
8250
+ "description": "Internal property names whose previous values should be returned with each record; use an empty array when no history is needed."
8251
+ }
8252
+ ]
8253
+ }
8254
+ },
8255
+ {
8256
+ "resource": "crm.objects.batch",
8257
+ "method": "update",
8258
+ "summary": "Batch update records",
8259
+ "description": "Apply distinct property patches to existing records identified by inputs[].id. Obtain ids from objects.list or objects.search and property names from properties.list. Omitted properties retain their values; inspect results and errors for each input. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.",
8260
+ "http": "POST",
8261
+ "path": "/crm/v1/objects/{objectType}/batch/update",
8262
+ "streaming": "no",
8263
+ "pagination": false,
8264
+ "pathParams": [
8265
+ {
8266
+ "name": "objectType",
8267
+ "sdkName": "objectType",
8268
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8269
+ }
8270
+ ],
8271
+ "query": [],
8272
+ "body": {
8273
+ "required": true,
8274
+ "fields": [
8275
+ {
8276
+ "name": "inputs",
8277
+ "type": "array",
8278
+ "itemType": "object",
8279
+ "required": true,
8280
+ "description": "Records to process in this batch, each using the identifiers and properties described by its item schema."
8281
+ }
8282
+ ]
8283
+ }
8284
+ },
8285
+ {
8286
+ "resource": "crm.objects.batch",
8287
+ "method": "upsert",
8288
+ "summary": "Batch upsert records",
8289
+ "description": "Create records that do not yet exist or update matches using a unique property. Provide idProperty and its value in each input, plus properties; choose a property with hasUniqueValue from properties.list. Inspect each result to determine whether it was newly created. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.",
8290
+ "http": "POST",
8291
+ "path": "/crm/v1/objects/{objectType}/batch/upsert",
8292
+ "streaming": "no",
8293
+ "pagination": false,
8294
+ "pathParams": [
8295
+ {
8296
+ "name": "objectType",
8297
+ "sdkName": "objectType",
8298
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8299
+ }
8300
+ ],
8301
+ "query": [],
8302
+ "body": {
8303
+ "required": true,
8304
+ "fields": [
8305
+ {
8306
+ "name": "inputs",
8307
+ "type": "array",
8308
+ "itemType": "object",
8309
+ "required": true,
8310
+ "description": "Records to process in this batch, each using the identifiers and properties described by its item schema."
8311
+ }
8312
+ ]
8313
+ }
8314
+ },
8315
+ {
8316
+ "resource": "crm.objects",
8317
+ "method": "search",
8318
+ "summary": "Search records",
8319
+ "description": "Find records using text query, property filters and sort order rather than scanning a list. Obtain objectType from schemas.list and filter propertyName values from properties.list. Supply filterGroups, sorts, properties, limit and after; use empty arrays for no filters, sorts or property selection, and an empty after for the first page. Copy paging.next.after with the same query to continue. This operation reads records without changing them.",
8320
+ "http": "POST",
8321
+ "path": "/crm/v1/objects/{objectType}/search",
8322
+ "streaming": "no",
8323
+ "pagination": false,
8324
+ "pathParams": [
8325
+ {
8326
+ "name": "objectType",
8327
+ "sdkName": "objectType",
8328
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8329
+ }
8330
+ ],
8331
+ "query": [],
8332
+ "body": {
8333
+ "required": true,
8334
+ "fields": [
8335
+ {
8336
+ "name": "after",
8337
+ "type": "string",
8338
+ "required": true,
8339
+ "description": "A paging cursor token for retrieving subsequent pages."
8340
+ },
8341
+ {
8342
+ "name": "filterGroups",
8343
+ "type": "array",
8344
+ "itemType": "object",
8345
+ "required": true,
8346
+ "description": "Up to 6 groups of filters defining additional query criteria."
8347
+ },
8348
+ {
8349
+ "name": "limit",
8350
+ "type": "integer",
8351
+ "required": true,
8352
+ "description": "The maximum results to return, up to 200 objects."
8353
+ },
8354
+ {
8355
+ "name": "properties",
8356
+ "type": "array",
8357
+ "itemType": "string",
8358
+ "required": true,
8359
+ "description": "Internal property names to include in each returned record; obtain them from properties.list."
8360
+ },
8361
+ {
8362
+ "name": "query",
8363
+ "type": "string",
8364
+ "required": false,
8365
+ "description": "The search query string, up to 3000 characters."
8366
+ },
8367
+ {
8368
+ "name": "sorts",
8369
+ "type": "array",
8370
+ "itemType": "string",
8371
+ "required": true,
8372
+ "description": "Property names controlling ordering; prefix a property name with a minus sign for descending order."
8373
+ }
8374
+ ]
8375
+ }
8376
+ },
8377
+ {
8378
+ "resource": "crm.objects",
8379
+ "method": "archive",
8380
+ "summary": "Archive record",
8381
+ "description": "Archive a record selected from objects.list or objects.search when it should leave active results. This removes it from normal lists without deleting its history; archived=true can be used to read archived records. Confirm objectType and objectId before calling. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Unlike HubSpot, this own-face archive returns HTTP 200 with a JSON refs body instead of HTTP 204.",
8382
+ "http": "DELETE",
8383
+ "path": "/crm/v1/objects/{objectType}/{objectId}",
8384
+ "streaming": "no",
8385
+ "pagination": false,
8386
+ "pathParams": [
8387
+ {
8388
+ "name": "objectType",
8389
+ "sdkName": "objectType",
8390
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8391
+ },
8392
+ {
8393
+ "name": "objectId",
8394
+ "sdkName": "objectId",
8395
+ "description": "Record id from objects.list, objects.search or objects.create for this objectType."
8396
+ }
8397
+ ],
8398
+ "query": []
8399
+ },
8400
+ {
8401
+ "resource": "crm.objects",
8402
+ "method": "retrieve",
8403
+ "summary": "Retrieve record",
8404
+ "description": "Read one record by id from objects.list, objects.search or objects.create. Select property names with properties and associated object types with associations; use idProperty only when objectId is a value of that unique property. Use archived=true to inspect an archived record.",
8405
+ "http": "GET",
8406
+ "path": "/crm/v1/objects/{objectType}/{objectId}",
8407
+ "streaming": "no",
8408
+ "pagination": false,
8409
+ "pathParams": [
8410
+ {
8411
+ "name": "objectType",
8412
+ "sdkName": "objectType",
8413
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8414
+ },
8415
+ {
8416
+ "name": "objectId",
8417
+ "sdkName": "objectId",
8418
+ "description": "Record id from objects.list, objects.search or objects.create for this objectType."
8419
+ }
8420
+ ],
8421
+ "query": [
8422
+ {
8423
+ "name": "archived",
8424
+ "type": "boolean",
8425
+ "required": false,
8426
+ "description": "Whether to return only results that have been archived."
8427
+ },
8428
+ {
8429
+ "name": "associations",
8430
+ "type": "array",
8431
+ "itemType": "string",
8432
+ "required": false,
8433
+ "description": "A comma separated list of object types to retrieve associated IDs for. If any of the specified associations do not exist, they will be ignored."
8434
+ },
8435
+ {
8436
+ "name": "idProperty",
8437
+ "type": "string",
8438
+ "required": false,
8439
+ "description": "The name of a property whose values are unique for this object"
8440
+ },
8441
+ {
8442
+ "name": "properties",
8443
+ "type": "array",
8444
+ "itemType": "string",
8445
+ "required": false,
8446
+ "description": "A comma separated list of the properties to be returned in the response. If any of the specified properties are not present on the requested object(s), they will be ignored."
8447
+ },
8448
+ {
8449
+ "name": "propertiesWithHistory",
8450
+ "type": "array",
8451
+ "itemType": "string",
8452
+ "required": false,
8453
+ "description": "A comma separated list of the properties to be returned along with their history of previous values. If any of the specified properties are not present on the requested object(s), they will be ignored."
8454
+ }
8455
+ ]
8456
+ },
8457
+ {
8458
+ "resource": "crm.objects",
8459
+ "method": "update",
8460
+ "summary": "Update record",
8461
+ "description": "Change only the supplied properties of a record selected from objects.list or objects.search. Omitted properties retain their values. Use property names from properties.list and valid stage ids from pipelines.retrieve. Stage-entry requirements must be satisfied by the resulting record; inspect 400 errors before retrying. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.",
8462
+ "http": "PATCH",
8463
+ "path": "/crm/v1/objects/{objectType}/{objectId}",
8464
+ "streaming": "no",
8465
+ "pagination": false,
8466
+ "pathParams": [
8467
+ {
8468
+ "name": "objectType",
8469
+ "sdkName": "objectType",
8470
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8471
+ },
8472
+ {
8473
+ "name": "objectId",
8474
+ "sdkName": "objectId",
8475
+ "description": "Record id from objects.list, objects.search or objects.create for this objectType."
8476
+ }
8477
+ ],
8478
+ "query": [
8479
+ {
8480
+ "name": "idProperty",
8481
+ "type": "string",
8482
+ "required": false,
8483
+ "description": "The name of a property whose values are unique for this object"
8484
+ }
8485
+ ],
8486
+ "body": {
8487
+ "required": true,
8488
+ "fields": [
8489
+ {
8490
+ "name": "properties",
8491
+ "type": "object",
8492
+ "required": true,
8493
+ "description": "Key value pairs representing the properties of the object."
8494
+ }
8495
+ ]
8496
+ }
8497
+ },
8498
+ {
8499
+ "resource": "crm.associations",
8500
+ "method": "createDefault",
8501
+ "summary": "Create default association",
8502
+ "description": "Link two existing records with the default unlabelled association. Obtain each record id from objects.list or objects.search for its type. No request body is required; use associations.create to choose explicit association labels. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.",
8503
+ "http": "PUT",
8504
+ "path": "/crm/v1/objects/{objectType}/{objectId}/associations/default/{toObjectType}/{toObjectId}",
8505
+ "streaming": "no",
8506
+ "pagination": false,
8507
+ "pathParams": [
8508
+ {
8509
+ "name": "objectType",
8510
+ "sdkName": "objectType",
8511
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8512
+ },
8513
+ {
8514
+ "name": "objectId",
8515
+ "sdkName": "objectId",
8516
+ "description": "Record id from objects.list, objects.search or objects.create for this objectType."
8517
+ },
8518
+ {
8519
+ "name": "toObjectType",
8520
+ "sdkName": "toObjectType",
8521
+ "description": "Destination object type from schemas.list; use the type of the record being linked."
8522
+ },
8523
+ {
8524
+ "name": "toObjectId",
8525
+ "sdkName": "toObjectId",
8526
+ "description": "Destination record identifier from objects.list or objects.search for toObjectType."
8527
+ }
8528
+ ],
8529
+ "query": []
8530
+ },
8531
+ {
8532
+ "resource": "crm.associations",
8533
+ "method": "list",
8534
+ "summary": "List record associations",
8535
+ "description": "Read records linked to a source record, including association labels and type ids. Obtain source and destination object types from schemas.list and objectId from objects.list or objects.search. Follow paging.next.after to continue reading associated records.",
8536
+ "http": "GET",
8537
+ "path": "/crm/v1/objects/{objectType}/{objectId}/associations/{toObjectType}",
8538
+ "streaming": "no",
8539
+ "pagination": false,
8540
+ "pathParams": [
8541
+ {
8542
+ "name": "objectType",
8543
+ "sdkName": "objectType",
8544
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8545
+ },
8546
+ {
8547
+ "name": "objectId",
8548
+ "sdkName": "objectId",
8549
+ "description": "Record id from objects.list, objects.search or objects.create for this objectType."
8550
+ },
8551
+ {
8552
+ "name": "toObjectType",
8553
+ "sdkName": "toObjectType",
8554
+ "description": "Destination object type from schemas.list; use the type of the record being linked."
8555
+ }
8556
+ ],
8557
+ "query": [
8558
+ {
8559
+ "name": "after",
8560
+ "type": "string",
8561
+ "required": false,
8562
+ "description": "The paging cursor token of the last successfully read resource will be returned as the `paging.next.after` JSON property of a paged response containing more results."
8563
+ },
8564
+ {
8565
+ "name": "limit",
8566
+ "type": "integer",
8567
+ "required": false,
8568
+ "description": "The maximum number of results to display per page."
8569
+ }
8570
+ ]
8571
+ },
8572
+ {
8573
+ "resource": "crm.associations",
8574
+ "method": "remove",
8575
+ "summary": "Remove association",
8576
+ "description": "Remove the association between two existing records without archiving either record. Obtain the linked destination id from associations.list and confirm the source and destination object types before calling. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Unlike HubSpot, this own-face archive returns HTTP 200 with a JSON refs body instead of HTTP 204.",
8577
+ "http": "DELETE",
8578
+ "path": "/crm/v1/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}",
8579
+ "streaming": "no",
8580
+ "pagination": false,
8581
+ "pathParams": [
8582
+ {
8583
+ "name": "objectType",
8584
+ "sdkName": "objectType",
8585
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8586
+ },
8587
+ {
8588
+ "name": "objectId",
8589
+ "sdkName": "objectId",
8590
+ "description": "Record id from objects.list, objects.search or objects.create for this objectType."
8591
+ },
8592
+ {
8593
+ "name": "toObjectType",
8594
+ "sdkName": "toObjectType",
8595
+ "description": "Destination object type from schemas.list; use the type of the record being linked."
8596
+ },
8597
+ {
8598
+ "name": "toObjectId",
8599
+ "sdkName": "toObjectId",
8600
+ "description": "Destination record identifier from objects.list or objects.search for toObjectType."
8601
+ }
8602
+ ],
8603
+ "query": []
8604
+ },
8605
+ {
8606
+ "resource": "crm.associations",
8607
+ "method": "create",
8608
+ "summary": "Create labelled association",
8609
+ "description": "Associate two existing records using the requested association category and type id. Obtain record ids from objects.list or objects.search; reuse known association type ids from associations.list. Send the association-spec array as the body; use associations.createDefault when no label is needed. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.",
8610
+ "http": "PUT",
8611
+ "path": "/crm/v1/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}",
8612
+ "streaming": "no",
8613
+ "pagination": false,
8614
+ "pathParams": [
8615
+ {
8616
+ "name": "objectType",
8617
+ "sdkName": "objectType",
8618
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8619
+ },
8620
+ {
8621
+ "name": "objectId",
8622
+ "sdkName": "objectId",
8623
+ "description": "Record id from objects.list, objects.search or objects.create for this objectType."
8624
+ },
8625
+ {
8626
+ "name": "toObjectType",
8627
+ "sdkName": "toObjectType",
8628
+ "description": "Destination object type from schemas.list; use the type of the record being linked."
8629
+ },
8630
+ {
8631
+ "name": "toObjectId",
8632
+ "sdkName": "toObjectId",
8633
+ "description": "Destination record identifier from objects.list or objects.search for toObjectType."
8634
+ }
8635
+ ],
8636
+ "query": [],
8637
+ "body": {
8638
+ "required": true,
8639
+ "fields": []
8640
+ }
8641
+ },
8642
+ {
8643
+ "resource": "crm.pipelines",
8644
+ "method": "list",
8645
+ "summary": "List pipelines",
8646
+ "description": "Discover pipelines and stage ids for records of one object type from schemas.list. Reuse pipeline and stage ids in record property updates or lead qualification. Stage rules are string values in stage.metadata: praxis_category is open (active), won (successful) or lost (unsuccessful); praxis_terminal is \"true\" (no further transition) or \"false\" (transitions allowed); praxis_allowed_next is a JSON-encoded array string of permitted next stage ids, with the string \"null\" meaning unrestricted; praxis_required is a JSON-encoded array string of property names (\"[]\" means none) that must be non-empty on entry (boolean properties must be \"true\"). Rule violations return HTTP 400 VALIDATION_ERROR; errors[0].context.properties lists missing required property names. Correct those values or choose an allowed stage before retrying. Example metadata: {\"praxis_category\":\"open\",\"praxis_terminal\":\"false\",\"praxis_allowed_next\":\"[\\\"proposal\\\",\\\"lost\\\"]\",\"praxis_required\":\"[\\\"budget\\\",\\\"decision_maker\\\"]\"}.",
8647
+ "http": "GET",
8648
+ "path": "/crm/v1/pipelines/{objectType}",
8649
+ "streaming": "no",
8650
+ "pagination": false,
8651
+ "pathParams": [
8652
+ {
8653
+ "name": "objectType",
8654
+ "sdkName": "objectType",
8655
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8656
+ }
8657
+ ],
8658
+ "query": []
8659
+ },
8660
+ {
8661
+ "resource": "crm.pipelines",
8662
+ "method": "create",
8663
+ "summary": "Create pipeline",
8664
+ "description": "Create a pipeline with its ordered stages for an object type from schemas.list. Provide a display label, displayOrder and initial stages, then use the returned ids when assigning records. Stage rules are string values in stage.metadata: praxis_category is open (active), won (successful) or lost (unsuccessful); praxis_terminal is \"true\" (no further transition) or \"false\" (transitions allowed); praxis_allowed_next is a JSON-encoded array string of permitted next stage ids, with the string \"null\" meaning unrestricted; praxis_required is a JSON-encoded array string of property names (\"[]\" means none) that must be non-empty on entry (boolean properties must be \"true\"). Rule violations return HTTP 400 VALIDATION_ERROR; errors[0].context.properties lists missing required property names. Correct those values or choose an allowed stage before retrying. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Example metadata: {\"praxis_category\":\"open\",\"praxis_terminal\":\"false\",\"praxis_allowed_next\":\"[\\\"proposal\\\",\\\"lost\\\"]\",\"praxis_required\":\"[\\\"budget\\\",\\\"decision_maker\\\"]\"}.",
8665
+ "http": "POST",
8666
+ "path": "/crm/v1/pipelines/{objectType}",
8667
+ "streaming": "no",
8668
+ "pagination": false,
8669
+ "pathParams": [
8670
+ {
8671
+ "name": "objectType",
8672
+ "sdkName": "objectType",
8673
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8674
+ }
8675
+ ],
8676
+ "query": [],
8677
+ "body": {
8678
+ "required": true,
8679
+ "fields": [
8680
+ {
8681
+ "name": "displayOrder",
8682
+ "type": "integer",
8683
+ "required": true,
8684
+ "description": "An integer indicating the order in which the pipeline appears relative to other pipelines."
8685
+ },
8686
+ {
8687
+ "name": "label",
8688
+ "type": "string",
8689
+ "required": true,
8690
+ "description": "A string representing the name or title of the pipeline."
8691
+ },
8692
+ {
8693
+ "name": "pipelineId",
8694
+ "type": "string",
8695
+ "required": false,
8696
+ "description": "A string that uniquely identifies the pipeline. This property is optional when creating a new pipeline."
8697
+ },
8698
+ {
8699
+ "name": "stages",
8700
+ "type": "array",
8701
+ "itemType": "object",
8702
+ "required": true,
8703
+ "description": "An array of PipelineStageInput objects, each representing a stage within the pipeline."
8704
+ }
8705
+ ]
8706
+ }
8707
+ },
8708
+ {
8709
+ "resource": "crm.pipelines",
8710
+ "method": "archive",
8711
+ "summary": "Archive pipeline",
8712
+ "description": "Archive a pipeline selected from pipelines.list when records no longer depend on it. Check current records and stage usage first; resolve references reported by validation before retrying. Stage rules are string values in stage.metadata: praxis_category is open (active), won (successful) or lost (unsuccessful); praxis_terminal is \"true\" (no further transition) or \"false\" (transitions allowed); praxis_allowed_next is a JSON-encoded array string of permitted next stage ids, with the string \"null\" meaning unrestricted; praxis_required is a JSON-encoded array string of property names (\"[]\" means none) that must be non-empty on entry (boolean properties must be \"true\"). Rule violations return HTTP 400 VALIDATION_ERROR; errors[0].context.properties lists missing required property names. Correct those values or choose an allowed stage before retrying. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Unlike HubSpot, this own-face archive returns HTTP 200 with a JSON refs body instead of HTTP 204. Example metadata: {\"praxis_category\":\"open\",\"praxis_terminal\":\"false\",\"praxis_allowed_next\":\"[\\\"proposal\\\",\\\"lost\\\"]\",\"praxis_required\":\"[\\\"budget\\\",\\\"decision_maker\\\"]\"}.",
8713
+ "http": "DELETE",
8714
+ "path": "/crm/v1/pipelines/{objectType}/{pipelineId}",
8715
+ "streaming": "no",
8716
+ "pagination": false,
8717
+ "pathParams": [
8718
+ {
8719
+ "name": "objectType",
8720
+ "sdkName": "objectType",
8721
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8722
+ },
8723
+ {
8724
+ "name": "pipelineId",
8725
+ "sdkName": "pipelineId",
8726
+ "description": "Pipeline identifier from pipelines.list for this objectType."
8727
+ }
8728
+ ],
8729
+ "query": [
8730
+ {
8731
+ "name": "validateDealStageUsagesBeforeDelete",
8732
+ "type": "boolean",
8733
+ "required": false,
8734
+ "description": "A boolean indicating whether to validate deal stage usages before deleting the pipeline. Defaults to true."
8735
+ },
8736
+ {
8737
+ "name": "validateReferencesBeforeDelete",
8738
+ "type": "boolean",
8739
+ "required": false,
8740
+ "description": "A boolean indicating whether to validate references before deleting the pipeline. Defaults to true."
8741
+ }
8742
+ ]
8743
+ },
8744
+ {
8745
+ "resource": "crm.pipelines",
8746
+ "method": "retrieve",
8747
+ "summary": "Retrieve pipeline",
8748
+ "description": "Inspect the stage ids and metadata of a pipeline before moving a record or editing its workflow. Obtain pipelineId from pipelines.list and use the returned stages array to select a destination. Stage rules are string values in stage.metadata: praxis_category is open (active), won (successful) or lost (unsuccessful); praxis_terminal is \"true\" (no further transition) or \"false\" (transitions allowed); praxis_allowed_next is a JSON-encoded array string of permitted next stage ids, with the string \"null\" meaning unrestricted; praxis_required is a JSON-encoded array string of property names (\"[]\" means none) that must be non-empty on entry (boolean properties must be \"true\"). Rule violations return HTTP 400 VALIDATION_ERROR; errors[0].context.properties lists missing required property names. Correct those values or choose an allowed stage before retrying. Example metadata: {\"praxis_category\":\"open\",\"praxis_terminal\":\"false\",\"praxis_allowed_next\":\"[\\\"proposal\\\",\\\"lost\\\"]\",\"praxis_required\":\"[\\\"budget\\\",\\\"decision_maker\\\"]\"}.",
8749
+ "http": "GET",
8750
+ "path": "/crm/v1/pipelines/{objectType}/{pipelineId}",
8751
+ "streaming": "no",
8752
+ "pagination": false,
8753
+ "pathParams": [
8754
+ {
8755
+ "name": "objectType",
8756
+ "sdkName": "objectType",
8757
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8758
+ },
8759
+ {
8760
+ "name": "pipelineId",
8761
+ "sdkName": "pipelineId",
8762
+ "description": "Pipeline identifier from pipelines.list for this objectType."
8763
+ }
8764
+ ],
8765
+ "query": []
8766
+ },
8767
+ {
8768
+ "resource": "crm.pipelines",
8769
+ "method": "update",
8770
+ "summary": "Update pipeline",
8771
+ "description": "Change editable pipeline settings selected by pipelineId from pipelines.list. Omit settings that should remain unchanged and inspect current stages with pipelines.retrieve before modifying the workflow. Stage rules are string values in stage.metadata: praxis_category is open (active), won (successful) or lost (unsuccessful); praxis_terminal is \"true\" (no further transition) or \"false\" (transitions allowed); praxis_allowed_next is a JSON-encoded array string of permitted next stage ids, with the string \"null\" meaning unrestricted; praxis_required is a JSON-encoded array string of property names (\"[]\" means none) that must be non-empty on entry (boolean properties must be \"true\"). Rule violations return HTTP 400 VALIDATION_ERROR; errors[0].context.properties lists missing required property names. Correct those values or choose an allowed stage before retrying. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Example metadata: {\"praxis_category\":\"open\",\"praxis_terminal\":\"false\",\"praxis_allowed_next\":\"[\\\"proposal\\\",\\\"lost\\\"]\",\"praxis_required\":\"[\\\"budget\\\",\\\"decision_maker\\\"]\"}.",
8772
+ "http": "PATCH",
8773
+ "path": "/crm/v1/pipelines/{objectType}/{pipelineId}",
8774
+ "streaming": "no",
8775
+ "pagination": false,
8776
+ "pathParams": [
8777
+ {
8778
+ "name": "objectType",
8779
+ "sdkName": "objectType",
8780
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8781
+ },
8782
+ {
8783
+ "name": "pipelineId",
8784
+ "sdkName": "pipelineId",
8785
+ "description": "Pipeline identifier from pipelines.list for this objectType."
8786
+ }
8787
+ ],
8788
+ "query": [
8789
+ {
8790
+ "name": "validateDealStageUsagesBeforeDelete",
8791
+ "type": "boolean",
8792
+ "required": false,
8793
+ "description": "A boolean indicating whether to validate deal stage usages before deleting. Defaults to true."
8794
+ },
8795
+ {
8796
+ "name": "validateReferencesBeforeDelete",
8797
+ "type": "boolean",
8798
+ "required": false,
8799
+ "description": "A boolean indicating whether to validate references before deleting. Defaults to true."
8800
+ }
8801
+ ],
8802
+ "body": {
8803
+ "required": true,
8804
+ "fields": [
8805
+ {
8806
+ "name": "archived",
8807
+ "type": "boolean",
8808
+ "required": false,
8809
+ "description": "A boolean value that indicates whether the pipeline is archived."
8810
+ },
8811
+ {
8812
+ "name": "displayOrder",
8813
+ "type": "integer",
8814
+ "required": false,
8815
+ "description": "An integer indicating the position of the pipeline in a list, which determines its display order."
8816
+ },
8817
+ {
8818
+ "name": "label",
8819
+ "type": "string",
8820
+ "required": false,
8821
+ "description": "The name of the pipeline, represented as a string."
8822
+ }
8823
+ ]
8824
+ }
8825
+ },
8826
+ {
8827
+ "resource": "crm.pipelines.stages",
8828
+ "method": "create",
8829
+ "summary": "Create pipeline stage",
8830
+ "description": "Add an ordered stage to a pipeline from pipelines.list. Provide its display label, displayOrder and metadata; save the returned stage id for record updates. Stage rules are string values in stage.metadata: praxis_category is open (active), won (successful) or lost (unsuccessful); praxis_terminal is \"true\" (no further transition) or \"false\" (transitions allowed); praxis_allowed_next is a JSON-encoded array string of permitted next stage ids, with the string \"null\" meaning unrestricted; praxis_required is a JSON-encoded array string of property names (\"[]\" means none) that must be non-empty on entry (boolean properties must be \"true\"). Rule violations return HTTP 400 VALIDATION_ERROR; errors[0].context.properties lists missing required property names. Correct those values or choose an allowed stage before retrying. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Example metadata: {\"praxis_category\":\"open\",\"praxis_terminal\":\"false\",\"praxis_allowed_next\":\"[\\\"proposal\\\",\\\"lost\\\"]\",\"praxis_required\":\"[\\\"budget\\\",\\\"decision_maker\\\"]\"}.",
8831
+ "http": "POST",
8832
+ "path": "/crm/v1/pipelines/{objectType}/{pipelineId}/stages",
8833
+ "streaming": "no",
8834
+ "pagination": false,
8835
+ "pathParams": [
8836
+ {
8837
+ "name": "objectType",
8838
+ "sdkName": "objectType",
8839
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8840
+ },
8841
+ {
8842
+ "name": "pipelineId",
8843
+ "sdkName": "pipelineId",
8844
+ "description": "Pipeline identifier from pipelines.list for this objectType."
8845
+ }
8846
+ ],
8847
+ "query": [],
8848
+ "body": {
8849
+ "required": true,
8850
+ "fields": [
8851
+ {
8852
+ "name": "displayOrder",
8853
+ "type": "integer",
8854
+ "required": true,
8855
+ "description": "An integer indicating the position of this stage within the pipeline. Lower numbers indicate earlier stages."
8856
+ },
8857
+ {
8858
+ "name": "label",
8859
+ "type": "string",
8860
+ "required": true,
8861
+ "description": "The name of the pipeline stage. It is a string that provides a human-readable identifier for the stage."
8862
+ },
8863
+ {
8864
+ "name": "metadata",
8865
+ "type": "object",
8866
+ "required": true,
8867
+ "description": "String-valued stage settings, including transition and entry requirements. Stage rules are string values in stage.metadata: praxis_category is open (active), won (successful) or lost (unsuccessful); praxis_terminal is \"true\" (no further transition) or \"false\" (transitions allowed); praxis_allowed_next is a JSON-encoded array string of permitted next stage ids, with the string \"null\" meaning unrestricted; praxis_required is a JSON-encoded array string of property names (\"[]\" means none) that must be non-empty on entry (boolean properties must be \"true\"). Rule violations return HTTP 400 VALIDATION_ERROR; errors[0].context.properties lists missing required property names. Correct those values or choose an allowed stage before retrying."
8868
+ },
8869
+ {
8870
+ "name": "stageId",
8871
+ "type": "string",
8872
+ "required": false,
8873
+ "description": "A string that uniquely identifies the stage within the pipeline."
8874
+ }
8875
+ ]
8876
+ }
8877
+ },
8878
+ {
8879
+ "resource": "crm.pipelines.stages",
8880
+ "method": "archive",
8881
+ "summary": "Archive pipeline stage",
8882
+ "description": "Archive a stage selected from pipelines.retrieve after checking record usage. A stage that still has records cannot be archived without resolving their assignment; move those records to an allowed stage first. Stage rules are string values in stage.metadata: praxis_category is open (active), won (successful) or lost (unsuccessful); praxis_terminal is \"true\" (no further transition) or \"false\" (transitions allowed); praxis_allowed_next is a JSON-encoded array string of permitted next stage ids, with the string \"null\" meaning unrestricted; praxis_required is a JSON-encoded array string of property names (\"[]\" means none) that must be non-empty on entry (boolean properties must be \"true\"). Rule violations return HTTP 400 VALIDATION_ERROR; errors[0].context.properties lists missing required property names. Correct those values or choose an allowed stage before retrying. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Unlike HubSpot, this own-face archive returns HTTP 200 with a JSON refs body instead of HTTP 204. Example metadata: {\"praxis_category\":\"open\",\"praxis_terminal\":\"false\",\"praxis_allowed_next\":\"[\\\"proposal\\\",\\\"lost\\\"]\",\"praxis_required\":\"[\\\"budget\\\",\\\"decision_maker\\\"]\"}.",
8883
+ "http": "DELETE",
8884
+ "path": "/crm/v1/pipelines/{objectType}/{pipelineId}/stages/{stageId}",
8885
+ "streaming": "no",
8886
+ "pagination": false,
8887
+ "pathParams": [
8888
+ {
8889
+ "name": "objectType",
8890
+ "sdkName": "objectType",
8891
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8892
+ },
8893
+ {
8894
+ "name": "pipelineId",
8895
+ "sdkName": "pipelineId",
8896
+ "description": "Pipeline identifier from pipelines.list for this objectType."
8897
+ },
8898
+ {
8899
+ "name": "stageId",
8900
+ "sdkName": "stageId",
8901
+ "description": "Stage identifier from the stages array returned by pipelines.retrieve for this pipeline."
8902
+ }
8903
+ ],
8904
+ "query": [
8905
+ {
8906
+ "name": "validateReferencesBeforeDelete",
8907
+ "type": "boolean",
8908
+ "required": false,
8909
+ "description": "A boolean flag indicating whether to validate references before deleting the stage. Defaults to true."
8910
+ }
8911
+ ]
8912
+ },
8913
+ {
8914
+ "resource": "crm.pipelines.stages",
8915
+ "method": "update",
8916
+ "summary": "Update pipeline stage",
8917
+ "description": "Change the label, order or metadata of a stage selected from pipelines.retrieve. Existing records must satisfy entry rules when subsequently moved; omitted settings retain their values. Stage rules are string values in stage.metadata: praxis_category is open (active), won (successful) or lost (unsuccessful); praxis_terminal is \"true\" (no further transition) or \"false\" (transitions allowed); praxis_allowed_next is a JSON-encoded array string of permitted next stage ids, with the string \"null\" meaning unrestricted; praxis_required is a JSON-encoded array string of property names (\"[]\" means none) that must be non-empty on entry (boolean properties must be \"true\"). Rule violations return HTTP 400 VALIDATION_ERROR; errors[0].context.properties lists missing required property names. Correct those values or choose an allowed stage before retrying. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Example metadata: {\"praxis_category\":\"open\",\"praxis_terminal\":\"false\",\"praxis_allowed_next\":\"[\\\"proposal\\\",\\\"lost\\\"]\",\"praxis_required\":\"[\\\"budget\\\",\\\"decision_maker\\\"]\"}.",
8918
+ "http": "PATCH",
8919
+ "path": "/crm/v1/pipelines/{objectType}/{pipelineId}/stages/{stageId}",
8920
+ "streaming": "no",
8921
+ "pagination": false,
8922
+ "pathParams": [
8923
+ {
8924
+ "name": "objectType",
8925
+ "sdkName": "objectType",
8926
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8927
+ },
8928
+ {
8929
+ "name": "pipelineId",
8930
+ "sdkName": "pipelineId",
8931
+ "description": "Pipeline identifier from pipelines.list for this objectType."
8932
+ },
8933
+ {
8934
+ "name": "stageId",
8935
+ "sdkName": "stageId",
8936
+ "description": "Stage identifier from the stages array returned by pipelines.retrieve for this pipeline."
8937
+ }
8938
+ ],
8939
+ "query": [],
8940
+ "body": {
8941
+ "required": true,
8942
+ "fields": [
8943
+ {
8944
+ "name": "archived",
8945
+ "type": "boolean",
8946
+ "required": false,
8947
+ "description": "A boolean indicating whether the pipeline stage is archived."
8948
+ },
8949
+ {
8950
+ "name": "displayOrder",
8951
+ "type": "integer",
8952
+ "required": false,
8953
+ "description": "An integer specifying the order in which the stage appears relative to other stages."
8954
+ },
8955
+ {
8956
+ "name": "label",
8957
+ "type": "string",
8958
+ "required": false,
8959
+ "description": "A string representing the name or title of the pipeline stage."
8960
+ },
8961
+ {
8962
+ "name": "metadata",
8963
+ "type": "object",
8964
+ "required": true,
8965
+ "description": "String-valued stage settings, including transition and entry requirements. Stage rules are string values in stage.metadata: praxis_category is open (active), won (successful) or lost (unsuccessful); praxis_terminal is \"true\" (no further transition) or \"false\" (transitions allowed); praxis_allowed_next is a JSON-encoded array string of permitted next stage ids, with the string \"null\" meaning unrestricted; praxis_required is a JSON-encoded array string of property names (\"[]\" means none) that must be non-empty on entry (boolean properties must be \"true\"). Rule violations return HTTP 400 VALIDATION_ERROR; errors[0].context.properties lists missing required property names. Correct those values or choose an allowed stage before retrying."
8966
+ }
8967
+ ]
8968
+ }
8969
+ },
8970
+ {
8971
+ "resource": "crm.properties",
8972
+ "method": "list",
8973
+ "summary": "List properties",
8974
+ "description": "Inspect the property definitions available for an object type before writing or filtering records. Obtain objectType from schemas.list; reuse each immutable name in record properties and filters. archived defaults to false.",
8975
+ "http": "GET",
8976
+ "path": "/crm/v1/properties/{objectType}",
8977
+ "streaming": "no",
8978
+ "pagination": false,
8979
+ "pathParams": [
8980
+ {
8981
+ "name": "objectType",
8982
+ "sdkName": "objectType",
8983
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
8984
+ }
8985
+ ],
8986
+ "query": [
8987
+ {
8988
+ "name": "archived",
8989
+ "type": "boolean",
8990
+ "required": false,
8991
+ "description": "Whether to return only results that have been archived."
8992
+ },
8993
+ {
8994
+ "name": "dataSensitivity",
8995
+ "type": "string",
8996
+ "enum": [
8997
+ "highly_sensitive",
8998
+ "non_sensitive",
8999
+ "sensitive"
9000
+ ],
9001
+ "required": false,
9002
+ "description": "Filter properties based on data sensitivity level. Valid values are 'non_sensitive', 'sensitive', and 'highly_sensitive'. Defaults to 'non_sensitive'."
9003
+ },
9004
+ {
9005
+ "name": "locale",
9006
+ "type": "string",
9007
+ "required": false,
9008
+ "description": "Specify the locale to retrieve properties in a particular language or regional format."
9009
+ },
9010
+ {
9011
+ "name": "properties",
9012
+ "type": "string",
9013
+ "required": false,
9014
+ "description": "A comma-separated list of property names to include in the response."
9015
+ }
9016
+ ]
9017
+ },
9018
+ {
9019
+ "resource": "crm.properties",
9020
+ "method": "create",
9021
+ "summary": "Create property",
9022
+ "description": "Define a property before setting its values on records. Choose objectType from schemas.list and groupName from properties.groups.list; provide an immutable internal name, display label, type and fieldType. Enumeration properties require their valid options. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.",
9023
+ "http": "POST",
9024
+ "path": "/crm/v1/properties/{objectType}",
9025
+ "streaming": "no",
9026
+ "pagination": false,
9027
+ "pathParams": [
9028
+ {
9029
+ "name": "objectType",
9030
+ "sdkName": "objectType",
9031
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
9032
+ }
9033
+ ],
9034
+ "query": [],
9035
+ "body": {
9036
+ "required": true,
9037
+ "fields": [
9038
+ {
9039
+ "name": "calculationFormula",
9040
+ "type": "string",
9041
+ "required": false,
9042
+ "description": "Represents a formula that is used to compute a calculated property."
9043
+ },
9044
+ {
9045
+ "name": "currencyPropertyName",
9046
+ "type": "string",
9047
+ "required": false,
9048
+ "description": "A string representing the name of the currency property."
9049
+ },
9050
+ {
9051
+ "name": "dataSensitivity",
9052
+ "type": "string",
9053
+ "enum": [
9054
+ "highly_sensitive",
9055
+ "non_sensitive",
9056
+ "sensitive"
9057
+ ],
9058
+ "required": false,
9059
+ "description": "Indicates the sensitivity level of the property, with options: highly_sensitive, non_sensitive, or sensitive."
9060
+ },
9061
+ {
9062
+ "name": "description",
9063
+ "type": "string",
9064
+ "required": false,
9065
+ "description": "A description of the property that will be shown as help text in CRM."
9066
+ },
9067
+ {
9068
+ "name": "displayOrder",
9069
+ "type": "integer",
9070
+ "required": false,
9071
+ "description": "Properties are displayed in order starting with the lowest positive integer value. Values of -1 will cause the property to be displayed after any positive values."
9072
+ },
9073
+ {
9074
+ "name": "externalOptions",
9075
+ "type": "boolean",
9076
+ "required": false,
9077
+ "description": "Applicable only for 'enumeration' type properties. Should be set to true in conjunction with a 'referencedObjectType' of 'OWNER'. Otherwise false."
9078
+ },
9079
+ {
9080
+ "name": "fieldType",
9081
+ "type": "string",
9082
+ "enum": [
9083
+ "booleancheckbox",
9084
+ "calculation_equation",
9085
+ "checkbox",
9086
+ "date",
9087
+ "file",
9088
+ "html",
9089
+ "number",
9090
+ "phonenumber",
9091
+ "radio",
9092
+ "select",
9093
+ "text",
9094
+ "textarea"
9095
+ ],
9096
+ "required": true,
9097
+ "description": "Controls how the property appears in CRM."
9098
+ },
9099
+ {
9100
+ "name": "formField",
9101
+ "type": "boolean",
9102
+ "required": false,
9103
+ "description": "Whether or not the property can be used in a CRM form."
9104
+ },
9105
+ {
9106
+ "name": "groupName",
9107
+ "type": "string",
9108
+ "required": true,
9109
+ "description": "The name of the property group the property belongs to."
9110
+ },
9111
+ {
9112
+ "name": "hasUniqueValue",
9113
+ "type": "boolean",
9114
+ "required": false,
9115
+ "description": "Whether or not the property's value must be unique. Once set, this can't be changed."
9116
+ },
9117
+ {
9118
+ "name": "hidden",
9119
+ "type": "boolean",
9120
+ "required": false,
9121
+ "description": "If true, the property won't be visible and can't be used in CRM."
9122
+ },
9123
+ {
9124
+ "name": "label",
9125
+ "type": "string",
9126
+ "required": true,
9127
+ "description": "A human-readable property label that will be shown in CRM."
9128
+ },
9129
+ {
9130
+ "name": "name",
9131
+ "type": "string",
9132
+ "required": true,
9133
+ "description": "The internal property name, which must be used when referencing the property via the API."
9134
+ },
9135
+ {
9136
+ "name": "numberDisplayHint",
9137
+ "type": "string",
9138
+ "enum": [
9139
+ "currency",
9140
+ "duration",
9141
+ "formatted",
9142
+ "percentage",
9143
+ "probability",
9144
+ "unformatted"
9145
+ ],
9146
+ "required": false,
9147
+ "description": "A string providing a hint on how to display numbers. Valid values include 'unformatted', 'formatted', 'currency', 'percentage', 'duration', 'probability'."
9148
+ },
9149
+ {
9150
+ "name": "options",
9151
+ "type": "array",
9152
+ "itemType": "object",
9153
+ "required": false,
9154
+ "description": "A list of valid options for the property. This field is required for enumerated properties."
9155
+ },
9156
+ {
9157
+ "name": "referencedObjectType",
9158
+ "type": "string",
9159
+ "required": false,
9160
+ "description": "Should be set to 'OWNER' when 'externalOptions' is true, which causes the property to dynamically pull option values from the current CRM users."
9161
+ },
9162
+ {
9163
+ "name": "showCurrencySymbol",
9164
+ "type": "boolean",
9165
+ "required": false,
9166
+ "description": "A boolean indicating whether to show the currency symbol for currency fields."
9167
+ },
9168
+ {
9169
+ "name": "textDisplayHint",
9170
+ "type": "string",
9171
+ "enum": [
9172
+ "domain_name",
9173
+ "email",
9174
+ "ip_address",
9175
+ "multi_line",
9176
+ "phone_number",
9177
+ "physical_address",
9178
+ "postal_code",
9179
+ "unformatted_single_line"
9180
+ ],
9181
+ "required": false,
9182
+ "description": "A string providing a hint on how to display text. Valid values include 'unformatted_single_line', 'multi_line', 'email', 'phone_number', 'domain_name', 'ip_address', 'physical_address', 'postal_code'."
9183
+ },
9184
+ {
9185
+ "name": "type",
9186
+ "type": "string",
9187
+ "enum": [
9188
+ "bool",
9189
+ "date",
9190
+ "datetime",
9191
+ "enumeration",
9192
+ "number",
9193
+ "phone_number",
9194
+ "string"
9195
+ ],
9196
+ "required": true,
9197
+ "description": "The data type of the property."
9198
+ }
9199
+ ]
9200
+ }
9201
+ },
9202
+ {
9203
+ "resource": "crm.properties.groups",
9204
+ "method": "list",
9205
+ "summary": "List property groups",
9206
+ "description": "Discover property groups for an object type before creating or organizing property definitions. Obtain objectType from schemas.list and reuse a group name as groupName in properties.create or properties.update.",
9207
+ "http": "GET",
9208
+ "path": "/crm/v1/properties/{objectType}/groups",
9209
+ "streaming": "no",
9210
+ "pagination": false,
9211
+ "pathParams": [
9212
+ {
9213
+ "name": "objectType",
9214
+ "sdkName": "objectType",
9215
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
9216
+ }
9217
+ ],
9218
+ "query": [
9219
+ {
9220
+ "name": "locale",
9221
+ "type": "string",
9222
+ "required": false,
9223
+ "description": "The language locale to use for property group labels. This can help in displaying labels in the preferred language."
9224
+ }
9225
+ ]
9226
+ },
9227
+ {
9228
+ "resource": "crm.properties.groups",
9229
+ "method": "create",
9230
+ "summary": "Create property group",
9231
+ "description": "Create a named group for related property definitions of one object type. Obtain objectType from schemas.list; choose a unique internal name and display label, then reuse the returned name as groupName when creating properties. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.",
9232
+ "http": "POST",
9233
+ "path": "/crm/v1/properties/{objectType}/groups",
9234
+ "streaming": "no",
9235
+ "pagination": false,
9236
+ "pathParams": [
9237
+ {
9238
+ "name": "objectType",
9239
+ "sdkName": "objectType",
9240
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
9241
+ }
9242
+ ],
9243
+ "query": [],
9244
+ "body": {
9245
+ "required": true,
9246
+ "fields": [
9247
+ {
9248
+ "name": "displayOrder",
9249
+ "type": "integer",
9250
+ "required": false,
9251
+ "description": "Property groups are displayed in order starting with the lowest positive integer value. Values of -1 will cause the property group to be displayed after any positive values."
9252
+ },
9253
+ {
9254
+ "name": "label",
9255
+ "type": "string",
9256
+ "required": true,
9257
+ "description": "A human-readable label that will be shown in CRM."
9258
+ },
9259
+ {
9260
+ "name": "name",
9261
+ "type": "string",
9262
+ "required": true,
9263
+ "description": "The internal property group name, which must be used when referencing the property group via the API."
9264
+ }
9265
+ ]
9266
+ }
9267
+ },
9268
+ {
9269
+ "resource": "crm.properties",
9270
+ "method": "archive",
9271
+ "summary": "Archive property",
9272
+ "description": "Archive a property definition selected by internal name from properties.list. Confirm that record entry and search flows no longer depend on it; archived definitions are excluded from normal property lists. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations. Unlike HubSpot, this own-face archive returns HTTP 200 with a JSON refs body instead of HTTP 204.",
9273
+ "http": "DELETE",
9274
+ "path": "/crm/v1/properties/{objectType}/{propertyName}",
9275
+ "streaming": "no",
9276
+ "pagination": false,
9277
+ "pathParams": [
9278
+ {
9279
+ "name": "objectType",
9280
+ "sdkName": "objectType",
9281
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
9282
+ },
9283
+ {
9284
+ "name": "propertyName",
9285
+ "sdkName": "propertyName",
9286
+ "description": "Immutable internal property name from properties.list; do not pass the display label."
9287
+ }
9288
+ ],
9289
+ "query": []
9290
+ },
9291
+ {
9292
+ "resource": "crm.properties",
9293
+ "method": "retrieve",
9294
+ "summary": "Retrieve property",
9295
+ "description": "Inspect the type, options and modification restrictions of a property before changing its definition or record values. Obtain propertyName from properties.list; it is the immutable internal name rather than the label.",
9296
+ "http": "GET",
9297
+ "path": "/crm/v1/properties/{objectType}/{propertyName}",
9298
+ "streaming": "no",
9299
+ "pagination": false,
9300
+ "pathParams": [
9301
+ {
9302
+ "name": "objectType",
9303
+ "sdkName": "objectType",
9304
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
9305
+ },
9306
+ {
9307
+ "name": "propertyName",
9308
+ "sdkName": "propertyName",
9309
+ "description": "Immutable internal property name from properties.list; do not pass the display label."
9310
+ }
9311
+ ],
9312
+ "query": [
9313
+ {
9314
+ "name": "archived",
9315
+ "type": "boolean",
9316
+ "required": false,
9317
+ "description": "Whether to return only results that have been archived."
9318
+ },
9319
+ {
9320
+ "name": "dataSensitivity",
9321
+ "type": "string",
9322
+ "enum": [
9323
+ "highly_sensitive",
9324
+ "non_sensitive",
9325
+ "sensitive"
9326
+ ],
9327
+ "required": false,
9328
+ "description": "The level of data sensitivity to filter properties by. Valid values are 'non_sensitive', 'sensitive', and 'highly_sensitive'. Defaults to 'non_sensitive'."
9329
+ },
9330
+ {
9331
+ "name": "locale",
9332
+ "type": "string",
9333
+ "required": false,
9334
+ "description": "The locale to use for property labels and descriptions."
9335
+ },
9336
+ {
9337
+ "name": "properties",
9338
+ "type": "string",
9339
+ "required": false,
9340
+ "description": "A comma-separated list of property names to include in the response."
9341
+ }
9342
+ ]
9343
+ },
9344
+ {
9345
+ "resource": "crm.properties",
9346
+ "method": "update",
9347
+ "summary": "Update property",
9348
+ "description": "Change editable settings of a property selected from properties.list, such as its label, group or options. Preserve the immutable internal name; inspect modificationMetadata before editing system-managed definitions. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.",
9349
+ "http": "PATCH",
9350
+ "path": "/crm/v1/properties/{objectType}/{propertyName}",
9351
+ "streaming": "no",
9352
+ "pagination": false,
9353
+ "pathParams": [
9354
+ {
9355
+ "name": "objectType",
9356
+ "sdkName": "objectType",
9357
+ "description": "Object type name from schemas.list, such as contacts, companies, deals or a custom p_<name>."
9358
+ },
9359
+ {
9360
+ "name": "propertyName",
9361
+ "sdkName": "propertyName",
9362
+ "description": "Immutable internal property name from properties.list; do not pass the display label."
9363
+ }
9364
+ ],
9365
+ "query": [],
9366
+ "body": {
9367
+ "required": true,
9368
+ "fields": [
9369
+ {
9370
+ "name": "calculationFormula",
9371
+ "type": "string",
9372
+ "required": false,
9373
+ "description": "Represents a formula that is used to compute a calculated property."
9374
+ },
9375
+ {
9376
+ "name": "currencyPropertyName",
9377
+ "type": "string",
9378
+ "required": false,
9379
+ "description": "A string specifying the name of the property that holds the currency information, applicable when showCurrencySymbol is true."
9380
+ },
9381
+ {
9382
+ "name": "description",
9383
+ "type": "string",
9384
+ "required": false,
9385
+ "description": "A description of the property that will be shown as help text in CRM."
9386
+ },
9387
+ {
9388
+ "name": "displayOrder",
9389
+ "type": "integer",
9390
+ "required": false,
9391
+ "description": "Properties are displayed in order starting with the lowest positive integer value. Values of -1 will cause the Property to be displayed after any positive values."
9392
+ },
9393
+ {
9394
+ "name": "fieldType",
9395
+ "type": "string",
9396
+ "enum": [
9397
+ "booleancheckbox",
9398
+ "calculation_equation",
9399
+ "checkbox",
9400
+ "date",
9401
+ "file",
9402
+ "html",
9403
+ "number",
9404
+ "phonenumber",
9405
+ "radio",
9406
+ "select",
9407
+ "text",
9408
+ "textarea"
9409
+ ],
9410
+ "required": false,
9411
+ "description": "Controls how the property appears in CRM."
9412
+ },
9413
+ {
9414
+ "name": "formField",
9415
+ "type": "boolean",
9416
+ "required": false,
9417
+ "description": "Whether or not the property can be used in a CRM form."
9418
+ },
9419
+ {
9420
+ "name": "groupName",
9421
+ "type": "string",
9422
+ "required": false,
9423
+ "description": "The name of the property group the property belongs to."
9424
+ },
9425
+ {
9426
+ "name": "hidden",
9427
+ "type": "boolean",
9428
+ "required": false,
9429
+ "description": "If true, the property won't be visible and can't be used in CRM."
9430
+ },
9431
+ {
9432
+ "name": "label",
9433
+ "type": "string",
9434
+ "required": false,
9435
+ "description": "A human-readable property label that will be shown in CRM."
9436
+ },
9437
+ {
9438
+ "name": "numberDisplayHint",
9439
+ "type": "string",
9440
+ "enum": [
9441
+ "currency",
9442
+ "duration",
9443
+ "formatted",
9444
+ "percentage",
9445
+ "probability",
9446
+ "unformatted"
9447
+ ],
9448
+ "required": false,
9449
+ "description": "A string providing a hint for displaying number values. Valid values include 'unformatted', 'formatted', 'currency', 'percentage', 'duration', and 'probability'."
9450
+ },
9451
+ {
9452
+ "name": "options",
9453
+ "type": "array",
9454
+ "itemType": "object",
9455
+ "required": false,
9456
+ "description": "A list of valid options for the property."
9457
+ },
9458
+ {
9459
+ "name": "showCurrencySymbol",
9460
+ "type": "boolean",
9461
+ "required": false,
9462
+ "description": "A boolean indicating whether to display a currency symbol for number fields formatted as currency."
9463
+ },
9464
+ {
9465
+ "name": "textDisplayHint",
9466
+ "type": "string",
9467
+ "enum": [
9468
+ "domain_name",
9469
+ "email",
9470
+ "ip_address",
9471
+ "multi_line",
9472
+ "phone_number",
9473
+ "physical_address",
9474
+ "postal_code",
9475
+ "unformatted_single_line"
9476
+ ],
9477
+ "required": false,
9478
+ "description": "A string providing a hint for displaying text values. Valid values include 'unformatted_single_line', 'multi_line', 'email', 'phone_number', 'domain_name', 'ip_address', 'physical_address', and 'postal_code'."
9479
+ },
9480
+ {
9481
+ "name": "type",
9482
+ "type": "string",
9483
+ "enum": [
9484
+ "bool",
9485
+ "date",
9486
+ "datetime",
9487
+ "enumeration",
9488
+ "number",
9489
+ "phone_number",
9490
+ "string"
9491
+ ],
9492
+ "required": false,
9493
+ "description": "The data type of the property."
9494
+ }
9495
+ ]
9496
+ }
9497
+ },
9498
+ {
9499
+ "resource": "crm.schemas",
9500
+ "method": "list",
9501
+ "summary": "List object schemas",
9502
+ "description": "Discover available object schemas, display labels, property definitions and association definitions. Reuse the object type identifier or name in record, property and pipeline operations. archived defaults to false; the include parameters control the definition and audit details returned.",
9503
+ "http": "GET",
9504
+ "path": "/crm/v1/schemas",
9505
+ "streaming": "no",
9506
+ "pagination": false,
9507
+ "pathParams": [],
9508
+ "query": [
9509
+ {
9510
+ "name": "archived",
9511
+ "type": "boolean",
9512
+ "required": false,
9513
+ "description": "Whether to return only results that have been archived."
9514
+ },
9515
+ {
9516
+ "name": "includeAssociationDefinitions",
9517
+ "type": "boolean",
9518
+ "required": false,
9519
+ "description": "Whether to include association definitions in the response. Defaults to true."
9520
+ },
9521
+ {
9522
+ "name": "includeAuditMetadata",
9523
+ "type": "boolean",
9524
+ "required": false,
9525
+ "description": "Whether to include audit metadata in the response. Defaults to true."
9526
+ },
9527
+ {
9528
+ "name": "includePropertyDefinitions",
9529
+ "type": "boolean",
9530
+ "required": false,
9531
+ "description": "Whether to include property definitions in the response. Defaults to true."
9532
+ }
9533
+ ]
9534
+ },
9535
+ {
9536
+ "resource": "crm.schemas",
9537
+ "method": "create",
9538
+ "summary": "Create object schema",
9539
+ "description": "Define a custom CRM object type before creating its records. Provide its immutable name, singular and plural labels, primaryDisplayProperty, properties and associated object types. Save the returned object type identifier for subsequent record and property operations. Writes return refs (ResourceRef[]) for entity cards and optional property changes in conversations.",
9540
+ "http": "POST",
9541
+ "path": "/crm/v1/schemas",
9542
+ "streaming": "no",
9543
+ "pagination": false,
9544
+ "pathParams": [],
9545
+ "query": [],
9546
+ "body": {
9547
+ "required": true,
9548
+ "fields": [
9549
+ {
9550
+ "name": "allowsSensitiveProperties",
9551
+ "type": "boolean",
9552
+ "required": true,
9553
+ "description": "Determines if the object type can include properties that are marked as sensitive."
9554
+ },
9555
+ {
9556
+ "name": "associatedObjects",
9557
+ "type": "array",
9558
+ "itemType": "string",
9559
+ "required": true,
9560
+ "description": "Associations defined for this object type."
9561
+ },
9562
+ {
9563
+ "name": "description",
9564
+ "type": "string",
9565
+ "required": false,
9566
+ "description": "A brief explanation of the object type."
9567
+ },
9568
+ {
9569
+ "name": "labels",
9570
+ "type": "object",
9571
+ "required": true
9572
+ },
9573
+ {
9574
+ "name": "name",
9575
+ "type": "string",
9576
+ "required": true,
9577
+ "description": "A unique name for this object. For internal use only."
9578
+ },
9579
+ {
9580
+ "name": "primaryDisplayProperty",
9581
+ "type": "string",
9582
+ "required": false,
9583
+ "description": "The name of the primary property for this object. This will be displayed as primary on the CRM record page for this object type."
9584
+ },
9585
+ {
9586
+ "name": "properties",
9587
+ "type": "array",
9588
+ "itemType": "object",
9589
+ "required": true,
9590
+ "description": "Properties defined for this object type."
9591
+ },
9592
+ {
9593
+ "name": "requiredProperties",
9594
+ "type": "array",
9595
+ "itemType": "string",
9596
+ "required": true,
9597
+ "description": "The names of properties that should be **required** when creating an object of this type."
9598
+ },
9599
+ {
9600
+ "name": "searchableProperties",
9601
+ "type": "array",
9602
+ "itemType": "string",
9603
+ "required": true,
9604
+ "description": "Names of properties that will be indexed for this object type in by CRM's product search."
9605
+ },
9606
+ {
9607
+ "name": "secondaryDisplayProperties",
9608
+ "type": "array",
9609
+ "itemType": "string",
9610
+ "required": true,
9611
+ "description": "The names of secondary properties for this object. These will be displayed as secondary on the CRM record page for this object type."
9612
+ },
9613
+ {
9614
+ "name": "shouldCreateSameObjectAssociation",
9615
+ "type": "boolean",
9616
+ "required": true,
9617
+ "description": "A boolean indicating whether associations should be created between objects of the same type."
9618
+ }
9619
+ ]
9620
+ }
9621
+ },
7911
9622
  {
7912
9623
  "resource": "cut.exports",
7913
9624
  "method": "retrieve",
@@ -8116,7 +9827,7 @@ export const operations = [
8116
9827
  "resource": "cut.projects.analysis",
8117
9828
  "method": "create",
8118
9829
  "summary": "Analyze project media",
8119
- "description": "Request silence, filler-word or scene analysis for selected bound assets before editing. Omit media to select project sources; ranges returned in segments use source seconds. A pending result is not completion: use retry_after_sec before checking again, and inspect failed or unsupported asset results before deciding which edits are possible.",
9830
+ "description": "Request silence, filler-word or scene analysis for selected bound assets before editing. Omit media to select project sources; ranges returned in segments use source seconds. A pending result is not completion: use retry_after_sec before checking again, and inspect failed or unsupported asset results before deciding which edits are possible. Silence measures transcript-based speech pauses, not music or loudness. A completed transcript without words returns ready with empty segments and reason no_speech; no completed transcript returns unsupported with reason no_transcript. A failed transcription remains failed.",
8120
9831
  "http": "POST",
8121
9832
  "path": "/cut/v1/projects/{project_id}/analysis",
8122
9833
  "streaming": "no",
@@ -8287,6 +9998,18 @@ export const operations = [
8287
9998
  "body": {
8288
9999
  "required": true,
8289
10000
  "fields": [
10001
+ {
10002
+ "name": "folder",
10003
+ "type": "string",
10004
+ "required": false,
10005
+ "description": "Optional destination path within the bound media library; omitted uses its default folder."
10006
+ },
10007
+ {
10008
+ "name": "name",
10009
+ "type": "string",
10010
+ "required": false,
10011
+ "description": "Nonempty display name, frozen with the export. Path separators and control characters become hyphens; limited to 200 characters. Omitted uses project name and timestamp."
10012
+ },
8290
10013
  {
8291
10014
  "name": "output",
8292
10015
  "type": "object",
@@ -8312,7 +10035,7 @@ export const operations = [
8312
10035
  "resource": "cut.projects.frames",
8313
10036
  "method": "list",
8314
10037
  "summary": "Render preview frames",
8315
- "description": "Review the visual result at one or more project times without creating an export. Pass comma-separated seconds in at, such as 12,15.5; scale changes preview size and revision selects a committed project revision. Fetch the returned image URLs before expires_at; render again when they expire.",
10038
+ "description": "Review the visual result at one or more project times without creating an export. Pass comma-separated seconds in at, such as 12,15.5; scale changes preview size and revision selects a committed project revision. Request at most eight times. Each returned url is an inline PNG data URL (data:image/png;base64,...), not a hosted HTTP image link. The default scale is 0.25; use 0.5 for subtitle layout inspection (1080×1920 renders at 540×960). The maximum is 0.5; values above it return INVALID_PARAMS. Actual width and height are returned per frame. PNGs above 2 MiB or responses above 4 MiB return RESPONSE_TOO_LARGE without silently lowering resolution. The response always includes warnings; FRAME_UNAVAILABLE means a source preview could not be obtained and an offline tile was drawn. Its message identifies a timeout, delivery capacity limit, or unavailable source and contains no source URL. Decode each image's base64 payload to save it. Codemode returns at most four images per call, so request at most four times when reviewing there.",
8316
10039
  "http": "GET",
8317
10040
  "path": "/cut/v1/projects/{project_id}/frames",
8318
10041
  "streaming": "no",
@@ -8335,7 +10058,7 @@ export const operations = [
8335
10058
  "name": "scale",
8336
10059
  "type": "number",
8337
10060
  "required": false,
8338
- "description": "Positive image size multiplier; 0.5 renders at half the project dimensions."
10061
+ "description": "Image size multiplier, default 0.25, greater than zero and at most 0.5. Larger values return INVALID_PARAMS; pixel-area limits may reduce actual dimensions, reported as width and height."
8339
10062
  },
8340
10063
  {
8341
10064
  "name": "revision",
@@ -8527,7 +10250,7 @@ export const operations = [
8527
10250
  "resource": "cut.projects",
8528
10251
  "method": "execute",
8529
10252
  "summary": "Execute editing script",
8530
- "description": "Edit the current timeline atomically using synchronous JavaScript source. Read state or timeline first, then pass its revision as expected_revision to detect concurrent changes. Use AddTrack, Insert, Update, Delete, Split, Trim, Move, RippleDeleteRange, UpdateTrack, DeleteTrack, SetSettings, AddCaptionsFromTranscript and SetMarker for writes; GetTimeline, GetItem, FindItems, GetMedia, GetTranscript and GetAnalysis read editing context; Print emits text and Preview requests frame previews. All script times are seconds; script object fields use camelCase, for example `media: {libraryId, assetId}`. Unlike Shotstack, execute applies script edits to a persistent project in one transaction. Provide script or a saved edit_id with literal edits, never both; failures roll back writes. A revision conflict while preparing the response may follow a committed edit: retrieve state before retrying. Minimal script after creating a project:\n\n```js\nconst t = AddTrack(\"video\");\nInsert(t, {type: \"color\", color: \"#123456\", start: 0, length: 3});\nPrint(t);\n```",
10253
+ "description": "Edit the current timeline atomically using synchronous JavaScript source. Read state or timeline first, then pass its revision as expected_revision to detect concurrent changes. Unlike Shotstack, execute applies script edits to a persistent project in one transaction. Provide script or a saved edit_id with literal edits, never both; failures roll back writes. A revision conflict while preparing the response may follow a committed edit: retrieve state before retrying. Minimal script after creating a project: `const t = AddTrack(\"video\"); Insert(t, {type: \"color\", color: \"#123456\", start: 0, length: 3}); Print(t);`\n\n### Script function reference\n\nFunctions are synchronous globals; do not import them. `project` is the current project ID. TrackId and ClipId are strings returned by AddTrack and Insert or read from GetTimeline. JoinId is the string returned by Join or read from GetTimeline().joins. Reads see earlier writes in the same script.\n\n```ts\nGetTimeline(o?: { from?: number; to?: number; tracks?: TrackId[] }): TimelineView;\nGetItem(id: ClipId): ItemView;\nFindItems<T>(visit: (item: ItemView, ctx: { track: TrackView; index: number }) => T | undefined): T[];\nGetMedia(ref: MediaRef): MediaInfo;\nGetTranscript(ref: MediaRef, o?: { from?: number; to?: number }): Word[];\nGetAnalysis(ref: MediaRef, kind: AnalysisKind): Segment[];\nListTransitions(): TransitionInfo[];\nListFonts(): { family: string; weights: number[]; scripts: (\"latin\"|\"cjk\")[]; source: \"bundled\"|\"catalog\" }[];\nInsert(track: TrackId, item: ItemInit, o?: { ripple?: boolean }): ClipId;\nUpdate(id: ClipId, patch: ItemPatchView): void;\nSetSpeed(id: ClipId, rate: number, o: { keep: \"source\" | \"duration\"; ripple?: boolean }): { length: number; sourceOut: number };\nDelete(id: ClipId, o?: { ripple?: boolean }): void;\nJoin(left: ClipId, right: ClipId, o: { length?: number; effect: TransitionInput }): JoinId;\nUpdateJoin(id: JoinId, patch: { length?: number; effect?: TransitionInput }): void;\nDeleteJoin(id: JoinId): void;\nSplit(id: ClipId, at: number): ClipId;\nTrim(id: ClipId, edge: \"in\" | \"out\", delta: number, o?: { ripple?: boolean }): void;\nMove(id: ClipId, start: number, track?: TrackId): void;\nRippleDeleteRange(from: number, to: number, tracks?: TrackId[]): void;\nAddTrack(kind: \"video\" | \"audio\" | \"caption\", init?: { name?: string }, index?: number): TrackId;\nUpdateTrack(id: TrackId, patch: TrackPatch): void;\nDeleteTrack(id: TrackId): void;\nSetSettings(patch: Partial<ProjectSettingsView>): void;\nAddCaptionsFromTranscript(track: TrackId, source: ClipId, o?: { style?: Partial<CaptionStyle>; maxChars?: number }): ClipId[];\nSetMarker(at: number, label: string): string;\nPrint(...values: unknown[]): void;\nPreview(at: number[]): void;\n```\n\n| Functions | Behavior and arguments |\n| --- | --- |\n| GetTimeline, GetItem | Read compact item views: id, track, type, start, end, length, optional media, playback, sourceIn/sourceOut, text and offline reason. GetTimeline returns duration, tracks (id, kind, name, index, locked, items), and joins (id, track, left, right, length in seconds, normalized effect). from/to and tracks narrow the items and joins; joins are selected by their overlap window. |\n| ListTransitions | Discover the shared validation catalog: each entry contains kind (effect ID), name, description and params. Each parameter has name, type (enum/number/integer), default, description, enum values or numeric min/max. Use the returned kind and parameter names inside effect. |\n| FindItems | Visit items with their track and index; return undefined to omit an item, any other value to collect it. |\n| GetMedia | Read metadata for `{libraryId, assetId}` in a bound library: kind, dimensions, fps, hasAudio and durationUs when available. durationUs is microseconds. |\n| GetTranscript, GetAnalysis | Read available transcript words or silence/filler/scenes segments. Transcript filter from/to is seconds; returned word and segment from/to values are source microseconds (divide by 1,000,000 for editing). Words contain text and optional speaker/filler; segments may include label/confidence. Request analysis first if unavailable. |\n| Insert, Update, Delete | Insert returns the new clip ID; Update changes supplied fields; Delete removes the clip. Optional ripple on Insert/Delete closes or opens space on the track. |\n| SetSpeed | Change video/audio rate in 0.25–4; keep is required. source preserves consumed source and changes length, duration preserves output length. Returns actual length and sourceOut in seconds. Optional ripple explicitly shifts same-track followers when keeping source; otherwise overlaps are rejected. |\n| Join, UpdateJoin, DeleteJoin | Join creates an overlap between two butt-adjacent visual clips on the same track and returns its ID. length defaults to 0.5 seconds; effect is required. The right clip and all same-track followers move left by length, shortening that track and potentially the project. UpdateJoin moves those followers by the difference in length; omitted fields are preserved. DeleteJoin moves them right to restore the butt cut. Other tracks stay in place. |\n| Split, Trim, Move | Split at a timeline position and return the new right-hand clip ID. Trim changes the in or out edge by delta seconds. Move sets the timeline start and optionally a new track. |\n| RippleDeleteRange | Delete a timeline interval and close its gap on the specified tracks, or all unlocked tracks when omitted. |\n| AddTrack, UpdateTrack, DeleteTrack | Add video/audio/caption tracks; index selects layer order (0 is top). TrackPatch supports name, locked, hidden, muted, gainDb and style as appropriate to track kind. |\n| SetSettings | Supply any of width/height (pixels), fps (frames per second), background (color). |\n| AddCaptionsFromTranscript | Create captions from an audio/video clip's kept words. Optional maxChars is 1–1000, default 16; style updates the caption track. Returns caption IDs. |\n| SetMarker | Add a label at a timeline time and return its ID. |\n| Print, Preview | Print appends text to prints. Preview requests up to eight times total per execute and puts images in the result's frames. Each url is an inline PNG data URL, not an HTTP image link. Decode the base64 payload to save an image. Codemode returns at most four images per call; request at most four times there. |\n\n#### Joins between clips\n\nEndpoints may be video, image, text, color or shape; audio and caption are rejected. Require 0 < length < each endpoint's length. Each clip allows at most one incoming and one outgoing join; their summed lengths cannot exceed its length. Three-input overlaps, nonadjacent endpoints and cross-track joins are rejected with OPS_REJECTED. Read the rejection's code and message, shorten or remove conflicting joins, and retry the saved edit.\n\nTransitionInput is an object with kind plus the parameters returned by ListTransitions; omitted parameters use catalog defaults. Unknown kinds and invalid parameters return INVALID_TRANSITION_PARAM with available parameters. Effects: dissolve; dip color black/white default black; push and wipe direction left/right/up/down default left; wipe softness 0–1 default 0; iris centerX/centerY 0–1 default 0.5; blinds integer count 2–64 default 8 and orientation vertical/horizontal default vertical; blur radius 0–100 pixels at 1080-pixel frame height default 24; zoom direction in/out default in, amount 0.1–3 default 1, blur 0–1 default 0.5; clock direction clockwise/counterclockwise default clockwise, startAngle 0–360 degrees default 0 (twelve o'clock), softness 0–1 default 0; flash color white/black default white, intensity 0–1 default 1. Zoom blur uses up to eight radial samples per shot and is slower on server rendering. Join options and UpdateJoin patches accept only length and effect. Effect updates replace the effect object and apply defaults for omitted parameters.\n\nMinimal example on an existing visual track with adjacent clips left and right: `Print(ListTransitions()); const j = Join(left, right, {length: 0.5, effect: {kind: \"dissolve\"}}); Print(GetTimeline().joins); Preview([GetItem(right).start + 0.25]);` Use `UpdateJoin(j, {length: 0.8})` to adjust it in a later edit or `DeleteJoin(j)` to restore the cut. Preview uses server-rendered frames and includes joins. Per-clip transitionIn/transitionOut remain separate entrance/exit effects.\n\n#### Insert fields (ItemInit)\n\nEvery item requires `type` and `start`. Times used for editing are seconds and snap to the project frame rate: start, length, sourceIn, fadeIn/fadeOut, transition length, keyframe at, reveal delay/stagger/duration. Keyframe and reveal times are relative to the clip start. Video/audio may omit length to use the remaining source duration; other types require length.\n\n| type | Required fields beyond type/start | Optional fields |\n| --- | --- | --- |\n| video | media | length, sourceIn, playback, volumeDb, transform, fit, animate, transitionIn, transitionOut |\n| image | media, length | transform, fit, animate, transitionIn, transitionOut |\n| text | text, length | style, transform, reveal, animate, transitionIn, transitionOut |\n| color | color, length | transform, fill, animate, transitionIn, transitionOut |\n| shape | shape, length, width, height, fill | radius, stroke, transform, animate, transitionIn, transitionOut |\n| audio | media | length, sourceIn, playback, volumeDb, fadeIn, fadeOut |\n| caption | text, length | — |\n\nVideo tracks accept video/image/text/color/shape; audio and caption tracks accept their corresponding type. Media is `{libraryId: string, assetId: string}` from a bound library. sourceIn defaults to 0, volumeDb to 0 dB, audio fades to 0 seconds. fit defaults to contain: contain fits the whole image, cover fills and crops, fill stretches, none keeps native dimensions.\n\n| Field | Value |\n| --- | --- |\n| transform | Partial `{x, y, scale, rotation, opacity, crop, blur}`. x/y are normalized canvas center coordinates (default 0.5); scale 1 is fitted size; rotation is degrees (default 0); opacity is 0–1 (default 1). crop is `{top,right,bottom,left}`. blur is 0–100 pixels at 1080-pixel frame height. |\n| style | Partial `{fontFamily, fontSize, fontWeight, color, fill, stroke, strokes, shadows, glow, background, align, maxWidth, position, margin}`. fill accepts a color or linear/radial gradient across the entire text bounding box. strokes draw outside to inside; at most 4, width 0–40. shadows accepts at most 4 `{color,x,y,blur}` entries; blur is 0–100. glow is `{color,radius,strength}` with radius 0–100 and strength 0–1. All dimensions use pixels at 1080 frame height and scale with the text. Glow and large shadow blur increase render time. Invalid colors or ranges return actionable INVALID_STYLE errors. `ListFonts()` discovers family, available weights, scripts and bundled/catalog source. Text and captions share the style fields; caption style additionally supports highlightColor and maxLines: 2. |\n| animate | An object keyed by x, y, scale, rotation, opacity or blur. Each value is an array of `{at: number, value: number, ease?: Ease}` sorted by at with distinct frame-snapped times. Values hold before the first and after the last keyframe, overriding the static transform. |\n| Ease | linear, in, out, inOut, `{bezier: [x1,y1,x2,y2]}` or `{spring: {stiffness, damping, mass?}}`. Easing shapes the segment arriving at that keyframe; springs may overshoot. |\n| reveal | `{by, delay?: number, stagger: number, duration: number, from: {y?, opacity?, scale?, blur?}, ease?: Ease}`. by selects char, word or line. Unit k starts at delay + k * stagger and takes duration seconds to reach its resting state; from.y is a fraction of font size. |\n| fill | A color string (#RRGGBB or #RRGGBBAA), `{linear: {angle, stops: [{at,color}, ...]}}` or `{radial: {stops: [{at,color}, ...]}}`. Stop positions are 0–1; angle is degrees, 0 left to right. On color clips, fill replaces color when supplied. |\n| shape, width, height, radius, stroke | shape is rect or ellipse. width/height are fractions of canvas width/height before scaling. radius rounds rect corners in pixels at 1080-pixel frame height. stroke is `{color: string, width: number}`. |\n| transitionIn, transitionOut | `{kind, length: number}` at the clip's beginning/end. length is seconds. fade changes opacity; dissolve blends; push_left/push_right move horizontally; wipe_left reveals horizontally. |\n\n#### Update fields (ItemPatchView)\n\nAll fields are optional; use only fields relevant to the item's type. Supported fields: start, length, sourceIn, playback, volumeDb, transform, fit, text, style, color, fadeIn, fadeOut, animate, reveal, fill, stroke, shape, width, height, radius, transitionIn, transitionOut. Values and units match Insert. Set animate, reveal, fill, stroke, transitionIn or transitionOut to null to remove that effect; omitting a field preserves it. For example: `Update(id, {volumeDb: -12})` or `Update(id, {transitionIn: null})`.\n\n#### Speed, reverse and freeze\n\nVideo/audio Insert and Update accept playback as `{kind: \"rate\", rate: number, direction: \"forward\" | \"reverse\", audio: \"preservePitch\" | \"resample\" | \"mute\"}` or `{kind: \"freeze\"}`. Rate is finite and inclusive 0.25–4. Omitted playback defaults to 1× forward with preservePitch; supply the complete rate object when changing playback. preservePitch keeps pitch, resample changes pitch with speed, mute removes audio. Reverse requires explicit audio: \"mute\"; preservePitch/resample are rejected with UNSUPPORTED_PLAYBACK rather than silently muted. Freeze holds sourceIn and is silent. GetItem/GetTimeline echo playback and the source interval in seconds; sourceOut is exclusive even for reverse and equals sourceIn for freeze.\n\nUpdate of playback keeps output length unless length is also supplied. SetSpeed preserves direction/audio, rejects frozen and non-video/audio clips, and requires keep: \"source\" or \"duration\". keep: \"source\" computes round(consumed source / new rate × fps) frames, falling back to floor if rounding would exceed the source end; the returned length/sourceOut are actual frame-rounded seconds. keep: \"duration\" keeps output length and changes source consumption. Length conflicts fail with OVERLAP; move/shorten the conflicting clip, keep duration, or explicitly use ripple: true to shift following clips on the same track. Source overflow fails with OUT_OF_SOURCE; rate limits fail with RATE_OUT_OF_RANGE. Unknown playback fields and SetSpeed options are rejected with UNKNOWN_FIELD; options only accept keep and boolean ripple.\n\nExample for an existing four-second video/audio clip id: `Print(SetSpeed(id, 0.5, {keep: \"source\"})); Print(SetSpeed(id, 2, {keep: \"source\"}));` returns lengths 8 then 2, keeping the same source interval. Reverse: `Update(id, {playback: {kind: \"rate\", rate: 1, direction: \"reverse\", audio: \"mute\"}})`. Freeze: `Update(id, {playback: {kind: \"freeze\"}})`. Ensure enough source remains for the chosen length/rate. Browser reverse playback currently displays a placeholder; server-rendered Preview/frames and exports support reverse normally. Speed-adjusted audio is generated asynchronously after the edit transaction commits; exports wait for that audio before rendering.\n\n#### Script names versus HTTP response names\n\nUse camelCase inside scripts, including nested objects. HTTP request/response JSON outside script source uses snake_case. Map media.library_id → media.libraryId, media.asset_id → media.assetId, source_in → sourceIn, volume_db → volumeDb, fade_in/fade_out → fadeIn/fadeOut, transition_in/transition_out → transitionIn/transitionOut, font_family/font_size/font_weight/max_width → fontFamily/fontSize/fontWeight/maxWidth, gain_db → gainDb, highlight_color/max_lines → highlightColor/maxLines. Fields such as animate, reveal, fill, stroke, at and length retain their spelling. GetTimeline/GetItem already return camelCase compact views; the expanded retrieveTimeline HTTP response is not an Insert object.\n\nUnrecognized script fields fail with OPS_REJECTED and rejection code UNKNOWN_FIELD; snake_case mistakes suggest the corresponding camelCase name. The error message lists each rejection's #opIndex, code and reason. Correct the named fields and retry the saved edit; do not assume an ignored field applied an effect.\n",
8531
10254
  "http": "POST",
8532
10255
  "path": "/cut/v1/projects/{project_id}:execute",
8533
10256
  "streaming": "no",
@@ -9616,7 +11339,7 @@ export const operations = [
9616
11339
  "resource": "file.files",
9617
11340
  "method": "create",
9618
11341
  "summary": "Upload file",
9619
- "description": "Upload a file to reuse in conversations or attach to a knowledge base. Unlike OpenAI Files, uploads must be nonempty and at most 100000000 bytes, and only user_data and vision purposes are accepted. Send file bytes as a multipart file part, not a filename or file ID; in the SDK use a File or Blob, for example new File([\"Return within 23 days.\"], \"policy.txt\", { type: \"text/plain\" }). Content determines the MIME type. Supported uploads include PDF, DOCX/XLSX/PPTX, PNG/JPEG/GIF/WebP, MP3/WAV/FLAC/OGG/M4A, MP4/WebM, and UTF-8 JSON/NDJSON/CSV/Markdown/plain text; empty, unsupported, oversized files and unsupported purposes return 400. Use Uploads for larger files. The purpose vision accepts only PNG, JPEG, GIF and WebP, while conversation images require user_data. The returned ID belongs to your tenant; upload alone does not ingest the file into Knowledge. Knowledge attachment has a lower limit of 100000000 bytes. Optionally set expires_after[anchor]=created_at with expires_after[seconds] (3600–7776000). Without expiry, the file persists until deleted.",
11342
+ "description": "Upload a file to reuse in conversations or attach to a knowledge base. Unlike OpenAI Files, uploads must be nonempty and at most 100000000 bytes, and only user_data, assistants and vision purposes are accepted. Send file bytes as a multipart file part, not a filename or file ID; in the SDK use a File or Blob, for example new File([\"Return within 23 days.\"], \"policy.txt\", { type: \"text/plain\" }). Content determines the MIME type. Supported uploads include PDF, DOCX/XLSX/PPTX, PNG/JPEG/GIF/WebP, MP3/WAV/FLAC/OGG/M4A, MP4/WebM, and UTF-8 JSON/NDJSON/CSV/Markdown/plain text; empty, unsupported, oversized files and unsupported purposes return 400. Use Uploads for larger files. The purpose vision accepts only PNG, JPEG, GIF and WebP, while conversation images require user_data. The returned ID belongs to your tenant; upload alone does not ingest the file into Knowledge. Knowledge attachment has a lower limit of 100000000 bytes. Optionally set expires_after[anchor]=created_at with expires_after[seconds] (3600–7776000). Without expiry, the file persists until deleted.",
9620
11343
  "http": "POST",
9621
11344
  "path": "/file/v1/files",
9622
11345
  "streaming": "no",
@@ -9638,10 +11361,11 @@ export const operations = [
9638
11361
  "type": "string",
9639
11362
  "enum": [
9640
11363
  "user_data",
11364
+ "assistants",
9641
11365
  "vision"
9642
11366
  ],
9643
11367
  "required": true,
9644
- "description": "Purpose label stored with the file: user_data or vision. The vision purpose accepts only PNG, JPEG, GIF and WebP images. Conversation image references require user_data."
11368
+ "description": "Purpose label stored with the file: user_data, assistants or vision. The label is stored and returned unchanged; assistants follows the same rules as user_data. The vision purpose accepts only PNG, JPEG, GIF and WebP images. Conversation image references require user_data."
9645
11369
  },
9646
11370
  {
9647
11371
  "name": "expires_after",
@@ -9710,7 +11434,7 @@ export const operations = [
9710
11434
  "resource": "file.files.contentLinks",
9711
11435
  "method": "revoke",
9712
11436
  "summary": "Revoke a file content link",
9713
- "description": "Stop a previously issued content link from reading a file. Obtain the link with files.contentUrl.create. Use file_id from file creation or listing and the token path component from a content URL (/c/<token>), not the complete URL. The caller must own the file and have write access; a read-only binding is refused. Revocation propagates through the capability deny list within 30 seconds; the file and other links remain available. Only current IAM capability tokens can be revoked; legacy content links expire at the migration deadline. Example body: {\"token\":\"<token from /c/>\"}.",
11437
+ "description": "Stop a previously issued content link from reading a file. Obtain the link with files.contentUrl.create. Use file_id from file creation or listing and the token path component from a content URL (/c/<token>), not the complete URL. The caller must own the file and have write access; a read-only binding is refused. Revocation propagates through the capability deny list within 15 minutes; the file and other links remain available. Only current IAM capability tokens can be revoked; legacy content links expire at the migration deadline. Example body: {\"token\":\"<token from /c/>\"}.",
9714
11438
  "http": "POST",
9715
11439
  "path": "/file/v1/files/{file_id}/content_links:revoke",
9716
11440
  "streaming": "no",
@@ -9739,7 +11463,7 @@ export const operations = [
9739
11463
  "resource": "file.files.contentUrl",
9740
11464
  "method": "create",
9741
11465
  "summary": "Create a download URL",
9742
- "description": "Download a file's bytes to a local disk from a coding agent without sending them through the model. Use file_id from file creation or listing, then run curl -fsSL -o <filename> '<url>' locally with the returned URL; GET needs no Authorization header. The link is reusable until expiry and supports a single byte Range (for example Range: bytes=0-9 returns 206). Revoke it with files.contentLinks.revoke, passing the token after /c/ in the URL. Expired, revoked, invalid or cross-organization URLs return 404. Lifetime defaults to 3600 seconds and is at most 604800 seconds. Issuance requires the same credential and file-read access as files.retrieveContent; a processing file returns 409 FILE_NOT_READY, so poll files.retrieve until active before retrying. A missing, expired or other-organization file returns 404. Each issuance creates a new link. OpenAI Files has no signed download URL; this follows S3 presigned GET semantics. Example body: {\"ttl_seconds\":3600}.",
11466
+ "description": "Download a file's bytes to a local disk from a coding agent without sending them through the model. Use file_id from file creation or listing, then run curl -fsSL -o <filename> '<url>' locally with the returned URL; GET needs no Authorization header. The link is reusable until expiry and supports a single byte Range (for example Range: bytes=0-9 returns 206). Revoke it with files.contentLinks.revoke, passing the token after /c/ in the URL. Expired, revoked, invalid or cross-organization URLs return 404. Lifetime defaults to 900 seconds and is at most 604800 seconds. Issuance requires the same credential and file-read access as files.retrieveContent; a processing file returns 409 FILE_NOT_READY, so poll files.retrieve until active before retrying. A missing, expired or other-organization file returns 404. Each issuance creates a new link. OpenAI Files has no signed download URL; this follows S3 presigned GET semantics. Example body: {\"ttl_seconds\":3600}.",
9743
11467
  "http": "POST",
9744
11468
  "path": "/file/v1/files/{file_id}/content_url",
9745
11469
  "streaming": "no",
@@ -9759,7 +11483,7 @@ export const operations = [
9759
11483
  "name": "ttl_seconds",
9760
11484
  "type": "integer",
9761
11485
  "required": false,
9762
- "description": "Download link lifetime in seconds, from 1 through 604800; omitted means 3600. This does not change the file's own expiry."
11486
+ "description": "Download link lifetime in seconds, from 1 through 604800; omitted means 900. This does not change the file's own expiry."
9763
11487
  }
9764
11488
  ]
9765
11489
  }
@@ -9768,7 +11492,7 @@ export const operations = [
9768
11492
  "resource": "file.uploads",
9769
11493
  "method": "create",
9770
11494
  "summary": "Create an upload",
9771
- "description": "Start a multipart upload for a file larger than the 100000000-byte direct-upload limit. Supply the exact byte length, filename, MIME type and purpose. Unlike OpenAI, uploads accept at most 2 GiB (2147483648 bytes) and only user_data and vision purposes. Add parts of at most 64000000 bytes and complete within one hour. Optional part_size enables fixed-size, retryable parts. expires_after applies to the resulting file (3600–7776000 seconds on this own face); without it the file persists until deleted.",
11495
+ "description": "Start a multipart upload for a file larger than the 100000000-byte direct-upload limit. Supply the exact byte length, filename, MIME type and purpose. Unlike OpenAI, uploads accept at most 2 GiB (2147483648 bytes) and only user_data, assistants and vision purposes. Add parts of at most 64000000 bytes and complete within one hour. Optional part_size enables fixed-size, retryable parts. expires_after applies to the resulting file (3600–7776000 seconds on this own face); without it the file persists until deleted.",
9772
11496
  "http": "POST",
9773
11497
  "path": "/file/v1/uploads",
9774
11498
  "streaming": "no",
@@ -9801,10 +11525,11 @@ export const operations = [
9801
11525
  "type": "string",
9802
11526
  "enum": [
9803
11527
  "user_data",
11528
+ "assistants",
9804
11529
  "vision"
9805
11530
  ],
9806
11531
  "required": true,
9807
- "description": "Use user_data for conversation attachments, or vision for PNG, JPEG, GIF and WebP images."
11532
+ "description": "Use user_data for conversation attachments, assistants for assistant files, or vision for PNG, JPEG, GIF and WebP images."
9808
11533
  },
9809
11534
  {
9810
11535
  "name": "expires_after",
@@ -9858,10 +11583,11 @@ export const operations = [
9858
11583
  "type": "string",
9859
11584
  "enum": [
9860
11585
  "user_data",
11586
+ "assistants",
9861
11587
  "vision"
9862
11588
  ],
9863
11589
  "required": false,
9864
- "description": "user_data stores ordinary files and conversation images; vision accepts PNG, JPEG, GIF or WebP images only. Omitted means user_data."
11590
+ "description": "user_data and assistants store ordinary files and conversation images with their original purpose label; vision accepts PNG, JPEG, GIF or WebP images only. Omitted means user_data."
9865
11591
  },
9866
11592
  {
9867
11593
  "name": "expires_in",
@@ -10024,7 +11750,7 @@ export const operations = [
10024
11750
  "resource": "knowledge.vectorStores",
10025
11751
  "method": "create",
10026
11752
  "summary": "Create knowledge base",
10027
- "description": "Create a knowledge base, optionally starting ingestion of uploaded file_ids in the same call; no separate attachment or batch is needed for those files. Use the returned id with vectorStores.files.retrieve to poll each attachment until completed, failed or cancelled; store status=completed alone does not mean every file succeeded. Each file accepts up to 52428800 bytes and 5000000 estimated tokens; each account holds up to 100 active/nondeleted stores. Minimal body: {\"name\":\"Refund policies\"}.",
11753
+ "description": "Create a knowledge base, optionally starting ingestion of uploaded file_ids in the same call; no separate attachment or batch is needed for those files. Use the returned id with vectorStores.files.retrieve to poll each attachment until completed, failed or cancelled; store status=completed alone does not mean every file succeeded. PDF files accept up to 536870912 bytes (512 MiB), while other formats accept up to 52428800 bytes (50 MiB), constrained by Router conversion; every file is limited to 5000000 estimated tokens; each account holds up to 100 active/nondeleted stores. Minimal body: {\"name\":\"Refund policies\"}.",
10028
11754
  "http": "POST",
10029
11755
  "path": "/knowledge/v1/vector_stores",
10030
11756
  "streaming": "no",
@@ -10063,7 +11789,7 @@ export const operations = [
10063
11789
  "name": "chunking_strategy",
10064
11790
  "type": "object",
10065
11791
  "required": false,
10066
- "description": "auto resolves to static with 800 estimated tokens and 400 overlap tokens. Unlike OpenAI vector stores, token counts are estimates; each Han character counts as one, and other whitespace-delimited words count as their UTF-16 length divided by four, rounded up."
11792
+ "description": "Native attachment strategy. auto uses static chunks of 800 estimated tokens with 400 overlap; static supplies explicit chunk sizes; hierarchical indexes child chunks and supplies bounded parent context. Existing attachments are reused unchanged; remove and reattach a file to change its strategy."
10067
11793
  },
10068
11794
  {
10069
11795
  "name": "description",
@@ -10410,7 +12136,7 @@ export const operations = [
10410
12136
  "resource": "knowledge.vectorStores.files",
10411
12137
  "method": "create",
10412
12138
  "summary": "Add file",
10413
- "description": "Attach an uploaded File for asynchronous ingestion, then poll this attachment until status is completed, failed or cancelled before searching. Each file accepts up to 52428800 bytes and 5000000 estimated tokens; chunk sizes use estimated tokens rather than a model tokenizer. Text, Markdown, CSV, JSON, HTML, PDF, DOCX, PPTX, XLSX and PNG/JPEG/GIF/WebP images can be extracted; audio and video uploads are not knowledge documents. Images may yield generated descriptions rather than verbatim OCR. auto chunking resolves to static 800/400; explicit sizes are 100–4096 with overlap at most half the size. Each store holds at most 10000 attached files. Reattaching the same file returns its existing record without applying new attributes or chunking; inspect last_error after failure.",
12139
+ "description": "Attach an uploaded File for asynchronous ingestion, then poll this attachment until status is completed, failed or cancelled before searching. PDF files accept up to 536870912 bytes (512 MiB), while other formats accept up to 52428800 bytes (50 MiB), constrained by Router conversion; every file is limited to 5000000 estimated tokens; chunk sizes use estimated tokens rather than a model tokenizer. Text, Markdown, CSV, JSON, HTML, PDF, DOCX, PPTX, XLSX and PNG/JPEG/GIF/WebP images can be extracted; audio and video uploads are not knowledge documents. Images may yield generated descriptions rather than verbatim OCR. auto chunking resolves to static 800/400; explicit sizes are 100–4096 with overlap at most half the size. Each store holds at most 10000 attached files. Reattaching the same file returns its existing record without applying new attributes or chunking; inspect last_error after failure.",
10414
12140
  "http": "POST",
10415
12141
  "path": "/knowledge/v1/vector_stores/{vector_store_id}/files",
10416
12142
  "streaming": "no",
@@ -10442,7 +12168,7 @@ export const operations = [
10442
12168
  "name": "chunking_strategy",
10443
12169
  "type": "object",
10444
12170
  "required": false,
10445
- "description": "auto resolves to static with 800 estimated tokens and 400 overlap tokens. Unlike OpenAI vector stores, token counts are estimates; each Han character counts as one, and other whitespace-delimited words count as their UTF-16 length divided by four, rounded up."
12171
+ "description": "Native attachment strategy. auto uses static chunks of 800 estimated tokens with 400 overlap; static supplies explicit chunk sizes; hierarchical indexes child chunks and supplies bounded parent context. Existing attachments are reused unchanged; remove and reattach a file to change its strategy."
10446
12172
  }
10447
12173
  ]
10448
12174
  }
@@ -10753,7 +12479,7 @@ export const operations = [
10753
12479
  "resource": "media.libraries",
10754
12480
  "method": "list",
10755
12481
  "summary": "List libraries",
10756
- "description": "List libraries owned by the caller, newest first. By default, deleting and deleted libraries are excluded; use status=deleting to find libraries awaiting purge. All supplied label pairs must match.",
12482
+ "description": "Read a caller-owned library’s current settings, usage and lifecycle status. A deleting library remains readable; missing, foreign or purged libraries return LIBRARY_NOT_FOUND.",
10757
12483
  "http": "GET",
10758
12484
  "path": "/media/v1/libraries",
10759
12485
  "streaming": "no",
@@ -10835,7 +12561,7 @@ export const operations = [
10835
12561
  "resource": "media.libraries",
10836
12562
  "method": "delete",
10837
12563
  "summary": "Delete library",
10838
- "description": "Soft-delete an active library, returning its deleting status and purge_at deadline. Asset operations and delivery become unavailable; the library can be restored before purge_at. Repeated deletion while deleting returns the current library.",
12564
+ "description": "Restore a deleting library before its purge_at deadline. The library becomes active again and deleted_at and purge_at are cleared; expired or non-deleting libraries cannot be restored.",
10839
12565
  "http": "DELETE",
10840
12566
  "path": "/media/v1/libraries/{library_id}",
10841
12567
  "streaming": "no",
@@ -10853,7 +12579,7 @@ export const operations = [
10853
12579
  "resource": "media.libraries",
10854
12580
  "method": "retrieve",
10855
12581
  "summary": "Get library",
10856
- "description": "Read a caller-owned library’s current settings, usage and lifecycle status. A deleting library remains readable; missing, foreign or purged libraries return LIBRARY_NOT_FOUND.",
12582
+ "description": "Update an active library’s supplied settings. Labels replace the complete map; understanding settings and model roles merge with current values. Changing the embedding model is rejected while assets exist.",
10857
12583
  "http": "GET",
10858
12584
  "path": "/media/v1/libraries/{library_id}",
10859
12585
  "streaming": "no",
@@ -10871,7 +12597,7 @@ export const operations = [
10871
12597
  "resource": "media.libraries",
10872
12598
  "method": "update",
10873
12599
  "summary": "Update library",
10874
- "description": "Update an active library’s supplied settings. Labels replace the complete map; understanding settings and model roles merge with current values. Changing the embedding model is rejected while assets exist.",
12600
+ "description": "Update an active library. Set hotwords for spelling evidence in subsequent transcripts; [] disables inferred vocabulary. Transcript understanding calls the timestamped ASR, optional reference ASR and correction model through the existing metered model path. Reprocess assets to apply new settings to existing transcripts.",
10875
12601
  "http": "PATCH",
10876
12602
  "path": "/media/v1/libraries/{library_id}",
10877
12603
  "streaming": "no",
@@ -10887,6 +12613,13 @@ export const operations = [
10887
12613
  "body": {
10888
12614
  "required": true,
10889
12615
  "fields": [
12616
+ {
12617
+ "name": "hotwords",
12618
+ "type": "array",
12619
+ "itemType": "string",
12620
+ "required": false,
12621
+ "description": "Correction vocabulary, at most 200 nonblank terms of at most 32 Unicode characters each. Omitted on an unconfigured library: correction derives up to 200 distinct names from the library name and every folder level, excluding generic names such as 原始素材 and 混剪成品. An explicit empty array disables this vocabulary. Updating affects subsequent understanding and explicit reprocessing, not existing results."
12622
+ },
10890
12623
  {
10891
12624
  "name": "models",
10892
12625
  "type": "object",
@@ -10918,7 +12651,7 @@ export const operations = [
10918
12651
  "resource": "media.libraries.assets",
10919
12652
  "method": "list",
10920
12653
  "summary": "List assets",
10921
- "description": "List assets in an active library, newest first, optionally filtering by exact folder and stored resource type. Continue using next_cursor; video includes audio-only assets.",
12654
+ "description": "Upload content into an active library and return a Cloudinary-compatible resource. Use file for a multipart file, data URI, public HTTPS URL or same-owner file identifier. Reusing public_id overwrites by default; overwrite=false returns the existing resource. Chunk uploads require both chunk headers.",
10922
12655
  "http": "GET",
10923
12656
  "path": "/media/v1/libraries/{library_id}/assets",
10924
12657
  "streaming": "no",
@@ -10966,7 +12699,7 @@ export const operations = [
10966
12699
  "resource": "media.libraries.assets",
10967
12700
  "method": "create",
10968
12701
  "summary": "Upload asset",
10969
- "description": "Upload content into an active library and return a Cloudinary-compatible resource. Use file for a multipart file, data URI, public HTTPS URL or same-owner file identifier. Reusing public_id overwrites by default; overwrite=false returns the existing resource. Chunk uploads require both chunk headers.",
12702
+ "description": " For understanding, Media generates proxies for video sources of 25 MB or more and audio-only sources of 100 MB or more; originals remain available unchanged. The duration limit is 10 minutes. A video proxy still above 95 MB after recompression, or a source exceeding the duration limit, is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.",
10970
12703
  "http": "POST",
10971
12704
  "path": "/media/v1/libraries/{library_id}/assets",
10972
12705
  "streaming": "no",
@@ -11011,7 +12744,7 @@ export const operations = [
11011
12744
  "name": "asset_folder",
11012
12745
  "type": "string",
11013
12746
  "required": false,
11014
- "description": "Organizational folder path, separate from public_id. Empty selects the root; leading or trailing slashes, empty path segments, and . or .. segments are rejected."
12747
+ "description": "Organizational folder path, separate from public_id. Empty selects the root; leading or trailing slashes, empty path segments, and . or .. segments are rejected. New path segments containing U+FFFD or consisting only of question marks are rejected with INVALID_PARAMS; send UTF-8 names. Existing affected folders remain readable and assets can be moved out."
11015
12748
  },
11016
12749
  {
11017
12750
  "name": "use_filename",
@@ -11090,7 +12823,7 @@ export const operations = [
11090
12823
  "resource": "media.libraries.assets.import",
11091
12824
  "method": "create",
11092
12825
  "summary": "Import file",
11093
- "description": "Copy source content into an active library using upload options and return the full native Asset. The imported asset is independent of the source after copying. Reusing public_id follows overwrite semantics.",
12826
+ "description": "Copy a File into an independent Media asset. New assets default to organization-private delivery (type=authenticated); explicitly set type=upload for public originals and derivatives. Omitting type on overwrite preserves the current type. Deleting the source File does not delete this copy. For understanding, Media generates proxies for video sources of 25 MB or more and audio-only sources of 100 MB or more; originals remain available unchanged. The duration limit is 10 minutes. A video proxy still above 95 MB after recompression, or a source exceeding the duration limit, is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.",
11094
12827
  "http": "POST",
11095
12828
  "path": "/media/v1/libraries/{library_id}/assets/import",
11096
12829
  "streaming": "no",
@@ -11110,7 +12843,7 @@ export const operations = [
11110
12843
  "name": "file_id",
11111
12844
  "type": "string",
11112
12845
  "required": true,
11113
- "description": "File ID to copy into this library instead of file bytes. This independent copy defaults to public delivery; set type=authenticated for private delivery. Deleting the source File does not delete this asset."
12846
+ "description": "File ID to copy into this library instead of file bytes. This independent copy defaults to organization-private delivery (type=authenticated); explicitly set type=upload for public delivery. Deleting the source File does not delete this asset."
11114
12847
  },
11115
12848
  {
11116
12849
  "name": "public_id",
@@ -11134,7 +12867,7 @@ export const operations = [
11134
12867
  "name": "asset_folder",
11135
12868
  "type": "string",
11136
12869
  "required": false,
11137
- "description": "Organizational folder path, separate from public_id. Empty selects the root; leading or trailing slashes, empty path segments, and . or .. segments are rejected."
12870
+ "description": "Organizational folder path, separate from public_id. Empty selects the root; leading or trailing slashes, empty path segments, and . or .. segments are rejected. New path segments containing U+FFFD or consisting only of question marks are rejected with INVALID_PARAMS; send UTF-8 names. Existing affected folders remain readable and assets can be moved out."
11138
12871
  },
11139
12872
  {
11140
12873
  "name": "use_filename",
@@ -11213,7 +12946,7 @@ export const operations = [
11213
12946
  "resource": "media.libraries.assets",
11214
12947
  "method": "delete",
11215
12948
  "summary": "Delete asset",
11216
- "description": "Delete an asset from the library so it is no longer readable, searchable or deliverable. This removes the asset rather than placing it in the library’s restoration window; a missing asset returns ASSET_NOT_FOUND.",
12949
+ "description": "Queue reprocessing of the asset’s current version and return its updated state immediately. Omit kinds to retry failed tasks and legacy source-size unsupported tasks; explicit kinds rerun applicable completed tasks and recoverable source-size unsupported tasks. Other unsupported causes remain unchanged. Replaced understandings become superseded, and processing finishes asynchronously.",
11217
12950
  "http": "DELETE",
11218
12951
  "path": "/media/v1/libraries/{library_id}/assets/{asset_id}",
11219
12952
  "streaming": "no",
@@ -11236,7 +12969,7 @@ export const operations = [
11236
12969
  "resource": "media.libraries.assets",
11237
12970
  "method": "retrieve",
11238
12971
  "summary": "Get asset",
11239
- "description": "Read a non-deleted asset by its asset_id in an active library, including content hashes, processing progress and available previews. Missing or deleted assets return ASSET_NOT_FOUND.",
12972
+ "description": "Update an asset’s supplied metadata fields. Tags and context replace their current collections; an empty collection clears them. Moving asset_folder or changing display_name preserves public_id and delivery URLs.",
11240
12973
  "http": "GET",
11241
12974
  "path": "/media/v1/libraries/{library_id}/assets/{asset_id}",
11242
12975
  "streaming": "no",
@@ -11259,7 +12992,7 @@ export const operations = [
11259
12992
  "resource": "media.libraries.assets",
11260
12993
  "method": "update",
11261
12994
  "summary": "Update asset",
11262
- "description": "Update an asset’s supplied metadata fields. Tags and context replace their current collections; an empty collection clears them. Moving asset_folder or changing display_name preserves public_id and delivery URLs.",
12995
+ "description": "Delete an asset from the library so it is no longer readable, searchable or deliverable. This removes the asset rather than placing it in the library’s restoration window; a missing asset returns ASSET_NOT_FOUND.",
11263
12996
  "http": "PATCH",
11264
12997
  "path": "/media/v1/libraries/{library_id}/assets/{asset_id}",
11265
12998
  "streaming": "no",
@@ -11290,7 +13023,7 @@ export const operations = [
11290
13023
  "name": "asset_folder",
11291
13024
  "type": "string",
11292
13025
  "required": false,
11293
- "description": "Organizational folder path, separate from public_id. Empty selects the root; leading or trailing slashes, empty path segments, and . or .. segments are rejected."
13026
+ "description": "Organizational folder path, separate from public_id. Empty selects the root; leading or trailing slashes, empty path segments, and . or .. segments are rejected. New path segments containing U+FFFD or consisting only of question marks are rejected with INVALID_PARAMS; send UTF-8 names. Existing affected folders remain readable and assets can be moved out."
11294
13027
  },
11295
13028
  {
11296
13029
  "name": "tags",
@@ -11308,11 +13041,57 @@ export const operations = [
11308
13041
  ]
11309
13042
  }
11310
13043
  },
13044
+ {
13045
+ "resource": "media.libraries.assets.frames",
13046
+ "method": "create",
13047
+ "summary": "Create frame URLs",
13048
+ "description": "Media creates JPEG frame URLs for inspecting one or more moments in a video without downloading the original. Obtain library_id from libraries and asset_id plus duration from assets. Send 1–20 integer microsecond timestamps strictly below duration, for example {\"at_micros\":[0,1000000],\"width\":640}. Only video assets are supported; audio and images return INVALID_PARAMS. Width defaults to 640 and accepts 160, 320 or 640. This read operation does not store a new asset or rerun understanding. Fetch each returned URL to obtain the frame; delivery usage follows media pricing. Authenticated links expire after 300 seconds; upload links remain public and permanent. Reissue expired links. Foreign libraries and assets return 404 without revealing their existence.",
13049
+ "http": "POST",
13050
+ "path": "/media/v1/libraries/{library_id}/assets/{asset_id}/frames",
13051
+ "streaming": "no",
13052
+ "pagination": false,
13053
+ "pathParams": [
13054
+ {
13055
+ "name": "library_id",
13056
+ "sdkName": "library_id",
13057
+ "description": "Library identifier returned by library creation or listing; must be accessible to the current credential."
13058
+ },
13059
+ {
13060
+ "name": "asset_id",
13061
+ "sdkName": "asset_id",
13062
+ "description": "Video asset identifier returned by asset upload or listing in this library; read its duration before choosing timestamps."
13063
+ }
13064
+ ],
13065
+ "query": [],
13066
+ "body": {
13067
+ "required": true,
13068
+ "fields": [
13069
+ {
13070
+ "name": "at_micros",
13071
+ "type": "array",
13072
+ "itemType": "integer",
13073
+ "required": true,
13074
+ "description": "One to twenty timestamps in microseconds from the start of the video. Each must be a nonnegative safe integer strictly below the video duration; order and duplicates are preserved."
13075
+ },
13076
+ {
13077
+ "name": "width",
13078
+ "type": "integer",
13079
+ "enum": [
13080
+ 160,
13081
+ 320,
13082
+ 640
13083
+ ],
13084
+ "required": false,
13085
+ "description": "Maximum JPEG width in pixels: 160 is a small thumbnail, 320 a preview and 640 a larger preview. Defaults to 640; larger widths are unavailable."
13086
+ }
13087
+ ]
13088
+ }
13089
+ },
11311
13090
  {
11312
13091
  "resource": "media.libraries.assets.reprocess",
11313
13092
  "method": "create",
11314
13093
  "summary": "Reprocess asset",
11315
- "description": "Queue reprocessing of the asset’s current version and return its updated state immediately. Omit kinds to retry failed tasks; explicit kinds rerun applicable completed tasks. Replaced understandings become superseded, and processing finishes asynchronously.",
13094
+ "description": " For understanding, Media generates proxies for video sources of 25 MB or more and audio-only sources of 100 MB or more; originals remain available unchanged. The duration limit is 10 minutes. A video proxy still above 95 MB after recompression, or a source exceeding the duration limit, is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.",
11316
13095
  "http": "POST",
11317
13096
  "path": "/media/v1/libraries/{library_id}/assets/{asset_id}/reprocess",
11318
13097
  "streaming": "no",
@@ -11344,7 +13123,7 @@ export const operations = [
11344
13123
  "embedding"
11345
13124
  ],
11346
13125
  "required": false,
11347
- "description": "Processing tasks to rerun. Omit to retry failed tasks only; explicit kinds rerun applicable ready, failed or unsupported tasks. Pending and running tasks are unchanged; an empty array does nothing."
13126
+ "description": "Processing tasks to rerun. Omit to retry failed tasks and legacy source-size unsupported tasks; explicit kinds rerun applicable ready or failed tasks and recoverable source-size unsupported tasks. Other unsupported causes remain unchanged. Pending and running tasks are unchanged; an empty array does nothing."
11348
13127
  }
11349
13128
  ]
11350
13129
  }
@@ -11353,7 +13132,7 @@ export const operations = [
11353
13132
  "resource": "media.libraries.assets.understandings",
11354
13133
  "method": "list",
11355
13134
  "summary": "List understandings",
11356
- "description": "List an asset’s understanding results in creation order. By default only current, non-superseded results are returned; use include_superseded=true for history or kind to select an output type.",
13135
+ "description": "List understanding results for an asset, ordered by creation time. Use the cursor to continue; include_superseded also returns replaced records. The optional shots array contains current-version shot boundaries and per-shot captions, scene, location guesses, visible text and confidence flags; it is absent on legacy records. Location guesses and folder mismatch are unverified hints. Correction-enabled transcripts expose text_original, corrected text and a correction audit. Their timed data array remains suitable for subtitles. Reference failure is marked missing; correction failure returns the original verbatim. Model inference uses the existing metered model path.",
11357
13136
  "http": "GET",
11358
13137
  "path": "/media/v1/libraries/{library_id}/assets/{asset_id}/understandings",
11359
13138
  "streaming": "no",
@@ -11385,10 +13164,13 @@ export const operations = [
11385
13164
  "tags",
11386
13165
  "ocr",
11387
13166
  "transcript",
11388
- "frame"
13167
+ "frame",
13168
+ "overview",
13169
+ "audio",
13170
+ "embedding"
11389
13171
  ],
11390
13172
  "required": false,
11391
- "description": "Filter result kind: caption is a visual description, tags are recognized labels, ocr is recognized image text, transcript is speech text, and frame describes a video segment."
13173
+ "description": "Return one output kind: caption is a visual description, tags are generated labels, ocr is visible text, transcript is speech, frame is a video shot, overview is a video summary, audio is sampled audio understanding, and embedding reports a failed embedding step."
11392
13174
  },
11393
13175
  {
11394
13176
  "name": "cursor",
@@ -11408,7 +13190,7 @@ export const operations = [
11408
13190
  "resource": "media.libraries.assets",
11409
13191
  "method": "batch",
11410
13192
  "summary": "Batch assets alias",
11411
- "description": "Alias of batch creation. Apply one metadata or deletion action to ids or a frozen expression selection asynchronously; poll the returned job id to inspect completion and item failures.",
13193
+ "description": "Queue a frozen selection for tagging, untagging, context replacement, moving, deleting or reprocessing. IDs are limited to 1000; use an expression for larger selections, subject to the search scan budget. reprocess starts at most 30 assets per rolling minute per library. Only retryable failed steps and legacy source-size unsupported steps rerun. Omit kinds to inspect all recoverable steps, or supply kinds to narrow them. Other unsupported, permanent and completed steps remain unchanged; a permanent output blocks only its own step. Assets without any selected recoverable step count as failed items without starting understanding. Poll the returned job id; done counts accepted launches, not successful model inference. Staff Admin only permits reprocess and requires a nonblank reason. Example: {\"action\":\"reprocess\",\"selector\":{\"expression\":\"processing_state=failed AND failure_code=UPSTREAM_FAILED\"}}. For understanding, Media generates proxies for video sources of 25 MB or more and audio-only sources of 100 MB or more; originals remain available unchanged. The duration limit is 10 minutes. A video proxy still above 95 MB after recompression, or a source exceeding the duration limit, is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.",
11412
13194
  "http": "POST",
11413
13195
  "path": "/media/v1/libraries/{library_id}/assets:batch",
11414
13196
  "streaming": "no",
@@ -11429,6 +13211,12 @@ export const operations = [
11429
13211
  "type": "object",
11430
13212
  "required": true,
11431
13213
  "description": "Select assets by ids or by expression, never both. Expression results and exclusions are resolved when the job is created."
13214
+ },
13215
+ {
13216
+ "name": "reason",
13217
+ "type": "string",
13218
+ "required": false,
13219
+ "description": "Audit reason for the operation; required for staff Admin reprocessing and recorded with the initiating actor. Nonblank, at most 2000 characters."
11432
13220
  }
11433
13221
  ]
11434
13222
  }
@@ -11437,7 +13225,7 @@ export const operations = [
11437
13225
  "resource": "media.libraries.batches",
11438
13226
  "method": "create",
11439
13227
  "summary": "Create batch",
11440
- "description": "Create an asynchronous batch for tagging, untagging, replacing context, moving or deleting assets. Select ids or an expression; selection is frozen at creation. Poll the returned job id for completion and per-item failures.",
13228
+ "description": "Queue a frozen selection for tagging, untagging, context replacement, moving, deleting or reprocessing. IDs are limited to 1000; use an expression for larger selections, subject to the search scan budget. reprocess starts at most 30 assets per rolling minute per library. Only retryable failed steps and legacy source-size unsupported steps rerun. Omit kinds to inspect all recoverable steps, or supply kinds to narrow them. Other unsupported, permanent and completed steps remain unchanged; a permanent output blocks only its own step. Assets without any selected recoverable step count as failed items without starting understanding. Poll the returned job id; done counts accepted launches, not successful model inference. Staff Admin only permits reprocess and requires a nonblank reason. Example: {\"action\":\"reprocess\",\"selector\":{\"expression\":\"processing_state=failed AND failure_code=UPSTREAM_FAILED\"}}. For understanding, Media generates proxies for video sources of 25 MB or more and audio-only sources of 100 MB or more; originals remain available unchanged. The duration limit is 10 minutes. A video proxy still above 95 MB after recompression, or a source exceeding the duration limit, is reported as UNSUPPORTED with the limit in the failure message. Proxy preparation uses the organization’s metered sandbox resources.",
11441
13229
  "http": "POST",
11442
13230
  "path": "/media/v1/libraries/{library_id}/batches",
11443
13231
  "streaming": "no",
@@ -11458,6 +13246,12 @@ export const operations = [
11458
13246
  "type": "object",
11459
13247
  "required": true,
11460
13248
  "description": "Select assets by ids or by expression, never both. Expression results and exclusions are resolved when the job is created."
13249
+ },
13250
+ {
13251
+ "name": "reason",
13252
+ "type": "string",
13253
+ "required": false,
13254
+ "description": "Audit reason for the operation; required for staff Admin reprocessing and recorded with the initiating actor. Nonblank, at most 2000 characters."
11461
13255
  }
11462
13256
  ]
11463
13257
  }
@@ -11466,7 +13260,7 @@ export const operations = [
11466
13260
  "resource": "media.libraries.batches",
11467
13261
  "method": "retrieve",
11468
13262
  "summary": "Get batch",
11469
- "description": "Read a batch job’s status, successful and failed item counts, and a bounded list of failed items. Use the id returned by batch creation; a job outside this library is not found.",
13263
+ "description": "Alias of batch creation. Apply one metadata or deletion action to ids or a frozen expression selection asynchronously; poll the returned job id to inspect completion and item failures.",
11470
13264
  "http": "GET",
11471
13265
  "path": "/media/v1/libraries/{library_id}/batches/{job_id}",
11472
13266
  "streaming": "no",
@@ -11489,7 +13283,7 @@ export const operations = [
11489
13283
  "resource": "media.libraries.deliveryTokens",
11490
13284
  "method": "create",
11491
13285
  "summary": "Create delivery token",
11492
- "description": "Issue a time-limited bearer token for originals and transformed authenticated assets in an active library. Use library_id from library creation or listing; read access is sufficient. Append token as the __cld_token__ query parameter on a matching delivery URL. The default ACL covers this library and the default lifetime is 3600 seconds; narrow acl and expires_in before sharing. Anyone holding the token can read matching paths until expires_at.",
13286
+ "description": "Issue a time-limited bearer token for originals and transformed authenticated assets in an active library. Use library_id from library creation or listing; read access is sufficient. Append token as the __cld_token__ query parameter on a matching delivery URL. The default ACL covers this library and the default lifetime is 900 seconds; narrow acl and expires_in before sharing. Anyone holding the token can read matching paths until expires_at.",
11493
13287
  "http": "POST",
11494
13288
  "path": "/media/v1/libraries/{library_id}/delivery_tokens",
11495
13289
  "streaming": "no",
@@ -11515,7 +13309,7 @@ export const operations = [
11515
13309
  "name": "expires_in",
11516
13310
  "type": "integer",
11517
13311
  "required": false,
11518
- "description": "Token lifetime in seconds, from 1 to 604800 inclusive; defaults to 3600."
13312
+ "description": "Token lifetime in seconds, from 1 to 604800 inclusive; defaults to 900."
11519
13313
  }
11520
13314
  ]
11521
13315
  }
@@ -11524,7 +13318,7 @@ export const operations = [
11524
13318
  "resource": "media.libraries.events",
11525
13319
  "method": "list",
11526
13320
  "summary": "List events",
11527
- "description": "Read library events in sequence order, including while the library is deleting. Page forward with asc and after_seq, or backward with desc and before_seq; never combine the two sequence cursors.",
13321
+ "description": "Read library events in sequence order for observing asset writes and understanding progress. Obtain library_id from creation or listing; continue with after_seq for asc or before_seq for desc, without combining both. Use next_cursor when supplied. Reads do not start or retry understanding.",
11528
13322
  "http": "GET",
11529
13323
  "path": "/media/v1/libraries/{library_id}/events",
11530
13324
  "streaming": "no",
@@ -11571,7 +13365,7 @@ export const operations = [
11571
13365
  "resource": "media.libraries.folders",
11572
13366
  "method": "list",
11573
13367
  "summary": "List folders",
11574
- "description": "List all immediate child folders under parent, or under the root when parent is omitted. Counts include descendant assets. The result is unpaginated; limit and cursor are rejected.",
13368
+ "description": "undefined understood_count includes ready and partial assets; failed_count includes failed assets. Both accumulate descendants. counts_complete is false during historical backfill.",
11575
13369
  "http": "GET",
11576
13370
  "path": "/media/v1/libraries/{library_id}/folders",
11577
13371
  "streaming": "no",
@@ -11596,7 +13390,7 @@ export const operations = [
11596
13390
  "resource": "media.libraries.jobs",
11597
13391
  "method": "retrieve",
11598
13392
  "summary": "Get job alias",
11599
- "description": "Alias of batch retrieval. Read the job returned by a batch request, including terminal status, successful and failed counts, and individual failure codes.",
13393
+ "description": "Read library events in sequence order, including while the library is deleting. Page forward with asc and after_seq, or backward with desc and before_seq; never combine the two sequence cursors.",
11600
13394
  "http": "GET",
11601
13395
  "path": "/media/v1/libraries/{library_id}/jobs/{job_id}",
11602
13396
  "streaming": "no",
@@ -11619,7 +13413,7 @@ export const operations = [
11619
13413
  "resource": "media.libraries.purge",
11620
13414
  "method": "create",
11621
13415
  "summary": "Purge library",
11622
- "description": "Permanently remove a library that is already deleting, without waiting for purge_at. Its assets and related resources are removed and cannot be restored; first soft-delete an active library.",
13416
+ "description": "List assets in an active library, newest first, optionally filtering by exact folder and stored resource type. Continue using next_cursor; video includes audio-only assets.",
11623
13417
  "http": "POST",
11624
13418
  "path": "/media/v1/libraries/{library_id}/purge",
11625
13419
  "streaming": "no",
@@ -11637,7 +13431,7 @@ export const operations = [
11637
13431
  "resource": "media.libraries",
11638
13432
  "method": "restore",
11639
13433
  "summary": "Restore library",
11640
- "description": "Restore a deleting library before its purge_at deadline. The library becomes active again and deleted_at and purge_at are cleared; expired or non-deleting libraries cannot be restored.",
13434
+ "description": "Permanently remove a library that is already deleting, without waiting for purge_at. Its assets and related resources are removed and cannot be restored; first soft-delete an active library.",
11641
13435
  "http": "POST",
11642
13436
  "path": "/media/v1/libraries/{library_id}/restore",
11643
13437
  "streaming": "no",
@@ -11655,7 +13449,7 @@ export const operations = [
11655
13449
  "resource": "media.libraries.search",
11656
13450
  "method": "create",
11657
13451
  "summary": "Semantic search alias",
11658
- "description": "Alias of semantic search. Search assets with a nonblank text query, optional expression filter and top_k; hybrid combines semantic and keyword matches, while semantic uses vector similarity only.",
13452
+ "description": "List all immediate child folders under parent, or under the root when parent is omitted. Counts include descendant assets. The result is unpaginated; limit and cursor are rejected.",
11659
13453
  "http": "POST",
11660
13454
  "path": "/media/v1/libraries/{library_id}/search",
11661
13455
  "streaming": "no",
@@ -11706,7 +13500,7 @@ export const operations = [
11706
13500
  "resource": "media.libraries.search.expression",
11707
13501
  "method": "create",
11708
13502
  "summary": "Expression search",
11709
- "description": "Search active assets using the supported filter-expression syntax, sorting and cursor pagination. Empty expression matches all assets. Tags and context require with_field; inspect the exactness flags before treating counts as complete.",
13503
+ "description": "Find visually similar assets using exactly one of asset_id or an inline base64 image. The library must support image search; an asset query needs a current image embedding and excludes that source asset from results.",
11710
13504
  "http": "POST",
11711
13505
  "path": "/media/v1/libraries/{library_id}/search/expression",
11712
13506
  "streaming": "no",
@@ -11726,7 +13520,7 @@ export const operations = [
11726
13520
  "name": "expression",
11727
13521
  "type": "string",
11728
13522
  "required": false,
11729
- "description": "Asset filter expression supporting field comparisons, AND, OR, NOT, parentheses and suffix wildcards. An empty expression matches all assets. For business metadata use context.sku=KETTLE-RED AND context.revision=2; request with_field: [\"context\"] to include context."
13523
+ "description": "Asset filter expression supporting field comparisons, AND, OR, NOT, parentheses and suffix wildcards. An empty expression matches all assets. For business metadata use context.sku=KETTLE-RED AND context.revision=2; request with_field: [\"context\"] to include context. Quality filters: flags:watermark matches any current shot with a watermark; flags.watermark:false requires an assessed video with no positive watermark judgment. The same syntax supports slideshow, hand_frame, text_sticker and low_quality. folder_mismatch:true selects lexical folder/location hints. Geometry filters support width, height, resolution:1920x1080, numeric aspect_ratio (width/height), and orientation:landscape, portrait or square. Missing geometry or unassessed legacy flags do not match positive filters. has_music:true AND audio_genre:jazz AND audio_mood:calm selects current-version audio profiles with music and matching model labels; has_music:false applies only to sampled ranges, not the entire source. failure_code=UPSTREAM_FAILED selects assets with a current failed understanding carrying that code; combine with processing_state=failed or processing_state=partial."
11730
13524
  },
11731
13525
  {
11732
13526
  "name": "sort_by",
@@ -11778,7 +13572,7 @@ export const operations = [
11778
13572
  "resource": "media.libraries.search.semantic",
11779
13573
  "method": "create",
11780
13574
  "summary": "Semantic search",
11781
- "description": "Search assets with a nonblank text query and optional expression filter. Hybrid mode combines semantic and keyword matches; semantic mode uses vector similarity only. Results are ranked and limited by top_k.",
13575
+ "description": "Alias of semantic search. Search assets with a nonblank text query, optional expression filter and top_k; hybrid combines semantic and keyword matches, while semantic uses vector similarity only.",
11782
13576
  "http": "POST",
11783
13577
  "path": "/media/v1/libraries/{library_id}/search/semantic",
11784
13578
  "streaming": "no",
@@ -11829,7 +13623,7 @@ export const operations = [
11829
13623
  "resource": "media.libraries.search.visual",
11830
13624
  "method": "create",
11831
13625
  "summary": "Visual search",
11832
- "description": "Find visually similar assets using exactly one of asset_id or an inline base64 image. The library must support image search; an asset query needs a current image embedding and excludes that source asset from results.",
13626
+ "description": "Search assets with a nonblank text query and optional expression filter. Hybrid mode combines semantic and keyword matches; semantic mode uses vector similarity only. Results are ranked and limited by top_k.",
11833
13627
  "http": "POST",
11834
13628
  "path": "/media/v1/libraries/{library_id}/search/visual",
11835
13629
  "streaming": "no",
@@ -11872,6 +13666,67 @@ export const operations = [
11872
13666
  ]
11873
13667
  }
11874
13668
  },
13669
+ {
13670
+ "resource": "media.libraries.understandings",
13671
+ "method": "list",
13672
+ "summary": "List understanding results across a library",
13673
+ "description": "Read current understanding entries across one library without fetching every asset separately. Use library_id from creation or listing. folder includes descendants; kinds is a comma-separated list of output kinds. Entries are ordered by asset_id and then understanding id. Continue with next_cursor and the same folder and kinds; limit defaults to 100 and cannot exceed 100. Superseded, deleted and old-version entries are excluded. During historical backfill, this method returns 503 CAPACITY rather than incomplete pages; poll failureSummary until counts_complete is true, then start pagination. Example: GET /media/v1/libraries/lib_example/understandings?folder=travel&kinds=caption,transcript&limit=100.",
13674
+ "http": "GET",
13675
+ "path": "/media/v1/libraries/{library_id}/understandings",
13676
+ "streaming": "no",
13677
+ "pagination": true,
13678
+ "pathParams": [
13679
+ {
13680
+ "name": "library_id",
13681
+ "sdkName": "library_id",
13682
+ "description": "Library ID returned by creation."
13683
+ }
13684
+ ],
13685
+ "query": [
13686
+ {
13687
+ "name": "folder",
13688
+ "type": "string",
13689
+ "required": false,
13690
+ "description": "Folder path including all descendants; omitted or empty selects the entire library."
13691
+ },
13692
+ {
13693
+ "name": "kinds",
13694
+ "type": "string",
13695
+ "required": false,
13696
+ "description": "Comma-separated output kinds: caption, tags, ocr, frame, transcript, overview, audio, embedding. Omit or empty to include every kind."
13697
+ },
13698
+ {
13699
+ "name": "cursor",
13700
+ "type": "string",
13701
+ "required": false,
13702
+ "description": "Cursor from the previous next_cursor."
13703
+ },
13704
+ {
13705
+ "name": "limit",
13706
+ "type": "integer",
13707
+ "required": false,
13708
+ "description": "Maximum entries in this page, from 1 through 100; defaults to 100."
13709
+ }
13710
+ ]
13711
+ },
13712
+ {
13713
+ "resource": "media.libraries.understandings",
13714
+ "method": "retrieveFailureSummary",
13715
+ "summary": "Summarize understanding failures",
13716
+ "description": "Inspect current understanding failures before retrying. Use library_id from library creation or listing. Groups include code, output kind, actual producer model, retryability and up to five sample asset IDs. At most 1024 detailed groups plus two overflow groups are returned; overflow groups separate retryable and unrecoverable entries and mark overflow=true. Unknown failure codes remain retryable. Historical counts are provisional while counts_complete is false. Example: GET /media/v1/libraries/lib_example/understandings/failure_summary.",
13717
+ "http": "GET",
13718
+ "path": "/media/v1/libraries/{library_id}/understandings/failure_summary",
13719
+ "streaming": "no",
13720
+ "pagination": false,
13721
+ "pathParams": [
13722
+ {
13723
+ "name": "library_id",
13724
+ "sdkName": "library_id",
13725
+ "description": "Library ID returned by creation."
13726
+ }
13727
+ ],
13728
+ "query": []
13729
+ },
11875
13730
  {
11876
13731
  "resource": "meta.docs",
11877
13732
  "method": "search",
@@ -12155,25 +14010,25 @@ export const operations = [
12155
14010
  "name": "model",
12156
14011
  "type": "string",
12157
14012
  "required": true,
12158
- "description": "Transcription model id, for example `whisper-large-v3-turbo` or `qwen3-asr-flash`; list candidates with listModels?type=transcription. Router support (supported): Verified to take effect."
14013
+ "description": "Model catalog identifier declaring openai.audio.transcriptions; use it unchanged, including any creator prefix."
12159
14014
  },
12160
14015
  {
12161
14016
  "name": "file",
12162
14017
  "type": "string",
12163
14018
  "required": true,
12164
- "description": "Audio file to transcribe, uploaded as multipart/form-data. Router support (supported): Verified to take effect."
14019
+ "description": "Audio bytes uploaded as a multipart file; supported formats and input limits depend on the selected model."
12165
14020
  },
12166
14021
  {
12167
14022
  "name": "language",
12168
14023
  "type": "string",
12169
14024
  "required": false,
12170
- "description": "Language of the audio as an ISO-639-1 code such as `en` or `zh`. Router support (partial): Both models accept ISO language codes. qwen3-asr-flash may translate output to that language; whisper-large-v3-turbo treats it as an input hint. Non-ISO names may return 502."
14025
+ "description": "Source language code when known; omit to let the model detect the language."
12171
14026
  },
12172
14027
  {
12173
14028
  "name": "prompt",
12174
14029
  "type": "string",
12175
14030
  "required": false,
12176
- "description": "Text that primes the model with vocabulary or context. Router support (partial): Vocabulary hints work on whisper-large-v3-turbo only; qwen3-asr-flash returns 400."
14031
+ "description": "Optional vocabulary or contextual guidance for recognizing the audio; support depends on the selected model."
12177
14032
  },
12178
14033
  {
12179
14034
  "name": "response_format",
@@ -12181,20 +14036,22 @@ export const operations = [
12181
14036
  "enum": [
12182
14037
  "json",
12183
14038
  "text",
12184
- "verbose_json"
14039
+ "verbose_json",
14040
+ "diarized_json"
12185
14041
  ],
12186
14042
  "required": false,
12187
- "description": "Format of the response body. `json` and `text` are the commonly supported formats. Router support (partial): json/text work on both; verbose_json works only on whisper-large-v3-turbo. srt/vtt return 400."
14043
+ "description": "Output format: json returns text in JSON; text returns plain text; verbose_json includes requested timestamps; diarized_json includes speaker-labelled segments when supported. Defaults to json."
12188
14044
  },
12189
14045
  {
12190
14046
  "name": "timestamp_granularities[]",
12191
14047
  "type": "array",
12192
14048
  "itemType": "string",
12193
14049
  "enum": [
14050
+ "word",
12194
14051
  "segment"
12195
14052
  ],
12196
14053
  "required": false,
12197
- "description": "Timestamp levels to include with `verbose_json`; only `segment` exists in this schema. Router support (partial): Only whisper-large-v3-turbo supports segment with verbose_json. word returns 400; qwen3-asr-flash does not support timestamps."
14054
+ "description": "Timestamp levels to request as repeated multipart fields: word returns per-word times; segment returns segment times. Omit for the model default. Use verbose_json, or diarized_json on supporting models."
12198
14055
  },
12199
14056
  {
12200
14057
  "name": "temperature",
@@ -14508,6 +16365,31 @@ export const operations = [
14508
16365
  ]
14509
16366
  }
14510
16367
  },
16368
+ {
16369
+ "resource": "organization.members",
16370
+ "method": "list",
16371
+ "summary": "List organization members",
16372
+ "description": "Concepts follow GitHub org members: find a person's user id, for example to assign an approver to an approval task. Lists only members of the organization behind your API key or runtime token, ordered by joined_at ascending (membership id breaks ties). Ask the user who should approve, then use that member's id. Emails are visible only within this organization. The request cannot select another organization. Pass next_page unchanged as page; null means the end. Read-only; no usage charge. Example: GET /organization/v1/members?limit=20.",
16373
+ "http": "GET",
16374
+ "path": "/organization/v1/members",
16375
+ "streaming": "no",
16376
+ "pagination": false,
16377
+ "pathParams": [],
16378
+ "query": [
16379
+ {
16380
+ "name": "limit",
16381
+ "type": "integer",
16382
+ "required": false,
16383
+ "description": "Maximum members per page, from 1 to 100; defaults to 20."
16384
+ },
16385
+ {
16386
+ "name": "page",
16387
+ "type": "string",
16388
+ "required": false,
16389
+ "description": "Opaque next_page cursor returned by the previous response; omit for the first page."
16390
+ }
16391
+ ]
16392
+ },
14511
16393
  {
14512
16394
  "resource": "organization.usage",
14513
16395
  "method": "list",
@@ -17197,7 +19079,7 @@ export const operations = [
17197
19079
  "name": "filter",
17198
19080
  "type": "string",
17199
19081
  "required": false,
17200
- "description": "Search qualifier subset: is/state, reason, label/-label, no, assignee, author, mentions, milestone, type, kind, assignee-kind, in and sort; unknown qualifiers return INVALID_PARAMS. Passed unchanged to the service."
19082
+ "description": "Search qualifier subset: is/state, reason, label/-label, no, assignee, author, mentions, milestone, type, kind, assignee-kind, in and sort; write each qualifier as field:value (for example, is:open milestone:5), never field=value. Unknown qualifiers return INVALID_PARAMS. Passed unchanged to the service."
17201
19083
  }
17202
19084
  ]
17203
19085
  },