---
title: "EP-23 — Update Profile"
url: "https://dev.ionova.ai/apis/ars-address-resolution-service-4/versions/fdd2c316-7f84-4f04-8bb7-64e9bf97893b/operations/updateProfile"
---

> Full API specification: https://dev.ionova.ai/apis/ars-address-resolution-service-4/versions/fdd2c316-7f84-4f04-8bb7-64e9bf97893b.md

# EP-23 — Update Profile

`PATCH` `/profile`

Operation ID: `updateProfile`

Updates account-level fields using PATCH semantics — only provided fields updated. Changes take effect immediately. [v4.3] Only account-level institutional fallback fields patchable here: region, pspCountry, timezone, quality, repairConfidenceThreshold. Channel-specific settings must be managed via EP-25/EP-26.

## Header parameters

- `X-Request-ID` (string, uuid, optional) - Client-supplied correlation ID echoed in response headers for tracing.

## Request body (required)

Content types: `application/json`, `application/xml`

## Responses

- `200` - Profile updated — full profile returned
- `400` - Bad Request — malformed request body or invalid parameter.
- `401` - Unauthorized — missing or invalid authentication credentials.
- `422` - Unprocessable Entity — semantic validation failure (e.g. R-transaction type submitted to a non-R endpoint).
- `500` - Internal Server Error — unexpected server-side failure.

## OpenAPI definition

