@nohead/sdk 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,52 @@ Changes to `@nohead/sdk` that you can notice. Versions follow
5
5
  releases; a change that could break your code is a major one. Each release's
6
6
  section is its GitHub release's notes.
7
7
 
8
+ ## 0.7.0
9
+
10
+ - `assets.list({ q, kind })`: `q` finds assets whose filename or alt text
11
+ has every word, ignoring case; `kind` lists only `image`, `video`,
12
+ `audio`, `document` or `other` assets, or several kinds as a list.
13
+
14
+ - `assets.upload` types a file by its filename's extension when the Blob has
15
+ no type, as Node's `openAsBlob` makes them: `cover.jpg` is now an
16
+ `image/jpeg` asset, not `application/octet-stream`.
17
+
18
+ ## 0.6.0
19
+
20
+ - API keys now start `nohead_sk_`, or `nohead_pk_` for published-only keys;
21
+ keys in the old `sk_live_` format no longer work. The SDK sends whatever key
22
+ it's given, so only the docs and examples change.
23
+
24
+ - `assets.update(asset, { filename?, alt? })` renames an asset and sets its
25
+ alt text (`PATCH /v1/assets/{asset_id}`). `Asset` has `alt` (a string or
26
+ `null`), and webhooks can subscribe to `asset.updated`.
27
+
28
+ - Image URLs are open. `Asset` has `image_url`, the whole image, and
29
+ `imageUrl` from the new `@nohead/sdk/images` (no dependencies) writes any of
30
+ imgproxy's processing options into it, without a request. It also has
31
+ loaders for Next.js (`nextImageLoader`), Astro (`astroImageService`) and
32
+ Nuxt Image (`nuxtImageProvider`, or `getImage` on Nuxt Image 1), which leave
33
+ other images as they are.
34
+
35
+ - **Breaking:** `assets.imageUrl` is gone, with the API's
36
+ `GET /v1/assets/{asset_id}/image-url`: use `imageUrl` from
37
+ `@nohead/sdk/images`, which needs no request.
38
+
39
+ - **Breaking:** `Collection` has no `search_enabled`, and `SearchIndex` no
40
+ `enabled`: API keys search every collection they can read.
41
+
42
+ - `revisions.get(revision)` reads a revision by its own `rev_` ID, as
43
+ webhooks and the activity log name it (`GET /v1/revisions/{revision_id}`).
44
+
45
+ - `records.create` takes `upsert_on`, a unique field's key: the record
46
+ holding that value is updated instead, if one exists, and `ifMatch`
47
+ applies to that update.
48
+
49
+ - Collections have `public_search`: whether the project's search tokens find
50
+ their published records. Off by default; `collections.create` and
51
+ `collections.update` take it. A collection's search index has `index`, the
52
+ name a token searches it by.
53
+
8
54
  ## 0.5.0
9
55
 
10
56
  - **Breaking:** field migrations are created under their collection:
package/README.md CHANGED
@@ -51,17 +51,17 @@ const nohead = new Nohead({
51
51
  })
