GET https://api.wetransform.com/template/{templateHandle}/column/{columnId}
URL Parameters
Parameter Description Pattern
{columnId}

The UUID of the column to read

[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}
{templateHandle}

The handle of the template the column belongs to

Responses
Response 200
ResponseSuccess ColumnPublicColumnResponse

Response facade for a template column returned by the public API.

Mirrors {@see \PublicColumnRequestFacade} on read, with the column UUID and the parent template handle added. The conditions field is re-serialised back to its DSL string form so round-tripping with the request facade is symmetric.

success boolean

Always true on successful responses.

Sample: true
payload object

Payload of the requested resource.

payload.column_id * string

The column UUID.

Sample: "ed01b8b4-7726-47ea-a11f-0a0a208b377f"
payload.template_handle * string

The handle of the template this column belongs to.

Sample: "employees"
payload.position * integer

The column position in the target file.

Sample: 3
payload.technical_name * string

The column technical name, as it will be rendered in the target file.

Sample: "age"
payload.pretty_name * string

The column pretty name, as it will be rendered on the WeTransform interfaces.

Sample: "Age"
payload.description * string

The column description.

Sample: "Employee age"
payload.type * object

The column type.

payload.type.type string

The type of the expected answer.

This will be useful to render to the customer the right field based on what we (or receiver) expect.

Possible values: BOOLEAN, TEXT, NUMBER, DATE, CHOICE, VALUE, COLUMN, URL, EMAIL, IMAGE, JSON, DATE_FORMAT

Sample: "NUMBER"
payload.type.boolean_data_type * object
payload.type.text_data_type * object
payload.type.number_data_type * object
payload.type.number_data_type.decimals * integer

The number of decimals at which number should be rounded.

Sample: 0
payload.type.number_data_type.separator_decimals * string

The decimals separator (a comma, a dot...)

Sample: ""
payload.type.number_data_type.separator_thousands * string

The thousand separator (a space, a comma...)

Sample: ""
payload.type.number_data_type.trailing_zeros * boolean

Whether trailing zeros should be added to match the specified number of decimals.

Sample: false
payload.type.date_data_type * object
payload.type.choice_data_type * object
payload.type.value_data_type * object
payload.type.column_data_type * object
payload.type.url_data_type * object
payload.type.email_data_type * object
payload.type.image_data_type * object
payload.type.json_data_type * object
payload.type.date_format_data_type * object
payload.uniqueness * boolean

Whether values in the same column should be distinct.

Sample: false
payload.importance * string

The column importance.

Sample: "required"
payload.matchable_with_ai * boolean

Whether the column can be automatically matched with AI.

Sample: true
payload.hidden * boolean

Whether the column is hidden on the sender side interfaces.

Sample: false
payload.user_metadata * array

User metadata associated to the column.

payload.user_metadata[].name string
Sample: "internal_code"
payload.user_metadata[].value * string
Sample: "TMPLT_COLUMN_001"
payload.conditions * string

Conditions associated to the column, serialised back to the DSL string format (see {@see PublicColumnRequestFacade::$conditions} for the format reference).

Sample: "AND\/#(contract)\/EQUALS\/trainee"
product * object

A product needed.

Not null if user requires to buy a specific product (permission or limitation) in order to access a feature.

product.requirement * string

Whether the user requested a features s/he doesn't have access to, or the user needs greater limits. Possible values: permission, limitation

Sample: "permission"
product.permission * object

The required permission.

You will need to know which permission is needed in order to fill up search filters in the shop.

product.permission.description * string

A human-understandable name for the permission.

product.permission.name string

A technical permission name (ex: ORGANISATION_UPDATE_SETTINGS).

Possible values depend on the context, check the domain's metadata endpoint.

Sample: "X_SOURCE_FORMAT_XML"
product.limitation_type * string

The limitation that needs to be increased (ex: number of columns).

product.limitation_needed_value * integer

The needed resource quantity (if receiver uses 9 columns in a template, this value is 9).

product.limitation_current_value * integer

