openapi: 3.2.0
info:
title: User Management API v1 User Attribute Management API
version: '1.0'
description: 'The host of all of the URLs defined in this documentation is `https://api.documentation.crossengage.io`.
## Authentication
CrossEngage uses **header authentication**.
To obtain your API key, log in to the [app](https://app.crossengage.io) and select **System setup** from the **Settings** dropdown. Copy the Master API value from the **API keys** section of the **System setup** page.
## Versions
The API version is defined in the header `X-XNG-ApiVersion`. This documentation displays endpoints for version 1.
## Headers
To use the CrossEngage API, define the following header values for each call made:
`X-XNG-AuthToken`, `X-XNG-ApiVersion`.
## Date Format
Dates and times are expressed in ISO8601 format in UTC (Coordinated Universal Time), with a special UTC designator ("Z")
For more information please check [here](https://www.w3.org/TR/NOTE-datetime).
## Error Handling
Resume or retry uploads that fail due to connection interruptions or `5xx` errors such as the following:
* `500 Internal Server Error`
* `502 Bad Gateway`
* `503 Service Unavailable`
* `504 Gateway Timeout`
How to retry CrossEngage API requests in case of errors:
* Use an [exponential backoff](https://en.wikipedia.org/wiki/Exponential_backoff) strategy if an export request returns a 5xx server error. These errors can occur if a server is overloaded. Exponential backoff can alleviate such problems during periods of high request volume or heavy network traffic.
* For other kinds of requests, do not use exponential backoff. Instead, retry a limited number of the desired requests.'
x-apib-source: https://usermanagementv1.docs.apiary.io/api-description-document
servers:
- url: https://api.crossengage.io/
security:
- XngAuthToken: []
tags:
- name: User Attribute Management
paths:
/users/attributes:
post:
responses:
'200':
description: Successful creation of attribute
headers: {}
content:
application/json;charset=UTF-8:
schema:
type: object
properties:
id:
type: string
name:
type: string
attributeType:
type: string
success:
type: boolean
example:
id: '111'
name: traits.example
attributeType: ARRAY
success: true
example:
id: '111'
name: traits.example
attributeType: ARRAY
success: true
'400':
description: Attribute was not processed due to a validation error (see response)
headers: {}
content:
application/json;charset=UTF-8:
schema:
type: object
properties:
requestId:
type: string
message:
type: string
example:
requestId: c2a20133-ecdd-4e43-8abd-943e5911737e
message: No enum constant com.crossengage.attribute.AttributeType.ARRAaY
example:
requestId: c2a20133-ecdd-4e43-8abd-943e5911737e
message: No enum constant com.crossengage.attribute.AttributeType.ARRAaY
'401':
description: Wrong or missing credentials
headers: {}
content: {}
'500':
description: Unknown error on our side
headers: {}
content: {}
summary: Create attribute
operationId: createAttribute
description: "User attributes are called traits in CrossEngage. \nPlease create all user attributes with the\n`traits` prefix, for example, `traits.firstName`. Please note\nthat attributes cannot be created with the following protected suffixes: \"_date\", \"_float\", \"_bool\", \"_string\", \"_nested\", \"_int\".\n
When having to create a new attribute, please check the attribute list via the Fetch Attribute List endpoint to verify whether a similar or same attribute is available."
tags:
- User Attribute Management
parameters:
- name: X-XNG-ApiVersion
in: header
description: e.g. 1
required: false
x-example: '1'
schema:
type: string
- name: X-XNG-AuthToken
in: header
description: e.g. Your API Key
required: false
x-example: Your API Key
schema:
type: string
requestBody:
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/simpleAtrribute'
- type: object
properties:
name:
type: string
description: The name of the child attribute
attributeType:
type: string
description: The type of the child attribute
parentName:
type: string
description: The name of the parent attribute
required:
- name
- attributeType
- parentName
example:
name: exampleChild
attributeType: STRING
parentName: traits.exampleParent
get:
responses:
'200':
description: OK
headers: {}
content:
application/json;charset=UTF-8:
schema:
type: object
properties:
attributes:
type: array
items:
type: object
properties:
id:
type: number
name:
type: string
attributeType:
type: string
required:
- id
- name
- attributeType
total:
type: string
example:
attributes:
- id: 1001
name: traits.example
attributeType: STRING
- id: 1002
name: traits.example2
attributeType: ARRAY
total: '200'
example:
attributes:
- id: 1001
name: traits.example
attributeType: STRING
- id: 1002
name: traits.example2
attributeType: ARRAY
total: '200'
'401':
description: Wrong or missing credentials
headers: {}
content: {}
'500':
description: Unknown error on our side
headers: {}
content: {}
summary: Fetch attribute list
operationId: fetchAttributeList
description: This endpoint fetches all existing user attributes.
tags:
- User Attribute Management
parameters:
- name: offset
in: query
description: The number of the first element.
required: false
x-example: '0'
schema:
type: number
- name: limit
in: query
description: Number of elements to be returned. Default value is 10, maximum is 100.
required: false
x-example: '2'
schema:
type: number
- name: X-XNG-ApiVersion
in: header
description: e.g. 1
required: false
x-example: '1'
schema:
type: string
- name: X-XNG-AuthToken
in: header
description: e.g. Your API Key
required: false
x-example: Your API Key
schema:
type: string
/users/attributes/{id}:
get:
responses:
'200':
description: OK
headers: {}
content:
application/json;charset=UTF-8:
schema:
type: object
properties:
id:
type: string
name:
type: string
attributeType:
type: string
example:
id: '1234'
name: traits.example
attributeType: STRING
example:
id: '1234'
name: traits.example
attributeType: STRING
'401':
description: Wrong or missing credentials
headers: {}
content: {}
'404':
description: The attribute with the requested `id` does not exist
headers: {}
content: {}
'500':
description: Unknown error on our side
headers: {}
content: {}
summary: Fetch attribute
operationId: fetchAttribute
description: 'Fetch a specific user attribute by its `id`. To find an
attribute `id`, please use the [Fetch attribute list](#fetchAttrList)
call.'
tags:
- User Attribute Management
parameters:
- name: id
in: path
description: '`id` of the attribute'
required: true
x-example: '123'
schema:
type: string
- name: X-XNG-ApiVersion
in: header
description: e.g. 1
required: false
x-example: '1'
schema:
type: string
- name: X-XNG-AuthToken
in: header
description: e.g. Your API Key
required: false
x-example: Your API Key
schema:
type: string
delete:
responses:
'204':
description: Attribute successfully deleted
headers: {}
content: {}
'401':
description: Wrong or missing credentials
headers: {}
content: {}
'409':
description: "Attribute in use in at least one campaign or has active \nnested attributes. Otherwise, the `id` entered in the\nrequest body does not match the `id` \nprovided in the request path."
headers: {}
content: {}
'500':
description: Unknown error on our side
headers: {}
content: {}
summary: Delete attribute
operationId: deleteAttribute
description: "In order to delete an attributes in CrossEngage, you need to know its `id`. \nTo find it out, please use [Fetch attribute list](#fetchAttrList) endpoint and search its `id` value.\n\nNote that deleting an attribute does not result in the removal of that attribute value from individual users.\nTo modify individual users, it is necessary to update their profiles."
tags:
- User Attribute Management
parameters:
- name: id
in: path
description: '`id` of the attribute'
required: true
x-example: '123'
schema:
type: string
- name: X-XNG-ApiVersion
in: header
description: e.g. 1
required: false
x-example: '1'
schema:
type: string
- name: X-XNG-AuthToken
in: header
description: e.g. Your API Key
required: false
x-example: Your API Key
schema:
type: string
components:
schemas:
simpleAtrribute:
type: object
required:
- name
- attributeType
properties:
name:
type: string
example: traits.example
description: The name of the user attribute
attributeType:
type: string
example: STRING, INTEGER, FLOAT, DATETIME, BOOLEAN or ARRAY
description: The type of the user attribute
nestedType:
type: string
example: STRING, INTEGER, FLOAT, BOOLEAN, DATETIME, ARRAY or OBJECT
description: The type of the nested attribute that will be added. Only applicable for array or object type.
securitySchemes:
XngAuthToken:
type: apiKey
name: X-XNG-AuthToken
in: header
description: CrossEngage header authentication. The API key is issued in the CrossEngage app under Settings -> System setup -> API keys (Master API key or Public API key depending on the API).
x-apievangelist:
generated: '2026-08-13'
method: derived
source: blueprint/crossenagage-user-management-v1.apib
note: Mechanically converted from the API Blueprint CrossEngage publishes at https://usermanagementv1.docs.apiary.io/api-description-document using apib2swagger. Verbatim blueprint retained at blueprint/. API Evangelist normalized operationIds to camelCase, declared the documented X-XNG-AuthToken header auth as a securityDefinition, and added the documented X-XNG-ApiVersion header parameter. No operations, paths, schemas or examples were invented.