52
52
  ```
53
53
 
54
- | Option | Default | |
55
- | ------------ | ---------------------------------------------- | ------------------------------------------------------------------ |
56
- | `apiKey` | `NOHEAD_API_KEY` | A project API key (`sk_live_…`). Required. |
57
- | `baseUrl` | `NOHEAD_API_URL`, else `https://api.nohead.io` | |
58
- | `projectId` | the key's project | Looked up once with `GET /v1/me` when omitted. |
59
- | `maxRetries` | `2` | See [retries](#retries-and-idempotency). |
60
- | `timeout` | `60000` | Milliseconds per attempt. |
61
- | `fetch` | `globalThis.fetch` | For proxies, instrumentation and tests. |
62
- | `headers` | `{}` | Added to every request. |
63
- | `warnings` | `true` | Logs deprecation and plan usage warnings, once each. |
64
- | `onRetry` | | Called before each retry. See [retries](#retries-and-idempotency). |
54
+ | Option | Default | |
55
+ | ------------ | ---------------------------------------------- | ---------------------------------------------------------------------------------- |
56
+ | `apiKey` | `NOHEAD_API_KEY` | A project API key (`nohead_sk_…`, or `nohead_pk_…` when published-only). Required. |
57
+ | `baseUrl` | `NOHEAD_API_URL`, else `https://api.nohead.io` | |
58
+ | `projectId` | the key's project | Looked up once with `GET /v1/me` when omitted. |
59
+ | `maxRetries` | `2` | See [retries](#retries-and-idempotency). |
60
+ | `timeout` | `60000` | Milliseconds per attempt. |
61
+ | `fetch` | `globalThis.fetch` | For proxies, instrumentation and tests. |
62
+ | `headers` | `{}` | Added to every request. |
63
+ | `warnings` | `true` | Logs deprecation and plan usage warnings, once each. |
64
+ | `onRetry` | | Called before each retry. See [retries](#retries-and-idempotency). |
65
65
 
66
66
  API keys belong to a project, so methods like `collections.list()` need no project ID. Collections can be named by ID or slug everywhere.
67
67
 
@@ -81,6 +81,15 @@ await nohead.records.delete(post.id) // soft delete; records.restore() undoes it
81
81
 
82
82
  `schedule` sets the whole schedule: a time left out is cleared, so `{ unpublish_at }` alone drops a pending publish.
83
83
 
84
+ **Upserts.** With `upsert_on`, the key of a `unique` field, `create` updates the record holding that value instead, if one exists, so a content sync can run again without duplicates:
85
+
86
+ ```ts
87
+ await nohead.records.create("products", {
88
+ data: { sku: "TEE-01", title: "Tee" },
89
+ upsert_on: "sku",
90
+ })
91
+ ```
92
+
84
93
  Methods return the resource and throw on failure. Field names stay as the API sends them (`published_at`, `data`), so the API reference applies as-is.
85
94
 
86
95
  **Typed data.** Describe a collection's fields and pass the type:
@@ -97,7 +106,7 @@ await nohead.records.update<Post>(id, { data: { title: null } }) // null clears
97
106
 
98
107
  The type is a promise you make; nothing is checked at runtime. The record type itself is `Nohead.Record<Post>` (also exported as `NoheadRecord`).
99
108
 
100
- **More:** `count`, `bulk` (up to 100 records at once), `diff`, `revisions.list`, `revisions.get` and `revisions.revert` (with `{ dry_run: true }` for a preview).
109
+ **More:** `count`, `bulk` (up to 100 records at once), `diff`, `revisions.list`, `revisions.get` and `revisions.revert` (with `{ dry_run: true }` for a preview). A revision by its own ID, as webhooks and the activity log name it: `nohead.revisions.get("rev_…")`.
101
110
 
102
111
  ## Drafts
103
112
 
@@ -258,13 +267,33 @@ const asset = await nohead.assets.upload(await openAsBlob("cover.jpg"), {
258
267
  filename: "cover.jpg",
259
268
  })
260
269
  await nohead.records.update(id, { data: { cover: asset.id } })
270
+ ```
271
+
272
+ **Images.** Image URLs are open: an image's `image_url` serves the whole image, and any of [imgproxy's processing options](https://docs.imgproxy.net/usage/processing) written into it transform it. `@nohead/sdk/images` builds them without a request, and has no dependencies, so it suits browser bundles:
273
+
274
+ ```ts
275
+ import { imageUrl } from "@nohead/sdk/images"
261
276
 
262
- const { url } = await nohead.assets.imageUrl(asset.id, {
277
+ imageUrl(asset, {
263
278
  width: 1200,
279
+ height: 630,
280
+ fit: "cover",
281
+ gravity: "sm",
264
282
  format: "webp",
265
283
  })
284
+ imageUrl(asset.image_url!, { width: 400, dpr: 2, options: ["bl:2"] })
266
285
  ```
267
286
 
287
+ Frameworks' image components, with `srcset` and all, take a loader from it:
288
+
289
+ - **Next.js:** a file named by `images.loaderFile` in next.config: `export { nextImageLoader as default } from "@nohead/sdk/images"`, then `<Image src={asset.image_url} … />`.
290
+ - **Astro:** a module named by `image.service.entrypoint` in astro.config: `export { astroImageService as default } from "@nohead/sdk/images"`.
291
+ - **Nuxt Image:** a custom provider file in nuxt.config's `image.providers`: `export { nuxtImageProvider as default } from "@nohead/sdk/images"` (Nuxt Image 1: `export { getImage } from "@nohead/sdk/images"`).
292
+
293
+ The loaders leave other images, the site's own, as they are.
294
+
295
+ Thumbnails: an image's `preview_url` fits in 640×640, as WebP.
296
+
268
297
  **What `upload` accepts:** a `Blob`, `File`, `ArrayBuffer`, `Uint8Array`, or a `ReadableStream` with `byte_size`.
269
298
 
270
299
  **What it does:**
@@ -279,6 +308,14 @@ const { url } = await nohead.assets.imageUrl(asset.id, {
279
308
 
280
309
  **Uploading from a browser:** create the upload on your server with `createUpload`, `PUT` the file from the browser, then `complete` it.
281
310
 
311
+ **Renaming and alt text:** `update` changes an asset's `filename` and `alt` text, the default wherever the asset is used (`expand` returns it with the asset). The file itself never changes.
312
+
313
+ ```ts
314
+ await nohead.assets.update(asset.id, {
315
+ alt: "The spring menu, on a chalkboard",
316
+ })
317
+ ```
318
+
282
319
  **Deleting:** `delete` keeps a deleted asset until its `purge_after` (30 days), and `restore` brings it back. To remove it for good now, `purge` it after the delete. Records that use it keep an ID that no longer resolves, so check `usage` first:
283
320
 
284
321
  ```ts
@@ -298,7 +335,7 @@ const results = await nohead.search("content model", { collections: ["posts", "p
298
335
  results.meta.total_estimate
299
336
  ```
300
337
 
301
- Search needs `search_enabled` collections and the `search:read` scope. It pages through the first 1,000 hits.
338
+ Search needs the `search:read` scope and covers every collection the key can read, matching their `searchable` fields. It pages through the first 1,000 hits. For search straight from a site's browser, without the API, use a search token from the web app with Meilisearch's own clients or InstantSearch.
302
339
 
303
340
  ## Schema
304
341
 
@@ -370,13 +407,14 @@ response.headers.get("RateLimit-Remaining")
370
407
  | `records` | `list`, `get`, `create`, `update`, `delete`, `restore`, `publish`, `unpublish`, `publication`, `getSchedule`, `schedule`, `unschedule`, `scheduledChanges`, `drafts`, `count`, `bulk`, `diff`, `search` |
371
408
  | `drafts` | `create`, `list`, `get`, `update`, `discard`, `merge`, `schedule`, `unschedule` |
372
409
  | `records.revisions` | `list`, `get`, `revert` |
410
+ | `revisions` | `get` (by its own `rev_` ID, as webhooks and the activity log name it) |
373
411
  | `search` | across the project |
374
412
  | `collections` | `list`, `get`, `create`, `update`, `delete`, `restore`, `schema` |
375
413
  | `collections.schemaChanges` | `list`, `get` |
376
414
  | `collections.searchIndex` | `get`, `rebuild` |
377
415
  | `fields` | `list`, `get`, `create`, `update`, `delete`, `restore`, `order`, `reorder`, `removeAlias` |
378
416
  | `migrations` | `create`, `list`, `get`, `cancel` |
379
- | `assets` | `upload`, `createUpload`, `complete`, `list`, `get`, `delete`, `restore`, `purge`, `usage`, `imageUrl`, `downloadUrl` |
417
+ | `assets` | `upload`, `createUpload`, `complete`, `list`, `get`, `update`, `delete`, `restore`, `purge`, `usage`, `downloadUrl` |
380
418
  | `webhooks` | `list`, `get`, `create`, `update`, `delete`, `restore`, `rotateSecret`, `test`, `unwrap` |
381
419
  | `webhooks.secrets` | `list`, `retire` |
382
420
  | `webhooks.deliveries` | `list`, `get`, `retry` |
@@ -395,7 +433,7 @@ npm test # unit and contract tests
395
433
  npm run lint && npm run typecheck && npm run format:check
396
434
  npm run generate # after updating openapi.json
397
435
  npm run samples # after changing test/calls.ts (the docs' code samples)
398
- NOHEAD_API_URL=http://localhost:3000 NOHEAD_API_KEY=sk_live_… npm run smoke
436
+ NOHEAD_API_URL=http://localhost:3000 NOHEAD_API_KEY=nohead_sk_… npm run smoke
399
437
  ```
400
438
 
401
439
  **How the code is organized:**
package/dist/client.d.ts CHANGED
@@ -4,7 +4,7 @@ import type * as G from "./generated/types.gen.ts";
4
4
  import { Assets } from "./resources/assets.ts";
5
5
  import { Drafts } from "./resources/drafts.ts";
6
6
  import { AuditEvents, FeatureFlags, Health, Me } from "./resources/other.ts";
7
- import { Records } from "./resources/records.ts";
7
+ import { Records, RevisionsById } from "./resources/records.ts";
8
8
  import { Collections, Fields, Migrations } from "./resources/schema.ts";
9
9
  import { Webhooks } from "./resources/webhooks.ts";
10
10
  import type { NoheadDraft, NoheadRecord, ProjectSearchParams, RecordData, SearchMeta } from "./types.ts";
@@ -19,6 +19,7 @@ import type { NoheadDraft, NoheadRecord, ProjectSearchParams, RecordData, Search
19
19
  export declare class Nohead {
20
20
  #private;
21
21
  readonly records: Records;
22
+ readonly revisions: RevisionsById;
22
23
  readonly drafts: Drafts;
23
24
  readonly collections: Collections;
24
25
  readonly fields: Fields;
package/dist/client.js CHANGED
@@ -2,7 +2,7 @@ import { Core } from "./core.js";
2
2
  import { Assets } from "./resources/assets.js";
3
3
  import { Drafts } from "./resources/drafts.js";
4
4
  import { AuditEvents, FeatureFlags, Health, Me } from "./resources/other.js";
5
- import { Records } from "./resources/records.js";
5
+ import { Records, RevisionsById } from "./resources/records.js";
6
6
  import { Collections, Fields, Migrations } from "./resources/schema.js";
7
7
  import { Webhooks } from "./resources/webhooks.js";
8
8
  /**
@@ -15,6 +15,7 @@ import { Webhooks } from "./resources/webhooks.js";
15
15
  */
16
16
  export class Nohead {
17
17
  records;
18
+ revisions;
18
19
  drafts;
19
20
  collections;
20
21
  fields;
@@ -30,6 +31,7 @@ export class Nohead {
30
31
  const core = new Core(options);
31
32
  this.#core = core;
32
33
  this.records = new Records(core);
34
+ this.revisions = new RevisionsById(core);
33
35
  this.drafts = new Drafts(core);
34
36
  this.collections = new Collections(core);
35
37
  this.fields = new Fields(core);
package/dist/core.d.ts CHANGED
@@ -4,7 +4,10 @@ import { type OperationId, type Operations } from "./generated/operations.gen.ts
4
4
  import type { ListMeta } from "./generated/types.gen.ts";
5
5
  export declare const DEFAULT_BASE_URL = "https://api.nohead.io";
6
6
  export interface ClientOptions {
7
- /** A project API key (`sk_live_…`). Defaults to `NOHEAD_API_KEY`. */
7
+ /**
8
+ * A project API key (`nohead_sk_…`, or `nohead_pk_…` when published-only).
9
+ * Defaults to `NOHEAD_API_KEY`.
10
+ */
8
11
  apiKey?: string;
9
12
  /** Defaults to `NOHEAD_API_URL`, else `https://api.nohead.io`. */
10
13
  baseUrl?: string;
@@ -16,10 +16,6 @@ export declare const OPERATIONS: {
16
16
  readonly method: "GET";
17
17
  readonly path: "/v1/assets/{asset_id}";
18
18
  };
19
- readonly assets_image_url: {
20
- readonly method: "GET";
21
- readonly path: "/v1/assets/{asset_id}/image-url";
22
- };
23
19
  readonly assets_list: {
24
20
  readonly method: "GET";
25
21
  readonly path: "/v1/projects/{project_id}/assets";
@@ -32,6 +28,10 @@ export declare const OPERATIONS: {
32
28
  readonly method: "POST";
33
29
  readonly path: "/v1/assets/{asset_id}/restore";
34
30
  };
31
+ readonly assets_update: {
32
+ readonly method: "PATCH";
33
+ readonly path: "/v1/assets/{asset_id}";
34
+ };
35
35
  readonly assets_upload: {
36
36
  readonly method: "POST";
37
37
  readonly path: "/v1/projects/{project_id}/assets";
@@ -252,6 +252,10 @@ export declare const OPERATIONS: {
252
252
  readonly method: "PATCH";
253
253
  readonly path: "/v1/records/{record_id}";
254
254
  };
255
+ readonly revisions_get: {
256
+ readonly method: "GET";
257
+ readonly path: "/v1/revisions/{revision_id}";
258
+ };
255
259
  readonly scheduled_changes_list: {
256
260
  readonly method: "GET";
257
261
  readonly path: "/v1/collections/{collection_id}/scheduled-changes";
@@ -343,10 +347,6 @@ export interface Operations {
343
347
  data: T.AssetsGetData;
344
348
  response: T.AssetsGetResponse;
345
349
  };
346
- assets_image_url: {
347
- data: T.AssetsImageUrlData;
348
- response: T.AssetsImageUrlResponse;
349
- };
350
350
  assets_list: {
351
351
  data: T.AssetsListData;
352
352
  response: T.AssetsListResponse;
@@ -359,6 +359,10 @@ export interface Operations {
359
359
  data: T.AssetsRestoreData;
360
360
  response: T.AssetsRestoreResponse;
361
361
  };
362
+ assets_update: {
363
+ data: T.AssetsUpdateData;
364
+ response: T.AssetsUpdateResponse;
365
+ };
362
366
  assets_upload: {
363
367
  data: T.AssetsUploadData;
364
368
  response: T.AssetsUploadResponse;
@@ -579,6 +583,10 @@ export interface Operations {
579
583
  data: T.RecordsUpdateData;
580
584
  response: T.RecordsUpdateResponse;
581
585
  };
586
+ revisions_get: {
587
+ data: T.RevisionsGetData;
588
+ response: T.RevisionsGetResponse;
589
+ };
582
590
  scheduled_changes_list: {
583
591
  data: T.ScheduledChangesListData;
584
592
  response: T.ScheduledChangesListResponse;
@@ -3,10 +3,10 @@ export const OPERATIONS = {
3
3
  assets_delete: { method: "DELETE", path: "/v1/assets/{asset_id}" },
4
4
  assets_download_url: { method: "GET", path: "/v1/assets/{asset_id}/download-url" },
5
5
  assets_get: { method: "GET", path: "/v1/assets/{asset_id}" },
6
- assets_image_url: { method: "GET", path: "/v1/assets/{asset_id}/image-url" },
7
6
  assets_list: { method: "GET", path: "/v1/projects/{project_id}/assets" },
8
7
  assets_purge: { method: "POST", path: "/v1/assets/{asset_id}/purge" },
9
8
  assets_restore: { method: "POST", path: "/v1/assets/{asset_id}/restore" },
9
+ assets_update: { method: "PATCH", path: "/v1/assets/{asset_id}" },
10
10
  assets_upload: { method: "POST", path: "/v1/projects/{project_id}/assets" },
11
11
  assets_usage: { method: "GET", path: "/v1/assets/{asset_id}/usage" },
12
12
  audit_events_list: { method: "GET", path: "/v1/projects/{project_id}/audit-events" },
@@ -62,6 +62,7 @@ export const OPERATIONS = {
62
62
  records_unpublish: { method: "DELETE", path: "/v1/records/{record_id}/publication" },
63
63
  records_unschedule: { method: "DELETE", path: "/v1/records/{record_id}/schedule" },
64
64
  records_update: { method: "PATCH", path: "/v1/records/{record_id}" },
65
+ revisions_get: { method: "GET", path: "/v1/revisions/{revision_id}" },
65
66
  scheduled_changes_list: { method: "GET", path: "/v1/collections/{collection_id}/scheduled-changes" },
66
67
  schema_changes_get: { method: "GET", path: "/v1/schema-changes/{schema_change_id}" },
67
68
  schema_changes_list: { method: "GET", path: "/v1/collections/{collection_id}/schema-changes" },
@@ -1 +1 @@
1
- export type { Actor, ApiKeyScope, Asset, AssetEventData, AssetField, AssetFieldConfiguration, AssetFieldCreate, AssetList, AssetProperties, AssetUploadCreate, AssetUploadTarget, AssetUsage, AssetWithUpload, AuditEvent, AuditEventList, BooleanField, BooleanFieldConfiguration, BooleanFieldCreate, Change, Collection, CollectionCreate, CollectionList, CollectionUpdate, DateField, DateFieldConfiguration, DateFieldCreate, DecimalField, DecimalFieldConfiguration, DecimalFieldCreate, DownloadUrl, Draft, DraftCreate, DraftEventData, DraftList, DraftSchedule, DraftScheduleUpdate, EnumField, EnumFieldConfiguration, EnumFieldCreate, Error, ErrorDetail, ErrorType, FeatureFlags, Field, FieldAliasEventData, FieldConfiguration, FieldCreate, FieldCreateProperties, FieldDefinition, FieldList, FieldMigration, FieldMigrationCounts, FieldMigrationList, FieldMigrationPreview, FieldMigrationRequest, FieldOrder, FieldProperties, FieldType, FieldUpdate, Health, ImageUrl, IntegerField, IntegerFieldConfiguration, IntegerFieldCreate, JsonField, JsonFieldConfiguration, JsonFieldCreate, ListMeta, LongTextField, LongTextFieldConfiguration, LongTextFieldCreate, MergedDraft, NullableTimestamp, Principal, PublishedOnly, RecordBatch, RecordBatchRequest, RecordCount, RecordData, RecordDiff, RecordEventData, RecordFilterValue, RecordList, RecordPublication, RecordRevision, RecordRevisionDetail, RecordRevisionList, RecordRevisionOperation, RecordRevisionProperties, RecordSchedule, RecordScheduleUpdate, RecordWrite, RelationField, RelationFieldConfiguration, RelationFieldCreate, RequestId, RevertPreview, RichTextField, RichTextFieldConfiguration, RichTextFieldCreate, ScheduledChange, ScheduledChangeList, Schema, SchemaChange, SchemaChangeDetail, SchemaChangeList, SchemaChangeProperties, SchemaDefinition, SchemaEventData, SearchIndex, SearchResults, TextField, TextFieldConfiguration, TextFieldCreate, TimeFilter, Timestamp, Via, Webhook, WebhookCreate, WebhookDelivery, WebhookDeliveryDetail, WebhookDeliveryList, WebhookDeliveryProperties, WebhookEventPayload, WebhookEventType, WebhookList, WebhookProperties, WebhookSecret, WebhookSecretList, WebhookSecretProperties, WebhookSecretWithValue, WebhookSubscription, WebhookTestEventData, WebhookUpdate, WebhookWithSecret, } from "./types.gen.ts";
1
+ export type { Actor, ApiKeyScope, Asset, AssetEventData, AssetField, AssetFieldConfiguration, AssetFieldCreate, AssetKind, AssetList, AssetProperties, AssetUpdate, AssetUploadCreate, AssetUploadTarget, AssetUsage, AssetWithUpload, AuditEvent, AuditEventList, BooleanField, BooleanFieldConfiguration, BooleanFieldCreate, Change, Collection, CollectionCreate, CollectionList, CollectionUpdate, DateField, DateFieldConfiguration, DateFieldCreate, DecimalField, DecimalFieldConfiguration, DecimalFieldCreate, DownloadUrl, Draft, DraftCreate, DraftEventData, DraftList, DraftSchedule, DraftScheduleUpdate, EnumField, EnumFieldConfiguration, EnumFieldCreate, Error, ErrorDetail, ErrorType, FeatureFlags, Field, FieldAliasEventData, FieldConfiguration, FieldCreate, FieldCreateProperties, FieldDefinition, FieldList, FieldMigration, FieldMigrationCounts, FieldMigrationList, FieldMigrationPreview, FieldMigrationRequest, FieldOrder, FieldProperties, FieldType, FieldUpdate, Health, IntegerField, IntegerFieldConfiguration, IntegerFieldCreate, JsonField, JsonFieldConfiguration, JsonFieldCreate, ListMeta, LongTextField, LongTextFieldConfiguration, LongTextFieldCreate, MergedDraft, NullableTimestamp, Principal, PublishedOnly, RecordBatch, RecordBatchRequest, RecordCount, RecordCreate, RecordData, RecordDiff, RecordEventData, RecordFilterValue, RecordList, RecordPublication, RecordRevision, RecordRevisionDetail, RecordRevisionList, RecordRevisionOperation, RecordRevisionProperties, RecordSchedule, RecordScheduleUpdate, RecordWrite, RelationField, RelationFieldConfiguration, RelationFieldCreate, RequestId, RevertPreview, RichTextField, RichTextFieldConfiguration, RichTextFieldCreate, ScheduledChange, ScheduledChangeList, Schema, SchemaChange, SchemaChangeDetail, SchemaChangeList, SchemaChangeProperties, SchemaDefinition, SchemaEventData, SearchIndex, SearchResults, TextField, TextFieldConfiguration, TextFieldCreate, TimeFilter, Timestamp, Via, Webhook, WebhookCreate, WebhookDelivery, WebhookDeliveryDetail, WebhookDeliveryList, WebhookDeliveryProperties, WebhookEventPayload, WebhookEventType, WebhookList, WebhookProperties, WebhookSecret, WebhookSecretList, WebhookSecretProperties, WebhookSecretWithValue, WebhookSubscription, WebhookTestEventData, WebhookUpdate, WebhookWithSecret, } from "./types.gen.ts";