> For the complete documentation index, see [llms.txt](https://docs.truedat.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.truedat.io/v8.9/api-integrations/connectors-management-apis/sources.md).

# Sources

## List sources

> Returns sources available to the caller. Two access modes are supported, depending on whether the \`type\` query parameter is provided.\
> \
> \*\*Mode 1 – filtered by type (\`type\` provided):\*\*\
> \- Lists all active, non-deleted sources of the specified type, regardless of the caller's role.\
> \- No additional permission check is performed on the listing itself.\
> \- Secrets are attached only when the caller is an administrator or a service account whose \`user\_name\` matches the requested source type (case-insensitive). If the caller does not meet both conditions, sources are returned without secrets.\
> \
> \*\*Mode 2 – no type (\`type\` omitted):\*\*\
> \- Lists non-deleted sources.\
> \- Requires \*\*at least one\*\* of the following:\
> &#x20; \- Administrator or service account, or\
> &#x20; \- The \*\*'Manage native implementations'\*\* permission.\
> \- Secrets are not enriched in this mode.\
> \
> No pagination is applied. The response always includes only the information the caller is allowed to see.<br>

```json
{"openapi":"3.0.0","info":{"title":"td-cx","version":"Truedat 8.11.0"},"paths":{"/api/sources":{"get":{"description":"Returns sources available to the caller. Two access modes are supported, depending on whether the `type` query parameter is provided.\n\n**Mode 1 – filtered by type (`type` provided):**\n- Lists all active, non-deleted sources of the specified type, regardless of the caller's role.\n- No additional permission check is performed on the listing itself.\n- Secrets are attached only when the caller is an administrator or a service account whose `user_name` matches the requested source type (case-insensitive). If the caller does not meet both conditions, sources are returned without secrets.\n\n**Mode 2 – no type (`type` omitted):**\n- Lists non-deleted sources.\n- Requires **at least one** of the following:\n  - Administrator or service account, or\n  - The **'Manage native implementations'** permission.\n- Secrets are not enriched in this mode.\n\nNo pagination is applied. The response always includes only the information the caller is allowed to see.\n","operationId":"TdCxWeb.SourceController.index","parameters":[{"description":"Filter by source type","in":"query","name":"type","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceIndexResponse"}}},"description":"Sources"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxUnauthorizedResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxForbiddenResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"List sources","tags":["Sources"]}}},"components":{"schemas":{"SourceIndexResponse":{"additionalProperties":false,"properties":{"data":{"items":{"$ref":"#/components/schemas/Source"},"type":"array"}},"required":["data"],"title":"SourceIndexResponse","type":"object"},"Source":{"additionalProperties":false,"properties":{"active":{"description":"Whether the source is active","type":"boolean"},"config":{"additionalProperties":true,"description":"Source configuration (flattened key-value pairs). When the caller is\nauthorized to view the source's secrets, the fields marked as secret\nin the template are merged into this object alongside the rest of the\nconfiguration. Otherwise, only non-secret fields are returned.\n","type":"object"},"dynamic_content":{"additionalProperties":true,"description":"Configuration with metadata (value, origin)","nullable":true,"type":"object"},"external_id":{"description":"Source external identifier","type":"string"},"id":{"description":"Source internal ID","type":"integer"},"inserted_at":{"format":"date-time","nullable":true,"type":"string"},"job_types":{"description":"List of job types supported by the source. Only present in the `show` response; omitted from `index`.","items":{"type":"string"},"nullable":true,"type":"array"},"type":{"description":"Source type (template name)","type":"string"},"updated_at":{"format":"date-time","nullable":true,"type":"string"}},"required":["id","external_id","type","active"],"title":"Source","type":"object"},"TdCxUnauthorizedResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxUnauthorizedResponse","type":"object"},"TdCxForbiddenResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxForbiddenResponse","type":"object"},"TdCxInternalServerErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxInternalServerErrorResponse","type":"object"}}}}
```

## Create a source

> Creates a source from the provided payload, or updates an existing one when a source with the same \`external\_id\` is already present.\
> \
> Requires administrative privileges (\*\*administrator or service account\*\*).\
> \
> \*\*Request body:\*\*\
> \- \`source\` (required) – Object containing:\
> &#x20; \- \`external\_id\` (required, string) – Unique external identifier.\
> &#x20; \- \`type\` (required, string) – Source type. Determines the template used to validate \`config\` and to identify secret fields.\
> &#x20; \- \`config\` (required, object) – Source configuration. The \`config\` object is validated against the template for the given \`type\`. Fields marked as secret in the template are extracted, stored in the vault, and replaced by a server-generated \`secrets\_key\`.\
> &#x20; \- \`active\` (optional, boolean) – Whether the source is active. Default: \`true\`.\
> \
> The endpoint behaves as an upsert. If a source with the given \`external\_id\` already exists (including a soft-deleted one), it is updated in place and its \`deleted\_at\` is cleared. Otherwise a new source is created. The response includes a \`Location\` header pointing to the resulting source.\
> \
> The \`secrets\_key\` is generated by the server and does not need to be supplied by the caller.<br>

```json
{"openapi":"3.0.0","info":{"title":"td-cx","version":"Truedat 8.11.0"},"paths":{"/api/sources":{"post":{"description":"Creates a source from the provided payload, or updates an existing one when a source with the same `external_id` is already present.\n\nRequires administrative privileges (**administrator or service account**).\n\n**Request body:**\n- `source` (required) – Object containing:\n  - `external_id` (required, string) – Unique external identifier.\n  - `type` (required, string) – Source type. Determines the template used to validate `config` and to identify secret fields.\n  - `config` (required, object) – Source configuration. The `config` object is validated against the template for the given `type`. Fields marked as secret in the template are extracted, stored in the vault, and replaced by a server-generated `secrets_key`.\n  - `active` (optional, boolean) – Whether the source is active. Default: `true`.\n\nThe endpoint behaves as an upsert. If a source with the given `external_id` already exists (including a soft-deleted one), it is updated in place and its `deleted_at` is cleared. Otherwise a new source is created. The response includes a `Location` header pointing to the resulting source.\n\nThe `secrets_key` is generated by the server and does not need to be supplied by the caller.\n","operationId":"TdCxWeb.SourceController.create","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceCreateRequest"}}},"description":"Source","required":false},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceShowResponse"}}},"description":"Created"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxUnauthorizedResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxForbiddenResponse"}}},"description":"Forbidden"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxUnprocessableEntityResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"Create a source","tags":["Sources"]}}},"components":{"schemas":{"SourceCreateRequest":{"properties":{"source":{"additionalProperties":false,"properties":{"active":{"description":"Whether the source is active. If omitted when creating a source, the default is true.","nullable":true,"type":"boolean"},"config":{"additionalProperties":true,"type":"object"},"external_id":{"type":"string"},"type":{"type":"string"}},"required":["external_id","type","config"],"type":"object"}},"required":["source"],"title":"SourceCreateRequest","type":"object"},"SourceShowResponse":{"additionalProperties":false,"properties":{"data":{"$ref":"#/components/schemas/Source"}},"required":["data"],"title":"SourceShowResponse","type":"object"},"Source":{"additionalProperties":false,"properties":{"active":{"description":"Whether the source is active","type":"boolean"},"config":{"additionalProperties":true,"description":"Source configuration (flattened key-value pairs). When the caller is\nauthorized to view the source's secrets, the fields marked as secret\nin the template are merged into this object alongside the rest of the\nconfiguration. Otherwise, only non-secret fields are returned.\n","type":"object"},"dynamic_content":{"additionalProperties":true,"description":"Configuration with metadata (value, origin)","nullable":true,"type":"object"},"external_id":{"description":"Source external identifier","type":"string"},"id":{"description":"Source internal ID","type":"integer"},"inserted_at":{"format":"date-time","nullable":true,"type":"string"},"job_types":{"description":"List of job types supported by the source. Only present in the `show` response; omitted from `index`.","items":{"type":"string"},"nullable":true,"type":"array"},"type":{"description":"Source type (template name)","type":"string"},"updated_at":{"format":"date-time","nullable":true,"type":"string"}},"required":["id","external_id","type","active"],"title":"Source","type":"object"},"TdCxUnauthorizedResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxUnauthorizedResponse","type":"object"},"TdCxForbiddenResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxForbiddenResponse","type":"object"},"TdCxUnprocessableEntityResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxUnprocessableEntityResponse","type":"object"},"TdCxInternalServerErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxInternalServerErrorResponse","type":"object"}}}}
```

## Get a source by external ID

> Fetches a single source by its external ID, including its supported job types.\
> \
> Requires administrative privileges (\*\*administrator or service account\*\*).\
> \
> Secrets are attached only when the caller is an administrator or service account \*\*and\*\* the caller's \`user\_name\` equals the source's \`type\` (case-insensitive). If either condition fails, the source is returned without secrets.<br>

```json
{"openapi":"3.0.0","info":{"title":"td-cx","version":"Truedat 8.11.0"},"paths":{"/api/sources/{external_id}":{"get":{"description":"Fetches a single source by its external ID, including its supported job types.\n\nRequires administrative privileges (**administrator or service account**).\n\nSecrets are attached only when the caller is an administrator or service account **and** the caller's `user_name` equals the source's `type` (case-insensitive). If either condition fails, the source is returned without secrets.\n","operationId":"TdCxWeb.SourceController.show","parameters":[{"description":"Source external ID","in":"path","name":"external_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceShowResponse"}}},"description":"Source"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxUnauthorizedResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxForbiddenResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxNotFoundResponse"}}},"description":"Not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"Get a source by external ID","tags":["Sources"]}}},"components":{"schemas":{"SourceShowResponse":{"additionalProperties":false,"properties":{"data":{"$ref":"#/components/schemas/Source"}},"required":["data"],"title":"SourceShowResponse","type":"object"},"Source":{"additionalProperties":false,"properties":{"active":{"description":"Whether the source is active","type":"boolean"},"config":{"additionalProperties":true,"description":"Source configuration (flattened key-value pairs). When the caller is\nauthorized to view the source's secrets, the fields marked as secret\nin the template are merged into this object alongside the rest of the\nconfiguration. Otherwise, only non-secret fields are returned.\n","type":"object"},"dynamic_content":{"additionalProperties":true,"description":"Configuration with metadata (value, origin)","nullable":true,"type":"object"},"external_id":{"description":"Source external identifier","type":"string"},"id":{"description":"Source internal ID","type":"integer"},"inserted_at":{"format":"date-time","nullable":true,"type":"string"},"job_types":{"description":"List of job types supported by the source. Only present in the `show` response; omitted from `index`.","items":{"type":"string"},"nullable":true,"type":"array"},"type":{"description":"Source type (template name)","type":"string"},"updated_at":{"format":"date-time","nullable":true,"type":"string"}},"required":["id","external_id","type","active"],"title":"Source","type":"object"},"TdCxUnauthorizedResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxUnauthorizedResponse","type":"object"},"TdCxForbiddenResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxForbiddenResponse","type":"object"},"TdCxNotFoundResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxNotFoundResponse","type":"object"},"TdCxInternalServerErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxInternalServerErrorResponse","type":"object"}}}}
```

## Update a source or source configuration

> Updates either the source properties or its configuration. Use the \`source\` key for general updates or the \`source\_config\` key for configuration updates; only one form should be provided.\
> \
> Requires administrative privileges (\*\*administrator or service account\*\*).<br>

```json
{"openapi":"3.0.0","info":{"title":"td-cx","version":"Truedat 8.11.0"},"paths":{"/api/sources/{external_id}":{"put":{"description":"Updates either the source properties or its configuration. Use the `source` key for general updates or the `source_config` key for configuration updates; only one form should be provided.\n\nRequires administrative privileges (**administrator or service account**).\n","operationId":"TdCxWeb.SourceController.update","parameters":[{"description":"Source external ID","in":"path","name":"external_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceUpdateUnionRequest"}}},"description":"Source update","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceShowResponse"}}},"description":"Updated"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxUnauthorizedResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxForbiddenResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxNotFoundResponse"}}},"description":"Not found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxUnprocessableEntityResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"Update a source or source configuration","tags":["Sources"]}}},"components":{"schemas":{"SourceUpdateUnionRequest":{"description":"Update request that can contain either 'source' (general source update) or 'source_config' (configuration update). Only one of them should be provided.","oneOf":[{"$ref":"#/components/schemas/SourceUpdateRequestSource"},{"$ref":"#/components/schemas/SourceUpdateRequestConfig"}],"title":"SourceUpdateUnionRequest"},"SourceUpdateRequestSource":{"additionalProperties":false,"properties":{"source":{"additionalProperties":false,"properties":{"active":{"description":"Active status","nullable":true,"type":"boolean"},"config":{"additionalProperties":true,"description":"Source configuration","nullable":true,"type":"object"},"type":{"description":"Source type","nullable":true,"type":"string"}},"type":"object"}},"required":["source"],"title":"SourceUpdateRequestSource","type":"object"},"SourceUpdateRequestConfig":{"additionalProperties":false,"properties":{"source_config":{"additionalProperties":true,"description":"Source configuration object to merge/update","type":"object"}},"required":["source_config"],"title":"SourceUpdateRequestConfig","type":"object"},"SourceShowResponse":{"additionalProperties":false,"properties":{"data":{"$ref":"#/components/schemas/Source"}},"required":["data"],"title":"SourceShowResponse","type":"object"},"Source":{"additionalProperties":false,"properties":{"active":{"description":"Whether the source is active","type":"boolean"},"config":{"additionalProperties":true,"description":"Source configuration (flattened key-value pairs). When the caller is\nauthorized to view the source's secrets, the fields marked as secret\nin the template are merged into this object alongside the rest of the\nconfiguration. Otherwise, only non-secret fields are returned.\n","type":"object"},"dynamic_content":{"additionalProperties":true,"description":"Configuration with metadata (value, origin)","nullable":true,"type":"object"},"external_id":{"description":"Source external identifier","type":"string"},"id":{"description":"Source internal ID","type":"integer"},"inserted_at":{"format":"date-time","nullable":true,"type":"string"},"job_types":{"description":"List of job types supported by the source. Only present in the `show` response; omitted from `index`.","items":{"type":"string"},"nullable":true,"type":"array"},"type":{"description":"Source type (template name)","type":"string"},"updated_at":{"format":"date-time","nullable":true,"type":"string"}},"required":["id","external_id","type","active"],"title":"Source","type":"object"},"TdCxUnauthorizedResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxUnauthorizedResponse","type":"object"},"TdCxForbiddenResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxForbiddenResponse","type":"object"},"TdCxNotFoundResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxNotFoundResponse","type":"object"},"TdCxUnprocessableEntityResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxUnprocessableEntityResponse","type":"object"},"TdCxInternalServerErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxInternalServerErrorResponse","type":"object"}}}}
```

## Delete a source

> Deletes a source by its external ID. The behavior depends on whether the source has associated jobs.\
> \- \*\*No associated jobs:\*\* The source is hard-deleted from the database.\
> \- \*\*Has associated jobs:\*\* The source is soft-deleted: \`deleted\_at\` is set to the current timestamp and the source is excluded from default listings, but the row remains in the database for history.\
> In both cases the source's secrets are removed from the vault.\
> \
> Requires administrative privileges (\*\*administrator or service account\*\*).\
> \
> A soft-deleted source can be reactivated by calling \`create\` with the same \`external\_id\`: the underlying operation clears \`deleted\_at\` instead of inserting a new row. If the source does not exist, the endpoint returns a client error through the fallback.<br>

```json
{"openapi":"3.0.0","info":{"title":"td-cx","version":"Truedat 8.11.0"},"paths":{"/api/sources/{external_id}":{"delete":{"description":"Deletes a source by its external ID. The behavior depends on whether the source has associated jobs.\n- **No associated jobs:** The source is hard-deleted from the database.\n- **Has associated jobs:** The source is soft-deleted: `deleted_at` is set to the current timestamp and the source is excluded from default listings, but the row remains in the database for history.\nIn both cases the source's secrets are removed from the vault.\n\nRequires administrative privileges (**administrator or service account**).\n\nA soft-deleted source can be reactivated by calling `create` with the same `external_id`: the underlying operation clears `deleted_at` instead of inserting a new row. If the source does not exist, the endpoint returns a client error through the fallback.\n","operationId":"TdCxWeb.SourceController.delete","parameters":[{"description":"Source external ID","in":"path","name":"external_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Source deleted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxUnauthorizedResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxForbiddenResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxNotFoundResponse"}}},"description":"Not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"Delete a source","tags":["Sources"]}}},"components":{"schemas":{"TdCxUnauthorizedResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxUnauthorizedResponse","type":"object"},"TdCxForbiddenResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxForbiddenResponse","type":"object"},"TdCxNotFoundResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxNotFoundResponse","type":"object"},"TdCxInternalServerErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxInternalServerErrorResponse","type":"object"}}}}
```

## Update a source or source configuration

> Updates either the source properties or its configuration. Use the \`source\` key for general updates or the \`source\_config\` key for configuration updates; only one form should be provided.\
> \
> Requires administrative privileges (\*\*administrator or service account\*\*).<br>

```json
{"openapi":"3.0.0","info":{"title":"td-cx","version":"Truedat 8.11.0"},"paths":{"/api/sources/{external_id}":{"patch":{"description":"Updates either the source properties or its configuration. Use the `source` key for general updates or the `source_config` key for configuration updates; only one form should be provided.\n\nRequires administrative privileges (**administrator or service account**).\n","operationId":"TdCxWeb.SourceController.update (2)","parameters":[{"description":"Source external ID","in":"path","name":"external_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceUpdateUnionRequest"}}},"description":"Source update","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceShowResponse"}}},"description":"Updated"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxUnauthorizedResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxForbiddenResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxNotFoundResponse"}}},"description":"Not found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxUnprocessableEntityResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdCxInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"Update a source or source configuration","tags":["Sources"]}}},"components":{"schemas":{"SourceUpdateUnionRequest":{"description":"Update request that can contain either 'source' (general source update) or 'source_config' (configuration update). Only one of them should be provided.","oneOf":[{"$ref":"#/components/schemas/SourceUpdateRequestSource"},{"$ref":"#/components/schemas/SourceUpdateRequestConfig"}],"title":"SourceUpdateUnionRequest"},"SourceUpdateRequestSource":{"additionalProperties":false,"properties":{"source":{"additionalProperties":false,"properties":{"active":{"description":"Active status","nullable":true,"type":"boolean"},"config":{"additionalProperties":true,"description":"Source configuration","nullable":true,"type":"object"},"type":{"description":"Source type","nullable":true,"type":"string"}},"type":"object"}},"required":["source"],"title":"SourceUpdateRequestSource","type":"object"},"SourceUpdateRequestConfig":{"additionalProperties":false,"properties":{"source_config":{"additionalProperties":true,"description":"Source configuration object to merge/update","type":"object"}},"required":["source_config"],"title":"SourceUpdateRequestConfig","type":"object"},"SourceShowResponse":{"additionalProperties":false,"properties":{"data":{"$ref":"#/components/schemas/Source"}},"required":["data"],"title":"SourceShowResponse","type":"object"},"Source":{"additionalProperties":false,"properties":{"active":{"description":"Whether the source is active","type":"boolean"},"config":{"additionalProperties":true,"description":"Source configuration (flattened key-value pairs). When the caller is\nauthorized to view the source's secrets, the fields marked as secret\nin the template are merged into this object alongside the rest of the\nconfiguration. Otherwise, only non-secret fields are returned.\n","type":"object"},"dynamic_content":{"additionalProperties":true,"description":"Configuration with metadata (value, origin)","nullable":true,"type":"object"},"external_id":{"description":"Source external identifier","type":"string"},"id":{"description":"Source internal ID","type":"integer"},"inserted_at":{"format":"date-time","nullable":true,"type":"string"},"job_types":{"description":"List of job types supported by the source. Only present in the `show` response; omitted from `index`.","items":{"type":"string"},"nullable":true,"type":"array"},"type":{"description":"Source type (template name)","type":"string"},"updated_at":{"format":"date-time","nullable":true,"type":"string"}},"required":["id","external_id","type","active"],"title":"Source","type":"object"},"TdCxUnauthorizedResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxUnauthorizedResponse","type":"object"},"TdCxForbiddenResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxForbiddenResponse","type":"object"},"TdCxNotFoundResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxNotFoundResponse","type":"object"},"TdCxUnprocessableEntityResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxUnprocessableEntityResponse","type":"object"},"TdCxInternalServerErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"title":"TdCxInternalServerErrorResponse","type":"object"}}}}
```
