---
updatedAt: 2026-05-29T13:25:42.000Z
agentTools:
  projectIndex: https://developer.eftcorp.com/llms.txt
---

# Create a tenant admin user

Creates an admin user for the tenant. For PKI authentication, generate a key pair with openssl and supply the base64-encoded public key.

# OpenAPI definition

```json
{
  "servers": [
    {
      "url": "https://eclipse-java-sandbox.ukheshe.rocks",
      "description": "Eclipse sandbox environment"
    },
    {
      "url": "https://ukheshe.live",
      "description": "Eclipse production environment"
    },
    {
      "url": "https://eclipse-java-develop.ukheshe.rocks",
      "description": "Eclipse development environment"
    },
    {
      "url": "https://zw.ukheshe.live",
      "description": "Zim Eclipse production environment"
    }
  ],
  "openapi": "3.1.0",
  "components": {
    "schemas": {
      "EclipseTenantAdminUser": {
        "description": "A user with credentials to do administration on a tenant. E.g. for tenant staff, API access etc.",
        "type": "object",
        "properties": {
          "adminUserId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique system generated identifier for an admin user",
            "exclusiveMinimum": 0
          },
          "base64EncodedPublicKey": {
            "type": "string",
            "description": "An optional PKI RSA public key for added security. If a public key is provided then the PKI login-challenges endpoint should be used to get a challenge to respond to as part of the login",
            "minLength": 100,
            "maxLength": 2000
          },
          "email": {
            "type": "string",
            "description": "Users email address",
            "pattern": "^[\\w\\.\\+-]+@([\\w-]+\\.)+[\\w-]{2,10}$"
          },
          "firstName": {
            "type": "string",
            "description": "Customers middle name",
            "pattern": "^\\D*$",
            "minLength": 2,
            "maxLength": 50
          },
          "identity": {
            "type": "string",
            "description": "Identity/username for authentication",
            "pattern": "\\S",
            "minLength": 3,
            "maxLength": 40
          },
          "lastName": {
            "type": "string",
            "description": "Customers last/family name",
            "pattern": "^\\D*$",
            "minLength": 2,
            "maxLength": 50
          },
          "phone1": {
            "type": "string",
            "description": "Users primary phone number",
            "pattern": "^[0-9]{8,16}$"
          },
          "positions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EclipseTenantPosition"
            }
          },
          "ssoEnabled": {
            "type": "boolean",
            "description": "Indicates that this identity is purely for single sign on (e.g. SAML/OIDC) and cannot be used for authentication. If SSO is enabled then TOTP must be disabled and base64EncodedPublicKey and password should not be provided"
          },
          "totpEnabled": {
            "type": "boolean",
            "description": "Whether this identity will require a time base one time password when authenticating"
          },
          "totpQrCode": {
            "type": "string",
            "description": "The QRCode which can be scanned with any RFC 6238 compliant App (E.g. Google Authenticator). Only provided in response to the enabling or resetting of TOTP"
          },
          "userTypeId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "lastName",
          "phone1",
          "identity"
        ]
      },
      "EclipseTenantPosition": {
        "type": "string",
        "enum": [
          "LEVEL_01",
          "LEVEL_02",
          "LEVEL_03",
          "LEVEL_04",
          "LEVEL_05",
          "LEVEL_06",
          "LEVEL_07",
          "LEVEL_08",
          "LEVEL_09",
          "LEVEL_10",
          "LEVEL_11",
          "LEVEL_12",
          "LEVEL_13",
          "LEVEL_14",
          "LEVEL_15",
          "LEVEL_16",
          "LEVEL_17",
          "LEVEL_18",
          "LEVEL_19",
          "LEVEL_20",
          "ONBOARDING",
          "TENANT_SYSTEM"
        ]
      },
      "ExceptionData": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "environment": {
            "type": "string"
          },
          "info": {
            "type": "object",
            "additionalProperties": {}
          },
          "severity": {
            "$ref": "#/components/schemas/ExceptionSeverity"
          },
          "spanId": {
            "type": "string"
          },
          "stackTrace": {
            "type": "string"
          },
          "traceId": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/ExceptionType"
          }
        }
      },
      "ExceptionSeverity": {
        "type": "string",
        "enum": [
          "CRITICAL",
          "HIGH",
          "INFO",
          "LOW",
          "MEDIUM"
        ]
      },
      "ExceptionType": {
        "type": "string",
        "enum": [
          "BUSINESS",
          "SYSTEM"
        ]
      },
      "NewEclipseTenantAdminUser": {
        "description": "A user with credentials to do administration on a tenant. E.g. for tenant staff, API access etc.",
        "type": "object",
        "properties": {
          "base64EncodedPublicKey": {
            "type": "string",
            "description": "An optional PKI RSA public key for added security. If a public key is provided then the PKI login-challenges endpoint should be used to get a challenge to respond to as part of the login",
            "minLength": 100,
            "maxLength": 2000
          },
          "email": {
            "type": "string",
            "description": "Users email address",
            "pattern": "^[\\w\\.\\+-]+@([\\w-]+\\.)+[\\w-]{2,10}$"
          },
          "firstName": {
            "type": "string",
            "description": "Customers middle name",
            "pattern": "^\\D*$",
            "minLength": 2,
            "maxLength": 50
          },
          "identity": {
            "type": "string",
            "description": "Identity/username for authentication",
            "pattern": "\\S",
            "minLength": 3,
            "maxLength": 40
          },
          "lastName": {
            "type": "string",
            "description": "Customers last/family name",
            "pattern": "^\\D*$",
            "minLength": 2,
            "maxLength": 50
          },
          "password": {
            "type": "string",
            "description": "Can be pre-hashed with BCRYPT or passed as clear text in which case Eclipse will hash it",
            "maxLength": 80
          },
          "phone1": {
            "type": "string",
            "description": "Users primary phone number",
            "pattern": "^[0-9]{8,16}$"
          },
          "positions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EclipseTenantPosition"
            }
          },
          "ssoEnabled": {
            "type": "boolean",
            "description": "Indicates that this identity is purely for single sign on (e.g. SAML/OIDC) and cannot be used for authentication. If SSO is enabled then TOTP must be disabled and base64EncodedPublicKey and password should not be provided"
          },
          "totpEnabled": {
            "type": "boolean",
            "description": "Whether this identity will require a time base one time password when authenticating"
          },
          "userTypeId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "required": [
          "lastName",
          "phone1",
          "identity"
        ]
      }
    },
    "securitySchemes": {
      "JWTBearerAuthorisation": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "info": {
    "description": "A RESTful API using JSON as the data transfer model, covering all tenant-facing functionality in the Eclipse payments platform.",
    "title": "Eclipse ReST API",
    "version": "3.0.0"
  },
  "tags": [
    {
      "name": "b) Tenant Configuration & Onboarding",
      "description": "Manages tenant lifecycle, configuration, wallets, billing, notifications, and related onboarding operations."
    }
  ],
  "paths": {
    "/eclipse-conductor/rest/v1/tenants/{tenantId}/admin-users": {
      "post": {
        "summary": "Create a tenant admin user",
        "description": "Creates an admin user for the tenant. For PKI authentication, generate a key pair with openssl and supply the base64-encoded public key.",
        "tags": [
          "b) Tenant Configuration & Onboarding"
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NewEclipseTenantAdminUser"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "User created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EclipseTenantAdminUser"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExceptionData"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "JWTBearerAuthorisation": []
          }
        ]
      }
    }
  }
}
```