PUT
/v1/app-user/device-registrations/installations/{installationId}Create or replace the current app user device registration
Authentication
Request
| Name | In | Required | Description |
|---|---|---|---|
x-request-id | header | No | Optional caller-supplied request correlation identifier. |
installationId | path | Yes | No description declared. |
Request body Required
Request body.
{
"oneOf": [
{
"$ref": "#/components/schemas/ApnsDeviceRegistrationRequestDto",
"properties": {
"address": {
"$ref": "#/components/schemas/OpaqueDeviceRegistrationAddressDto"
},
"platform": {
"enum": [
"ios"
],
"type": "string"
},
"provider": {
"enum": [
"apns"
],
"type": "string"
}
},
"required": [
"provider",
"platform",
"address"
],
"type": "object"
},
{
"$ref": "#/components/schemas/FcmDeviceRegistrationRequestDto",
"properties": {
"address": {
"$ref": "#/components/schemas/OpaqueDeviceRegistrationAddressDto"
},
"platform": {
"enum": [
"ios",
"android"
],
"type": "string"
},
"provider": {
"enum": [
"fcm"
],
"type": "string"
}
},
"required": [
"provider",
"platform",
"address"
],
"type": "object"
},
{
"$ref": "#/components/schemas/WebPushDeviceRegistrationRequestDto",
"properties": {
"address": {
"$ref": "#/components/schemas/WebPushDeviceRegistrationAddressDto"
},
"platform": {
"enum": [
"web"
],
"type": "string"
},
"provider": {
"enum": [
"web_push"
],
"type": "string"
}
},
"required": [
"provider",
"platform",
"address"
],
"type": "object"
}
]
}cURL template
Replace path placeholders, the credential, and request body with values valid for your exact scope.
curl --request PUT \
+ --url 'https://api.example.com/v1/app-user/device-registrations/installations/{installationId}' \
+ -H 'Authorization: Bearer <token>' \
+ -H 'Content-Type: application/json' \
+ --data '<request-body>'Responses
200
application/json
{
"$ref": "#/components/schemas/DeviceRegistrationUpsertResponseDto",
"properties": {
"changed": {
"description": "True only when durable registration state changed.",
"type": "boolean"
},
"created": {
"description": "True when a new registration record was created.",
"type": "boolean"
},
"data": {
"$ref": "#/components/schemas/DeviceRegistrationDataDto",
"properties": {
"createdAt": {
"format": "date-time",
"type": "string"
},
"installationId": {
"example": "installation-01",
"type": "string"
},
"platform": {
"enum": [
"ios",
"android",
"web"
],
"type": "string"
},
"provider": {
"enum": [
"apns",
"fcm",
"web_push"
],
"type": "string"
},
"registrationId": {
"example": "dreg_01J00000000000000000000000",
"type": "string"
},
"revokedAt": {
"format": "date-time",
"nullable": true,
"type": "string"
},
"status": {
"enum": [
"active",
"revoked"
],
"type": "string"
},
"updatedAt": {
"format": "date-time",
"type": "string"
},
"version": {
"minimum": 1,
"type": "integer"
}
},
"required": [
"registrationId",
"installationId",
"provider",
"platform",
"status",
"version",
"createdAt",
"updatedAt",
"revokedAt"
],
"type": "object"
},
"meta": {
"$ref": "#/components/schemas/DeviceRegistrationResponseMetaDto",
"properties": {
"requestId": {
"example": "req_01J00000000000000000000000",
"type": "string"
}
},
"required": [
"requestId"
],
"type": "object"
}
},
"required": [
"data",
"meta",
"changed",
"created"
],
"type": "object"
}400
application/json
{
"$ref": "#/components/schemas/PublicErrorResponseDto",
"properties": {
"error": {
"$ref": "#/components/schemas/PublicErrorBodyDto",
"properties": {
"code": {
"enum": [
"validation_failed",
"authentication_failed",
"authentication_required",
"reauthentication_required",
"permission_denied",
"resource_not_found",
"idempotency_conflict",
"target_account_unavailable",
"organization_owner_removal_conflict",
"organization_owner_role_conflict",
"organization_role_conflict",
"membership_conflict",
"invitation_conflict",
"invitation_expired",
"application_name_conflict",
"application_settings_version_conflict",
"environment_settings_version_conflict",
"app_user_version_conflict",
"channel_type_conflict",
"channel_type_version_conflict",
"channel_type_limit_reached",
"channel_conflict",
"channel_version_conflict",
"channel_membership_conflict",
"channel_membership_version_conflict",
"channel_membership_limit_reached",
"message_conflict",
"message_version_conflict",
"channel_read_state_conflict",
"thread_reply_limit_reached",
"message_reaction_type_not_allowed",
"message_reaction_limit_reached",
"thread_read_state_conflict",
"credential_limit_reached",
"credential_lifecycle_conflict",
"device_registration_conflict",
"device_registration_version_conflict",
"device_registration_limit_reached",
"attachment_upload_incomplete",
"attachment_not_ready",
"attachment_limit_reached",
"moderation_relationship_limit_reached",
"moderation_blocklist_limit_reached",
"moderation_case_resolution_conflict",
"message_moderation_rejected",
"retention_policy_version_conflict",
"data_job_not_cancelable",
"data_job_not_ready",
"data_job_limit_exceeded",
"webhook_endpoint_conflict",
"webhook_endpoint_version_conflict",
"webhook_endpoint_limit_reached",
"webhook_destination_rejected",
"webhook_secret_rotation_conflict",
"webhook_delivery_not_replayable",
"conflict",
"rate_limit_exceeded",
"internal_error",
"service_unavailable"
],
"example": "service_unavailable",
"type": "string"
},
"details": {
"$ref": "#/components/schemas/PublicErrorDetailsDto"
},
"message": {
"example": "The service is temporarily unavailable.",
"type": "string"
},
"requestId": {
"example": "req_01J00000000000000000000000",
"type": "string"
}
},
"required": [
"code",
"message",
"requestId",
"details"
],
"type": "object"
}
},
"required": [
"error"
],
"type": "object"
}401
application/json
{
"$ref": "#/components/schemas/PublicErrorResponseDto",
"properties": {
"error": {
"$ref": "#/components/schemas/PublicErrorBodyDto",
"properties": {
"code": {
"enum": [
"validation_failed",
"authentication_failed",
"authentication_required",
"reauthentication_required",
"permission_denied",
"resource_not_found",
"idempotency_conflict",
"target_account_unavailable",
"organization_owner_removal_conflict",
"organization_owner_role_conflict",
"organization_role_conflict",
"membership_conflict",
"invitation_conflict",
"invitation_expired",
"application_name_conflict",
"application_settings_version_conflict",
"environment_settings_version_conflict",
"app_user_version_conflict",
"channel_type_conflict",
"channel_type_version_conflict",
"channel_type_limit_reached",
"channel_conflict",
"channel_version_conflict",
"channel_membership_conflict",
"channel_membership_version_conflict",
"channel_membership_limit_reached",
"message_conflict",
"message_version_conflict",
"channel_read_state_conflict",
"thread_reply_limit_reached",
"message_reaction_type_not_allowed",
"message_reaction_limit_reached",
"thread_read_state_conflict",
"credential_limit_reached",
"credential_lifecycle_conflict",
"device_registration_conflict",
"device_registration_version_conflict",
"device_registration_limit_reached",
"attachment_upload_incomplete",
"attachment_not_ready",
"attachment_limit_reached",
"moderation_relationship_limit_reached",
"moderation_blocklist_limit_reached",
"moderation_case_resolution_conflict",
"message_moderation_rejected",
"retention_policy_version_conflict",
"data_job_not_cancelable",
"data_job_not_ready",
"data_job_limit_exceeded",
"webhook_endpoint_conflict",
"webhook_endpoint_version_conflict",
"webhook_endpoint_limit_reached",
"webhook_destination_rejected",
"webhook_secret_rotation_conflict",
"webhook_delivery_not_replayable",
"conflict",
"rate_limit_exceeded",
"internal_error",
"service_unavailable"
],
"example": "service_unavailable",
"type": "string"
},
"details": {
"$ref": "#/components/schemas/PublicErrorDetailsDto"
},
"message": {
"example": "The service is temporarily unavailable.",
"type": "string"
},
"requestId": {
"example": "req_01J00000000000000000000000",
"type": "string"
}
},
"required": [
"code",
"message",
"requestId",
"details"
],
"type": "object"
}
},
"required": [
"error"
],
"type": "object"
}409
application/json
{
"$ref": "#/components/schemas/PublicErrorResponseDto",
"properties": {
"error": {
"$ref": "#/components/schemas/PublicErrorBodyDto",
"properties": {
"code": {
"enum": [
"validation_failed",
"authentication_failed",
"authentication_required",
"reauthentication_required",
"permission_denied",
"resource_not_found",
"idempotency_conflict",
"target_account_unavailable",
"organization_owner_removal_conflict",
"organization_owner_role_conflict",
"organization_role_conflict",
"membership_conflict",
"invitation_conflict",
"invitation_expired",
"application_name_conflict",
"application_settings_version_conflict",
"environment_settings_version_conflict",
"app_user_version_conflict",
"channel_type_conflict",
"channel_type_version_conflict",
"channel_type_limit_reached",
"channel_conflict",
"channel_version_conflict",
"channel_membership_conflict",
"channel_membership_version_conflict",
"channel_membership_limit_reached",
"message_conflict",
"message_version_conflict",
"channel_read_state_conflict",
"thread_reply_limit_reached",
"message_reaction_type_not_allowed",
"message_reaction_limit_reached",
"thread_read_state_conflict",
"credential_limit_reached",
"credential_lifecycle_conflict",
"device_registration_conflict",
"device_registration_version_conflict",
"device_registration_limit_reached",
"attachment_upload_incomplete",
"attachment_not_ready",
"attachment_limit_reached",
"moderation_relationship_limit_reached",
"moderation_blocklist_limit_reached",
"moderation_case_resolution_conflict",
"message_moderation_rejected",
"retention_policy_version_conflict",
"data_job_not_cancelable",
"data_job_not_ready",
"data_job_limit_exceeded",
"webhook_endpoint_conflict",
"webhook_endpoint_version_conflict",
"webhook_endpoint_limit_reached",
"webhook_destination_rejected",
"webhook_secret_rotation_conflict",
"webhook_delivery_not_replayable",
"conflict",
"rate_limit_exceeded",
"internal_error",
"service_unavailable"
],
"example": "service_unavailable",
"type": "string"
},
"details": {
"$ref": "#/components/schemas/PublicErrorDetailsDto"
},
"message": {
"example": "The service is temporarily unavailable.",
"type": "string"
},
"requestId": {
"example": "req_01J00000000000000000000000",
"type": "string"
}
},
"required": [
"code",
"message",
"requestId",
"details"
],
"type": "object"
}
},
"required": [
"error"
],
"type": "object"
}429
application/json
{
"$ref": "#/components/schemas/PublicErrorResponseDto",
"properties": {
"error": {
"$ref": "#/components/schemas/PublicErrorBodyDto",
"properties": {
"code": {
"enum": [
"validation_failed",
"authentication_failed",
"authentication_required",
"reauthentication_required",
"permission_denied",
"resource_not_found",
"idempotency_conflict",
"target_account_unavailable",
"organization_owner_removal_conflict",
"organization_owner_role_conflict",
"organization_role_conflict",
"membership_conflict",
"invitation_conflict",
"invitation_expired",
"application_name_conflict",
"application_settings_version_conflict",
"environment_settings_version_conflict",
"app_user_version_conflict",
"channel_type_conflict",
"channel_type_version_conflict",
"channel_type_limit_reached",
"channel_conflict",
"channel_version_conflict",
"channel_membership_conflict",
"channel_membership_version_conflict",
"channel_membership_limit_reached",
"message_conflict",
"message_version_conflict",
"channel_read_state_conflict",
"thread_reply_limit_reached",
"message_reaction_type_not_allowed",
"message_reaction_limit_reached",
"thread_read_state_conflict",
"credential_limit_reached",
"credential_lifecycle_conflict",
"device_registration_conflict",
"device_registration_version_conflict",
"device_registration_limit_reached",
"attachment_upload_incomplete",
"attachment_not_ready",
"attachment_limit_reached",
"moderation_relationship_limit_reached",
"moderation_blocklist_limit_reached",
"moderation_case_resolution_conflict",
"message_moderation_rejected",
"retention_policy_version_conflict",
"data_job_not_cancelable",
"data_job_not_ready",
"data_job_limit_exceeded",
"webhook_endpoint_conflict",
"webhook_endpoint_version_conflict",
"webhook_endpoint_limit_reached",
"webhook_destination_rejected",
"webhook_secret_rotation_conflict",
"webhook_delivery_not_replayable",
"conflict",
"rate_limit_exceeded",
"internal_error",
"service_unavailable"
],
"example": "service_unavailable",
"type": "string"
},
"details": {
"$ref": "#/components/schemas/PublicErrorDetailsDto"
},
"message": {
"example": "The service is temporarily unavailable.",
"type": "string"
},
"requestId": {
"example": "req_01J00000000000000000000000",
"type": "string"
}
},
"required": [
"code",
"message",
"requestId",
"details"
],
"type": "object"
}
},
"required": [
"error"
],
"type": "object"
}500
application/json
{
"$ref": "#/components/schemas/PublicErrorResponseDto",
"properties": {
"error": {
"$ref": "#/components/schemas/PublicErrorBodyDto",
"properties": {
"code": {
"enum": [
"validation_failed",
"authentication_failed",
"authentication_required",
"reauthentication_required",
"permission_denied",
"resource_not_found",
"idempotency_conflict",
"target_account_unavailable",
"organization_owner_removal_conflict",
"organization_owner_role_conflict",
"organization_role_conflict",
"membership_conflict",
"invitation_conflict",
"invitation_expired",
"application_name_conflict",
"application_settings_version_conflict",
"environment_settings_version_conflict",
"app_user_version_conflict",
"channel_type_conflict",
"channel_type_version_conflict",
"channel_type_limit_reached",
"channel_conflict",
"channel_version_conflict",
"channel_membership_conflict",
"channel_membership_version_conflict",
"channel_membership_limit_reached",
"message_conflict",
"message_version_conflict",
"channel_read_state_conflict",
"thread_reply_limit_reached",
"message_reaction_type_not_allowed",
"message_reaction_limit_reached",
"thread_read_state_conflict",
"credential_limit_reached",
"credential_lifecycle_conflict",
"device_registration_conflict",
"device_registration_version_conflict",
"device_registration_limit_reached",
"attachment_upload_incomplete",
"attachment_not_ready",
"attachment_limit_reached",
"moderation_relationship_limit_reached",
"moderation_blocklist_limit_reached",
"moderation_case_resolution_conflict",
"message_moderation_rejected",
"retention_policy_version_conflict",
"data_job_not_cancelable",
"data_job_not_ready",
"data_job_limit_exceeded",
"webhook_endpoint_conflict",
"webhook_endpoint_version_conflict",
"webhook_endpoint_limit_reached",
"webhook_destination_rejected",
"webhook_secret_rotation_conflict",
"webhook_delivery_not_replayable",
"conflict",
"rate_limit_exceeded",
"internal_error",
"service_unavailable"
],
"example": "service_unavailable",
"type": "string"
},
"details": {
"$ref": "#/components/schemas/PublicErrorDetailsDto"
},
"message": {
"example": "The service is temporarily unavailable.",
"type": "string"
},
"requestId": {
"example": "req_01J00000000000000000000000",
"type": "string"
}
},
"required": [
"code",
"message",
"requestId",
"details"
],
"type": "object"
}
},
"required": [
"error"
],
"type": "object"
}503
application/json
{
"$ref": "#/components/schemas/PublicErrorResponseDto",
"properties": {
"error": {
"$ref": "#/components/schemas/PublicErrorBodyDto",
"properties": {
"code": {
"enum": [
"validation_failed",
"authentication_failed",
"authentication_required",
"reauthentication_required",
"permission_denied",
"resource_not_found",
"idempotency_conflict",
"target_account_unavailable",
"organization_owner_removal_conflict",
"organization_owner_role_conflict",
"organization_role_conflict",
"membership_conflict",
"invitation_conflict",
"invitation_expired",
"application_name_conflict",
"application_settings_version_conflict",
"environment_settings_version_conflict",
"app_user_version_conflict",
"channel_type_conflict",
"channel_type_version_conflict",
"channel_type_limit_reached",
"channel_conflict",
"channel_version_conflict",
"channel_membership_conflict",
"channel_membership_version_conflict",
"channel_membership_limit_reached",
"message_conflict",
"message_version_conflict",
"channel_read_state_conflict",
"thread_reply_limit_reached",
"message_reaction_type_not_allowed",
"message_reaction_limit_reached",
"thread_read_state_conflict",
"credential_limit_reached",
"credential_lifecycle_conflict",
"device_registration_conflict",
"device_registration_version_conflict",
"device_registration_limit_reached",
"attachment_upload_incomplete",
"attachment_not_ready",
"attachment_limit_reached",
"moderation_relationship_limit_reached",
"moderation_blocklist_limit_reached",
"moderation_case_resolution_conflict",
"message_moderation_rejected",
"retention_policy_version_conflict",
"data_job_not_cancelable",
"data_job_not_ready",
"data_job_limit_exceeded",
"webhook_endpoint_conflict",
"webhook_endpoint_version_conflict",
"webhook_endpoint_limit_reached",
"webhook_destination_rejected",
"webhook_secret_rotation_conflict",
"webhook_delivery_not_replayable",
"conflict",
"rate_limit_exceeded",
"internal_error",
"service_unavailable"
],
"example": "service_unavailable",
"type": "string"
},
"details": {
"$ref": "#/components/schemas/PublicErrorDetailsDto"
},
"message": {
"example": "The service is temporarily unavailable.",
"type": "string"
},
"requestId": {
"example": "req_01J00000000000000000000000",
"type": "string"
}
},
"required": [
"code",
"message",
"requestId",
"details"
],
"type": "object"
}
},
"required": [
"error"
],
"type": "object"
}Contract source
This page is generated from artifacts/openapi/openapi.json. The dedicated endpoint folder documents authorization, validation, errors, consistency, idempotency, events, retries, and client reconciliation.