openapi: 3.0.2 info: title: Fyno Rest Fire an Event User Properties API version: v1 servers: - url: https://api.fyno.io/v1 security: - BearerAuth: [] tags: - name: User Properties paths: /{WSID}/{version}/profiles/properties/set: post: tags: - User Properties summary: Update User Property description: 'This API enables you to update user properties of your users listed in your [User Profiles](../user-profiles-overview). If the user with distinct ID doesn''t exist, it creates a new user with the provided distinct ID and updates values for all the provided properties.

**Note:** If a [property was not created earlier](../adding-new-user-property#how-to-add-a-new-user-property-from-user-profile-page), it will create a new property and the data type of the property will be determined based on the data type of the value. For example, if you `$set` a new property called `premium_user=true`, it will create the `premium_user` property with `Boolean` type and value `true`.

The property values can take the following data types:If you try to set a value with a data type that does not match the predefined property type, the API will accept the request but ignore the invalid value. For example, if a predefined property `cost` expects a numeric value and you try to set it to `ABC`, the API will not store the value.

These user properties can be used to filter your users for creating [user cohorts](../creating-cohorts) and [campaigns](../campaign_creation#creating-a-campaign-using-cohort).' parameters: - name: WSID in: path description: Enter your workspace ID. You can obtain this value from the API Keys page within your Fyno account. required: true style: simple explode: false schema: type: string example: FYXXXXXXXX - name: version in: path description: Specify the version for which you would like to update the user property. required: true style: simple explode: false schema: type: string default: live enum: - live - test requestBody: content: application/json: schema: $ref: '#/components/schemas/set_user_property' required: true responses: '202': $ref: '#/components/responses/PropertyUpdateRequestAccepted' '400': $ref: '#/components/responses/EmptySetObject' '401': $ref: '#/components/responses/APIKeyInvalid' /{WSID}/{version}/profiles/properties/set-once: post: tags: - User Properties summary: Set an Unset Property description: 'This API enables you to set user properties of your users listed in your [User Profiles](../user-profiles-overview) **only if it is currently unset.** If the given payload contains a mix of properties that are currently set and unset, then it will only add values to the properties that are currently unset and ignore the other properties. If the user with distinct ID doesn''t exist, it creates a new user with the provided distinct ID and sets values for all the provided properties.

**Note:** If a [property was not created earlier](../adding-new-user-property#how-to-add-a-new-user-property-from-user-profile-page), it will create a new property and the data type of the property will be determined based on the data type of the value. For example, if you `$once` a new property called `premium_user=true`, it will create the `premium_user` property with `Boolean` type and value `true`.

The property values can take the following data types:If you try to set a value with a data type that does not match the predefined property type, the API will accept the request but ignore the invalid value. For example, if a predefined property `cost` expects a numeric value and you try to set it to `ABC`, the API will not store the value.

These user properties can be used to filter your users for creating [user cohorts](../creating-cohorts) and [campaigns](../campaign_creation#creating-a-campaign-using-cohort).' parameters: - name: WSID in: path description: Enter your workspace ID. You can obtain this value from the API Keys page within your Fyno account. required: true style: simple explode: false schema: type: string example: FYXXXXXXXX - name: version in: path description: Specify the version for which you would like to update the user property. required: true style: simple explode: false schema: type: string default: live enum: - live - test requestBody: content: application/json: schema: $ref: '#/components/schemas/set_user_property_once' required: true responses: '202': $ref: '#/components/responses/PropertyUpdateRequestAccepted' '400': $ref: '#/components/responses/EmptySetOnceObject' '401': $ref: '#/components/responses/APIKeyInvalid' /{WSID}/{version}/profiles/properties/numerical-add: post: tags: - User Properties summary: Increment/Decrement Numeric Property description: This API enables you to increment/decrement values of numeric properties of your users listed in your [User Profiles](../user-profiles-overview). If the user with distinct ID doesn't exist, it creates a new user with the provided distinct ID and updates values for all the provided properties. To decrement property values, you can pass a negative value.

**Note:** If a [property was not created earlier](../adding-new-user-property#how-to-add-a-new-user-property-from-user-profile-page), it will create a new property and the data type of the property will set to `Number`. For example, if you `$add` a new property called `ltv=1200`, it will create the `ltv` property with `Number` type and value `1200`. Do not enclose the value in double quotes as they must be of numeric type.

These user properties can be used to filter your users for creating [user cohorts](../creating-cohorts) and [campaigns](../campaign_creation#creating-a-campaign-using-cohort). parameters: - name: WSID in: path description: Enter your workspace ID. You can obtain this value from the API Keys page within your Fyno account. required: true style: simple explode: false schema: type: string example: FYXXXXXXXX - name: version in: path description: Specify the version for which you would like to update the user property. required: true style: simple explode: false schema: type: string default: live enum: - live - test requestBody: content: application/json: schema: $ref: '#/components/schemas/increment_user_property' required: true responses: '202': $ref: '#/components/responses/PropertyUpdateRequestAccepted' '400': $ref: '#/components/responses/EmptyAddObject' '401': $ref: '#/components/responses/APIKeyInvalid' /{WSID}/{version}/profiles/properties/list-append: post: tags: - User Properties summary: Append Values to List description: 'This API enables you to append values to list type properties of your users listed in your [User Profiles](../user-profiles-overview). If the user with distinct ID doesn''t exist, it creates a new user with the provided distinct ID and updates values for all the provided properties.

**Note:** If a [property was not created earlier](../adding-new-user-property#how-to-add-a-new-user-property-from-user-profile-page), it will create a new property and the data type of the property will set to `List`. For example, if you `$append` a new property called `order_ids=245`, it will create the `order_ids` property with `List` type and value `[245]`. A list may contain only unique values, so if a value already exists, and you try to add the same value, it will be ignored.

You can append values with the following data types:You can append only one value to a property at a time. Although not recommended, a list property can contain a mix of different data types.

These user properties can be used to filter your users for creating [user cohorts](../creating-cohorts) and [campaigns](../campaign_creation#creating-a-campaign-using-cohort).' parameters: - name: WSID in: path description: Enter your workspace ID. You can obtain this value from the API Keys page within your Fyno account. required: true style: simple explode: false schema: type: string example: FYXXXXXXXX - name: version in: path description: Specify the version for which you would like to update the user property. required: true style: simple explode: false schema: type: string default: live enum: - live - test requestBody: content: application/json: schema: $ref: '#/components/schemas/append_to_user_property' required: true responses: '202': $ref: '#/components/responses/PropertyUpdateRequestAccepted' '400': $ref: '#/components/responses/EmptyAppendObject' '401': $ref: '#/components/responses/APIKeyInvalid' /{WSID}/{version}/profiles/properties/list-remove: post: tags: - User Properties summary: Remove Value From List description: This API enables you to remove existing values from the list type properties of your users listed in your [User Profiles](../user-profiles-overview). If the specified distinct ID or list property doesn't exist, it simply accepts the remove request and ignores it.

**Note:** This API can only be used to remove values from list and can remove only one value from a property at a time. To unset (nullify) other property types, please use [Unset User Property API.](./unset-user-property) parameters: - name: WSID in: path description: Enter your workspace ID. You can obtain this value from the API Keys page within your Fyno account. required: true style: simple explode: false schema: type: string example: FYXXXXXXXX - name: version in: path description: Specify the version for which you would like to update the user property. required: true style: simple explode: false schema: type: string default: live enum: - live - test requestBody: content: application/json: schema: $ref: '#/components/schemas/remove_from_user_property_list' required: true responses: '202': $ref: '#/components/responses/PropertyUpdateRequestAccepted' '400': $ref: '#/components/responses/EmptyRemoveObject' '401': $ref: '#/components/responses/APIKeyInvalid' /{WSID}/{version}/profiles/properties/unset: post: tags: - User Properties summary: Unset User Property description: 'This API enables you to unset (nullify) user properties of your users listed in your [User Profiles](../user-profiles-overview). If the specified distinct ID or property doesn''t exist, it simply accepts the unset request and ignores it. This API can be used to unset all property data types: String, Number, Boolean, Date, List.' parameters: - name: WSID in: path description: Enter your workspace ID. You can obtain this value from the API Keys page within your Fyno account. required: true style: simple explode: false schema: type: string example: FYXXXXXXXX - name: version in: path description: Specify the version for which you would like to update the user property. required: true style: simple explode: false schema: type: string default: live enum: - live - test requestBody: content: application/json: schema: $ref: '#/components/schemas/unset_user_property' required: true responses: '202': $ref: '#/components/responses/PropertyUpdateRequestAccepted' '400': $ref: '#/components/responses/EmptyUnsetObject' '401': $ref: '#/components/responses/APIKeyInvalid' /{WSID}/{version}/profiles/properties/batch: post: tags: - User Properties summary: Batch Update User Properties description: This API enables you to modify user properties of your users listed in your [User Profiles](../user-profiles-overview) in bulk:
Please refer to function specific API documentation for [$set](./update-user-property), [$once](./set-an-unset-property), [$add](./increment-decrement-numeric-property), [$append](./append-values-to-list), [$remove](./remove-value-from-list), [$unset](./unset-user-property) before using this API.


**Note:** The user properties in User Profiles can be used to filter your users for creating [user cohorts](../creating-cohorts) and [campaigns](../campaign_creation#creating-a-campaign-using-cohort). parameters: - name: WSID in: path description: Enter your workspace ID. You can obtain this value from the API Keys page within your Fyno account. required: true style: simple explode: false schema: type: string example: FYXXXXXXXX - name: version in: path description: Specify the version for which you would like to update the user property. required: true style: simple explode: false schema: type: string default: live enum: - live - test requestBody: content: application/json: schema: $ref: '#/components/schemas/user_property_bulk' responses: '202': $ref: '#/components/responses/PropertyUpdateRequestAcceptedBulk' '400': $ref: '#/components/responses/EmptyActionBulkProperty' '401': $ref: '#/components/responses/APIKeyInvalid' components: responses: EmptySetObject: description: $set object is empty content: application/json: schema: properties: _message: example: $set has object/keys that is not allowed type: string status: example: error type: string type: object required: - _message - status APIKeyInvalid: description: API Key or Workspace ID is invalid. User is unauthorised. content: application/json: schema: properties: _message: example: Invalid API details type: string status: example: error type: string type: object required: - _message - status EmptyRemoveObject: description: $remove object is empty content: application/json: schema: properties: _message: example: $remove has object/keys that is not allowed type: string status: example: error type: string type: object required: - _message - status EmptyAddObject: description: $add object is empty content: application/json: schema: properties: _message: example: $add has object/keys that is not allowed type: string status: example: error type: string type: object required: - _message - status EmptyActionBulkProperty: description: $unset object is empty content: application/json: schema: properties: _message: example: $set has object/keys that is not allowed type: string status: example: error type: string type: object required: - _message - status EmptyUnsetObject: description: $unset object is empty content: application/json: schema: properties: _message: example: $unset channel should have atleast one item in array type: string status: example: error type: string type: object required: - _message - status PropertyUpdateRequestAccepted: description: Request has been accepted and will be processed asynchronously. content: application/json: schema: properties: request_id: example: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX type: string type: object required: - request_id EmptyAppendObject: description: $append object is empty content: application/json: schema: properties: _message: example: $append has object/keys that is not allowed type: string status: example: error type: string type: object required: - _message - status EmptySetOnceObject: description: $once object is empty content: application/json: schema: properties: _message: example: $once has object/keys that is not allowed type: string status: example: error type: string type: object required: - _message - status PropertyUpdateRequestAcceptedBulk: description: Request has been accepted and will be processed asynchronously. content: application/json: schema: properties: request_id: example: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX type: string batch: type: array items: properties: $set: type: string example: ok $once: type: string example: ok $add: type: string example: ok $append: type: string example: ok $remove: type: string example: ok $unset: type: string example: ok type: object type: object required: - request_id - batch schemas: distinct_id: description: Enter the distinct ID that you use to identify the recipient. example: XXXXXXXX type: string set_user_property_fields: description: Enter the property name as JSON key and the value to set as JSON value additionalProperties: oneOf: - type: string - type: number - type: boolean - type: string format: date - type: array example: property_1: some text property_2: 123 property_3: 45.67 property_4: true property_5: false property_6: '2020-10-01T18:30:00.000Z' property_7: '2021-12-01' property_8: - iPhone 16 Pro - iPad 32 GB property_9: - 23000 - 20.34 property_n: - '2020-10-01T18:30:00Z' - '2021-11-01T13:35:00+02:00' - '2023-12-05' type: object set_user_property_once: properties: $once: $ref: '#/components/schemas/set_user_property_once_fields' distinct_id: $ref: '#/components/schemas/distinct_id' required: - distinct_id - $once type: object unset_user_property: properties: $unset: $ref: '#/components/schemas/unset_user_property_fields' distinct_id: $ref: '#/components/schemas/distinct_id' required: - distinct_id - $unset type: object append_to_user_property: properties: $append: $ref: '#/components/schemas/append_to_user_property_fields' distinct_id: $ref: '#/components/schemas/distinct_id' required: - distinct_id - $append type: object increment_user_property: properties: $add: $ref: '#/components/schemas/increment_user_property_fields' distinct_id: $ref: '#/components/schemas/distinct_id' required: - distinct_id - $add type: object set_user_property: properties: $set: $ref: '#/components/schemas/set_user_property_fields' distinct_id: $ref: '#/components/schemas/distinct_id' required: - distinct_id - $set type: object set_user_property_once_fields: description: Enter the property name as JSON key and the value to set as JSON value additionalProperties: oneOf: - type: string - type: number - type: boolean - type: string format: date - type: array example: property_1: some text property_2: 123 property_3: 45.67 property_4: true property_5: false property_6: '2020-10-01T18:30:00.000Z' property_7: '2021-12-01' property_8: - iPhone 16 Pro - iPad 32 GB property_9: - 23000 - 20.34 property_n: - '2020-10-01T18:30:00Z' - '2021-11-01T13:35:00+02:00' - '2023-12-05' type: object user_property_bulk: properties: batch: description: Enter an array of objects with `distinct_id` and `action` to perform on the user properties items: type: object properties: distinct_id: $ref: '#/components/schemas/distinct_id' action: type: object properties: $set: $ref: '#/components/schemas/set_user_property_fields' $once: $ref: '#/components/schemas/set_user_property_once_fields' $add: $ref: '#/components/schemas/increment_user_property_fields' $append: $ref: '#/components/schemas/append_to_user_property_fields' $remove: $ref: '#/components/schemas/remove_from_user_property_list_fields' $unset: $ref: '#/components/schemas/unset_user_property_fields' example: distinct_id: XXXXX action: $set: property_1: some text property_2: 123 property_3: 45.67 $once: property_4: true property_5: - iPhone 16 Pro - iPad 32 GB property_6: '2020-10-01T18:30:00.000Z' $add: property_7: 10.23 property_8: -11.9 property_9: 223 $append: property_10: '#12345' property_11: 2030 property_12: '2022-11-11T10:30:00+02:00' $remove: property_13: '2023-11-10' property_14: ABC1234 property_15: 4010 $unset: - property_0 - old_property1 required: - distinct_id - action type: array required: - batch increment_user_property_fields: description: Enter the property name as JSON key and the numeric value to increment/decrement as JSON value example: property_1: 23.4 property_2: 20301 property_n: -39.45 additionalProperties: type: number type: object remove_from_user_property_list_fields: description: Enter the property name as JSON key and the value to remove as JSON value additionalProperties: oneOf: - type: number - type: string - type: string format: date example: property_1: some text property_2: 123 property_3: 45.67 property_4: '2020-10-01T18:30:00.000Z' property_5: '2021-12-01' property_n: '2021-11-01T13:35:00+02:00' type: object remove_from_user_property_list: properties: $remove: $ref: '#/components/schemas/remove_from_user_property_list_fields' distinct_id: $ref: '#/components/schemas/distinct_id' required: - distinct_id - $remove type: object append_to_user_property_fields: description: Enter the property name as JSON key and the numeric or string value to append as JSON value additionalProperties: oneOf: - type: number - type: string - type: string format: date example: property_1: some text property_2: 123 property_3: 45.67 property_4: '2020-10-01T18:30:00.000Z' property_5: '2021-12-01' property_n: '2021-11-01T13:35:00+02:00' type: object unset_user_property_fields: description: Enter the property names to unset in an array example: - property_1 - property_2 - property_n items: type: string type: array securitySchemes: BearerAuth: type: http description: Enter your API Key. If you don't have it already, you can create one from the API Keys page within your Fyno account scheme: bearer x-fern-bearer: name: apiKey env: FYNO_API_KEY