Oneprofile Table Templates API
Endpoints for saving and applying column templates.
Endpoints for saving and applying column templates.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/getoneprofile-ai:getoneprofile-ai-table-templates-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
contact:
email: support@getoneprofile.ai
name: Oneprofile Support
description: REST API reference for Oneprofile, the GTM data layer for your CRM. Manage tables, enrichments, and integrations. Authenticate with an API key to get started.
termsOfService: https://www.getoneprofile.ai/terms
title: Reference | Oneprofile Table Templates API
version: 1.0.42765316646
tags:
- description: Endpoints for saving and applying column templates.
name: table-templates
paths:
/column-templates/:
get:
description: The organisation's saved multi-column templates, newest first.
operationId: list_column_templates
parameters:
- in: query
name: filters
required: true
schema:
$ref: '#/components/schemas/ListColumnTemplatesFilterParamsSchema'
- description: The number of items to return.
in: query
name: limit
required: false
schema:
default: 10
description: The number of items to return.
maximum: 100
minimum: 1
title: Limit
type: integer
- in: query
name: order_by
required: false
schema:
$ref: '#/components/schemas/OrderingParametersForIdCreatedAtName'
default: created_at
enum:
- id
- created_at
- name
type: string
- in: query
name: order_direction
required: false
schema:
default: desc
enum:
- asc
- desc
title: Order Direction
type: string
- description: Set the cursor to the next or previous page. You can get the cursor from the previous page's response.
in: query
name: cursor
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Set the cursor to the next or previous page. You can get the cursor from the previous page's response.
title: Cursor for pagination.
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedResponse_ColumnTemplateReadSchema_'
description: Successful Response
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Invalid request made to the API.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/ServerErrorResponse'
description: Internal server error.
'502':
content:
application/json:
schema:
$ref: '#/components/schemas/ServerErrorResponse'
description: Bad gateway error.
'503':
content:
application/json:
schema:
$ref: '#/components/schemas/ServerErrorResponse'
description: Service unavailable.
security:
- APIKeyHeader: []
- HTTPBearer: []
summary: List column templates
tags:
- table-templates
post:
description: Snapshot a selection of a table's columns (definitions, settings and the display names their references carry) as a named, org-level template replayable on any table.
operationId: create_column_template
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ColumnTemplateCreateSchema'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/ColumnTemplateReadSchema'
description: Successful Response
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Table or column not found.
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Invalid request made to the API.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/ServerErrorResponse'
description: Internal server error.
'502':
content:
application/json:
schema:
$ref: '#/components/schemas/ServerErrorResponse'
description: Bad gateway error.
'503':
content:
application/json:
schema:
$ref: '#/components/schemas/ServerErrorResponse'
description: Service unavailable.
security:
- APIKeyHeader: []
- HTTPBearer: []
summary: Capture a multi-column template
tags:
- table-templates
/column-templates/{template_id}/:
delete:
description: 'Delete a saved template. Columns already created from it are untouched: a template is a snapshot of how to build them, not a link to them.'
operationId: delete_column_template
parameters:
- in: path
name: template_id
required: true
schema:
format: uuid
title: Template Id
type: string
- description: Report what would be deleted, and delete nothing.
in: query
name: dry_run
required: false
schema:
default: false
description: Report what would be deleted, and delete nothing.
title: Dry Run
type: boolean
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessfullyDeletedResponse'
description: Successful Response
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Template not found.
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Invalid request made to the API.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/ServerErrorResponse'
description: Internal server error.
'502':
content:
application/json:
schema:
$ref: '#/components/schemas/ServerErrorResponse'
description: Bad gateway error.
'503':
content:
application/json:
schema:
$ref: '#/components/schemas/ServerErrorResponse'
description: Service unavailable.
security:
- APIKeyHeader: []
- HTTPBearer: []
summary: Delete a column template
tags:
- table-templates
/column-templates/{template_id}/apply/:
post:
description: 'Create the template''s columns on a table, left to right, as one block at the requested position (appended when omitted), references remapped: template-internal references land on their new counterparts, external ones on the target''s same-named columns, and anything unmatched stays visibly broken rather than silently wrong. All or nothing: a column the table refuses undoes the ones created before it. Nothing runs. The created columns wait to be run deliberately. Answers the names of the columns it created. With dry_run it drafts each column against the table and the ones before it, refuses what the apply would refuse, answers the names it would create and creates none.'
operationId: apply_column_template
parameters:
- in: path
name: template_id
required: true
schema:
format: uuid
title: Template Id
type: string
- description: Report which columns would be created, and create none.
in: query
name: dry_run
required: false
schema:
default: false
description: Report which columns would be created, and create none.
title: Dry Run
type: boolean
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ColumnTemplateApplySchema'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ColumnTemplateApplyResponseSchema'
description: Successful Response
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundResponse'
description: Template or table not found.
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/UnprocessableEntityResponse'
description: Invalid request made to the API.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/ServerErrorResponse'
description: Internal server error.
'502':
content:
application/json:
schema:
$ref: '#/components/schemas/ServerErrorResponse'
description: Bad gateway error.
'503':
content:
application/json:
schema:
$ref: '#/components/schemas/ServerErrorResponse'
description: Service unavailable.
security:
- APIKeyHeader: []
- HTTPBearer: []
summary: Apply a template to a table
tags:
- table-templates
components:
schemas:
ForbiddenResponse:
properties:
detail:
description: The detail of why the request is forbidden.
title: Detail
type: string
required:
- detail
title: ForbiddenResponse
type: object
ColumnTemplateCreateSchema:
description: Capture a selection of a table's columns as a named template.
properties:
column_ids:
description: The columns to capture; stored in display order.
items:
format: uuid
type: string
maxItems: 50
minItems: 1
title: Column Ids
type: array
description:
anyOf:
- maxLength: 2000
type: string
- type: 'null'
title: Description
name:
maxLength: 255
minLength: 1
title: Name
type: string
table_id:
description: The table the columns live on.
format: uuid
title: Table Id
type: string
required:
- name
- table_id
- column_ids
title: ColumnTemplateCreateSchema
type: object
UnprocessableEntityIssue:
properties:
input:
anyOf:
- type: string
- type: integer
- type: number
- type: boolean
- items: {}
type: array
- additionalProperties: true
type: object
description: The user's input that caused the error.
title: Input
loc:
description: The location of the error. Always contains 1 or 2 elements. The first element is the type of location (e.g. 'body', 'query', 'path', 'header'). The second element is the name of the field that caused the error. If the error is not related to a specific field, the second element is not present.
items:
type: string
title: Loc
type: array
msg:
description: The message of the error. The error message to show to the user.
title: Msg
type: string
type:
description: The type of the error. Useful for frontend code to handle different types of errors.
title: Type
type: string
required:
- loc
- msg
- type
- input
title: UnprocessableEntityIssue
type: object
ColumnTemplateApplyResponseSchema:
description: What an apply created, or on a dry run would create.
properties:
created_column_names:
description: The new columns' names, in template order. A name the table already had carries a number after it.
items:
type: string
title: Created Column Names
type: array
required:
- created_column_names
title: ColumnTemplateApplyResponseSchema
type: object
OrderingParametersForIdCreatedAtName:
enum:
- id
- created_at
- name
title: OrderingParametersForIdCreatedAtName
type: string
PaginatedResponse_ColumnTemplateReadSchema_:
properties:
data:
description: The list of ResponseItems.
items:
$ref: '#/components/schemas/ColumnTemplateReadSchema'
title: Data
type: array
next_page_cursor:
anyOf:
- type: string
- type: 'null'
description: The cursor to the next page. If there are no more pages, this is None.
previous_page_cursor:
anyOf:
- type: string
- type: 'null'
description: The cursor to the previous page. If there are no previous pages, this is None.
title: PaginatedResponse[ColumnTemplateReadSchema]
type: object
ServerErrorResponse:
properties:
detail:
description: The detail of why the server returned an error.
title: Detail
type: string
required:
- detail
title: ServerErrorResponse
type: object
ListColumnTemplatesFilterParamsSchema:
description: Query parameters for filtering column templates.
properties:
name__contains:
anyOf:
- maxLength: 255
type: string
- type: 'null'
description: Case-insensitive name fragment.
title: Name Contains
title: ListColumnTemplatesFilterParamsSchema
type: object
ColumnTemplateApplySchema:
description: Replay a template onto a table.
properties:
position:
anyOf:
- minimum: 0.0
type: integer
- type: 'null'
description: Insert position of the FIRST column; the rest follow it contiguously, in template order. Appended when omitted.
title: Position
table_id:
description: The table to create the columns on.
format: uuid
title: Table Id
type: string
required:
- table_id
title: ColumnTemplateApplySchema
type: object
ColumnTemplateReadSchema:
description: One template as the picker lists it.
properties:
column_count:
description: How many columns the bundle holds.
title: Column Count
type: integer
column_names:
description: The columns the template creates, in order.
items:
type: string
title: Column Names
type: array
created_at:
format: date-time
title: Created At
type: string
description:
anyOf:
- type: string
- type: 'null'
title: Description
id:
format: uuid
title: Id
type: string
name:
title: Name
type: string
required:
- id
- name
- description
- column_count
- column_names
- created_at
title: ColumnTemplateReadSchema
type: object
UnprocessableEntityResponse:
properties:
detail:
description: The detail of the error. This is the error message to show to the user. You should also use the issues field to show more detailed error messages per field. Use this field for a single liner error message.
title: Detail
type: string
issues:
description: The issues that caused the error. There can be multiple issues. Each issue is a user-facing error message.
items:
$ref: '#/components/schemas/UnprocessableEntityIssue'
title: Issues
type: array
required:
- detail
- issues
title: UnprocessableEntityResponse
type: object
UnauthorizedResponse:
properties:
detail:
description: The detail of why the request is unauthorized.
title: Detail
type: string
required:
- detail
title: UnauthorizedResponse
type: object
NotFoundResponse:
properties:
detail:
description: The detail of why the resource was not found.
title: Detail
type: string
required:
- detail
title: NotFoundResponse
type: object
SuccessfullyDeletedResponse:
properties:
count:
default: 1
description: The number of resources that were deleted.
title: Count
type: integer
detail:
description: The detail of why the resource was deleted.
title: Detail
type: string
required:
- detail
title: SuccessfullyDeletedResponse
type: object
securitySchemes:
APIKeyHeader:
in: header
name: X-API-Key
type: apiKey
HTTPBearer:
scheme: bearer
type: http