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

# Update tenant profile

> Updates your organization's profile. Right now the only thing you can change here is the display name — everything else (your IDs, your roaming identities, and what you're allowed to publish) is either managed on its own endpoints or set by Spirii. Send just the display name you'd like to use.



## OpenAPI

````yaml /openapi/emsp-tenant/openapi.yaml patch /emsp/v1/tenant/profile
openapi: 3.0.0
info:
  title: Spirii EMSP - Tenant Management API
  description: 'Manages the EMSP tenant aggregate: tenant profile, EMP-Identities.'
  version: v1
  contact: {}
servers:
  - url: https://api.spirii.com
    description: Production
security: []
tags:
  - name: Tenant
    description: Tenant profile and published-network priority order
  - name: EMP Identity
    description: Register and manage a tenant’s EMP identities
paths:
  /emsp/v1/tenant/profile:
    patch:
      tags:
        - Tenant
      summary: Update tenant profile
      description: >-
        Updates your organization's profile. Right now the only thing you can
        change here is the display name — everything else (your IDs, your
        roaming identities, and what you're allowed to publish) is either
        managed on its own endpoints or set by Spirii. Send just the display
        name you'd like to use.
      operationId: tenant_update_profile
      parameters:
        - name: Idempotency-Key
          in: header
          description: >-
            Client-generated unique key per operation intent (UUID). Same key +
            identical body replays the original response; same key + different
            body returns 409.
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTenantProfileRequestDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenantProfileDto'
        '400':
          description: Request validation failed
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetailDto'
components:
  schemas:
    UpdateTenantProfileRequestDto:
      type: object
      properties:
        display_name:
          type: string
          minLength: 1
          maxLength: 255
    TenantProfileDto:
      type: object
      properties:
        tenant_id:
          type: string
          format: uuid
          description: >-
            Your organization's unique ID on Spirii. It never changes and can't
            be edited
        display_name:
          type: string
          minLength: 1
          maxLength: 255
          description: >-
            Your organization's chosen name as an e-mobility provider — free
            text you set yourself (up to 255 characters).
        emp_identities:
          description: >-
            The roaming identities registered to your organization. Each
            identity's own fields are explained under List EMP identities.
          type: array
          items:
            $ref: '#/components/schemas/EmpIdentityDto'
        can_publish_base_network:
          type: boolean
          default: false
          description: >-
            Whether your organization is allowed to make its charger network
            visible to other providers across Spirii. Spirii decides this; you
            can't change it. Capability flag set by Spirii admin via PATCH
            /admin/tenants/{tenant_id}
        published_network_priority_order:
          default: []
          description: >-
            Your preferred ranking of other providers' published networks, used
            to break the tie when a charger can be reached through more than
            one. An empty list means Spirii picks the order for you.
          type: array
          items:
            type: string
            format: uuid
        created_at:
          type: string
          format: date-time
          description: When your organization's profile was created.
        updated_at:
          type: string
          format: date-time
          description: When the profile was last changed.
      required:
        - tenant_id
        - display_name
        - emp_identities
        - can_publish_base_network
        - created_at
    ProblemDetailDto:
      type: object
      properties:
        type:
          type: string
          example: about:blank
          description: >-
            URI identifying the problem type (about:blank until the docs site is
            live)
        title:
          type: string
          example: Tenant not found
        status:
          type: number
          example: 404
        detail:
          type: string
          example: No tenant exists with id 0192...c3.
        instance:
          type: string
          example: /v1/tenant/profile
        code:
          type: string
          example: tenant_not_found
          description: Stable machine-readable error code
        trace_id:
          type: string
          example: abc123def456
          description: Correlation id; matches dd.trace_id in Datadog
        timestamp:
          type: string
          example: '2026-06-10T09:30:00.000Z'
          format: date-time
        errors:
          description: Field-level validation errors (validation failures only)
          type: array
          items:
            $ref: '#/components/schemas/ProblemFieldErrorDto'
      required:
        - type
        - title
        - status
        - detail
        - instance
        - code
        - trace_id
        - timestamp
    EmpIdentityDto:
      type: object
      properties:
        emp_identity_id:
          type: string
          format: uuid
          description: Platform-assigned stable identifier
        country_code:
          type: string
          pattern: ^[A-Z]{2}$
          example: DK
          description: ISO 3166-1 alpha-2 country code
        party_id:
          type: string
          pattern: ^[A-Z0-9]{3}$
          example: SPR
          description: OCPI party_id (3-character code)
        protocol:
          type: array
          items:
            type: string
            enum:
              - OCPI
              - OICP
        label:
          type: string
          nullable: true
          maxLength: 255
          description: Optional human-readable label
        contact_email:
          type: string
          format: email
        contact_phone:
          type: string
          nullable: true
          maxLength: 20
        default_network_access:
          type: boolean
          default: true
          description: >-
            Whether this identity grants visibility into all Published Base
            Networks
        status:
          type: string
          enum:
            - ACTIVE
            - SUSPENDED
        created_at:
          type: string
          format: date-time
      required:
        - emp_identity_id
        - country_code
        - party_id
        - status
        - created_at
    ProblemFieldErrorDto:
      type: object
      properties:
        field:
          type: string
          example: workspace_id
        code:
          type: string
          example: is_uuid
        message:
          type: string
          example: workspace_id must be a UUID
      required:
        - field
        - code
        - message

````