> For the complete documentation index, see [llms.txt](https://docs.coupler.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.coupler.io/api/models.md).

# Models

## The error\_response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"error_response":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}},"required":["error"]}}}}
```

## The public\_api.integrations.collection.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"public_api.integrations.collection.response":{"type":"object","properties":{"integrations":{"type":"array","description":"Integrations the user can connect.","items":{"$ref":"#/components/schemas/public_api.integrations.item.response"}}},"required":["integrations"]},"public_api.integrations.item.response":{"type":"object","properties":{"key":{"type":"string","description":"Integration key. Pass it as id on the show endpoint, and when creating a source or destination."},"name":{"type":"string","description":"Integration name."}},"required":["key","name"]}}}}
```

## The public\_api.integrations.item.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"public_api.integrations.item.response":{"type":"object","properties":{"key":{"type":"string","description":"Integration key. Pass it as id on the show endpoint, and when creating a source or destination."},"name":{"type":"string","description":"Integration name."}},"required":["key","name"]}}}}
```

## The public\_api.integrations.member.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"public_api.integrations.member.response":{"type":"object","properties":{"key":{"type":"string","description":"Integration key. Pass it as id on the show endpoint, and when creating a source or destination."},"name":{"type":"string","description":"Integration name."},"credential_provider":{"type":["string","null"],"description":"Provider key for the credential this integration uses. Null when the integration needs no credential. Pass it as provider when listing credentials."},"llm_instructions":{"type":["string","null"],"description":"Extra setup notes for this integration. Null when there are none."},"params":{"type":"array","description":"Fields the user can set on this integration.","items":{"$ref":"#/components/schemas/public_api.integrations.param.response"}}},"required":["key","name","credential_provider","llm_instructions","params"]},"public_api.integrations.param.response":{"type":"object","properties":{"name":{"type":"string","description":"Field name. Pass it as field when loading options."},"title":{"type":["string","null"],"description":"Label shown for the field."},"type":{"type":"string","description":"Field type, such as input or select."},"required":{"type":"boolean","description":"True when the field must be set."},"default_value":{"description":"Default value, when the integration defines one."},"helper_text":{"type":"string","description":"Help text for the field."},"depends_on":{"type":["object","null"],"description":"Other fields this field depends on. Null when it depends on nothing."},"options":{"type":["array","null"],"description":"Fixed selectable values. Null when the field has none. Omitted when resolve_options_with_tool is true.","items":{"description":"A string, or an object with label and value.","properties":{"label":{"type":["string","null"],"description":"Label shown for the option. Null when unset."},"value":{"type":["string","null"],"description":"Value to send for the option. Null when unset."}}}},"options_by":{"type":["object","null"],"description":"Unused. Null on fields with a fixed list."},"resolve_options_with_tool":{"type":"boolean","description":"True when options are loaded from field options instead of options."},"options_requires_credential":{"type":"boolean","description":"True when field options require credential_id."},"options_depends_on":{"type":"array","description":"Fields to pass as params[<name>] when loading options.","items":{"type":"string"}}},"required":["name","title","type","required","helper_text","depends_on"]}}}}
```

## The public\_api.integrations.param.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"public_api.integrations.param.response":{"type":"object","properties":{"name":{"type":"string","description":"Field name. Pass it as field when loading options."},"title":{"type":["string","null"],"description":"Label shown for the field."},"type":{"type":"string","description":"Field type, such as input or select."},"required":{"type":"boolean","description":"True when the field must be set."},"default_value":{"description":"Default value, when the integration defines one."},"helper_text":{"type":"string","description":"Help text for the field."},"depends_on":{"type":["object","null"],"description":"Other fields this field depends on. Null when it depends on nothing."},"options":{"type":["array","null"],"description":"Fixed selectable values. Null when the field has none. Omitted when resolve_options_with_tool is true.","items":{"description":"A string, or an object with label and value.","properties":{"label":{"type":["string","null"],"description":"Label shown for the option. Null when unset."},"value":{"type":["string","null"],"description":"Value to send for the option. Null when unset."}}}},"options_by":{"type":["object","null"],"description":"Unused. Null on fields with a fixed list."},"resolve_options_with_tool":{"type":"boolean","description":"True when options are loaded from field options instead of options."},"options_requires_credential":{"type":"boolean","description":"True when field options require credential_id."},"options_depends_on":{"type":"array","description":"Fields to pass as params[<name>] when loading options.","items":{"type":"string"}}},"required":["name","title","type","required","helper_text","depends_on"]}}}}
```

## The public\_api.integrations.field\_options.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"public_api.integrations.field_options.response":{"type":"object","properties":{"field":{"type":"string","description":"Param name the options belong to."},"options":{"type":["array","null"],"description":"Selectable values for the field. Null when none apply.","items":{"description":"A string, or an object with label and value.","properties":{"label":{"type":["string","null"],"description":"Label shown for the option. Null when unset."},"value":{"type":["string","null"],"description":"Value to send for the option. Null when unset."}}}}},"required":["field","options"]}}}}
```

## The public\_api.templates.collection.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"public_api.templates.collection.response":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Id of the template. Pass it when creating a dataflow from a template."},"name":{"type":"string","description":"Template name."},"description":{"type":"string","description":"What the template is for."},"type":{"type":"string","enum":["DatasetTemplate","DashboardTemplate"],"description":"DatasetTemplate includes metrics and datasets. DashboardTemplate omits those fields."},"sources":{"type":"array","items":{"type":"string"},"description":"Source types used by the template."},"categories":{"type":"array","items":{"type":"string"},"description":"Category names."},"template_link":{"type":"string","description":"Link that opens the template in Coupler.io."},"preview_url":{"type":["string","null"],"description":"Link to a preview of the template."},"metrics":{"type":"array","items":{"type":"string"},"description":"Metric names. Present on dataset templates only."},"datasets":{"type":"array","description":"Datasets in the template. Present on dataset templates only.","items":{"type":"object","properties":{"display_name":{"type":"string","description":"Dataset name."},"display_type":{"type":"string","description":"How the dataset is shown."}},"required":["display_name","display_type"]}}},"required":["id","name","description","type","sources","categories","template_link","preview_url"]}}}}}
```

## The public\_api.workspaces.collection.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"public_api.workspaces.collection.response":{"type":"object","properties":{"workspaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Id of the workspace. Pass it as workspace_id on other endpoints."},"name":{"type":"string","description":"Workspace name."},"organization":{"type":"string","description":"Name of the organization the workspace belongs to."}},"required":["id","name","organization"]}}},"required":["workspaces"]}}}}
```

## The public\_api.dataflows.collection.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"public_api.dataflows.collection.response":{"type":"array","items":{"$ref":"#/components/schemas/dataflows.item.response"}},"dataflows.item.response":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Id of the dataflow. Pass it to other dataflow endpoints."},"name":{"type":"string","description":"Name of the dataflow."},"last_success_run_at":{"type":["string","null"],"description":"Time of the last successful run. Null when the dataflow has not run successfully."},"last_successful_execution_id":{"type":["string","null"],"description":"Id of the last successful execution. Null when the dataflow has not run successfully."}},"required":["id","name","last_success_run_at","last_successful_execution_id"]}}}}
```

## The public\_api.dataflows.member.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"public_api.dataflows.member.response":{"$ref":"#/components/schemas/dataflows.show.response"},"dataflows.show.response":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Id of the dataflow."},"name":{"type":"string","description":"Name of the dataflow."},"last_successful_execution_id":{"type":["string","null"],"description":"Id of the last successful execution. Null when the dataflow has not run successfully."},"schedule":{"type":["string","null"],"description":"Cron expression for the dataflow. Null when it is not scheduled."},"sources":{"type":"array","items":{"$ref":"#/components/schemas/sources.item.response"}}},"required":["id","name","last_successful_execution_id","schedule","sources"]},"sources.item.response":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"type":{"type":"string"},"enabled":{"type":"boolean"},"lifecycle_state":{"type":"string","enum":["active","paused","disabled"]},"params_configured":{"type":"boolean"},"data_connections_count":{"type":"integer"},"last_success_run_at":{"type":["string","null"]},"error_details":{"type":["object","null"]}},"required":["id","name","type","enabled","lifecycle_state"]}}}}
```

## The dataflows.item.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"dataflows.item.response":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Id of the dataflow. Pass it to other dataflow endpoints."},"name":{"type":"string","description":"Name of the dataflow."},"last_success_run_at":{"type":["string","null"],"description":"Time of the last successful run. Null when the dataflow has not run successfully."},"last_successful_execution_id":{"type":["string","null"],"description":"Id of the last successful execution. Null when the dataflow has not run successfully."}},"required":["id","name","last_success_run_at","last_successful_execution_id"]}}}}
```

## The dataflows.create.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"dataflows.create.response":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Id of the new dataflow."},"name":{"type":"string","description":"Name of the dataflow."},"url":{"type":"string","description":"Coupler.io page where the user edits the dataflow."},"sources":{"type":"array","items":{"type":"object"},"description":"Sources on the dataflow. Empty when created from a name."},"destinations":{"type":"array","items":{"type":"object"},"description":"Destinations on the dataflow. Empty when created from a name."}},"required":["id","name","url","sources","destinations"]}}}}
```

## The dataflows.show\.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"dataflows.show.response":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Id of the dataflow."},"name":{"type":"string","description":"Name of the dataflow."},"last_successful_execution_id":{"type":["string","null"],"description":"Id of the last successful execution. Null when the dataflow has not run successfully."},"schedule":{"type":["string","null"],"description":"Cron expression for the dataflow. Null when it is not scheduled."},"sources":{"type":"array","items":{"$ref":"#/components/schemas/sources.item.response"}}},"required":["id","name","last_successful_execution_id","schedule","sources"]},"sources.item.response":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"type":{"type":"string"},"enabled":{"type":"boolean"},"lifecycle_state":{"type":"string","enum":["active","paused","disabled"]},"params_configured":{"type":"boolean"},"data_connections_count":{"type":"integer"},"last_success_run_at":{"type":["string","null"]},"error_details":{"type":["object","null"]}},"required":["id","name","type","enabled","lifecycle_state"]}}}}
```

## The sources.item.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"sources.item.response":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"type":{"type":"string"},"enabled":{"type":"boolean"},"lifecycle_state":{"type":"string","enum":["active","paused","disabled"]},"params_configured":{"type":"boolean"},"data_connections_count":{"type":"integer"},"last_success_run_at":{"type":["string","null"]},"error_details":{"type":["object","null"]}},"required":["id","name","type","enabled","lifecycle_state"]}}}}
```

## The datasets.item.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"datasets.item.response":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Id of the dataset. Pass it to GET /v1/workspaces/{workspace_id}/datasets/{id}."},"name":{"type":"string","description":"Name of the dataset."},"dataflow_id":{"type":"string","format":"uuid","description":"Id of the parent dataflow."},"dataflow_name":{"type":"string","description":"Name of the parent dataflow."},"state":{"type":"string","enum":["FULL","FULL_STALE","SCHEMA_ONLY","SCHEMA_PENDING","NO_SCHEMA"],"description":"Dataset state. See `legend.state` for the meaning of each value."},"queryable":{"type":"boolean","description":"Whether row data is available for analysis. See `legend.queryable`."},"last_error":{"type":["string","null"],"description":"Error from the latest dataflow run. Null when the latest run succeeded or there has been no run."},"last_successful_execution_id":{"type":["string","null"],"description":"Id of the dataflow's last successful execution. Null when there has been none."},"last_success_run_at":{"type":["string","null"],"description":"When the dataflow last ran successfully, in ISO 8601. Null when it has not."},"rows_count":{"type":"integer","description":"Number of rows in the latest snapshot. 0 when there is no snapshot."},"last_dataset_snapshot_id":{"type":["string","null"],"description":"Id of the latest snapshot. Null when there is none. Pass it to GET /v1/workspaces/{workspace_id}/dataset_snapshots/{id}."},"table_name":{"type":"string","description":"Dataset table name used in SQL queries within the same dataflow."},"preview_url":{"type":"string","description":"Coupler.io page where the user can review the dataset."},"type":{"type":["string","null"],"description":"Dataset transformation type, such as customSql. Null when the dataset has no complex transformation. Only customSql datasets support SQL query updates."}},"required":["id","name","dataflow_id","dataflow_name","state","queryable","last_error","last_successful_execution_id","last_success_run_at","rows_count","last_dataset_snapshot_id","table_name","preview_url","type"]}}}}
```

## The datasets.collection.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"datasets.collection.response":{"type":"object","properties":{"meta":{"type":"object","description":"Totals for the list.","properties":{"total_count":{"type":"integer","description":"Number of matching datasets before the 200-item limit."}},"required":["total_count"]},"datasets":{"type":"array","description":"Matching datasets, newest successful run first. At most 200.","items":{"$ref":"#/components/schemas/datasets.item.response"}},"legend":{"type":"object","description":"Meaning of `state` and `queryable` on each dataset.","properties":{"state":{"type":"object","description":"Human-readable meaning of each dataset state.","additionalProperties":{"type":"string"}},"queryable":{"type":"string","description":"When row data is available for analysis."}},"required":["state","queryable"]}},"required":["meta","datasets","legend"]},"datasets.item.response":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Id of the dataset. Pass it to GET /v1/workspaces/{workspace_id}/datasets/{id}."},"name":{"type":"string","description":"Name of the dataset."},"dataflow_id":{"type":"string","format":"uuid","description":"Id of the parent dataflow."},"dataflow_name":{"type":"string","description":"Name of the parent dataflow."},"state":{"type":"string","enum":["FULL","FULL_STALE","SCHEMA_ONLY","SCHEMA_PENDING","NO_SCHEMA"],"description":"Dataset state. See `legend.state` for the meaning of each value."},"queryable":{"type":"boolean","description":"Whether row data is available for analysis. See `legend.queryable`."},"last_error":{"type":["string","null"],"description":"Error from the latest dataflow run. Null when the latest run succeeded or there has been no run."},"last_successful_execution_id":{"type":["string","null"],"description":"Id of the dataflow's last successful execution. Null when there has been none."},"last_success_run_at":{"type":["string","null"],"description":"When the dataflow last ran successfully, in ISO 8601. Null when it has not."},"rows_count":{"type":"integer","description":"Number of rows in the latest snapshot. 0 when there is no snapshot."},"last_dataset_snapshot_id":{"type":["string","null"],"description":"Id of the latest snapshot. Null when there is none. Pass it to GET /v1/workspaces/{workspace_id}/dataset_snapshots/{id}."},"table_name":{"type":"string","description":"Dataset table name used in SQL queries within the same dataflow."},"preview_url":{"type":"string","description":"Coupler.io page where the user can review the dataset."},"type":{"type":["string","null"],"description":"Dataset transformation type, such as customSql. Null when the dataset has no complex transformation. Only customSql datasets support SQL query updates."}},"required":["id","name","dataflow_id","dataflow_name","state","queryable","last_error","last_successful_execution_id","last_success_run_at","rows_count","last_dataset_snapshot_id","table_name","preview_url","type"]}}}}
```

## The datasets.column.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"datasets.column.response":{"type":"object","properties":{"key":{"type":"string","description":"Column key used in SQL queries."},"label":{"type":["string","null"],"description":"Human-readable column label. Null when none is set."},"dbName":{"type":"string","description":"Column name in the underlying data table."},"schema":{"type":"object","description":"Column type schema, when available.","additionalProperties":true},"description":{"type":"string","description":"Column description, when set."}},"required":["key","label","dbName"]}}}}
```

## The datasets.member.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"datasets.member.response":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Id of the dataset."},"name":{"type":"string","description":"Name of the dataset."},"dataflow_id":{"type":"string","format":"uuid","description":"Id of the parent dataflow."},"dataflow_name":{"type":"string","description":"Name of the parent dataflow."},"state":{"type":"string","enum":["FULL","FULL_STALE","SCHEMA_ONLY","SCHEMA_PENDING","NO_SCHEMA"],"description":"Dataset state. See the list `legend.state` for each value."},"queryable":{"type":"boolean","description":"Whether row data is available for analysis."},"last_error":{"type":["string","null"],"description":"Error from the latest dataflow run. Null when the latest run succeeded or there has been no run."},"last_successful_execution_id":{"type":["string","null"],"description":"Id of the dataflow's last successful execution. Null when there has been none."},"last_success_run_at":{"type":["string","null"],"description":"When the dataflow last ran successfully, in ISO 8601. Null when it has not."},"rows_count":{"type":"integer","description":"Number of rows in the latest snapshot. 0 when there is no snapshot."},"last_dataset_snapshot_id":{"type":["string","null"],"description":"Id of the latest snapshot. Null when there is none."},"table_name":{"type":"string","description":"Dataset table name used in SQL queries within the same dataflow."},"preview_url":{"type":"string","description":"Coupler.io page where the user can review the dataset."},"type":{"type":["string","null"],"description":"Dataset transformation type, such as customSql. Null when the dataset has no complex transformation. Only customSql datasets support SQL query updates."},"query":{"type":["string","null"],"description":"SQL query of the dataset. Null when the dataset is not customSql."},"ai_context":{"type":["string","null"],"description":"Markdown describing the dataset. Null when none is set."},"columns":{"type":"array","description":"Visible columns. Hidden and skipped columns are omitted.","items":{"$ref":"#/components/schemas/datasets.column.response"}}},"required":["id","name","dataflow_id","dataflow_name","state","queryable","last_error","last_successful_execution_id","last_success_run_at","rows_count","last_dataset_snapshot_id","table_name","preview_url","type","query","ai_context","columns"]},"datasets.column.response":{"type":"object","properties":{"key":{"type":"string","description":"Column key used in SQL queries."},"label":{"type":["string","null"],"description":"Human-readable column label. Null when none is set."},"dbName":{"type":"string","description":"Column name in the underlying data table."},"schema":{"type":"object","description":"Column type schema, when available.","additionalProperties":true},"description":{"type":"string","description":"Column description, when set."}},"required":["key","label","dbName"]}}}}
```

## The datasets.columns\_update.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"datasets.columns_update.response":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Id of the dataset."},"updated_column_keys":{"type":"array","description":"Keys of the columns that were updated.","items":{"type":"string"}}},"required":["id","updated_column_keys"]}}}}
```

## The dataset\_snapshots.item.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"dataset_snapshots.item.response":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Id of the dataset. Same value as `dataset_id` on GET /v1/workspaces/{workspace_id}/dataset_snapshots/{id}."},"name":{"type":"string","description":"Name of the dataset."},"dataflow_id":{"type":"string","format":"uuid","description":"Id of the parent dataflow."},"dataflow_name":{"type":"string","description":"Name of the parent dataflow."},"last_successful_execution_id":{"type":"string","format":"uuid","description":"Id of the successful execution that produced this snapshot."},"last_success_run_at":{"type":["string","null"],"format":"date-time","description":"When the dataflow last ran successfully, in ISO 8601. Null when it has not."},"rows_count":{"type":"integer","description":"Number of rows in the snapshot."},"last_dataset_snapshot_id":{"type":"string","format":"uuid","description":"Id of this snapshot. Pass it to GET /v1/workspaces/{workspace_id}/dataset_snapshots/{id}."},"table_name":{"type":"string","description":"Dataset table name used in SQL queries within the same dataflow."},"preview_url":{"type":"string","description":"Coupler.io page where the user can review the dataset."},"type":{"type":["string","null"],"description":"Dataset transformation type, such as customSql. Null when the dataset has no complex transformation. Only customSql datasets support SQL query updates."}},"required":["id","name","dataflow_id","dataflow_name","last_successful_execution_id","last_success_run_at","rows_count","last_dataset_snapshot_id","table_name","preview_url","type"]}}}}
```

## The dataset\_snapshots.collection.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"dataset_snapshots.collection.response":{"type":"object","properties":{"meta":{"type":"object","description":"Totals for the list.","properties":{"total_count":{"type":"integer","description":"Number of matching datasets before the 200-item limit."}},"required":["total_count"]},"datasets":{"type":"array","description":"Matching datasets, newest successful run first. At most 200.","items":{"$ref":"#/components/schemas/dataset_snapshots.item.response"}}},"required":["meta","datasets"]},"dataset_snapshots.item.response":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Id of the dataset. Same value as `dataset_id` on GET /v1/workspaces/{workspace_id}/dataset_snapshots/{id}."},"name":{"type":"string","description":"Name of the dataset."},"dataflow_id":{"type":"string","format":"uuid","description":"Id of the parent dataflow."},"dataflow_name":{"type":"string","description":"Name of the parent dataflow."},"last_successful_execution_id":{"type":"string","format":"uuid","description":"Id of the successful execution that produced this snapshot."},"last_success_run_at":{"type":["string","null"],"format":"date-time","description":"When the dataflow last ran successfully, in ISO 8601. Null when it has not."},"rows_count":{"type":"integer","description":"Number of rows in the snapshot."},"last_dataset_snapshot_id":{"type":"string","format":"uuid","description":"Id of this snapshot. Pass it to GET /v1/workspaces/{workspace_id}/dataset_snapshots/{id}."},"table_name":{"type":"string","description":"Dataset table name used in SQL queries within the same dataflow."},"preview_url":{"type":"string","description":"Coupler.io page where the user can review the dataset."},"type":{"type":["string","null"],"description":"Dataset transformation type, such as customSql. Null when the dataset has no complex transformation. Only customSql datasets support SQL query updates."}},"required":["id","name","dataflow_id","dataflow_name","last_successful_execution_id","last_success_run_at","rows_count","last_dataset_snapshot_id","table_name","preview_url","type"]}}}}
```

## The dataset\_snapshots.member.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"dataset_snapshots.member.response":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Id of this snapshot. Same value as `last_dataset_snapshot_id` on the list."},"dataset_id":{"type":"string","format":"uuid","description":"Id of the dataset. Same value as `id` on the list."},"type":{"type":["string","null"],"description":"Dataset transformation type, such as customSql. Null when the dataset has no complex transformation."},"ai_context":{"type":["string","null"],"description":"Markdown describing the dataset. Null when none is set."},"columns":{"type":"array","description":"Visible columns. Hidden and skipped columns are omitted.","items":{"type":"object","properties":{"key":{"type":"string","description":"Column key used in SQL queries."},"label":{"type":["string","null"],"description":"Human-readable column label. Null when none is set."},"dbName":{"type":"string","description":"Column name in the underlying data table."},"schema":{"type":"object","description":"Column type schema, when available.","additionalProperties":true},"description":{"type":"string","description":"Column description, when set."}},"required":["key","label","dbName"]}}},"required":["id","dataset_id","type","ai_context","columns"]}}}}
```

## The credentials.collection.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"credentials.collection.response":{"type":"object","properties":{"credentials":{"type":"array","description":"Credentials the current user can use in the workspace. At most 200, newest first","items":{"$ref":"#/components/schemas/credentials.item.response"}},"setup_url":{"type":"string","description":"Coupler.io page where a user connects a credential. Includes the provider when `provider` is passed. Otherwise opens source connections, or destination connections when `type` is destination"}},"required":["credentials","setup_url"]},"credentials.item.response":{"type":"object","properties":{"id":{"type":"integer","description":"Credential id"},"type":{"type":"string","enum":["source","destination"],"description":"source for a data source connection, destination for a data destination connection"},"provider":{"type":"string","description":"Provider key, for example google_spreadsheet"},"name":{"type":"string","description":"Credential title, email, or both. Falls back to Credential #<id> when neither is set"},"status":{"type":"string","enum":["active","error"],"description":"active when the credential has no error, error otherwise"}},"required":["id","type","provider","name","status"]}}}}
```

## The credentials.item.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"credentials.item.response":{"type":"object","properties":{"id":{"type":"integer","description":"Credential id"},"type":{"type":"string","enum":["source","destination"],"description":"source for a data source connection, destination for a data destination connection"},"provider":{"type":"string","description":"Provider key, for example google_spreadsheet"},"name":{"type":"string","description":"Credential title, email, or both. Falls back to Credential #<id> when neither is set"},"status":{"type":"string","enum":["active","error"],"description":"active when the credential has no error, error otherwise"}},"required":["id","type","provider","name","status"]}}}}
```

## The feature\_flags.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"feature_flags.response":{"type":"object","properties":{"feature_flags":{"type":"array","items":{"type":"string"}}},"required":["feature_flags"]}}}}
```

## The agent\_skills.collection.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"agent_skills.collection.response":{"type":"object","properties":{"skills":{"type":"array","description":"Skills the workspace installed for the agent, plus capability and custom skills","items":{"$ref":"#/components/schemas/agent_skills.item.response"}}},"required":["skills"]},"agent_skills.item.response":{"type":"object","properties":{"slug":{"type":"string","description":"Identifier used to load the skill prompt"},"name":{"type":["string","null"],"description":"Deprecated, same as slug"},"description":{"type":"string","description":"What the skill does"}},"required":["slug","description"]}}}}
```

## The agent\_skills.item.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"agent_skills.item.response":{"type":"object","properties":{"slug":{"type":"string","description":"Identifier used to load the skill prompt"},"name":{"type":["string","null"],"description":"Deprecated, same as slug"},"description":{"type":"string","description":"What the skill does"}},"required":["slug","description"]}}}}
```

## The agent\_skills.prompt.response object

```json
{"openapi":"3.1.0","info":{"title":"Coupler.io Public API","version":"v1"},"components":{"schemas":{"agent_skills.prompt.response":{"type":"object","properties":{"content":{"type":"string","description":"Skill instructions. A customized skill returns its saved prompt. Any other skill returns the catalog prompt."}},"required":["content"]}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.coupler.io/api/models.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
