@fourier-labs/harbour-contracts 0.72.0 → 0.74.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 (31) hide show
  1. package/README.md +2 -2
  2. package/contract-release.json +24 -24
  3. package/dist/gen-ts/app-integrations-declaration.d.ts +29 -20
  4. package/dist/gen-ts/contract-release.d.ts +6 -6
  5. package/dist/gen-ts/contract-release.js +6 -6
  6. package/dist/gen-ts/data-grant-v2.d.ts +2 -2
  7. package/dist/gen-ts/data-source.d.ts +19 -2
  8. package/dist/gen-ts/integration-error-details.d.ts +2 -2
  9. package/dist/gen-ts/integration-execute-input-rules.d.ts +35 -0
  10. package/dist/gen-ts/integration-execute-input-rules.js +15 -0
  11. package/dist/gen-ts/integration-execute-request.d.ts +24 -2
  12. package/dist/gen-ts/integration-execute-result.d.ts +9 -0
  13. package/dist/gen-ts/integration-operations.d.ts +7 -0
  14. package/dist/gen-ts/integration-operations.js +9 -0
  15. package/dist/gen-ts/saas-connection.d.ts +1 -1
  16. package/gen-ts/app-integrations-declaration.ts +29 -20
  17. package/gen-ts/contract-release.ts +6 -6
  18. package/gen-ts/data-grant-v2.ts +2 -1
  19. package/gen-ts/data-source.ts +19 -2
  20. package/gen-ts/integration-error-details.ts +3 -2
  21. package/gen-ts/integration-execute-input-rules.ts +15 -0
  22. package/gen-ts/integration-execute-request.ts +25 -2
  23. package/gen-ts/integration-execute-result.ts +9 -0
  24. package/gen-ts/integration-operations.ts +9 -0
  25. package/gen-ts/saas-connection.ts +1 -0
  26. package/package.json +1 -1
  27. package/schema/app-integrations-declaration.schema.json +478 -67
  28. package/schema/data-source.schema.json +57 -2
  29. package/schema/integration-error-details.schema.json +3 -2
  30. package/schema/integration-execute-request.schema.json +905 -120
  31. package/schema/integration-execute-result.schema.json +520 -82
@@ -77,13 +77,42 @@
77
77
  },
78
78
  "status": {
79
79
  "$ref": "#/definitions/DataSourceStatus"
80
+ },
81
+ "environments": {
82
+ "type": "object",
83
+ "additionalProperties": false,
84
+ "properties": {
85
+ "development": {
86
+ "$ref": "#/definitions/DataSourceEnvironmentCopy"
87
+ },
88
+ "preview": {
89
+ "$ref": "#/definitions/DataSourceEnvironmentCopy"
90
+ }
91
+ },
92
+ "description": "0.74.0: per-environment copies of the source. A read for an environment that has a copy here uses that copy's endpoint and credentialRef; production always uses the top-level endpoint and credentialRef. A development read with no development copy is answered from the app's sample rows (integration-execute-request.sampleRows), never from the source; a preview read with no preview copy uses the production endpoint. A laptop never reads the production endpoint."
80
93
  }
81
94
  },
