Skip to main content

Create a client

POST

https://api-v2.test.eldowallet.fr/clients

Creates a client and their loyalty card from the wallet's store card template. Without clientType, the client gets the default type; without barcode, the client ID is used as the barcode (when the card shows one). Returns the client with their card details (passId, passStatus, shortLink).

Good to know
  • source (CRM|INTERNAL|EXTERNAL) is required. sendCard=true issues and sends the loyalty card. Emits the client.created webhook. Duplicate email or barcode gives 409.

Request​

header parameters
  • x-lang string
    Language for responses
    enum: en, frdefault: "en"
Body application/json required
  • firstName string requiredminLength: 2maxLength: 100
  • lastName string requiredminLength: 2maxLength: 100
  • email string <email> required
  • phoneNumber string
  • barcode string
  • renewalDate string <date-time>
  • birthDate string <date-time>
  • admissionDate string <date-time>
  • clientType string
  • gain number
  • companyName string
  • source string requiredenum: CRM, INTERNAL, EXTERNAL
  • sendCard boolean

Responses​

Schema application/json
  • wallet string
  • clientType oneOf
    • ClientType
      • storeCard oneOf required
        • StoreCard
          • wallet oneOf required
            • Wallet
            • option 2
          • cardType string requiredenum: STORE_CARD, MEMBER_CARD
          • displayIdentifiant boolean required
          • displayWalletName boolean
          • strip string required
          • passBuilderPassTemplateId string
          • programName string
          • keysHasChanged string[]
          • startRow stringenum: CREATION_DATE, EXPIRATION_DATE, BIRTHDATE, GAIN, CLUB, ASSOCIATION, ORGANISATION, ENTREPRISE, N_LICENCE, N_ADHERENT, N_MEMBER, MEMBER, N_IMMATRICULATION, INACTIVE, ADMISSION_DATE
          • middleRow stringenum: CREATION_DATE, EXPIRATION_DATE, BIRTHDATE, GAIN, CLUB, ASSOCIATION, ORGANISATION, ENTREPRISE, N_LICENCE, N_ADHERENT, N_MEMBER, MEMBER, N_IMMATRICULATION, INACTIVE, ADMISSION_DATE
          • endRow stringenum: CREATION_DATE, EXPIRATION_DATE, BIRTHDATE, GAIN, CLUB, ASSOCIATION, ORGANISATION, ENTREPRISE, N_LICENCE, N_ADHERENT, N_MEMBER, MEMBER, N_IMMATRICULATION, INACTIVE, ADMISSION_DATE
          • iosHeader object
            • labelEnum string requiredenum: TYPE, GAIN, FULLNAME, CUSTOM_TEXT, INACTIVE
            • valueEnum string requiredenum: TYPE, GAIN, FULLNAME, CUSTOM_TEXT, INACTIVE
            • customLabel string
            • customValue string
          • barcodeType string requiredenum: AZTEC, CODE_128, PDF_417, QR_CODE, NONE
          • descriptions object[] required
            • title string required
            • value string required
          • openingHours string required
          • colors object required
            • labelColor string required
            • backgroundColor string required
            • foregroundColor string required
          • oneTimeToUse boolean required
          • sharingProhibited boolean required
          • sharingProhibitedAndroid boolean required
          • validity object required
            • expirationType string requiredenum: NO_EXPIRATION, AT_DATETIME, AFTER_PERIOD
            • expirationDate string <date-time>
            • expirationAfterPeriod string
            • expirationPeriodType stringenum: YEARS, MONTHS, WEEKS
            • expirationOption stringenum: AT_CREATION_DATE, END_OF_MONTH
          • gainLabel string requiredenum: GAIN, GAINS, CAGNOTE, POINTS
          • gainUnit string requiredenum: NONE, EURO, USD, MAD, POINTS
          • offerLabel string required
          • enableDisplayIdentifiant boolean required
          • gainFormatMigrated boolean required
            Marks whether the PassBuilder template and all existing passes have been migrated to the new gain format where the unit symbol is embedded in the pass attribute value (e.g. "50 Pts") rather than in the template field. False (or absent) means the old format is still in use.
          • _id string required
          • createdAt string <date-time> required
          • updatedAt string <date-time> required
        • option 2
      • name string required
      • isDefault boolean required
      • _id string required
      • createdAt string <date-time> required
      • updatedAt string <date-time> required
    • option 2
  • passStatus string
    Status of the associated store card pass
    enum: active, inactive, deleted, canceled, expiredexample: active
  • deviceTypes string
    Comma-separated list of unique device types
    example: IOS, ANDROID
  • shortLink string
    Short URL for the pass inscription page (e.g. for QR codes)
  • shortId string
    4-char short id for the pass (used in short links)
  • passBuilderPassId string
    PassBuilder pass id (used in short links when shortId absent)
  • passId string
    Pass id
  • clientTypeName string
    Client type name
  • otherPassStatuses object
    Live pass status for this client's non-loyalty passes (event/transit/hotel), keyed by pass category. Undefined for a category means the client has no such pass yet — used to gate "new pass"-dependent communication preferences (a client cannot meaningfully opt in/out of notifications for a pass they don't have yet).
    • event stringenum: active, inactive, deleted, canceled, expired
    • transit stringenum: active, inactive, deleted, canceled, expired
    • hotel stringenum: active, inactive, deleted, canceled, expired
  • source string requiredenum: CRM, INTERNAL, EXTERNAL
  • barcode string
  • firstName string required
  • lastName string required
  • email string
  • companyName string
  • renewalDate string <date-time>
  • phoneNumber string
  • birthDate string <date-time>
  • admissionDate string <date-time>
  • gain number
  • gainHistory object[]
    • gain number required
    • date string <date-time> required
  • communicationPreferences object[]
    Per-event, per-channel communication preference overrides for this client (GDPR consent management). Same shape as `WalletSetting.communicationRules` — reused rather than duplicated. No entry for a given notificationType means enabled, mirroring `isCommunicationRuleEnabled`'s existing semantics. Change history is intentionally NOT embedded here — see `CommunicationPreferenceLog` — to keep this frequently-read document small.
    • notificationType string requiredenum: NEW_LOYALTY, UPDATE_LOYALTY, REMINDER_LOYALTY, EARNINGS_UPDATE, NEW_COMMUNICATION, EXPIRED_COMMUNICATION, NEW_EVENT, UPDATE_EVENT, NEW_COUPON, UPDATE_COUPON, WELCOME_INTERNAL_CLIENTS, WELCOME_CRM_CLIENTS, WELCOME_EXTERNAL_CLIENTS, WELCOME_COUPON, EXPIRED_COUPON, TRANSIT_TICKET, UPDATE_TRANSIT, HOTEL_RESERVATION, UPDATE_HOTEL_RESERVATION, CINEMA_TICKET
    • sms boolean required
    • email boolean required
    • notification boolean required
  • pushInformativeEnabled boolean
    Opt-out of manager-created "standard" push campaigns classified as informative.
  • pushCommercialEnabled boolean
    Opt-out of manager-created "standard" push campaigns classified as commercial.
  • _id string required
  • createdAt string <date-time> required
  • updatedAt string <date-time> required

API news, once a month

New endpoints, upcoming changes, guides and use cases. No spam, one-click unsubscribe.

Report a technical problem

An API error, a pass that does not update, an email that does not arrive? Describe the problem: our technical team will answer.

For a fast answer, include:

  • The method and endpoint (e.g. POST /clients)
  • The error code returned (errorCode) and the body sent
  • The date and time of the call
  • The identifiers involved (customer, template, pass)

Never include an API token or a password.

AI assistant

Beta

Loading…

AI-generated answers (Claude): double-check important details.

Sign in to use the assistant