The current value of the limitation (if receiver is allowed to use 10 columns, this value is 10).

product.limitation_object * object

The limitation type in a readable format, for example, "lines per file".

product.is_cta * boolean

Whether a Call To Action should be displayed.

It may not be displayed if:

  • the limitation is on the membership role
  • the limitation is on the customer role
  • the user is a sender
template_handle * string

Handle of the template currently in context, if any.

Many endpoints (and frontend components) require a template_handle. It is exposed here so consumers — most notably the AI agent — can reuse it instead of having to ask the user for it again.

Sample: "new-hires"
source_id * string

UUID of the source currently in context, if any.

Many endpoints (and frontend components) require a source_id (the source UUID, not its database id). It is exposed here so consumers — most notably the AI agent — can reuse it instead of having to ask the user for it again.

Sample: "9e7060d4-9314-4783-883a-8702471ccd39"
debug array

Debug information.

Contains logs about business logic explaining state of the response payload.

Provided in development & admin modes only.

Properties suffixed with * are nullable.
{
    "success": true,
    "payload": {
        "column_id": "ed01b8b4-7726-47ea-a11f-0a0a208b377f",
        "template_handle": "employees",
        "position": 3,
        "technical_name": "age",
        "pretty_name": "Age",
        "description": "Employee age",
        "type": {
            "type": "NUMBER",
            "boolean_data_type": null,
            "text_data_type": null,
            "number_data_type": {
                "decimals": 0,
                "separator_decimals": "",
                "separator_thousands": "",
                "trailing_zeros": false
            },
            "date_data_type": null,
            "choice_data_type": null,
            "value_data_type": null,
            "column_data_type": null,
            "url_data_type": null,
            "email_data_type": null,
            "image_data_type": null,
            "json_data_type": null,
            "date_format_data_type": null
        },
        "uniqueness": false,
        "importance": "required",
        "matchable_with_ai": true,
        "hidden": false,
        "user_metadata": [
            {
                "name": "internal_code",
                "value": "TMPLT_COLUMN_001"
            }
        ],
        "conditions": "AND\/#(contract)\/EQUALS\/trainee"
    },
    "product": {
        "requirement": "permission",
        "permission": {
            "name": "X_SOURCE_FORMAT_XML",
            "description": "Can import XML files"
        },
        "limitation_type": null,
        "limitation_needed_value": null,
        "limitation_current_value": null,
        "limitation_object": null,
        "is_cta": false
    },
    "template_handle": "new-hires",
    "source_id": "9e7060d4-9314-4783-883a-8702471ccd39",
    "debug": []
}
Copy
Response 401 Authentication required.
ResponseError HttpUnauthorized

User must be authenticated to access the resource.

This response is received when the authorization header does not contain a valid authentication token.

It mostly happens because the current access_token has expired, and it needs to be renewed using a refresh_token.

success boolean

Always false on error responses.

Sample: false
payload object

Context about the error, if any.

product * object

A product needed.

Not null if user requires to buy a specific product (permission or limitation) in order to access a feature.

product.requirement * string

Whether the user requested a features s/he doesn't have access to, or the user needs greater limits. Possible values: permission, limitation

Sample: "permission"
product.permission * object

The required permission.

You will need to know which permission is needed in order to fill up search filters in the shop.

product.permission.description * string

A human-understandable name for the permission.

product.permission.name string

A technical permission name (ex: ORGANISATION_UPDATE_SETTINGS).

Possible values depend on the context, check the domain's metadata endpoint.

Sample: "X_SOURCE_FORMAT_XML"
product.limitation_type * string

The limitation that needs to be increased (ex: number of columns).

product.limitation_needed_value * integer

The needed resource quantity (if receiver uses 9 columns in a template, this value is 9).

product.limitation_current_value * integer

The current value of the limitation (if receiver is allowed to use 10 columns, this value is 10).

product.limitation_object * object

The limitation type in a readable format, for example, "lines per file".

product.is_cta * boolean

Whether a Call To Action should be displayed.

It may not be displayed if:

  • the limitation is on the membership role
  • the limitation is on the customer role
  • the user is a sender