82
95
  "definitions": {
83
96
  "DataSourceConnector": {
84
97
  "type": "string",
85
- "enum": ["postgres", "redshift", "bigquery", "databricks", "mysql"],
86
- "description": "Closed connector set for the Data-Access MVP."
98
+ "enum": ["postgres", "redshift", "bigquery", "databricks", "mysql", "trino"],
99
+ "description": "Closed connector set for the Data-Access MVP. trino (0.74.0): Trino/Presto-compatible engines (Trino, Presto, Starburst, Galaxy) over the Trino HTTP statement protocol; the endpoint reuses host, port and database (as the Trino catalog) with no connector-specific fields."
100
+ },
101
+ "DataSourceEnvironmentCopy": {
102
+ "type": "object",
103
+ "additionalProperties": false,
104
+ "required": ["endpoint", "credentialRef"],
105
+ "properties": {
106
+ "endpoint": {
107
+ "$ref": "#/definitions/DataSourceEndpoint"
108
+ },
109
+ "credentialRef": {
110
+ "type": "string",
111
+ "pattern": "^secretref://[A-Za-z0-9][A-Za-z0-9/_.:-]*$",
112
+ "description": "secretref URI naming the platform-held credential for this copy. The referenced value never crosses this boundary."
113
+ }
114
+ },
115
+ "description": "One environment's copy of a source: the same endpoint and credentialRef shapes as the top-level fields, for the same connector."
87
116
  },
88
117
  "DataSourceEndpoint": {
89
118
  "type": "object",
@@ -152,6 +181,32 @@
152
181
  "requestableByBuilders": true,
153
182
  "allowValidation": false,
154
183
  "status": "ACTIVE"
184
+ },
185
+ {
186
+ "tenantId": "pocketfm",
187
+ "sourceId": "lakehouse",
188
+ "connector": "trino",
189
+ "displayName": "Lakehouse (Trino)",
190
+ "endpoint": {
191
+ "host": "trino.internal.example.com",
192
+ "port": 8443,
193
+ "database": "hive"
194
+ },
195
+ "credentialRef": "secretref://tenants/pocketfm/sources/lakehouse/reader",
196
+ "environments": {
197
+ "development": {
198
+ "endpoint": {
199
+ "host": "trino-dev.internal.example.com",
200
+ "port": 8443,
201
+ "database": "hive_dev"
202
+ },
203
+ "credentialRef": "secretref://tenants/pocketfm/sources/lakehouse/reader-dev"
204
+ }
205
+ },
206
+ "provisioningMode": "byo",
207
+ "allowedScope": ["analytics.episode_plays"],
208
+ "requestableByBuilders": true,
209
+ "status": "ACTIVE"
155
210
  }
156
211
  ]
157
212
  }
@@ -62,9 +62,10 @@
62
62
  "AUTH_REQUIRED",
63
63
  "UNAVAILABLE",
64
64
  "MODE_NOT_GRANTED",
65
- "MODE_REQUIRED"
65
+ "MODE_REQUIRED",
66
+ "SAMPLE_ROWS_NOT_ALLOWED"
66
67
  ],
67
- "description": "Stable reason codes. SEND_OUTCOME_UNKNOWN: dispatch happened but the outcome is unknown; never re-post automatically. SEND_KEY_REUSED: the idempotency key was seen with a different payload or subject. GRANT_DENIED: IT denied the request. TOKEN_REFRESH_PENDING: another call holds the refresh lease; retry shortly. REQUEST_PENDING: a different request for this grant is still open. INPUT_INVALID: the operation input failed its bounds. IDEMPOTENCY_KEY_REQUIRED: a send without a UUID idempotencyKey. SEND_IN_PROGRESS: a retry arrived while the first send of that key is still running. CONNECTION_NOT_FOUND / APP_NOT_FOUND / GRANT_NOT_FOUND: the named record does not exist. AUTH_REQUIRED: no verified caller. UNAVAILABLE: the governance dependency (store, provider seam) is unreachable. MODE_NOT_GRANTED (403 FORBIDDEN, 0.55.0): a slack.message.post named a mode (app or user) IT has not approved for this app; the post is never served under the other mode. MODE_REQUIRED (400 VALIDATION_FAILED, 0.55.0): the app holds approved grants for both modes and the post named neither."
68
+ "description": "Stable reason codes. SEND_OUTCOME_UNKNOWN: dispatch happened but the outcome is unknown; never re-post automatically. SEND_KEY_REUSED: the idempotency key was seen with a different payload or subject. GRANT_DENIED: IT denied the request. TOKEN_REFRESH_PENDING: another call holds the refresh lease; retry shortly. REQUEST_PENDING: a different request for this grant is still open. INPUT_INVALID: the operation input failed its bounds. IDEMPOTENCY_KEY_REQUIRED: a send without a UUID idempotencyKey. SEND_IN_PROGRESS: a retry arrived while the first send of that key is still running. CONNECTION_NOT_FOUND / APP_NOT_FOUND / GRANT_NOT_FOUND: the named record does not exist. AUTH_REQUIRED: no verified caller. UNAVAILABLE: the governance dependency (store, provider seam) is unreachable. MODE_NOT_GRANTED (403 FORBIDDEN, 0.55.0): a slack.message.post named a mode (app or user) IT has not approved for this app; the post is never served under the other mode. MODE_REQUIRED (400 VALIDATION_FAILED, 0.55.0): the app holds approved grants for both modes and the post named neither. SAMPLE_ROWS_NOT_ALLOWED (400 VALIDATION_FAILED, 0.74.0): an execute request carried sampleRows on any route but the development one. A sample value that does not parse as the column's recorded type is INPUT_INVALID, naming the column and the row."
68
69
  }
69
70
  },
70
71
  "examples": [