@zeyos/client 0.3.0 → 0.4.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.
Files changed (102) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +31 -1
  3. package/agents/README.md +2 -0
  4. package/agents/shared/zeyos-entity-map.md +5 -1
  5. package/agents/shared/zeyos-entity-reference.md +89 -33
  6. package/docs/03-cli/02-commands.md +28 -0
  7. package/docs/06-okf/01-overview.md +70 -0
  8. package/docs/06-okf/02-producing-and-consuming.md +46 -0
  9. package/docs/06-okf/03-keeping-fresh.md +53 -0
  10. package/docs/06-okf/04-loops.md +58 -0
  11. package/docs/06-okf/_category_.json +9 -0
  12. package/okf/concepts/counting-and-sums.md +10 -0
  13. package/okf/concepts/dates-unix-seconds.md +12 -0
  14. package/okf/concepts/enums.md +14 -0
  15. package/okf/concepts/filters-vs-filter.md +14 -0
  16. package/okf/concepts/index.md +8 -0
  17. package/okf/concepts/operationid-vocabulary.md +17 -0
  18. package/okf/concepts/visibility-column.md +13 -0
  19. package/okf/entities/accounts.md +82 -0
  20. package/okf/entities/actionsteps.md +84 -0
  21. package/okf/entities/addresses.md +50 -0
  22. package/okf/entities/applicationassets.md +43 -0
  23. package/okf/entities/applications.md +62 -0
  24. package/okf/entities/appointments.md +79 -0
  25. package/okf/entities/associations.md +41 -0
  26. package/okf/entities/binfiles.md +32 -0
  27. package/okf/entities/campaigns.md +66 -0
  28. package/okf/entities/categories.md +55 -0
  29. package/okf/entities/channels.md +54 -0
  30. package/okf/entities/comments.md +44 -0
  31. package/okf/entities/components.md +46 -0
  32. package/okf/entities/contacts.md +96 -0
  33. package/okf/entities/contacts2contacts.md +42 -0
  34. package/okf/entities/contracts.md +83 -0
  35. package/okf/entities/couponcodes.md +58 -0
  36. package/okf/entities/coupons.md +69 -0
  37. package/okf/entities/customfields.md +59 -0
  38. package/okf/entities/davservers.md +74 -0
  39. package/okf/entities/devices.md +65 -0
  40. package/okf/entities/documents.md +76 -0
  41. package/okf/entities/dunning.md +82 -0
  42. package/okf/entities/dunning2transactions.md +46 -0
  43. package/okf/entities/entities2channels.md +42 -0
  44. package/okf/entities/events.md +57 -0
  45. package/okf/entities/feedservers.md +67 -0
  46. package/okf/entities/files.md +50 -0
  47. package/okf/entities/follows.md +40 -0
  48. package/okf/entities/forks.md +54 -0
  49. package/okf/entities/groups.md +48 -0
  50. package/okf/entities/groups2users.md +44 -0
  51. package/okf/entities/index.md +93 -0
  52. package/okf/entities/invitations.md +53 -0
  53. package/okf/entities/items.md +95 -0
  54. package/okf/entities/ledgers.md +56 -0
  55. package/okf/entities/likes.md +40 -0
  56. package/okf/entities/links.md +70 -0
  57. package/okf/entities/mailinglists.md +67 -0
  58. package/okf/entities/mailingrecipients.md +45 -0
  59. package/okf/entities/mailservers.md +77 -0
  60. package/okf/entities/messagereads.md +40 -0
  61. package/okf/entities/messages.md +104 -0
  62. package/okf/entities/notes.md +73 -0
  63. package/okf/entities/objects.md +70 -0
  64. package/okf/entities/opportunities.md +87 -0
  65. package/okf/entities/participants.md +52 -0
  66. package/okf/entities/payments.md +76 -0
  67. package/okf/entities/permissions.md +46 -0
  68. package/okf/entities/pricelists.md +70 -0
  69. package/okf/entities/pricelists2accounts.md +46 -0
  70. package/okf/entities/prices.md +49 -0
  71. package/okf/entities/projects.md +72 -0
  72. package/okf/entities/records.md +75 -0
  73. package/okf/entities/relateditems.md +43 -0
  74. package/okf/entities/resources.md +55 -0
  75. package/okf/entities/services.md +64 -0
  76. package/okf/entities/stocktransactions.md +72 -0
  77. package/okf/entities/storages.md +56 -0
  78. package/okf/entities/suppliers.md +51 -0
  79. package/okf/entities/tasks.md +86 -0
  80. package/okf/entities/tickets.md +86 -0
  81. package/okf/entities/transactions.md +118 -0
  82. package/okf/entities/users.md +66 -0
  83. package/okf/entities/weblets.md +66 -0
  84. package/okf/index.md +11 -0
  85. package/okf/log.md +4 -0
  86. package/okf/metrics/cash-received.md +10 -0
  87. package/okf/metrics/index.md +6 -0
  88. package/okf/metrics/invoiced-net-revenue.md +16 -0
  89. package/okf/metrics/open-customers.md +14 -0
  90. package/okf/metrics/overdue-receivables.md +12 -0
  91. package/okf/playbooks/customer-360.md +12 -0
  92. package/okf/playbooks/index.md +5 -0
  93. package/okf/playbooks/revenue-this-year.md +19 -0
  94. package/okf/playbooks/ticket-work-packet.md +11 -0
  95. package/package.json +9 -2
  96. package/scripts/data/okf-curation.mjs +258 -0
  97. package/scripts/generate-client.mjs +4 -275
  98. package/scripts/generate-okf.mjs +241 -0
  99. package/scripts/lib/okf.mjs +272 -0
  100. package/scripts/lib/spec-model.mjs +325 -0
  101. package/src/index.js +4 -0
  102. package/src/runtime/okf.js +237 -0