template_handle * string

Handle of the template currently in context, if any.

Many endpoints (and frontend components) require a template_handle. It is exposed here so consumers — most notably the AI agent — can reuse it instead of having to ask the user for it again.

Sample: "new-hires"
source_id * string

UUID of the source currently in context, if any.

Many endpoints (and frontend components) require a source_id (the source UUID, not its database id). It is exposed here so consumers — most notably the AI agent — can reuse it instead of having to ask the user for it again.

Sample: "9e7060d4-9314-4783-883a-8702471ccd39"
debug array

Debug information.

Contains logs about business logic explaining state of the response payload.

Provided in development & admin modes only.

Properties suffixed with * are nullable.
{
    "success": false,
    "payload": [],
    "product": {
        "requirement": "permission",
        "permission": {
            "name": "X_SOURCE_FORMAT_XML",
            "description": "Can import XML files"
        },
        "limitation_type": null,
        "limitation_needed_value": null,
        "limitation_current_value": null,
        "limitation_object": null,
        "is_cta": false
    },
    "template_handle": "new-hires",
    "source_id": "9e7060d4-9314-4783-883a-8702471ccd39",
    "debug": []
}
Copy
Response 403 Access denied.
ResponseError HttpForbidden

User is well authenticated, but not authorized to access the resource.

It can happen if user is trying to use a feature that s/he didn't pay for, access someone else's resource, etc.

These issues are normally fixed by the frontend, which should render features and resources user has access to.

success boolean

Always false on error responses.

Sample: false
payload object

Context about the error, if any.

product * object

A product needed.

Not null if user requires to buy a specific product (permission or limitation) in order to access a feature.

product.requirement * string

Whether the user requested a features s/he doesn't have access to, or the user needs greater limits. Possible values: permission, limitation

Sample: "permission"
product.permission * object

The required permission.

You will need to know which permission is needed in order to fill up search filters in the shop.

product.permission.description * string

A human-understandable name for the permission.

product.permission.name string

A technical permission name (ex: ORGANISATION_UPDATE_SETTINGS).

Possible values depend on the context, check the domain's metadata endpoint.

Sample: "X_SOURCE_FORMAT_XML"
product.limitation_type * string

The limitation that needs to be increased (ex: number of columns).

product.limitation_needed_value * integer

The needed resource quantity (if receiver uses 9 columns in a template, this value is 9).

product.limitation_current_value * integer

The current value of the limitation (if receiver is allowed to use 10 columns, this value is 10).

product.limitation_object * object

The limitation type in a readable format, for example, "lines per file".

product.is_cta * boolean

Whether a Call To Action should be displayed.

It may not be displayed if:

  • the limitation is on the membership role
  • the limitation is on the customer role
  • the user is a sender
template_handle * string

Handle of the template currently in context, if any.

Many endpoints (and frontend components) require a template_handle. It is exposed here so consumers — most notably the AI agent — can reuse it instead of having to ask the user for it again.

Sample: "new-hires"
source_id * string

UUID of the source currently in context, if any.

Many endpoints (and frontend components) require a source_id (the source UUID, not its database id). It is exposed here so consumers — most notably the AI agent — can reuse it instead of having to ask the user for it again.

Sample: "9e7060d4-9314-4783-883a-8702471ccd39"
debug array

Debug information.

Contains logs about business logic explaining state of the response payload.

Provided in development & admin modes only.

Properties suffixed with * are nullable.
{
    "success": false,
    "payload": [],
    "product": {
        "requirement": "permission",
        "permission": {
            "name": "X_SOURCE_FORMAT_XML",
            "description": "Can import XML files"
        },
        "limitation_type": null,
        "limitation_needed_value": null,
        "limitation_current_value": null,
        "limitation_object": null,
        "is_cta": false
    },
    "template_handle": "new-hires",
    "source_id": "9e7060d4-9314-4783-883a-8702471ccd39",
    "debug": []
}
Copy
Back to API Reference

Interactive Console

Please login in order to access the console.

© 2026