@superblocksteam/sdk-api 0.0.6 → 0.0.7
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/README.md +351 -427
- package/dist/api/definition.d.ts +12 -7
- package/dist/api/definition.d.ts.map +1 -1
- package/dist/api/definition.js +19 -12
- package/dist/api/definition.js.map +1 -1
- package/dist/api/definition.test.js +39 -15
- package/dist/api/definition.test.js.map +1 -1
- package/dist/api/index.d.ts +0 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +0 -2
- package/dist/api/index.js.map +1 -1
- package/dist/errors.d.ts +1 -45
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +1 -33
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +16 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -15
- package/dist/index.js.map +1 -1
- package/dist/integrations/anthropic/types.d.ts +3 -22
- package/dist/integrations/anthropic/types.d.ts.map +1 -1
- package/dist/integrations/athena/client.d.ts +1 -1
- package/dist/integrations/athena/client.d.ts.map +1 -1
- package/dist/integrations/athena/client.js.map +1 -1
- package/dist/integrations/athena/types.d.ts +2 -2
- package/dist/integrations/athena/types.d.ts.map +1 -1
- package/dist/integrations/base/graphql-integration-client.d.ts +8 -4
- package/dist/integrations/base/graphql-integration-client.d.ts.map +1 -1
- package/dist/integrations/base/graphql-integration-client.js +18 -5
- package/dist/integrations/base/graphql-integration-client.js.map +1 -1
- package/dist/integrations/base/index.d.ts +3 -2
- package/dist/integrations/base/index.d.ts.map +1 -1
- package/dist/integrations/base/index.js +1 -0
- package/dist/integrations/base/index.js.map +1 -1
- package/dist/integrations/base/rest-api-client-base.d.ts +48 -0
- package/dist/integrations/base/rest-api-client-base.d.ts.map +1 -0
- package/dist/integrations/base/rest-api-client-base.js +98 -0
- package/dist/integrations/base/rest-api-client-base.js.map +1 -0
- package/dist/integrations/base/rest-api-integration-client.d.ts +11 -65
- package/dist/integrations/base/rest-api-integration-client.d.ts.map +1 -1
- package/dist/integrations/base/rest-api-integration-client.js +11 -174
- package/dist/integrations/base/rest-api-integration-client.js.map +1 -1
- package/dist/integrations/base/types.d.ts +1 -67
- package/dist/integrations/base/types.d.ts.map +1 -1
- package/dist/integrations/bigquery/client.d.ts +1 -1
- package/dist/integrations/bigquery/client.d.ts.map +1 -1
- package/dist/integrations/bigquery/client.js.map +1 -1
- package/dist/integrations/bigquery/types.d.ts +3 -3
- package/dist/integrations/bigquery/types.d.ts.map +1 -1
- package/dist/integrations/box/types.d.ts +1 -1
- package/dist/integrations/cockroachdb/client.d.ts +1 -1
- package/dist/integrations/cockroachdb/client.d.ts.map +1 -1
- package/dist/integrations/cockroachdb/client.js.map +1 -1
- package/dist/integrations/cockroachdb/types.d.ts.map +1 -1
- package/dist/integrations/cosmosdb/client.d.ts +1 -1
- package/dist/integrations/cosmosdb/client.d.ts.map +1 -1
- package/dist/integrations/cosmosdb/client.js.map +1 -1
- package/dist/integrations/cosmosdb/client.test.js.map +1 -1
- package/dist/integrations/cosmosdb/types.d.ts.map +1 -1
- package/dist/integrations/databricks/client.d.ts +1 -1
- package/dist/integrations/databricks/client.d.ts.map +1 -1
- package/dist/integrations/databricks/client.js.map +1 -1
- package/dist/integrations/databricks/types.d.ts +3 -3
- package/dist/integrations/databricks/types.d.ts.map +1 -1
- package/dist/integrations/declarations.d.ts +36 -104
- package/dist/integrations/declarations.d.ts.map +1 -1
- package/dist/integrations/declarations.js +5 -68
- package/dist/integrations/declarations.js.map +1 -1
- package/dist/integrations/declarations.test.js.map +1 -1
- package/dist/integrations/documentation-resolver.test.d.ts +2 -0
- package/dist/integrations/documentation-resolver.test.d.ts.map +1 -0
- package/dist/integrations/documentation-resolver.test.js +608 -0
- package/dist/integrations/documentation-resolver.test.js.map +1 -0
- package/dist/integrations/documentation.d.ts +8 -0
- package/dist/integrations/documentation.d.ts.map +1 -0
- package/dist/integrations/documentation.js +277 -0
- package/dist/integrations/documentation.js.map +1 -0
- package/dist/integrations/documentation.test.d.ts +2 -0
- package/dist/integrations/documentation.test.d.ts.map +1 -0
- package/dist/integrations/documentation.test.js +81 -0
- package/dist/integrations/documentation.test.js.map +1 -0
- package/dist/integrations/dynamodb/client.d.ts +1 -1
- package/dist/integrations/dynamodb/client.d.ts.map +1 -1
- package/dist/integrations/dynamodb/client.js.map +1 -1
- package/dist/integrations/dynamodb/types.d.ts.map +1 -1
- package/dist/integrations/gcs/client.d.ts +1 -1
- package/dist/integrations/gcs/client.d.ts.map +1 -1
- package/dist/integrations/gcs/client.js.map +1 -1
- package/dist/integrations/gcs/types.d.ts.map +1 -1
- package/dist/integrations/googledrive/types.d.ts +1 -1
- package/dist/integrations/graphql/client.test.d.ts +15 -0
- package/dist/integrations/graphql/client.test.d.ts.map +1 -0
- package/dist/integrations/graphql/client.test.js +148 -0
- package/dist/integrations/graphql/client.test.js.map +1 -0
- package/dist/integrations/graphql/types.d.ts +22 -3
- package/dist/integrations/graphql/types.d.ts.map +1 -1
- package/dist/integrations/gsheets/client.d.ts +1 -1
- package/dist/integrations/gsheets/client.d.ts.map +1 -1
- package/dist/integrations/gsheets/client.js.map +1 -1
- package/dist/integrations/gsheets/types.d.ts.map +1 -1
- package/dist/integrations/index.d.ts +2 -12
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js +2 -8
- package/dist/integrations/index.js.map +1 -1
- package/dist/integrations/lakebase/client.d.ts +1 -1
- package/dist/integrations/lakebase/client.d.ts.map +1 -1
- package/dist/integrations/lakebase/client.js.map +1 -1
- package/dist/integrations/lakebase/types.d.ts +4 -4
- package/dist/integrations/lakebase/types.d.ts.map +1 -1
- package/dist/integrations/mariadb/client.d.ts +1 -1
- package/dist/integrations/mariadb/client.d.ts.map +1 -1
- package/dist/integrations/mariadb/client.js.map +1 -1
- package/dist/integrations/mariadb/types.d.ts +2 -2
- package/dist/integrations/mariadb/types.d.ts.map +1 -1
- package/dist/integrations/mongodb/client.d.ts +1 -1
- package/dist/integrations/mongodb/client.d.ts.map +1 -1
- package/dist/integrations/mongodb/client.js.map +1 -1
- package/dist/integrations/mongodb/types.d.ts.map +1 -1
- package/dist/integrations/mssql/client.d.ts +1 -1
- package/dist/integrations/mssql/client.d.ts.map +1 -1
- package/dist/integrations/mssql/client.js.map +1 -1
- package/dist/integrations/mssql/types.d.ts +2 -2
- package/dist/integrations/mssql/types.d.ts.map +1 -1
- package/dist/integrations/mysql/client.d.ts +1 -1
- package/dist/integrations/mysql/client.d.ts.map +1 -1
- package/dist/integrations/mysql/client.js.map +1 -1
- package/dist/integrations/mysql/types.d.ts +4 -4
- package/dist/integrations/mysql/types.d.ts.map +1 -1
- package/dist/integrations/openai_v2/types.d.ts +4 -22
- package/dist/integrations/openai_v2/types.d.ts.map +1 -1
- package/dist/integrations/oracledb/client.d.ts +1 -1
- package/dist/integrations/oracledb/client.d.ts.map +1 -1
- package/dist/integrations/oracledb/client.js.map +1 -1
- package/dist/integrations/oracledb/types.d.ts +2 -2
- package/dist/integrations/oracledb/types.d.ts.map +1 -1
- package/dist/integrations/postgres/client.d.ts +2 -2
- package/dist/integrations/postgres/client.d.ts.map +1 -1
- package/dist/integrations/postgres/client.js.map +1 -1
- package/dist/integrations/postgres/types.d.ts.map +1 -1
- package/dist/integrations/redshift/client.d.ts +1 -1
- package/dist/integrations/redshift/client.d.ts.map +1 -1
- package/dist/integrations/redshift/client.js.map +1 -1
- package/dist/integrations/redshift/types.d.ts.map +1 -1
- package/dist/integrations/registry.d.ts +6 -27
- package/dist/integrations/registry.d.ts.map +1 -1
- package/dist/integrations/registry.js +64 -88
- package/dist/integrations/registry.js.map +1 -1
- package/dist/integrations/registry.test.js +1 -3
- package/dist/integrations/registry.test.js.map +1 -1
- package/dist/integrations/restapiintegration/types.d.ts +2 -2
- package/dist/integrations/restapiintegration/types.d.ts.map +1 -1
- package/dist/integrations/s3/client.d.ts +1 -1
- package/dist/integrations/s3/client.d.ts.map +1 -1
- package/dist/integrations/s3/client.js.map +1 -1
- package/dist/integrations/s3/types.d.ts +3 -1
- package/dist/integrations/s3/types.d.ts.map +1 -1
- package/dist/integrations/salesforce/client.d.ts +1 -1
- package/dist/integrations/salesforce/client.d.ts.map +1 -1
- package/dist/integrations/salesforce/client.js.map +1 -1
- package/dist/integrations/salesforce/types.d.ts.map +1 -1
- package/dist/integrations/slack/client.d.ts +13 -9
- package/dist/integrations/slack/client.d.ts.map +1 -1
- package/dist/integrations/slack/client.js +60 -8
- package/dist/integrations/slack/client.js.map +1 -1
- package/dist/integrations/slack/client.test.d.ts +11 -0
- package/dist/integrations/slack/client.test.d.ts.map +1 -0
- package/dist/integrations/slack/client.test.js +368 -0
- package/dist/integrations/slack/client.test.js.map +1 -0
- package/dist/integrations/slack/index.d.ts +2 -1
- package/dist/integrations/slack/index.d.ts.map +1 -1
- package/dist/integrations/slack/index.js +1 -0
- package/dist/integrations/slack/index.js.map +1 -1
- package/dist/integrations/slack/types.d.ts +127 -28
- package/dist/integrations/slack/types.d.ts.map +1 -1
- package/dist/integrations/slack/types.js +27 -1
- package/dist/integrations/slack/types.js.map +1 -1
- package/dist/integrations/smtp/client.d.ts +1 -1
- package/dist/integrations/smtp/client.d.ts.map +1 -1
- package/dist/integrations/smtp/client.js.map +1 -1
- package/dist/integrations/snowflake/client.d.ts +3 -3
- package/dist/integrations/snowflake/client.d.ts.map +1 -1
- package/dist/integrations/snowflake/client.js +2 -2
- package/dist/integrations/snowflake/client.js.map +1 -1
- package/dist/integrations/snowflake/types.d.ts.map +1 -1
- package/dist/integrations/snowflakecortex/client.d.ts +1 -2
- package/dist/integrations/snowflakecortex/client.d.ts.map +1 -1
- package/dist/integrations/snowflakecortex/client.js +1 -2
- package/dist/integrations/snowflakecortex/client.js.map +1 -1
- package/dist/integrations/snowflakecortex/types.d.ts +3 -4
- package/dist/integrations/snowflakecortex/types.d.ts.map +1 -1
- package/dist/integrations/snowflakepostgres/client.d.ts +1 -1
- package/dist/integrations/snowflakepostgres/client.d.ts.map +1 -1
- package/dist/integrations/snowflakepostgres/client.js.map +1 -1
- package/dist/integrations/snowflakepostgres/types.d.ts.map +1 -1
- package/dist/runtime/context.d.ts +3 -3
- package/dist/runtime/context.d.ts.map +1 -1
- package/dist/runtime/context.js.map +1 -1
- package/dist/runtime/executor.d.ts +2 -2
- package/dist/runtime/index.d.ts +0 -3
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +1 -6
- package/dist/runtime/index.js.map +1 -1
- package/dist/types.d.ts +15 -6
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/api/definition.test.ts +41 -15
- package/src/api/definition.ts +20 -13
- package/src/api/index.ts +0 -4
- package/src/errors.ts +1 -49
- package/src/index.ts +20 -61
- package/src/integrations/airtable/docs.manifest.json +5 -0
- package/src/integrations/anthropic/README.md +5 -101
- package/src/integrations/anthropic/docs.manifest.json +5 -0
- package/src/integrations/anthropic/types.ts +3 -29
- package/src/integrations/asana/README.md +12 -12
- package/src/integrations/asana/docs.manifest.json +5 -0
- package/src/integrations/athena/README.md +4 -4
- package/src/integrations/athena/client.ts +5 -3
- package/src/integrations/athena/docs.manifest.json +5 -0
- package/src/integrations/athena/types.ts +3 -2
- package/src/integrations/base/graphql-integration-client.ts +27 -5
- package/src/integrations/base/index.ts +2 -3
- package/src/integrations/base/rest-api-client-base.ts +134 -0
- package/src/integrations/base/rest-api-integration-client.ts +15 -239
- package/src/integrations/base/types.ts +4 -74
- package/src/integrations/bigquery/README.md +28 -3
- package/src/integrations/bigquery/client.ts +5 -3
- package/src/integrations/bigquery/docs.manifest.json +5 -0
- package/src/integrations/bigquery/types.ts +4 -3
- package/src/integrations/bitbucket/README.md +19 -19
- package/src/integrations/bitbucket/docs.manifest.json +5 -0
- package/src/integrations/box/README.md +24 -24
- package/src/integrations/box/docs.manifest.json +5 -0
- package/src/integrations/box/types.ts +1 -1
- package/src/integrations/circleci/README.md +18 -18
- package/src/integrations/circleci/docs.manifest.json +5 -0
- package/src/integrations/cockroachdb/client.ts +5 -3
- package/src/integrations/cockroachdb/docs.manifest.json +5 -0
- package/src/integrations/cockroachdb/types.ts +1 -0
- package/src/integrations/cohere/README.md +11 -11
- package/src/integrations/cohere/docs.manifest.json +5 -0
- package/src/integrations/confluence/docs.manifest.json +5 -0
- package/src/integrations/cosmosdb/client.test.ts +2 -1
- package/src/integrations/cosmosdb/client.ts +5 -3
- package/src/integrations/cosmosdb/docs.manifest.json +5 -0
- package/src/integrations/cosmosdb/types.ts +1 -0
- package/src/integrations/databricks/README.md +29 -4
- package/src/integrations/databricks/client.ts +5 -3
- package/src/integrations/databricks/docs.manifest.json +5 -0
- package/src/integrations/databricks/types.ts +4 -3
- package/src/integrations/datadog/docs.manifest.json +5 -0
- package/src/integrations/declarations.test.ts +1 -0
- package/src/integrations/declarations.ts +36 -136
- package/src/integrations/documentation-resolver.test.ts +704 -0
- package/src/integrations/documentation.test.ts +120 -0
- package/src/integrations/documentation.ts +421 -0
- package/src/integrations/dropbox/docs.manifest.json +5 -0
- package/src/integrations/dynamodb/client.ts +3 -2
- package/src/integrations/dynamodb/docs.manifest.json +5 -0
- package/src/integrations/dynamodb/types.ts +1 -0
- package/src/integrations/elasticsearch/docs.manifest.json +5 -0
- package/src/integrations/fireworks/README.md +43 -17
- package/src/integrations/fireworks/docs.manifest.json +5 -0
- package/src/integrations/front/docs.manifest.json +5 -0
- package/src/integrations/gcs/client.ts +5 -3
- package/src/integrations/gcs/docs.manifest.json +5 -0
- package/src/integrations/gcs/types.ts +1 -0
- package/src/integrations/gemini/docs.manifest.json +5 -0
- package/src/integrations/github/docs.manifest.json +5 -0
- package/src/integrations/googleanalytics/README.md +2 -2
- package/src/integrations/googleanalytics/docs.manifest.json +5 -0
- package/src/integrations/googledrive/README.md +27 -24
- package/src/integrations/googledrive/docs.manifest.json +5 -0
- package/src/integrations/googledrive/types.ts +1 -1
- package/src/integrations/graphql/README.md +2 -2
- package/src/integrations/graphql/client.test.ts +220 -0
- package/src/integrations/graphql/docs.manifest.json +5 -0
- package/src/integrations/graphql/types.ts +23 -1
- package/src/integrations/groq/README.md +49 -42
- package/src/integrations/groq/docs.manifest.json +5 -0
- package/src/integrations/gsheets/README.md +2 -2
- package/src/integrations/gsheets/client.ts +5 -3
- package/src/integrations/gsheets/docs.manifest.json +5 -0
- package/src/integrations/gsheets/types.ts +1 -0
- package/src/integrations/hubspot/docs.manifest.json +5 -0
- package/src/integrations/index.ts +1 -52
- package/src/integrations/intercom/docs.manifest.json +5 -0
- package/src/integrations/jira/docs.manifest.json +5 -0
- package/src/integrations/lakebase/README.md +242 -0
- package/src/integrations/lakebase/client.ts +6 -4
- package/src/integrations/lakebase/docs.manifest.json +5 -0
- package/src/integrations/lakebase/types.ts +5 -4
- package/src/integrations/launchdarkly/README.md +2 -2
- package/src/integrations/launchdarkly/docs.manifest.json +5 -0
- package/src/integrations/mariadb/README.md +3 -3
- package/src/integrations/mariadb/client.ts +5 -3
- package/src/integrations/mariadb/docs.manifest.json +5 -0
- package/src/integrations/mariadb/types.ts +3 -2
- package/src/integrations/mistral/README.md +39 -13
- package/src/integrations/mistral/docs.manifest.json +5 -0
- package/src/integrations/mongodb/README.md +65 -12
- package/src/integrations/mongodb/client.ts +5 -3
- package/src/integrations/mongodb/docs.manifest.json +5 -0
- package/src/integrations/mongodb/types.ts +1 -0
- package/src/integrations/mssql/README.md +3 -3
- package/src/integrations/mssql/client.ts +5 -3
- package/src/integrations/mssql/docs.manifest.json +5 -0
- package/src/integrations/mssql/types.ts +3 -2
- package/src/integrations/mysql/README.md +4 -4
- package/src/integrations/mysql/client.ts +5 -3
- package/src/integrations/mysql/docs.manifest.json +5 -0
- package/src/integrations/mysql/types.ts +5 -4
- package/src/integrations/notion/docs.manifest.json +5 -0
- package/src/integrations/openai_v2/README.md +44 -116
- package/src/integrations/openai_v2/docs.manifest.json +5 -0
- package/src/integrations/openai_v2/types.ts +4 -29
- package/src/integrations/oracledb/README.md +3 -3
- package/src/integrations/oracledb/client.ts +5 -3
- package/src/integrations/oracledb/docs.manifest.json +5 -0
- package/src/integrations/oracledb/types.ts +3 -2
- package/src/integrations/pagerduty/README.md +2 -2
- package/src/integrations/pagerduty/docs.manifest.json +5 -0
- package/src/integrations/perplexity/README.md +39 -47
- package/src/integrations/perplexity/docs.manifest.json +5 -0
- package/src/integrations/postgres/client.ts +6 -4
- package/src/integrations/postgres/docs.manifest.json +5 -0
- package/src/integrations/postgres/types.ts +1 -0
- package/src/integrations/redshift/client.ts +5 -3
- package/src/integrations/redshift/docs.manifest.json +5 -0
- package/src/integrations/redshift/types.ts +1 -0
- package/src/integrations/registry.test.ts +2 -3
- package/src/integrations/registry.ts +69 -188
- package/src/integrations/restapiintegration/README.md +320 -0
- package/src/integrations/restapiintegration/docs.manifest.json +5 -0
- package/src/integrations/restapiintegration/types.ts +2 -8
- package/src/integrations/s3/client.ts +5 -3
- package/src/integrations/s3/docs.manifest.json +5 -0
- package/src/integrations/s3/types.ts +4 -1
- package/src/integrations/salesforce/README.md +11 -9
- package/src/integrations/salesforce/client.ts +3 -2
- package/src/integrations/salesforce/docs.manifest.json +5 -0
- package/src/integrations/salesforce/types.ts +1 -0
- package/src/integrations/segment/docs.manifest.json +5 -0
- package/src/integrations/sendgrid/README.md +2 -2
- package/src/integrations/sendgrid/docs.manifest.json +5 -0
- package/src/integrations/slack/README.md +62 -19
- package/src/integrations/slack/client.test.ts +553 -0
- package/src/integrations/slack/client.ts +92 -12
- package/src/integrations/slack/docs.manifest.json +5 -0
- package/src/integrations/slack/index.ts +6 -1
- package/src/integrations/slack/types.ts +142 -29
- package/src/integrations/smtp/README.md +220 -0
- package/src/integrations/smtp/client.ts +4 -2
- package/src/integrations/smtp/docs.manifest.json +5 -0
- package/src/integrations/snowflake/client.ts +7 -5
- package/src/integrations/snowflake/docs.manifest.json +5 -0
- package/src/integrations/snowflake/types.ts +1 -0
- package/src/integrations/snowflakecortex/README.md +167 -0
- package/src/integrations/snowflakecortex/client.ts +2 -3
- package/src/integrations/snowflakecortex/docs.manifest.json +5 -0
- package/src/integrations/snowflakecortex/types.ts +3 -11
- package/src/integrations/snowflakepostgres/README.md +233 -0
- package/src/integrations/snowflakepostgres/client.ts +1 -1
- package/src/integrations/snowflakepostgres/docs.manifest.json +5 -0
- package/src/integrations/snowflakepostgres/types.ts +1 -0
- package/src/integrations/stabilityai/README.md +2 -2
- package/src/integrations/stabilityai/docs.manifest.json +5 -0
- package/src/integrations/stripe/docs.manifest.json +5 -0
- package/src/integrations/superblocks-ocr/docs.manifest.json +5 -0
- package/src/integrations/twilio/docs.manifest.json +5 -0
- package/src/integrations/zendesk/docs.manifest.json +5 -0
- package/src/integrations/zoom/README.md +15 -15
- package/src/integrations/zoom/docs.manifest.json +5 -0
- package/src/runtime/context.ts +11 -11
- package/src/runtime/executor.ts +2 -2
- package/src/runtime/index.ts +1 -23
- package/src/types.ts +16 -6
- package/dist/api/streaming.d.ts +0 -229
- package/dist/api/streaming.d.ts.map +0 -1
- package/dist/api/streaming.js +0 -107
- package/dist/api/streaming.js.map +0 -1
- package/dist/api/streaming.test.d.ts +0 -5
- package/dist/api/streaming.test.d.ts.map +0 -1
- package/dist/api/streaming.test.js +0 -364
- package/dist/api/streaming.test.js.map +0 -1
- package/dist/integrations/couchbase/client.d.ts +0 -36
- package/dist/integrations/couchbase/client.d.ts.map +0 -1
- package/dist/integrations/couchbase/client.js +0 -148
- package/dist/integrations/couchbase/client.js.map +0 -1
- package/dist/integrations/couchbase/index.d.ts +0 -8
- package/dist/integrations/couchbase/index.d.ts.map +0 -1
- package/dist/integrations/couchbase/index.js +0 -7
- package/dist/integrations/couchbase/index.js.map +0 -1
- package/dist/integrations/couchbase/types.d.ts +0 -100
- package/dist/integrations/couchbase/types.d.ts.map +0 -1
- package/dist/integrations/couchbase/types.js +0 -5
- package/dist/integrations/couchbase/types.js.map +0 -1
- package/dist/integrations/kafka/client.d.ts +0 -25
- package/dist/integrations/kafka/client.d.ts.map +0 -1
- package/dist/integrations/kafka/client.js +0 -124
- package/dist/integrations/kafka/client.js.map +0 -1
- package/dist/integrations/kafka/index.d.ts +0 -8
- package/dist/integrations/kafka/index.d.ts.map +0 -1
- package/dist/integrations/kafka/index.js +0 -7
- package/dist/integrations/kafka/index.js.map +0 -1
- package/dist/integrations/kafka/types.d.ts +0 -113
- package/dist/integrations/kafka/types.d.ts.map +0 -1
- package/dist/integrations/kafka/types.js +0 -5
- package/dist/integrations/kafka/types.js.map +0 -1
- package/dist/integrations/kinesis/client.d.ts +0 -31
- package/dist/integrations/kinesis/client.d.ts.map +0 -1
- package/dist/integrations/kinesis/client.js +0 -101
- package/dist/integrations/kinesis/client.js.map +0 -1
- package/dist/integrations/kinesis/index.d.ts +0 -8
- package/dist/integrations/kinesis/index.d.ts.map +0 -1
- package/dist/integrations/kinesis/index.js +0 -7
- package/dist/integrations/kinesis/index.js.map +0 -1
- package/dist/integrations/kinesis/types.d.ts +0 -97
- package/dist/integrations/kinesis/types.d.ts.map +0 -1
- package/dist/integrations/kinesis/types.js +0 -7
- package/dist/integrations/kinesis/types.js.map +0 -1
- package/dist/integrations/python/client.d.ts +0 -42
- package/dist/integrations/python/client.d.ts.map +0 -1
- package/dist/integrations/python/client.js +0 -89
- package/dist/integrations/python/client.js.map +0 -1
- package/dist/integrations/python/client.test.d.ts +0 -5
- package/dist/integrations/python/client.test.d.ts.map +0 -1
- package/dist/integrations/python/client.test.js +0 -214
- package/dist/integrations/python/client.test.js.map +0 -1
- package/dist/integrations/python/index.d.ts +0 -6
- package/dist/integrations/python/index.d.ts.map +0 -1
- package/dist/integrations/python/index.js +0 -5
- package/dist/integrations/python/index.js.map +0 -1
- package/dist/integrations/python/types.d.ts +0 -85
- package/dist/integrations/python/types.d.ts.map +0 -1
- package/dist/integrations/python/types.js +0 -5
- package/dist/integrations/python/types.js.map +0 -1
- package/dist/integrations/redis/client.d.ts +0 -43
- package/dist/integrations/redis/client.d.ts.map +0 -1
- package/dist/integrations/redis/client.js +0 -142
- package/dist/integrations/redis/client.js.map +0 -1
- package/dist/integrations/redis/index.d.ts +0 -8
- package/dist/integrations/redis/index.d.ts.map +0 -1
- package/dist/integrations/redis/index.js +0 -7
- package/dist/integrations/redis/index.js.map +0 -1
- package/dist/integrations/redis/types.d.ts +0 -137
- package/dist/integrations/redis/types.d.ts.map +0 -1
- package/dist/integrations/redis/types.js +0 -5
- package/dist/integrations/redis/types.js.map +0 -1
- package/dist/runtime/execute.d.ts +0 -128
- package/dist/runtime/execute.d.ts.map +0 -1
- package/dist/runtime/execute.js +0 -84
- package/dist/runtime/execute.js.map +0 -1
- package/dist/runtime/streaming-context.d.ts +0 -49
- package/dist/runtime/streaming-context.d.ts.map +0 -1
- package/dist/runtime/streaming-context.js +0 -71
- package/dist/runtime/streaming-context.js.map +0 -1
- package/dist/runtime/streaming-executor.d.ts +0 -159
- package/dist/runtime/streaming-executor.d.ts.map +0 -1
- package/dist/runtime/streaming-executor.js +0 -229
- package/dist/runtime/streaming-executor.js.map +0 -1
- package/src/api/streaming.test.ts +0 -432
- package/src/api/streaming.ts +0 -302
- package/src/integrations/couchbase/README.md +0 -138
- package/src/integrations/couchbase/client.ts +0 -224
- package/src/integrations/couchbase/index.ts +0 -8
- package/src/integrations/couchbase/types.ts +0 -125
- package/src/integrations/kafka/README.md +0 -144
- package/src/integrations/kafka/client.ts +0 -215
- package/src/integrations/kafka/index.ts +0 -14
- package/src/integrations/kafka/types.ts +0 -127
- package/src/integrations/kinesis/README.md +0 -153
- package/src/integrations/kinesis/client.ts +0 -146
- package/src/integrations/kinesis/index.ts +0 -14
- package/src/integrations/kinesis/types.ts +0 -114
- package/src/integrations/python/README.md +0 -566
- package/src/integrations/python/client.test.ts +0 -340
- package/src/integrations/python/client.ts +0 -134
- package/src/integrations/python/index.ts +0 -6
- package/src/integrations/python/types.ts +0 -91
- package/src/integrations/redis/README.md +0 -200
- package/src/integrations/redis/client.ts +0 -207
- package/src/integrations/redis/index.ts +0 -8
- package/src/integrations/redis/types.ts +0 -166
- package/src/runtime/execute.ts +0 -221
- package/src/runtime/streaming-context.ts +0 -164
- package/src/runtime/streaming-executor.ts +0 -367
|
@@ -49,7 +49,7 @@ export default api({
|
|
|
49
49
|
const result = await ctx.integrations.asana.apiRequest(
|
|
50
50
|
{
|
|
51
51
|
method: "POST",
|
|
52
|
-
path: "/
|
|
52
|
+
path: "/tasks",
|
|
53
53
|
body: {
|
|
54
54
|
data: {
|
|
55
55
|
name: name,
|
|
@@ -88,7 +88,7 @@ const ListTasksResponseSchema = z.object({
|
|
|
88
88
|
const result = await ctx.integrations.asana.apiRequest(
|
|
89
89
|
{
|
|
90
90
|
method: "GET",
|
|
91
|
-
path: `/
|
|
91
|
+
path: `/projects/${projectId}/tasks`,
|
|
92
92
|
params: {
|
|
93
93
|
opt_fields: "name,completed,due_on,assignee.name",
|
|
94
94
|
completed_since: "now", // Only incomplete tasks
|
|
@@ -108,7 +108,7 @@ result.data.forEach((task) => {
|
|
|
108
108
|
const result = await ctx.integrations.asana.apiRequest(
|
|
109
109
|
{
|
|
110
110
|
method: "PUT",
|
|
111
|
-
path: `/
|
|
111
|
+
path: `/tasks/${taskId}`,
|
|
112
112
|
body: {
|
|
113
113
|
data: {
|
|
114
114
|
completed: true,
|
|
@@ -126,7 +126,7 @@ const result = await ctx.integrations.asana.apiRequest(
|
|
|
126
126
|
const result = await ctx.integrations.asana.apiRequest(
|
|
127
127
|
{
|
|
128
128
|
method: "PUT",
|
|
129
|
-
path: `/
|
|
129
|
+
path: `/tasks/${taskId}`,
|
|
130
130
|
body: {
|
|
131
131
|
data: {
|
|
132
132
|
assignee: userId, // User GID
|
|
@@ -154,7 +154,7 @@ const ListProjectsResponseSchema = z.object({
|
|
|
154
154
|
const result = await ctx.integrations.asana.apiRequest(
|
|
155
155
|
{
|
|
156
156
|
method: "GET",
|
|
157
|
-
path: "/
|
|
157
|
+
path: "/projects",
|
|
158
158
|
params: {
|
|
159
159
|
workspace: workspaceId,
|
|
160
160
|
opt_fields: "name,archived,owner.name",
|
|
@@ -178,7 +178,7 @@ const CreateProjectResponseSchema = z.object({
|
|
|
178
178
|
const result = await ctx.integrations.asana.apiRequest(
|
|
179
179
|
{
|
|
180
180
|
method: "POST",
|
|
181
|
-
path: "/
|
|
181
|
+
path: "/projects",
|
|
182
182
|
body: {
|
|
183
183
|
data: {
|
|
184
184
|
name: "Q1 Marketing Campaign",
|
|
@@ -207,7 +207,7 @@ const StoryResponseSchema = z.object({
|
|
|
207
207
|
const result = await ctx.integrations.asana.apiRequest(
|
|
208
208
|
{
|
|
209
209
|
method: "POST",
|
|
210
|
-
path: `/
|
|
210
|
+
path: `/tasks/${taskId}/stories`,
|
|
211
211
|
body: {
|
|
212
212
|
data: {
|
|
213
213
|
text: "Great progress on this task!",
|
|
@@ -233,7 +233,7 @@ const SearchResponseSchema = z.object({
|
|
|
233
233
|
const result = await ctx.integrations.asana.apiRequest(
|
|
234
234
|
{
|
|
235
235
|
method: "GET",
|
|
236
|
-
path: "/
|
|
236
|
+
path: "/workspaces/{workspace_gid}/tasks/search",
|
|
237
237
|
params: {
|
|
238
238
|
"text.value": "urgent",
|
|
239
239
|
completed: false,
|
|
@@ -252,7 +252,7 @@ const result = await ctx.integrations.asana.apiRequest(
|
|
|
252
252
|
const result = await ctx.integrations.asana.apiRequest(
|
|
253
253
|
{
|
|
254
254
|
method: "GET",
|
|
255
|
-
path: `/
|
|
255
|
+
path: `/tasks/${taskId}/subtasks`,
|
|
256
256
|
params: {
|
|
257
257
|
opt_fields: "name,completed,assignee.name",
|
|
258
258
|
},
|
|
@@ -276,7 +276,7 @@ await asana.getTasks({ ... });
|
|
|
276
276
|
|
|
277
277
|
// CORRECT - Use apiRequest
|
|
278
278
|
await ctx.integrations.asana.apiRequest(
|
|
279
|
-
{ method: "POST", path: "/
|
|
279
|
+
{ method: "POST", path: "/tasks", body: { data: { ... } } },
|
|
280
280
|
{ response: CreateTaskResponseSchema }
|
|
281
281
|
);
|
|
282
282
|
```
|
|
@@ -381,7 +381,7 @@ async function getAllTasks(asana: AsanaClient, projectId: string) {
|
|
|
381
381
|
const result = await ctx.integrations.asana.apiRequest(
|
|
382
382
|
{
|
|
383
383
|
method: "GET",
|
|
384
|
-
path: `/
|
|
384
|
+
path: `/projects/${projectId}/tasks`,
|
|
385
385
|
params: {
|
|
386
386
|
limit: 100,
|
|
387
387
|
...(offset && { offset }),
|
|
@@ -405,7 +405,7 @@ import { RestApiValidationError } from "@superblocksteam/sdk-api";
|
|
|
405
405
|
|
|
406
406
|
try {
|
|
407
407
|
const result = await ctx.integrations.asana.apiRequest(
|
|
408
|
-
{ method: "POST", path: "/
|
|
408
|
+
{ method: "POST", path: "/tasks", body: { data: { ... } } },
|
|
409
409
|
{ response: CreateTaskResponseSchema }
|
|
410
410
|
);
|
|
411
411
|
} catch (error) {
|
|
@@ -41,7 +41,7 @@ export default api({
|
|
|
41
41
|
const logs = await ctx.integrations.athena.query(
|
|
42
42
|
`SELECT timestamp, level, message, request_id
|
|
43
43
|
FROM logs
|
|
44
|
-
WHERE level =
|
|
44
|
+
WHERE level = ?
|
|
45
45
|
LIMIT 100`,
|
|
46
46
|
LogSchema,
|
|
47
47
|
[level],
|
|
@@ -65,8 +65,8 @@ const EventSchema = z.object({
|
|
|
65
65
|
const events = await ctx.integrations.athena.query(
|
|
66
66
|
`SELECT event_id, event_type, user_id, created_at
|
|
67
67
|
FROM events
|
|
68
|
-
WHERE date_partition =
|
|
69
|
-
AND event_type =
|
|
68
|
+
WHERE date_partition = ?
|
|
69
|
+
AND event_type = ?`,
|
|
70
70
|
EventSchema,
|
|
71
71
|
["2024-01-15", "purchase"],
|
|
72
72
|
);
|
|
@@ -138,7 +138,7 @@ Always use partition filters when possible to reduce data scanned:
|
|
|
138
138
|
```typescript
|
|
139
139
|
// GOOD - Uses partition filter
|
|
140
140
|
const logs = await ctx.integrations.athena.query(
|
|
141
|
-
"SELECT * FROM logs WHERE date_partition =
|
|
141
|
+
"SELECT * FROM logs WHERE date_partition = ?",
|
|
142
142
|
LogSchema,
|
|
143
143
|
["2024-01-15"],
|
|
144
144
|
);
|
|
@@ -5,13 +5,15 @@
|
|
|
5
5
|
* runtime validation using Zod schemas.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import type { z } from "zod";
|
|
9
8
|
import type { PartialMessage } from "@bufbuild/protobuf";
|
|
9
|
+
import type { z } from "zod";
|
|
10
|
+
|
|
10
11
|
import type { Plugin as AthenaPlugin } from "@superblocksteam/types/dist/src/plugins/athena/v1/plugin_pb";
|
|
11
|
-
|
|
12
|
-
import type { QueryExecutor, TraceMetadata } from "../registry.js";
|
|
12
|
+
|
|
13
13
|
import { QueryValidationError } from "../../errors.js";
|
|
14
14
|
import { IntegrationError } from "../../runtime/errors.js";
|
|
15
|
+
import type { QueryExecutor, TraceMetadata } from "../registry.js";
|
|
16
|
+
import type { IntegrationConfig, IntegrationClientImpl } from "../types.js";
|
|
15
17
|
import { describeType } from "../utils.js";
|
|
16
18
|
import type { AthenaClient } from "./types.js";
|
|
17
19
|
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import type { z } from "zod";
|
|
8
|
+
|
|
8
9
|
import type { BaseIntegrationClient } from "../../types.js";
|
|
9
10
|
import type { TraceMetadata } from "../registry.js";
|
|
10
11
|
|
|
@@ -24,7 +25,7 @@ import type { TraceMetadata } from "../registry.js";
|
|
|
24
25
|
* });
|
|
25
26
|
*
|
|
26
27
|
* const logs = await athena.query(
|
|
27
|
-
* 'SELECT * FROM logs WHERE level =
|
|
28
|
+
* 'SELECT * FROM logs WHERE level = ?',
|
|
28
29
|
* LogSchema,
|
|
29
30
|
* ['ERROR']
|
|
30
31
|
* );
|
|
@@ -34,7 +35,7 @@ export interface AthenaClient extends BaseIntegrationClient {
|
|
|
34
35
|
/**
|
|
35
36
|
* Execute a SQL query and validate results against a Zod schema.
|
|
36
37
|
*
|
|
37
|
-
* @param sql - SQL query string (use
|
|
38
|
+
* @param sql - SQL query string (use ? placeholders for parameters)
|
|
38
39
|
* @param schema - Zod schema to validate the query results
|
|
39
40
|
* @param params - Optional query parameters
|
|
40
41
|
* @returns Promise resolving to validated query results
|
|
@@ -5,10 +5,14 @@
|
|
|
5
5
|
* Handles proto message construction and response validation.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import type {
|
|
9
|
-
import type { QueryExecutor, TraceMetadata } from "../registry.js";
|
|
8
|
+
import type { PartialMessage } from "@bufbuild/protobuf";
|
|
10
9
|
import { z } from "zod";
|
|
10
|
+
|
|
11
|
+
import type { Property } from "@superblocksteam/types/dist/src/common/v1/plugin_pb";
|
|
12
|
+
|
|
11
13
|
import { RestApiValidationError } from "../../errors.js";
|
|
14
|
+
import type { QueryExecutor, TraceMetadata } from "../registry.js";
|
|
15
|
+
import type { IntegrationConfig, IntegrationClientImpl } from "../types.js";
|
|
12
16
|
|
|
13
17
|
/**
|
|
14
18
|
* Base class for GraphQL integration clients.
|
|
@@ -18,6 +22,8 @@ import { RestApiValidationError } from "../../errors.js";
|
|
|
18
22
|
* - Executing queries and mutations through the orchestrator
|
|
19
23
|
* - Required Zod schema validation on full GraphQL response
|
|
20
24
|
* - Variables serialization for parameterized queries
|
|
25
|
+
* - Optional per-request HTTP headers (in addition to any headers configured
|
|
26
|
+
* on the integration)
|
|
21
27
|
*/
|
|
22
28
|
export abstract class GraphQLIntegrationClient implements IntegrationClientImpl {
|
|
23
29
|
readonly name: string;
|
|
@@ -39,6 +45,7 @@ export abstract class GraphQLIntegrationClient implements IntegrationClientImpl
|
|
|
39
45
|
* @param schema - Zod schema for full response validation (REQUIRED)
|
|
40
46
|
* @param variables - Optional variables for the query
|
|
41
47
|
* @param metadata - Optional trace metadata for observability
|
|
48
|
+
* @param headers - Optional HTTP headers to send with the request
|
|
42
49
|
* @returns Validated query result
|
|
43
50
|
*/
|
|
44
51
|
async query<TResponse>(
|
|
@@ -46,8 +53,9 @@ export abstract class GraphQLIntegrationClient implements IntegrationClientImpl
|
|
|
46
53
|
schema: { response: z.ZodSchema<TResponse> },
|
|
47
54
|
variables?: Record<string, unknown>,
|
|
48
55
|
metadata?: TraceMetadata,
|
|
56
|
+
headers?: Record<string, string>,
|
|
49
57
|
): Promise<TResponse> {
|
|
50
|
-
return this.executeGraphQL(query, schema, variables, metadata);
|
|
58
|
+
return this.executeGraphQL(query, schema, variables, metadata, headers);
|
|
51
59
|
}
|
|
52
60
|
|
|
53
61
|
/**
|
|
@@ -57,6 +65,7 @@ export abstract class GraphQLIntegrationClient implements IntegrationClientImpl
|
|
|
57
65
|
* @param schema - Zod schema for full response validation (REQUIRED)
|
|
58
66
|
* @param variables - Optional variables for the mutation
|
|
59
67
|
* @param metadata - Optional trace metadata for observability
|
|
68
|
+
* @param headers - Optional HTTP headers to send with the request
|
|
60
69
|
* @returns Validated mutation result
|
|
61
70
|
*/
|
|
62
71
|
async mutation<TResponse>(
|
|
@@ -64,8 +73,9 @@ export abstract class GraphQLIntegrationClient implements IntegrationClientImpl
|
|
|
64
73
|
schema: { response: z.ZodSchema<TResponse> },
|
|
65
74
|
variables?: Record<string, unknown>,
|
|
66
75
|
metadata?: TraceMetadata,
|
|
76
|
+
headers?: Record<string, string>,
|
|
67
77
|
): Promise<TResponse> {
|
|
68
|
-
return this.executeGraphQL(mutation, schema, variables, metadata);
|
|
78
|
+
return this.executeGraphQL(mutation, schema, variables, metadata, headers);
|
|
69
79
|
}
|
|
70
80
|
|
|
71
81
|
/**
|
|
@@ -79,9 +89,17 @@ export abstract class GraphQLIntegrationClient implements IntegrationClientImpl
|
|
|
79
89
|
schema: { response: z.ZodSchema<TResponse> },
|
|
80
90
|
variables?: Record<string, unknown>,
|
|
81
91
|
metadata?: TraceMetadata,
|
|
92
|
+
headers?: Record<string, string>,
|
|
82
93
|
): Promise<TResponse> {
|
|
94
|
+
const headerProps: PartialMessage<Property>[] = [];
|
|
95
|
+
if (headers) {
|
|
96
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
97
|
+
headerProps.push({ key, value });
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
83
101
|
// Build graphql.v1.Plugin proto message
|
|
84
|
-
const request = {
|
|
102
|
+
const request: Record<string, unknown> = {
|
|
85
103
|
body: queryString,
|
|
86
104
|
custom: variables
|
|
87
105
|
? {
|
|
@@ -95,6 +113,10 @@ export abstract class GraphQLIntegrationClient implements IntegrationClientImpl
|
|
|
95
113
|
failOnGraphqlErrors: true,
|
|
96
114
|
};
|
|
97
115
|
|
|
116
|
+
if (headerProps.length > 0) {
|
|
117
|
+
request.headers = headerProps;
|
|
118
|
+
}
|
|
119
|
+
|
|
98
120
|
// Execute query through orchestrator
|
|
99
121
|
const response = await this.executeQuery(request, undefined, metadata);
|
|
100
122
|
|
|
@@ -2,13 +2,12 @@
|
|
|
2
2
|
* Base clients for integrations.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
+
export { RestApiClientBase } from "./rest-api-client-base.js";
|
|
5
6
|
export { RestApiIntegrationClient } from "./rest-api-integration-client.js";
|
|
6
|
-
export type { RestApiRequest } from "./rest-api-
|
|
7
|
+
export type { RestApiRequest } from "./rest-api-client-base.js";
|
|
7
8
|
export { GraphQLIntegrationClient } from "./graphql-integration-client.js";
|
|
8
9
|
export type {
|
|
9
10
|
ApiRequestOptions,
|
|
10
11
|
ApiRequestSchema,
|
|
11
12
|
SupportsApiRequest,
|
|
12
|
-
StreamApiRequestSchema,
|
|
13
|
-
SupportsStreamingApiRequest,
|
|
14
13
|
} from "./types.js";
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstract base for REST API Integration clients.
|
|
3
|
+
*
|
|
4
|
+
* Owns the shared infrastructure that every REST-API-backed integration
|
|
5
|
+
* needs: config storage, parameter helpers, body validation, request
|
|
6
|
+
* construction, and query execution. Subclasses add their own
|
|
7
|
+
* `apiRequest` with whatever response-handling strategy they need
|
|
8
|
+
* (e.g. direct Zod validation, discriminated-union wrapping).
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type { PartialMessage } from "@bufbuild/protobuf";
|
|
12
|
+
import { z } from "zod";
|
|
13
|
+
|
|
14
|
+
import type { Property } from "@superblocksteam/types/dist/src/common/v1/plugin_pb";
|
|
15
|
+
import type { Plugin as RestApiIntegrationPlugin } from "@superblocksteam/types/dist/src/plugins/restapiintegration/v1/plugin_pb";
|
|
16
|
+
|
|
17
|
+
import { RestApiValidationError } from "../../errors.js";
|
|
18
|
+
import type { QueryExecutor, TraceMetadata } from "../registry.js";
|
|
19
|
+
import type { IntegrationConfig, IntegrationClientImpl } from "../types.js";
|
|
20
|
+
import type { ApiRequestOptions } from "./types.js";
|
|
21
|
+
|
|
22
|
+
export type RestApiRequest = PartialMessage<RestApiIntegrationPlugin>;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Shared base for all REST API Integration clients.
|
|
26
|
+
*
|
|
27
|
+
* Provides config fields, parameter helpers, body validation, request
|
|
28
|
+
* building, and query execution. Does NOT define `apiRequest` — each
|
|
29
|
+
* concrete subclass supplies its own return-type contract.
|
|
30
|
+
*/
|
|
31
|
+
export abstract class RestApiClientBase implements IntegrationClientImpl {
|
|
32
|
+
readonly name: string;
|
|
33
|
+
readonly pluginId: string;
|
|
34
|
+
readonly config: IntegrationConfig;
|
|
35
|
+
|
|
36
|
+
protected readonly executeQuery: QueryExecutor;
|
|
37
|
+
|
|
38
|
+
constructor(config: IntegrationConfig, executeQuery: QueryExecutor) {
|
|
39
|
+
this.name = config.name;
|
|
40
|
+
this.pluginId = config.pluginId;
|
|
41
|
+
this.config = config;
|
|
42
|
+
this.executeQuery = executeQuery;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Create a Property object for query params / headers.
|
|
47
|
+
*/
|
|
48
|
+
protected createParam(key: string, value: unknown): PartialMessage<Property> {
|
|
49
|
+
return {
|
|
50
|
+
key,
|
|
51
|
+
value: typeof value === "string" ? value : JSON.stringify(value),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Validate the request body, build the proto request, and execute it.
|
|
57
|
+
*
|
|
58
|
+
* Returns the raw (unvalidated) response from the orchestrator.
|
|
59
|
+
* Subclasses call this, then apply their own response handling.
|
|
60
|
+
*
|
|
61
|
+
* @param options - HTTP method, path, body, params, headers
|
|
62
|
+
* @param bodySchema - Optional Zod schema for body validation
|
|
63
|
+
* @param metadata - Optional trace metadata for observability
|
|
64
|
+
* @returns Raw response from the orchestrator
|
|
65
|
+
*/
|
|
66
|
+
protected async executeApiRequest<TBody>(
|
|
67
|
+
options: ApiRequestOptions<TBody>,
|
|
68
|
+
bodySchema?: z.ZodSchema<TBody>,
|
|
69
|
+
metadata?: TraceMetadata,
|
|
70
|
+
): Promise<unknown> {
|
|
71
|
+
// Validate request body if both body and schema are present.
|
|
72
|
+
if (options.body !== undefined && bodySchema) {
|
|
73
|
+
const bodyParseResult = bodySchema.safeParse(options.body);
|
|
74
|
+
if (!bodyParseResult.success) {
|
|
75
|
+
throw new RestApiValidationError(
|
|
76
|
+
`Request body validation failed: ${bodyParseResult.error.message}`,
|
|
77
|
+
{
|
|
78
|
+
zodError: bodyParseResult.error,
|
|
79
|
+
data: options.body,
|
|
80
|
+
},
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const headers: PartialMessage<Property>[] = [];
|
|
86
|
+
if (options.headers) {
|
|
87
|
+
for (const [key, value] of Object.entries(options.headers)) {
|
|
88
|
+
headers.push(this.createParam(key, value));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const params: PartialMessage<Property>[] = [];
|
|
93
|
+
if (options.params) {
|
|
94
|
+
for (const [key, value] of Object.entries(options.params)) {
|
|
95
|
+
params.push(this.createParam(key, value));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const request: RestApiRequest = {
|
|
100
|
+
openApiAction: "genericHttpRequest",
|
|
101
|
+
httpMethod: options.method.toUpperCase(),
|
|
102
|
+
urlPath: options.path,
|
|
103
|
+
headers,
|
|
104
|
+
params,
|
|
105
|
+
responseType: "json",
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
if (options.body !== undefined) {
|
|
109
|
+
request.body = JSON.stringify(options.body);
|
|
110
|
+
request.bodyType = "jsonBody";
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const result = await this.executeQuery(
|
|
114
|
+
request as Record<string, unknown>,
|
|
115
|
+
undefined,
|
|
116
|
+
metadata,
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
if (result === null || result === undefined) {
|
|
120
|
+
const nonNullResult = z.object({}).safeParse(result);
|
|
121
|
+
if (!nonNullResult.success) {
|
|
122
|
+
throw new RestApiValidationError(
|
|
123
|
+
`Integration query returned ${String(result)} — expected a JSON response object`,
|
|
124
|
+
{
|
|
125
|
+
zodError: nonNullResult.error,
|
|
126
|
+
data: result,
|
|
127
|
+
},
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return result;
|
|
133
|
+
}
|
|
134
|
+
}
|