@@ -0,0 +1,17 @@
1
+ ---
2
+ type: Reference
3
+ title: operationId ≠ table noun
4
+ description: "REST operationIds are CamelCase compounds; several diverge from the dbref noun."
5
+ tags: [query]
6
+ ---
7
+
8
+ The dbref table noun (also the REST URL path segment) is **not** the `@zeyos/client` operationId. Most follow `list<Plural>`/`get<Singular>`/… but several diverge:
9
+
10
+ - `dunning` → `listDunningNotices` / `getDunningNotice`
11
+ - `dunning2transactions` → `listDunningToTransactions`
12
+ - `pricelists` → `listPriceLists`; `pricelists2accounts` → `listPriceListsToAccounts`
13
+ - `mailinglists` → `listMailingLists`; `actionsteps` → `listActionSteps`
14
+ - `categories` → `listCategorys` (sic) but `getCategory`
15
+ - `davservers` → `listDAVServers`; `binfiles` → `listBinFiles` (list-only)
16
+
17
+ Each entity concept's **Operations** section lists its real operationIds (read straight from `api.json`). `client.schema.validate()` suggests the closest operationId for an unknown name.
@@ -0,0 +1,13 @@
1
+ ---
2
+ type: Reference
3
+ title: visibility: 0 (only where the column exists)
4
+ description: "visibility:0 hides archived rows — but only resources that have the column."
5
+ tags: [query]
6
+ ---
7
+
8
+ `visibility = 0` excludes archived/deleted rows, but **only some resources have a `visibility` column**:
9
+
10
+ - Have it: [tickets](/entities/tickets.md), [accounts](/entities/accounts.md), [items](/entities/items.md).
11
+ - Do **not** have it: [transactions](/entities/transactions.md) — adding `"visibility":0` there returns an opaque **HTTP 400**.
12
+
13
+ More generally, filtering on any column a resource lacks 400s with no field name. Include `visibility:0` on resources that have it unless the user wants archived records; `zeyos describe <resource>` tells you whether the column exists.
@@ -0,0 +1,82 @@
1
+ ---
2
+ type: ZeyOS Entity
3
+ title: Accounts
4
+ description: Customer, supplier, prospect, or employee master records.
5
+ resource: zeyos://api/accounts
6
+ tags: [crm, generated]
7
+ api_backed: true
8
+ list_operation: listAccounts
9
+ visibility_column: true
10
+ ---
11
+
12
+ <!-- okf:generated:start — rewritten by scripts/generate-okf.mjs; do not edit by hand -->
13
+ # Schema
14
+
15
+ | Column | Type | Nullable | Default | Indexed | FK |
16
+ |---|---|---|---|---|---|
17
+ | `ID` | integer | no | — | yes | — |
18
+ | `fork` | integer | yes | — | yes | [forks](/entities/forks.md) |
19
+ | `ownergroup` | integer | yes | — | yes | [groups](/entities/groups.md) |
20
+ | `creator` | integer | yes | — | — | — |
21
+ | `assigneduser` | integer | yes | — | yes | [users](/entities/users.md) |
22
+ | `creationdate` | bigint | no | `date_part('epoch', now())` | — | — |
23
+ | `lastmodified` | bigint | no | `date_part('epoch', now())` | — | — |
24
+ | `contact` | integer | yes | — | yes | [contacts](/entities/contacts.md) |
25
+ | `visibility` | smallint | no | `0` | — | — |
26
+ | `lastname` | text | no | `''` | yes | — |
27
+ | `firstname` | text | no | `''` | yes | — |
28
+ | `type` | smallint | no | `0` | — | — |
29
+ | `customernum` | text | no | `''` | yes | — |
30
+ | `suppliernum` | text | no | `''` | yes | — |
31
+ | `taxid` | text | no | `''` | — | — |
32
+ | `currency` | character varying(3) | no | — | — | — |
33
+ | `locked` | smallint | no | `0` | — | — |
34
+ | `excludetax` | smallint | no | `0` | — | — |
35
+ | `description` | text | no | `''` | — | — |
36
+
37
+ # Foreign Keys
38
+
39
+ - `fork` → [forks](/entities/forks.md) (`forks.ID`)
40
+ - `ownergroup` → [groups](/entities/groups.md) (`groups.ID`)
41
+ - `assigneduser` → [users](/entities/users.md) (`users.ID`)
42
+ - `contact` → [contacts](/entities/contacts.md) (`contacts.ID`)
43
+
44
+ # Enums
45
+
46
+ ### `visibility`
47
+
48
+ `0` = REGULAR · `1` = ARCHIVED · `2` = DELETED
49
+
50
+ ### `type`
51
+
52
+ `0` = PROSPECT · `1` = CUSTOMER · `2` = SUPPLIER · `3` = CUSTOMERANDSUPPLIER · `4` = COMPETITOR · `5` = EMPLOYEE
53
+
54
+ # Indexes
55
+
56
+ - `fk_accounts_assigneduser` — gin, partial on `assigneduser`
57
+ - `fk_accounts_contact` — btree, partial on `contact`
58
+ - `fk_accounts_fork` — gin, partial on `fork`
59
+ - `fk_accounts_ownergroup` — gin on `ownergroup`
60
+ - `i_accounts_lastname_firstname` — btree on `lastname, firstname`
61
+ - `i_accounts_nofork` — gin, partial on `fork`
62
+ - `i_accounts_noowner` — gin, partial on `ownergroup`
63
+ - `s_accounts_customernum` — gin, partial on `customernum`
64
+ - `s_accounts_firstname` — gin, partial on `firstname`
65
+ - `s_accounts_lastname` — gin, partial on `lastname`
66
+ - `s_accounts_suppliernum` — gin, partial on `suppliernum`
67
+
68
+ > Partial/GIN indexes back the `filters` (plural) query form for foreign-key fields. See [filters-vs-filter](/concepts/filters-vs-filter.md).
69
+
70
+ # Operations
71
+
72
+ - list: `listAccounts`
73
+ - get: `getAccount`
74
+ - create: `createAccount`
75
+ - update: `updateAccount`
76
+ - delete: `deleteAccount`
77
+ - exists: `existsAccount`
78
+ <!-- okf:generated:end -->
79
+
80
+ # Notes
81
+
82
+ No `name` column — use `lastname` + `firstname`. `type`: 0=PROSPECT,1=CUSTOMER,2=SUPPLIER,3=CUSTOMERANDSUPPLIER,4=COMPETITOR,5=EMPLOYEE. `createAccount` REQUIRES `currency` (NOT NULL, no default) or it 500s.
@@ -0,0 +1,84 @@
1
+ ---
2
+ type: ZeyOS Entity
3
+ title: Action Steps
4
+ description: Cross-record follow-up work items with assignee, due date, status, and effort.
5
+ resource: zeyos://api/actionsteps
6
+ tags: [work, generated]
7
+ api_backed: true
8
+ list_operation: listActionSteps
9
+ visibility_column: false
10
+ ---
11
+
12
+ <!-- okf:generated:start — rewritten by scripts/generate-okf.mjs; do not edit by hand -->
13
+ # Schema
14
+
15
+ | Column | Type | Nullable | Default | Indexed | FK |
16
+ |---|---|---|---|---|---|
17
+ | `ID` | integer | no | — | yes | — |
18
+ | `fork` | integer | yes | — | yes | [forks](/entities/forks.md) |
19
+ | `owneruser` | integer | yes | — | yes | [users](/entities/users.md) |
20
+ | `ownergroup` | integer | yes | — | yes | [groups](/entities/groups.md) |
21
+ | `creator` | integer | yes | — | — | — |
22
+ | `assigneduser` | integer | yes | — | yes | [users](/entities/users.md) |
23
+ | `creationdate` | bigint | no | `date_part('epoch', now())` | — | — |
24
+ | `lastmodified` | bigint | no | `date_part('epoch', now())` | — | — |
25
+ | `task` | integer | yes | — | yes | [tasks](/entities/tasks.md) |
26
+ | `ticket` | integer | yes | — | yes | [tickets](/entities/tickets.md) |
27
+ | `account` | integer | yes | — | yes | [accounts](/entities/accounts.md) |
28
+ | `transaction` | integer | yes | — | yes | [transactions](/entities/transactions.md) |
29
+ | `name` | text | no | — | yes | — |
30
+ | `actionnum` | text | no | `''` | yes | — |
31
+ | `date` | bigint | no | `date_part('epoch', now())` | yes | — |
32
+ | `duedate` | bigint | yes | — | — | — |
33
+ | `status` | smallint | no | `0` | — | — |
34
+ | `effort` | integer | no | `0` | — | — |
35
+ | `description` | text | no | `''` | — | — |
36
+
37
+ # Foreign Keys
38
+
39
+ - `fork` → [forks](/entities/forks.md) (`forks.ID`)
40
+ - `owneruser` → [users](/entities/users.md) (`users.ID`)
41
+ - `ownergroup` → [groups](/entities/groups.md) (`groups.ID`)
42
+ - `assigneduser` → [users](/entities/users.md) (`users.ID`)
43
+ - `task` → [tasks](/entities/tasks.md) (`tasks.ID`)
44
+ - `ticket` → [tickets](/entities/tickets.md) (`tickets.ID`)
45
+ - `account` → [accounts](/entities/accounts.md) (`accounts.ID`)
46
+ - `transaction` → [transactions](/entities/transactions.md) (`transactions.ID`)
47
+
48
+ # Enums
49
+
50
+ ### `status`
51
+
52
+ `0` = DRAFT · `1` = COMPLETED · `2` = CANCELLED · `3` = BOOKED
53
+
54
+ # Indexes
55
+
56
+ - `fk_actionsteps_account` — btree, partial on `account`
57
+ - `fk_actionsteps_assigneduser` — gin, partial on `assigneduser`
58
+ - `fk_actionsteps_fork` — gin, partial on `fork`
59
+ - `fk_actionsteps_ownergroup` — gin, partial on `ownergroup`
60
+ - `fk_actionsteps_owneruser` — gin, partial on `owneruser`
61
+ - `fk_actionsteps_task` — btree, partial on `task`
62
+ - `fk_actionsteps_ticket` — btree, partial on `ticket`
63
+ - `fk_actionsteps_transaction` — btree, partial on `transaction`
64
+ - `i_actionsteps_date` — btree on `date`
65
+ - `i_actionsteps_nofork` — gin, partial on `fork`
66
+ - `i_actionsteps_noowner` — gin, partial on `ownergroup`
67
+ - `s_actionsteps_actionnum` — gin, partial on `actionnum`
68
+ - `s_actionsteps_name` — gin on `name`
69
+
70
+ > Partial/GIN indexes back the `filters` (plural) query form for foreign-key fields. See [filters-vs-filter](/concepts/filters-vs-filter.md).
71
+
72
+ # Operations
73
+
74
+ - list: `listActionSteps`
75
+ - get: `getActionStep`
76
+ - create: `createActionStep`
77
+ - update: `updateActionStep`
78
+ - delete: `deleteActionStep`
79
+ - exists: `existsActionStep`
80
+ <!-- okf:generated:end -->
81
+
82
+ # Notes
83
+
84
+ Record-bound follow-ups (linked to a task, ticket, or account, with optional transaction). Do not inflate into full project tasks.
@@ -0,0 +1,50 @@
1
+ ---
2
+ type: ZeyOS Entity
3
+ title: Addresses
4
+ description: Additional address records linked to accounts or contacts.
5
+ resource: zeyos://api/addresses
6
+ tags: [crm, generated]
7
+ api_backed: true
8
+ list_operation: listAddresses
9
+ visibility_column: false
10
+ ---
11
+
12
+ <!-- okf:generated:start — rewritten by scripts/generate-okf.mjs; do not edit by hand -->
13
+ # Schema
14
+
15
+ | Column | Type | Nullable | Default | Indexed | FK |
16
+ |---|---|---|---|---|---|
17
+ | `ID` | bigint | no | — | yes | — |
18
+ | `creator` | integer | yes | — | — | — |
19
+ | `creationdate` | bigint | no | `date_part('epoch', now())` | — | — |
20
+ | `lastmodified` | bigint | no | `date_part('epoch', now())` | — | — |
21
+ | `account` | integer | no | — | yes | [accounts](/entities/accounts.md) |
22
+ | `contact` | integer | no | — | yes | [contacts](/entities/contacts.md) |
23
+ | `type` | smallint | no | `0` | yes | — |
24
+ | `default` | smallint | no | `0` | yes | — |
25
+
26
+ # Foreign Keys
27
+
28
+ - `account` → [accounts](/entities/accounts.md) (`accounts.ID`)
29
+ - `contact` → [contacts](/entities/contacts.md) (`contacts.ID`)
30
+
31
+ # Enums
32
+
33
+ ### `type`
34
+
35
+ `0` = BILLING_SHIPPING · `1` = BILLING_BILLING · `2` = PROCUREMENT_SHIPPING · `3` = PROCUREMENT_BILLING · `4` = COLLECTION · `5` = BILLING_SELLER · `6` = PROCUREMENT_SELLER
36
+
37
+ # Indexes
38
+
39
+ - `fk_addresses_contact` — btree on `contact`
40
+ - `u_addresses_account_contact_type` — btree, unique on `account, contact, type, +default`
41
+
42
+ # Operations
43
+
44
+ - list: `listAddresses`
45
+ - get: `getAddress`
46
+ - create: `createAddress`
47
+ - update: `updateAddress`
48
+ - delete: `deleteAddress`
49
+ - exists: `existsAddress`
50
+ <!-- okf:generated:end -->
@@ -0,0 +1,43 @@
1
+ ---
2
+ type: ZeyOS Entity
3
+ title: Application Assets
4
+ description: Assets linked to an application.
5
+ resource: zeyos://api/applicationassets
6
+ tags: [platform, generated]
7
+ api_backed: true
8
+ list_operation: listApplicationAssets
9
+ visibility_column: false
10
+ ---
11
+
12
+ <!-- okf:generated:start — rewritten by scripts/generate-okf.mjs; do not edit by hand -->
13
+ # Schema
14
+
15
+ | Column | Type | Nullable | Default | Indexed | FK |
16
+ |---|---|---|---|---|---|
17
+ | `ID` | bigint | no | — | yes | — |
18
+ | `creator` | integer | yes | — | — | — |
19
+ | `creationdate` | bigint | no | `EXTRACT(epoch FROM now())` | — | — |
20
+ | `lastmodified` | bigint | no | `EXTRACT(epoch FROM now())` | — | — |
21
+ | `application` | integer | no | — | yes | [applications](/entities/applications.md) |
22
+ | `binfile` | integer | yes | — | yes | [binfiles](/entities/binfiles.md) |
23
+ | `filename` | text | no | — | yes | — |
24
+ | `mimetype` | text | no | `'application/octet-stream'` | — | — |
25
+
26
+ # Foreign Keys
27
+
28
+ - `application` → [applications](/entities/applications.md) (`applications.ID`)
29
+ - `binfile` → [binfiles](/entities/binfiles.md) (`binfiles.ID`)
30
+
31
+ # Indexes
32
+
33
+ - `fk_applicationassets_binfile` — btree, partial on `binfile`
34
+ - `u_applicationassets_application_filename` — btree, unique on `application, filename`
35
+
36
+ > Partial/GIN indexes back the `filters` (plural) query form for foreign-key fields. See [filters-vs-filter](/concepts/filters-vs-filter.md).
37
+
38
+ # Operations
39
+
40
+ - list: `listApplicationAssets`
41
+ - get: `getApplicationAsset`
42
+ - exists: `existsApplicationAsset`
43
+ <!-- okf:generated:end -->
@@ -0,0 +1,62 @@
1
+ ---
2
+ type: ZeyOS Entity
3
+ title: Applications
4
+ description: Application definitions.
5
+ resource: zeyos://api/applications
6
+ tags: [platform, generated]
7
+ api_backed: true
8
+ list_operation: listApplications
9
+ visibility_column: false
10
+ ---
11
+
12
+ <!-- okf:generated:start — rewritten by scripts/generate-okf.mjs; do not edit by hand -->
13
+ # Schema
14
+
15
+ | Column | Type | Nullable | Default | Indexed | FK |
16
+ |---|---|---|---|---|---|
17
+ | `ID` | integer | no | — | yes | — |
18
+ | `creator` | integer | yes | — | — | — |
19
+ | `creationdate` | bigint | no | `date_part('epoch', now())` | — | — |
20
+ | `lastmodified` | bigint | no | `date_part('epoch', now())` | — | — |
21
+ | `activity` | smallint | no | `0` | — | — |
22
+ | `readmebinfile` | integer | yes | — | — | [binfiles](/entities/binfiles.md) |
23
+ | `name` | text | no | — | yes | — |
24
+ | `identifier` | character varying(200) | no | — | yes | — |
25
+ | `vendor` | text | no | `''` | — | — |
26
+ | `restricted` | smallint | no | `0` | — | — |
27
+ | `callbackurls` | text[] | yes | — | — | — |
28
+ | `settingscodebinfile` | integer | yes | — | yes | [binfiles](/entities/binfiles.md) |
29
+ | `usersettingscodebinfile` | integer | yes | — | yes | [binfiles](/entities/binfiles.md) |
30
+ | `secret` | bytea | yes | — | yes | — |
31
+ | `defaultsettings` | json | yes | — | — | — |
32
+ | `settings` | json | yes | — | — | — |
33
+
34
+ # Foreign Keys
35
+
36
+ - `readmebinfile` → [binfiles](/entities/binfiles.md) (`binfiles.ID`)
37
+ - `settingscodebinfile` → [binfiles](/entities/binfiles.md) (`binfiles.ID`)
38
+ - `usersettingscodebinfile` → [binfiles](/entities/binfiles.md) (`binfiles.ID`)
39
+
40
+ # Enums
41
+
42
+ ### `activity`
43
+
44
+ `0` = ACTIVE · `1` = DEACTIVATED · `2` = DELETED
45
+
46
+ # Indexes
47
+
48
+ - `fk_applications_settingscodebinfile` — btree, partial on `settingscodebinfile`
49
+ - `fk_applications_usersettingscodebinfile` — btree, partial on `usersettingscodebinfile`
50
+ - `s_applications_identifier` — gin on `identifier`
51
+ - `s_applications_name` — gin on `name`
52
+ - `u_applications_identifier` — btree, unique on `identifier`
53
+ - `u_applications_secret` — btree, unique, partial on `secret`
54
+
55
+ > Partial/GIN indexes back the `filters` (plural) query form for foreign-key fields. See [filters-vs-filter](/concepts/filters-vs-filter.md).
56
+
57
+ # Operations
58
+
59
+ - list: `listApplications`
60
+ - get: `getApplication`
61
+ - exists: `existsApplication`
62
+ <!-- okf:generated:end -->
@@ -0,0 +1,79 @@
1
+ ---
2
+ type: ZeyOS Entity
3
+ title: Appointments
4
+ description: Calendar appointments.
5
+ resource: zeyos://api/appointments
6
+ tags: [work, generated]
7
+ api_backed: true
8
+ list_operation: listAppointments
9
+ visibility_column: true
10
+ ---
11
+
12
+ <!-- okf:generated:start — rewritten by scripts/generate-okf.mjs; do not edit by hand -->
13
+ # Schema
14
+
15
+ | Column | Type | Nullable | Default | Indexed | FK |
16
+ |---|---|---|---|---|---|
17
+ | `ID` | integer | no | — | yes | — |
18
+ | `fork` | integer | yes | — | yes | [forks](/entities/forks.md) |
19
+ | `owneruser` | integer | yes | — | yes | [users](/entities/users.md) |
20
+ | `ownergroup` | integer | yes | — | yes | [groups](/entities/groups.md) |
21
+ | `creator` | integer | yes | — | — | — |
22
+ | `assigneduser` | integer | yes | — | yes | [users](/entities/users.md) |
23
+ | `creationdate` | bigint | no | `date_part('epoch', now())` | — | — |
24
+ | `lastmodified` | bigint | no | `date_part('epoch', now())` | — | — |
25
+ | `davserver` | integer | yes | — | yes | [davservers](/entities/davservers.md) |
26
+ | `visibility` | smallint | no | `0` | — | — |
27
+ | `name` | text | no | — | yes | — |
28
+ | `location` | text | no | `''` | yes | — |
29
+ | `color` | character varying(6) | no | `''` | — | — |
30
+ | `datefrom` | bigint | no | — | yes | — |
31
+ | `dateto` | bigint | no | — | yes | — |
32
+ | `recurrence` | smallint | yes | — | — | — |
33
+ | `interval` | smallint | no | `1` | — | — |
34
+ | `maxoccurrences` | integer | no | `0` | — | — |
35
+ | `daterecurrence` | bigint | yes | — | — | — |
36
+ | `description` | text | no | `''` | — | — |
37
+
38
+ # Foreign Keys
39
+
40
+ - `fork` → [forks](/entities/forks.md) (`forks.ID`)
41
+ - `owneruser` → [users](/entities/users.md) (`users.ID`)
42
+ - `ownergroup` → [groups](/entities/groups.md) (`groups.ID`)
43
+ - `assigneduser` → [users](/entities/users.md) (`users.ID`)
44
+ - `davserver` → [davservers](/entities/davservers.md) (`davservers.ID`)
45
+
46
+ # Enums
47
+
48
+ ### `visibility`
49
+
50
+ `0` = REGULAR · `1` = ARCHIVED · `2` = DELETED
51
+
52
+ ### `recurrence`
53
+
54
+ `0` = DAY · `1` = WORKDAY · `2` = WEEK · `3` = MONTH · `4` = YEAR
55
+
56
+ # Indexes
57
+
58
+ - `fk_appointments_assigneduser` — gin, partial on `assigneduser`
59
+ - `fk_appointments_davserver` — gin, partial on `davserver`
60
+ - `fk_appointments_fork` — gin, partial on `fork`
61
+ - `fk_appointments_ownergroup` — gin, partial on `ownergroup`
62
+ - `fk_appointments_owneruser` — gin, partial on `owneruser`
63
+ - `i_appointments_datefrom_dateto` — btree on `datefrom, dateto`
64
+ - `i_appointments_nofork` — gin, partial on `fork`
65
+ - `i_appointments_noowner` — gin, partial on `ownergroup`
66
+ - `s_appointments_location` — gin, partial on `location`
67
+ - `s_appointments_name` — gin on `name`
68
+
69
+ > Partial/GIN indexes back the `filters` (plural) query form for foreign-key fields. See [filters-vs-filter](/concepts/filters-vs-filter.md).
70
+
71
+ # Operations
72
+
73
+ - list: `listAppointments`
74
+ - get: `getAppointment`
75
+ - create: `createAppointment`
76
+ - update: `updateAppointment`
77
+ - delete: `deleteAppointment`
78
+ - exists: `existsAppointment`
79
+ <!-- okf:generated:end -->
@@ -0,0 +1,41 @@
1
+ ---
2
+ type: ZeyOS Entity
3
+ title: Associations
4
+ description: Generic cross-entity relation records with metadata.
5
+ resource: zeyos://api/associations
6
+ tags: [platform, generated]
7
+ api_backed: true
8
+ list_operation: listAssociations
9
+ visibility_column: false
10
+ ---
11
+
12
+ <!-- okf:generated:start — rewritten by scripts/generate-okf.mjs; do not edit by hand -->
13
+ # Schema
14
+
15
+ | Column | Type | Nullable | Default | Indexed | FK |
16
+ |---|---|---|---|---|---|
17
+ | `ID` | bigint | no | — | yes | — |
18
+ | `creator` | integer | yes | — | — | — |
19
+ | `creationdate` | bigint | no | `date_part('epoch', now())` | — | — |
20
+ | `lastmodified` | bigint | no | `EXTRACT(epoch FROM now())` | — | — |
21
+ | `entity1` | t_entity | no | — | yes | — |
22
+ | `entity2` | t_entity | no | — | yes | — |
23
+ | `index1` | integer | no | — | yes | — |
24
+ | `index2` | integer | no | — | yes | — |
25
+ | `relation` | text | no | `''` | — | — |
26
+ | `meta` | json | yes | — | — | — |
27
+
28
+ # Indexes
29
+
30
+ - `i_associations_entity2_index2` — btree on `entity2, index2`
31
+ - `u_associations_entity1_index1_entity2_index2` — btree, unique on `entity1, index1, entity2, index2`
32
+
33
+ # Operations
34
+
35
+ - list: `listAssociations`
36
+ - get: `getAssociation`
37
+ - create: `createAssociation`
38
+ - update: `updateAssociation`
39
+ - delete: `deleteAssociation`
40
+ - exists: `existsAssociation`
41
+ <!-- okf:generated:end -->
@@ -0,0 +1,32 @@
1
+ ---
2
+ type: ZeyOS Entity
3
+ title: Bin Files
4
+ description: Binary file storage records.
5
+ resource: zeyos://api/binfiles
6
+ tags: [platform, generated]
7
+ api_backed: true
8
+ list_operation: listBinFiles
9
+ visibility_column: false
10
+ ---
11
+
12
+ <!-- okf:generated:start — rewritten by scripts/generate-okf.mjs; do not edit by hand -->
13
+ # Schema
14
+
15
+ | Column | Type | Nullable | Default | Indexed | FK |
16
+ |---|---|---|---|---|---|
17
+ | `ID` | integer | no | — | yes | — |
18
+ | `size` | integer | no | — | yes | — |
19
+ | `hash` | bytea | no | — | yes | — |
20
+
21
+ # Indexes
22
+
23
+ - `i_binfiles_hash` — hash on `hash`
24
+
25
+ # Operations
26
+
27
+ - list: `listBinFiles`
28
+ <!-- okf:generated:end -->
29
+
30
+ # Notes
31
+
32
+ List-only: `listBinFiles`.
@@ -0,0 +1,66 @@
1
+ ---
2
+ type: ZeyOS Entity
3
+ title: Campaigns
4
+ description: Marketing or outreach campaigns.
5
+ resource: zeyos://api/campaigns
6
+ tags: [outreach, generated]
7
+ api_backed: true
8
+ list_operation: listCampaigns
9
+ visibility_column: true
10
+ ---
11
+
12
+ <!-- okf:generated:start — rewritten by scripts/generate-okf.mjs; do not edit by hand -->
13
+ # Schema
14
+
15
+ | Column | Type | Nullable | Default | Indexed | FK |
16
+ |---|---|---|---|---|---|
17
+ | `ID` | integer | no | — | yes | — |
18
+ | `fork` | integer | yes | — | yes | [forks](/entities/forks.md) |
19
+ | `ownergroup` | integer | yes | — | yes | [groups](/entities/groups.md) |
20
+ | `creator` | integer | yes | — | — | — |
21
+ | `assigneduser` | integer | yes | — | yes | [users](/entities/users.md) |
22
+ | `creationdate` | bigint | no | `date_part('epoch', now())` | — | — |
23
+ | `lastmodified` | bigint | no | `date_part('epoch', now())` | — | — |
24
+ | `visibility` | smallint | no | `0` | — | — |
25
+ | `name` | text | no | — | yes | — |
26
+ | `datefrom` | bigint | no | — | — | — |
27
+ | `dateto` | bigint | yes | — | — | — |
28
+ | `status` | smallint | no | `0` | — | — |
29
+ | `description` | text | no | `''` | — | — |
30
+
31
+ # Foreign Keys
32
+
33
+ - `fork` → [forks](/entities/forks.md) (`forks.ID`)
34
+ - `ownergroup` → [groups](/entities/groups.md) (`groups.ID`)
35
+ - `assigneduser` → [users](/entities/users.md) (`users.ID`)
36
+
37
+ # Enums
38
+
39
+ ### `visibility`
40
+
41
+ `0` = REGULAR · `1` = ARCHIVED · `2` = DELETED
42
+
43
+ ### `status`
44
+
45
+ `0` = DRAFT · `1` = NOTSTARTED · `2` = AWAITINGAPPROVAL · `3` = APPROVED · `4` = DISMISSED · `5` = ACTIVE · `6` = INACTIVE · `7` = INEVALUATION · `8` = CANCELLED · `9` = CLOSED
46
+
47
+ # Indexes
48
+
49
+ - `fk_campaigns_assigneduser` — gin, partial on `assigneduser`
50
+ - `fk_campaigns_fork` — gin, partial on `fork`
51
+ - `fk_campaigns_ownergroup` — gin on `ownergroup`
52
+ - `i_campaigns_nofork` — gin, partial on `fork`
53
+ - `i_campaigns_noowner` — gin, partial on `ownergroup`
54
+ - `s_campaigns_name` — gin on `name`
55
+
56
+ > Partial/GIN indexes back the `filters` (plural) query form for foreign-key fields. See [filters-vs-filter](/concepts/filters-vs-filter.md).
57
+
58
+ # Operations
59
+
60
+ - list: `listCampaigns`
61
+ - get: `getCampaign`
62
+ - create: `createCampaign`
63
+ - update: `updateCampaign`
64
+ - delete: `deleteCampaign`
65
+ - exists: `existsCampaign`
66
+ <!-- okf:generated:end -->
@@ -0,0 +1,55 @@
1
+ ---
2
+ type: ZeyOS Entity
3
+ title: Categorys
4
+ description: Category definitions.
5
+ resource: zeyos://api/categories
6
+ tags: [commerce, generated]
7
+ api_backed: true
8
+ list_operation: listCategorys
9
+ visibility_column: false
10
+ ---
11
+
12
+ <!-- okf:generated:start — rewritten by scripts/generate-okf.mjs; do not edit by hand -->
13
+ # Schema
14
+
15
+ | Column | Type | Nullable | Default | Indexed | FK |
16
+ |---|---|---|---|---|---|
17
+ | `ID` | integer | no | — | yes | — |
18
+ | `fork` | integer | yes | — | yes | [forks](/entities/forks.md) |
19
+ | `owneruser` | integer | yes | — | yes | [users](/entities/users.md) |
20
+ | `ownergroup` | integer | yes | — | yes | [groups](/entities/groups.md) |
21
+ | `creator` | integer | yes | — | — | — |
22
+ | `creationdate` | bigint | no | `date_part('epoch', now())` | — | — |
23
+ | `lastmodified` | bigint | no | `EXTRACT(epoch FROM now())` | — | — |
24
+ | `entity` | text | no | — | yes | — |
25
+ | `name` | text | no | — | yes | — |
26
+
27
+ # Foreign Keys
28
+
29
+ - `fork` → [forks](/entities/forks.md) (`forks.ID`)
30
+ - `owneruser` → [users](/entities/users.md) (`users.ID`)
31
+ - `ownergroup` → [groups](/entities/groups.md) (`groups.ID`)
32
+
33
+ # Indexes
34
+
35
+ - `i_categories_entity_name_root` — btree, partial on `entity, name`
36
+ - `i_categories_entity_name_sub` — btree, partial on `entity, name`
37
+ - `i_categories_fork_entity_name_root` — btree, partial on `fork, entity, name`
38
+ - `i_categories_fork_entity_name_sub` — btree, partial on `fork, entity, name`
39
+ - `u_categories_fork_entity_name_owneruser_ownergroup` — btree, unique on `fork, entity, name, owneruser, ownergroup`
40
+
41
+ > Partial/GIN indexes back the `filters` (plural) query form for foreign-key fields. See [filters-vs-filter](/concepts/filters-vs-filter.md).
42
+
43
+ # Operations
44
+
45
+ - list: `listCategorys`
46
+ - get: `getCategory`
47
+ - create: `createCategory`
48
+ - update: `updateCategory`
49
+ - delete: `deleteCategory`
50
+ - exists: `existsCategory`
51
+ <!-- okf:generated:end -->
52
+
53
+ # Notes
54
+
55
+ operationId trap: list op is `listCategorys` (sic); singular ops use `Category`.