```yaml
openapi: 3.0.3
info:
  title: ARS — Address Resolution Service
  version: 4.3.1
servers:
  - url: https://api-uat.ionova.ai/ars
    description: UAT (test data only)
paths:
  /profile:
    patch:
      tags:
        - Layer 5 — Config
      summary: EP-23 — Update Profile
      description: >
        Updates account-level fields using PATCH semantics — only provided
        fields updated.

        Changes take effect immediately.


        [v4.3] Only account-level institutional fallback fields patchable here:

        region, pspCountry, timezone, quality, repairConfidenceThreshold.

        Channel-specific settings must be managed via EP-25/EP-26.
      operationId: updateProfile
      parameters:
        - $ref: "#/components/parameters/XRequestId"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateProfileRequest"
            example:
              region: europe_sepa
              pspCountry: DE
              timezone: Europe/Berlin
              quality: standard
              repairConfidenceThreshold: 0.8
          application/xml:
            schema:
              $ref: "#/components/schemas/UpdateProfileRequest"
            example: |
              <UpdateProfileRequest>
                <region>europe_sepa</region>
                <pspCountry>DE</pspCountry>
                <timezone>Europe/Berlin</timezone>
                <quality>standard</quality>
                <repairConfidenceThreshold>0.80</repairConfidenceThreshold>
              </UpdateProfileRequest>
      responses:
        "200":
          description: Profile updated — full profile returned
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProfileResponse"
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "422":
          $ref: "#/components/responses/UnprocessableEntity"
        "500":
          $ref: "#/components/responses/InternalServerError"
      security:
        - ApiKeyAuth: []
security:
  - ApiKeyAuth: []
components:
  parameters:
    XRequestId:
      name: X-Request-ID
      in: header
      required: false
      schema:
        type: string
        format: uuid
      description: Client-supplied correlation ID echoed in response headers for tracing.
  schemas:
    UpdateProfileRequest:
      type: object
      xml:
        name: UpdateProfileRequest
      description: >
        PATCH body for EP-23. Only account-level fields are patchable here.

        [v4.3] Channel-specific settings (scheme, schemeVersion, direction,
        outputMode,

        autoRepairMode, targetFormat) are now managed via EP-26 channelProfile
        PATCH.
      properties:
        region:
          type: string
          description: "Deployment region for data residency. One of: europe_sepa,
            us_east, ap_southeast."
        pspCountry:
          type: string
          pattern: ^[A-Z]{2}$
          description: Account-level institutional PSP country fallback (ISO 3166-1
            alpha-2).
        timezone:
          type: string
          description: Account-level institutional timezone fallback. Overridden by
            channelProfile.
        quality:
          allOf:
            - $ref: "#/components/schemas/Quality"
          description: Account-level institutional quality fallback. Overridden by
            channelProfile.
        repairConfidenceThreshold:
          type: number
          minimum: 0
          maximum: 1
          description: Account-level institutional confidence threshold fallback (0.0–1.0).
    ProfileResponse:
      type: object
      xml:
        name: ProfileResponse
      description: >
        Account-level profile. Contains institutional fallback settings and

        a listing of all registered channelProfiles.

        [v4.3] scheme, schemeVersion, direction, targetFormat, autoRepairMode,

        pspCountry, timezone, quality, repairConfidenceThreshold have been moved

        to channelProfile. The account profile now retains only
        institution-level

        fallback values (pspCountry, timezone, quality,
        repairConfidenceThreshold).
      properties:
        account_id:
          type: string
          description: Unique account identifier.
          example: acc_8f2a91bc
        region:
          type: string
          description: Deployment region for data residency (EU-based data centres).
          example: europe_sepa
        community:
          type: string
          description: Account community / tier classification. System-assigned.
          example: premium_tier
        formatLimits:
          $ref: "#/components/schemas/FormatLimits"
        channelProfiles:
          type: array
          description: Array of all registered channelProfiles for this account. Each
            entry is a summary.
          items:
            $ref: "#/components/schemas/ChannelProfileSummary"
    Quality:
      type: string
      description: Postal database verification depth.
      enum:
        - premium
        - standard
        - basic
    FormatLimits:
      type: object
      xml:
        name: FormatLimits
      description: Default address line count and length limits for the account.
      properties:
        maxLines:
          type: integer
          description: Default maximum address lines.
          example: 3
        maxLineLength:
          type: integer
          description: Default maximum characters per line.
          example: 35
    ChannelProfileSummary:
      type: object
      xml:
        name: ChannelProfileSummary
      description: Summary entry for a channelProfile in the account profile listing.
      properties:
        channelName:
          type: string
        channel:
          $ref: "#/components/schemas/ChannelType"
        scheme:
          $ref: "#/components/schemas/SchemeCode"
        schemeVersion:
          $ref: "#/components/schemas/SchemeVersion"
        direction:
          $ref: "#/components/schemas/Direction"
        outputMode:
          $ref: "#/components/schemas/OutputMode"
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    ErrorResponse:
      type: object
      xml:
        name: ErrorResponse
      description: Standard error envelope returned on 4xx and 5xx responses.
      properties:
        code:
          type: integer
          description: HTTP status code.
        message:
          type: string
          description: Human-readable error description.
        requestId:
          type: string
          description: Correlation ID for support.
    ChannelType:
      type: string
      description: Payment delivery channel type.
      enum:
        - api
        - file
        - other
    SchemeCode:
      type: string
      description: Payment scheme identifier.
      enum:
        - SCT
        - SCT_INST
        - SDD_CORE
        - SDD_B2B
        - OCT_INST
        - CBPRPLUS
        - CHAPS
        - T2
        - EURO1
        - FEDWIRE
        - OTHER
    SchemeVersion:
      type: string
      description: ISO 20022 scheme version / SR year.
      enum:
        - SR2025
        - SR2026
    Direction:
      type: string
      description: Payment processing direction. OUTBOUND = sending; INBOUND = receiving.
      enum:
        - OUTBOUND
        - INBOUND
    OutputMode:
      type: string
      description: |
        Address line rendering constraints applied during output formatting.
        - EPC: 2 lines × 70 chars
        - CBPR_PLUS: 3 lines × 35 chars
        - MT_LEGACY: 2 lines × 35 chars
        - COMPLIANCE: 7 lines × 70 chars
      enum:
        - EPC
        - CBPR_PLUS
        - MT_LEGACY
        - COMPLIANCE
  responses:
    BadRequest:
      description: Bad Request — malformed request body or invalid parameter.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            code: 400
            message: Request body is not valid JSON.
            requestId: b1a2c3d4-0000-0000-0000-000000000000
        application/xml:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example: |
            <?xml version="1.0" encoding="UTF-8"?>
            <ErrorResponse>
              <code>400</code>
              <message>Request body is not valid JSON.</message>
              <requestId>b1a2c3d4-0000-0000-0000-000000000000</requestId>
            </ErrorResponse>
    Unauthorized:
      description: Unauthorized — missing or invalid authentication credentials.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            code: 401
            message: Authentication credentials are missing or invalid.
            requestId: b1a2c3d4-0000-0000-0000-000000000001
        application/xml:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example: >
            <?xml version="1.0" encoding="UTF-8"?>

            <ErrorResponse>
              <code>401</code>
              <message>Authentication credentials are missing or invalid.</message>
              <requestId>b1a2c3d4-0000-0000-0000-000000000001</requestId>
            </ErrorResponse>
    UnprocessableEntity:
      description: Unprocessable Entity — semantic validation failure (e.g.
        R-transaction type submitted to a non-R endpoint).
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            code: 422
            message: R-transaction message types (e.g. pacs.002) are not permitted on this
              endpoint. Use /r-transaction-message-party-addresses.
            requestId: b1a2c3d4-0000-0000-0000-000000000004
        application/xml:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example: >
            <?xml version="1.0" encoding="UTF-8"?>

            <ErrorResponse>
              <code>422</code>
              <message>R-transaction message types (e.g. pacs.002) are not permitted on this endpoint.</message>
              <requestId>b1a2c3d4-0000-0000-0000-000000000004</requestId>
            </ErrorResponse>
    InternalServerError:
      description: Internal Server Error — unexpected server-side failure.
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example:
            code: 500
            message: An unexpected error occurred. Please contact support with your
              requestId.
            requestId: b1a2c3d4-0000-0000-0000-000000000006
        application/xml:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
          example: |
            <?xml version="1.0" encoding="UTF-8"?>
            <ErrorResponse>
              <code>500</code>
              <message>An unexpected error occurred.</message>
              <requestId>b1a2c3d4-0000-0000-0000-000000000006</requestId>
            </ErrorResponse>
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: Your ioNova platform API key. Generate it from your organisation
        admin in the ioNova app, then paste it here to test.
```
