> ## Documentation Index
> Fetch the complete documentation index at: https://integrate.essentry.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Synchronize Permanent Identities

> Patch semantics (absent/null = unchanged, "" clears). Upserts by sourceId, falling back to email; when matched by email, the email can't be changed. Applies to the token's own company only.



## OpenAPI

````yaml api-reference/openapi.yaml put /permanent-identities
openapi: 3.0.0
info:
  title: essentry API
  version: 0.0.0
servers:
  - url: https://app.essentry.com/api/v2
    description: essentry Cloud
    variables: {}
security:
  - BearerAuth: []
tags:
  - name: Pre-Processor
  - name: User Provisioning
  - name: Permanent Identities
  - name: Access Control
  - name: Post-Processor
paths:
  /permanent-identities:
    put:
      tags:
        - Permanent Identities
      summary: Synchronize Permanent Identities
      description: >-
        Patch semantics (absent/null = unchanged, "" clears). Upserts by
        sourceId, falling back to email; when matched by email, the email can't
        be changed. Applies to the token's own company only.
      operationId: PermanentIdentities_synchronizePermanentIdentities
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                permanentIdentities:
                  type: array
                  items:
                    type: object
                    properties:
                      sourceId:
                        type: string
                        description: >-
                          This is the ID in your system, e.g. an employee
                          number. Unique per company. At least one of sourceId
                          and email is required.
                      email:
                        type: string
                      firstName:
                        type: string
                      lastName:
                        type: string
                      companyName:
                        type: string
                      language:
                        $ref: '#/components/schemas/GuestLanguage'
                      customFields:
                        type: object
                        additionalProperties: {}
                      accessProfiles:
                        type: array
                        items:
                          type: object
                          properties:
                            accessProfileGroupSourceId:
                              type: string
                              description: >-
                                Your ID of the access profile group, as
                                configured in your integration.
                            sourceId:
                              type: string
                              description: >-
                                The ID of the profile in the access control
                                system.
                          required:
                            - accessProfileGroupSourceId
                            - sourceId
                        description: >-
                          Absent = assignments unchanged; present = replaces the
                          identity's full assignment set within groups the
                          caller has a mapping for ([] removes all of them);
                          assignments in other groups are untouched.
                          Unresolvable entries are dropped and reported via
                          PARTIAL_SUCCESS_UNKNOWN_ACCESS_PROFILES - the rest of
                          the item, including removals, is still applied.
                      deletedAt:
                        type: string
                        format: date-time
                        description: >-
                          If set, the identity is deleted and its access
                          revoked.
                  maxItems: 200
              required:
                - permanentIdentities
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                properties:
                  permanentIdentities:
                    type: array
                    items:
                      type: object
                      properties:
                        sourceId:
                          type: string
                        email:
                          type: string
                        status:
                          type: string
                          enum:
                            - SUCCESS
                            - PARTIAL_SUCCESS_UNKNOWN_ACCESS_PROFILES
                            - ERROR_EMAIL_ALREADY_IN_USE
                            - ERROR_MISSING_REQUIRED_FIELDS
                        unknownAccessProfiles:
                          type: array
                          items:
                            type: object
                            properties:
                              accessProfileGroupSourceId:
                                type: string
                              sourceId:
                                type: string
                            required:
                              - accessProfileGroupSourceId
                              - sourceId
                          description: >-
                            Entries that could not be resolved and were dropped;
                            the rest of the item was applied.
                      required:
                        - status
                required:
                  - permanentIdentities
components:
  schemas:
    GuestLanguage:
      type: string
      enum:
        - CS
        - DE
        - EN
        - ES
        - FR
        - HR
        - HU
        - IT
        - NL
        - PL
        - PT
        - RO
        - RU
        - TR
        - ZH_CN
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer

````