Aller au contenu

Environnement de développement : contenu en cours de rédaction, rien ne pointe vers la production.

Sommaire de la documentation

admin

Version 0.1.011 opérations

Konnect admin and support: affiliations across organisations

GET/admin/affiliationsSession du tableau de bord

Paramètres

  • cursoranyquery
  • limitintegerquery
    • max: 200
    • default: 50
  • statusanyquery
  • provideranyquery
  • organisationanyquery

    Organisation id

Réponses

  • 200

    • itemsAdminAffiliationDto[]obligatoire
      • idstring (uuid)obligatoire
      • organisationIdstring (uuid)obligatoire
      • providerstringobligatoire
        • enum: "clictopay", "flouci", "izi", "mpgs_poste", "pluxee", "kashy", "enda_tao"
      • providerNamestringobligatoire
      • labelstringobligatoire
      • environmentstringobligatoire
        • enum: "sandbox", "production"
      • statusstringobligatoire
        • enum: "draft", "verifying", "active", "suspended", "revoked"
      • publicIdentifierstring | nullobligatoire

        Never a secret

      • credentialsobjectobligatoire

        Non-secret fields in full, secret fields as **** plus their last four characters; never a value usable at the provider

      • credentialVersionnumberobligatoire

        Current credential version, 1 for the first credentials

      • verifiedAtstring (date-time) | nullobligatoire
      • lastUsedAtstring (date-time) | nullobligatoire
      • lastVerificationErrorstring | nullobligatoire

        Readable, never a secret

      • revokedAtstring (date-time) | nullobligatoire
      • paymentAccountsRoutedPaymentAccountDto[]obligatoire

        Payment accounts whose routing uses this affiliation; they lose it on revoke

        • idstring (uuid)obligatoire
        • namestringobligatoire
        • statusstringobligatoire
          • enum: "active", "paused", "archived"
      • createdAtstring (date-time)obligatoire
      • updatedAtstring (date-time)obligatoire
      • organisationNamestringobligatoire
    • nextCursorstring | nullobligatoire

Exemples de code

curl -X GET "$KONNECT_API_URL/admin/affiliations" \
  -H "Cookie: konnect_session=$KONNECT_SESSION"

Exemple : 200

{
  "items": [
    {
      "id": "id",
      "organisationId": "org_01J9Z3K4EXAMPLE0000000000",
      "provider": "clictopay",
      "providerName": "ClicToPay",
      "label": "default",
      "environment": "sandbox",
      "status": "draft",
      "publicIdentifier": "publicIdentifier",
      "credentials": {},
      "credentialVersion": 1,
      "verifiedAt": "2026-10-01T09:30:00.000Z",
      "lastUsedAt": "2026-10-01T09:30:00.000Z",
      "lastVerificationError": "lastVerificationError",
      "revokedAt": "2026-10-01T09:30:00.000Z",
      "paymentAccounts": [
        {
          "id": "id",
          "name": "name",
          "status": "active"
        }
      ],
      "createdAt": "2026-10-01T09:30:00.000Z",
      "updatedAt": "2026-10-01T09:30:00.000Z",
      "organisationName": "organisationName"
    }
  ],
  "nextCursor": "nextCursor"
}

Outbox events, newest first (Konnect support)

GET/admin/outboxSession du tableau de bord

Paramètres

  • cursoranyquery

    nextCursor of the previous page

  • limitintegerquery
    • max: 200
    • default: 50
  • statusstringquery
    • enum: "pending", "done", "failed"

Réponses

  • 200

    • itemsOutboxEventDto[]obligatoire
      • idstring (uuid)obligatoire
      • typestringobligatoire
      • statusstringobligatoire
        • enum: "pending", "done", "failed"
      • payloadobjectobligatoire

        Redacted payload

      • attemptsnumberobligatoire
      • lastErrorstring | null
      • runAtstring (date-time)obligatoire
      • doneAtstring (date-time) | null
      • createdAtstring (date-time)obligatoire
    • nextCursorstring | nullobligatoire
  • 401Not authenticated; 403 for anyone but Konnect support and admins

Exemples de code

curl -X GET "$KONNECT_API_URL/admin/outbox" \
  -H "Cookie: konnect_session=$KONNECT_SESSION"

Exemple : 200

{
  "items": [
    {
      "id": "id",
      "type": "email.send",
      "status": "pending",
      "payload": {},
      "attempts": 1,
      "lastError": "lastError",
      "runAt": "2026-10-01T09:30:00.000Z",
      "doneAt": "2026-10-01T09:30:00.000Z",
      "createdAt": "2026-10-01T09:30:00.000Z"
    }
  ],
  "nextCursor": "nextCursor"
}

Konnect staff: every organisation with its status facts

GET/admin/organisationsSession du tableau de bord

Paramètres

Aucun paramètre.

Réponses

  • 200

    • idstring (uuid)obligatoire
    • namestringobligatoire
    • legalNamestringobligatoire
    • taxIdstringobligatoire
    • kybStatusstringobligatoire
      • enum: "pending", "verified", "refused"
    • contractSignedAtstring (date-time) | nullobligatoire
    • canCollectbooleanobligatoire
    • reasonsstring[]obligatoire
    • memberCountnumberobligatoire
    • createdAtstring (date-time)obligatoire

Exemples de code

curl -X GET "$KONNECT_API_URL/admin/organisations" \
  -H "Cookie: konnect_session=$KONNECT_SESSION"

Exemple : 200

[
  {
    "id": "id",
    "name": "name",
    "legalName": "legalName",
    "taxId": "taxId",
    "kybStatus": "pending",
    "contractSignedAt": "2026-10-01T09:30:00.000Z",
    "canCollect": true,
    "reasons": [
      "kyb_pending"
    ],
    "memberCount": 1,
    "createdAt": "2026-10-01T09:30:00.000Z"
  }
]

Konnect staff: identity and status facts of one organisation

GET/admin/organisations/{id}Session du tableau de bord

Paramètres

  • idstringpathobligatoire

Réponses

  • 200

    • idstring (uuid)obligatoire
    • namestringobligatoire
    • legalNamestringobligatoire
    • taxIdstringobligatoire
    • countrystringobligatoire
    • addressstring | nullobligatoire
    • citystring | nullobligatoire
    • postalCodestring | nullobligatoire
    • phonestring | nullobligatoire
    • emailstring | nullobligatoire
    • websitestring | nullobligatoire
    • kybStatusstringobligatoire
      • enum: "pending", "verified", "refused"
    • contractSignedAtstring (date-time) | nullobligatoire
    • activeAffiliationsnumberobligatoire
    • canCollectbooleanobligatoire

      Computed: KYB verified, contract signed, one active affiliation

    • reasonsstring[]obligatoire
    • paymentAccountsPaymentAccountSummaryDto[]obligatoire

      Accounts within your scope

      • idstring (uuid)obligatoire
      • namestringobligatoire
      • slugstringobligatoire
      • isDefaultbooleanobligatoire
      • statusstringobligatoire
        • enum: "active", "paused", "archived"

Exemples de code

curl -X GET "$KONNECT_API_URL/admin/organisations/id" \
  -H "Cookie: konnect_session=$KONNECT_SESSION"

Exemple : 200

{
  "id": "id",
  "name": "name",
  "legalName": "legalName",
  "taxId": "taxId",
  "country": "country",
  "address": "address",
  "city": "city",
  "postalCode": "postalCode",
  "phone": "phone",
  "email": "buyer@example.com",
  "website": "website",
  "kybStatus": "pending",
  "contractSignedAt": "2026-10-01T09:30:00.000Z",
  "activeAffiliations": 1,
  "canCollect": true,
  "reasons": [
    "kyb_pending"
  ],
  "paymentAccounts": [
    {
      "id": "id",
      "name": "name",
      "slug": "slug",
      "isDefault": true,
      "status": "active"
    }
  ]
}

Full timeline of any payment, with raw provider payloads (admin)

GET/admin/payments/{reference}/timelineSession du tableau de bord

Paramètres

  • referencestringpathobligatoire
  • categorystring[]query

    Repeat to keep several categories; all by default

  • cursoranyquery

    nextCursor of the previous page

  • limitintegerquery
    • max: 200
    • default: 100

Réponses

  • 200

    • paymentPaymentDtoobligatoire
      • idstring (uuid)obligatoire
      • referencestringobligatoire

        24 hexadecimal characters

      • statusstringobligatoire
        • enum: "pending", "succeeded", "failed", "expired", "canceled"
      • amountnumberobligatoire
      • currencystringobligatoire
      • descriptionstring | nullobligatoire
      • orderIdstring | nullobligatoire
      • payerPayerDtoobligatoire
        • firstNamestring
        • lastNamestring
        • emailstring

          Receives the receipt

        • phonestring
      • acceptedProvidersstring[]obligatoire
      • providerstring | nullobligatoire

        Provider of the succeeded attempt, or of the last attempt opened

      • organisationIdstring (uuid)obligatoire
      • paymentAccountIdstring (uuid)obligatoire
      • channelstringobligatoire
        • enum: "api", "link", "konnect_me", "plugin_woocommerce", "plugin_prestashop", "plugin_whmcs", "compat_v2"
      • successUrlstring | nullobligatoire
      • failUrlstring | nullobligatoire
      • webhookUrlstring | nullobligatoire
      • expiresAtstring (date-time)obligatoire
      • metadataobjectobligatoire
      • payUrlstringobligatoire

        Hosted checkout page of this payment

      • succeededAttemptIdstring (uuid) | nullobligatoire
      • attemptsCountnumberobligatoire
      • paymentLinkIdstring (uuid) | nullobligatoire

        The payment link the payer started from (channel link), null otherwise

      • resultany

        Result summary (API responses only, not in webhook bodies)

      • createdAtstring (date-time)obligatoire
      • updatedAtstring (date-time)obligatoire
    • attemptsTimelineAttemptDto[]obligatoire

      Oldest first

      • idstring (uuid)obligatoire
      • numbernumberobligatoire

        1 for the first attempt of the payment

      • providerstringobligatoire
      • statusstringobligatoire
      • externalRefstring | nullobligatoire
      • amountnumberobligatoire
      • providerFeenumber | nullobligatoire
      • affiliationAttemptAffiliationDtoobligatoire
        • affiliationIdstring (uuid)obligatoire
        • labelstringobligatoire
        • environmentstringobligatoire
          • enum: "sandbox", "production"
        • publicIdentifierstring | nullobligatoire

          Never a secret

        • credentialVersionnumberobligatoire
      • checksCountnumberobligatoire
      • resultAttemptResultDtoobligatoire
        • failureCodestring | nullobligatoire
          • enum: "declined", "insufficient_funds", "limit_exceeded", "card_expired", "invalid_instrument", "authentication_failed", "fraud_suspected", "canceled_by_payer", "session_expired", "payment_expired", "provider_unavailable", "invalid_request", "merchant_auth_failed", "unknown_reference", "unknown"
        • providerResultCodestring | nullobligatoire

          The provider own code

        • providerMessagestring | nullobligatoire

          The provider message, redacted

        • authorizationCodestring | nullobligatoire
        • instrumentany | nullobligatoire
        • initiatedAtstring (date-time) | nullobligatoire
        • redirectedAtstring (date-time) | nullobligatoire
        • authorizedAtstring (date-time) | nullobligatoire
        • completedAtstring (date-time) | nullobligatoire
        • durationsAttemptDurationsDtoobligatoire
          • initMsnumber | nullobligatoire

            initiated_at to redirected_at

          • payerMsnumber | nullobligatoire

            redirected_at to completed_at

          • totalMsnumber | nullobligatoire

            initiated_at to completed_at

      • createdAtstring (date-time)obligatoire
      • rawany

        Admin view only

    • webhooksTimelineWebhooksDtoobligatoire
      • deliveriesWebhookDeliveryDto[]obligatoire
        • idstring (uuid)obligatoire
        • endpointIdstring (uuid)obligatoire
        • paymentIdstring (uuid)obligatoire
        • eventIdstring (uuid)obligatoire
        • eventTypestringobligatoire
          • enum: "payment.succeeded", "payment.failed", "payment.expired", "payment.canceled", "attempt.duplicate_success"
        • urlstringobligatoire
        • statusstringobligatoire
          • enum: "pending", "delivered", "failed"
        • attemptsnumberobligatoire
        • lastStatusCodenumber | nullobligatoire
        • lastErrorstring | nullobligatoire
        • lastAttemptAtstring (date-time) | nullobligatoire
        • deliveredAtstring (date-time) | nullobligatoire
        • lastOutcomestring | nullobligatoire
          • enum: "delivered", "http_4xx", "http_5xx", "timeout", "connection_refused", "dns_error", "tls_error", "redirect_not_followed", "response_too_large", "invalid_url_or_blocked", "other"
        • nextRetryAtstring (date-time) | nullobligatoire
        • manualTriesnumberobligatoire
        • createdAtstring (date-time)obligatoire
      • triesWebhookTryDto[]obligatoire

        Every HTTP try, oldest first

        • idstring (uuid)obligatoire
        • deliveryIdstring (uuid)obligatoire
        • endpointIdstring (uuid)obligatoire
        • eventIdstring (uuid)obligatoire
        • eventTypestringobligatoire
          • enum: "payment.succeeded", "payment.failed", "payment.expired", "payment.canceled", "attempt.duplicate_success"
        • urlstringobligatoire
        • tryNumbernumberobligatoire
        • triggerstringobligatoire
          • enum: "automatic", "manual"
        • requestedBystring (uuid) | nullobligatoire
        • requestHeadersobjectobligatoire
        • requestBodystringobligatoire

          The body as sent, byte for byte

        • startedAtstring (date-time)obligatoire
        • durationMsnumberobligatoire
        • outcomestringobligatoire
          • enum: "delivered", "http_4xx", "http_5xx", "timeout", "connection_refused", "dns_error", "tls_error", "redirect_not_followed", "response_too_large", "invalid_url_or_blocked", "other"
        • statusCodenumber | nullobligatoire
        • responseHeadersobject | nullobligatoire
        • responseExcerptstring | nullobligatoire

          First 2 KB, redacted

        • errorMessagestring | nullobligatoire
        • nextRetryAtstring (date-time) | nullobligatoire
    • itemsTimelineItemDto[]obligatoire

      Oldest first

      • idstring (uuid)obligatoire
      • seqstringobligatoire

        Timeline order, shared by the three source tables

      • kindstringobligatoire
        • enum: "payment_event", "attempt_event"
      • typestringobligatoire
      • categorystringobligatoire
        • enum: "payment", "checkout", "attempt", "notification", "email", "anomaly", "refund", "reconciliation"
      • occurredAtstring (date-time)obligatoire
      • attemptIdstring (uuid) | nullobligatoire
      • actorTimelineActorDtoobligatoire
        • typestringobligatoire
          • enum: "system", "merchant_user", "api_key", "payer", "provider", "admin"
        • idstring | nullobligatoire

          User or API key id

      • sourcestringobligatoire
        • enum: "merchant_api", "dashboard", "checkout", "provider_callback", "poller", "outbox_worker", "admin_console", "system", "init", "callback", "poll", "manual"
      • fromStatusstring | nullobligatoire
      • toStatusstring | nullobligatoire
      • detailsobjectobligatoire

        Redacted

      • attemptEventAttemptEventDto
        • idstring (uuid)obligatoire
        • typestringobligatoire
        • fromStatusstring | nullobligatoire
          • enum: "created", "redirected", "pending", "succeeded", "failed", "canceled", "expired", "refunded"
        • toStatusstring | nullobligatoire
          • enum: "created", "redirected", "pending", "succeeded", "failed", "canceled", "expired", "refunded"
        • sourcestringobligatoire
          • enum: "init", "callback", "poll", "manual"
        • detailsobjectobligatoire

          Redacted

        • createdAtstring (date-time)obligatoire
      • webhookTryWebhookTryDto
        • idstring (uuid)obligatoire
        • deliveryIdstring (uuid)obligatoire
        • endpointIdstring (uuid)obligatoire
        • eventIdstring (uuid)obligatoire
        • eventTypestringobligatoire
          • enum: "payment.succeeded", "payment.failed", "payment.expired", "payment.canceled", "attempt.duplicate_success"
        • urlstringobligatoire
        • tryNumbernumberobligatoire
        • triggerstringobligatoire
          • enum: "automatic", "manual"
        • requestedBystring (uuid) | nullobligatoire
        • requestHeadersobjectobligatoire
        • requestBodystringobligatoire

          The body as sent, byte for byte

        • startedAtstring (date-time)obligatoire
        • durationMsnumberobligatoire
        • outcomestringobligatoire
          • enum: "delivered", "http_4xx", "http_5xx", "timeout", "connection_refused", "dns_error", "tls_error", "redirect_not_followed", "response_too_large", "invalid_url_or_blocked", "other"
        • statusCodenumber | nullobligatoire
        • responseHeadersobject | nullobligatoire
        • responseExcerptstring | nullobligatoire

          First 2 KB, redacted

        • errorMessagestring | nullobligatoire
        • nextRetryAtstring (date-time) | nullobligatoire
    • nextCursorstring | nullobligatoire
    • eventTypesVersionnumberobligatoire

      PAYMENT_EVENT_TYPES_VERSION of packages/domain

  • 401Not authenticated; 403 for anyone but konnect_admin

  • 404payment_not_found

Exemples de code

curl -X GET "$KONNECT_API_URL/admin/payments/reference/timeline" \
  -H "Cookie: konnect_session=$KONNECT_SESSION"

Exemple : 200

{
  "payment": {
    "id": "id",
    "reference": "665f1c2e8b3a4d0012ab34cd",
    "status": "pending",
    "amount": 12500,
    "currency": "TND",
    "description": "description",
    "orderId": "order-1001",
    "payer": {
      "firstName": "Sami",
      "lastName": "Test",
      "email": "payer@example.test",
      "phone": "+21600000000"
    },
    "acceptedProviders": [
      "clictopay"
    ],
    "provider": "provider",
    "organisationId": "org_01J9Z3K4EXAMPLE0000000000",
    "paymentAccountId": "paymentAccountId",
    "channel": "api",
    "successUrl": "successUrl",
    "failUrl": "failUrl",
    "webhookUrl": "webhookUrl",
    "expiresAt": "2026-10-01T09:30:00.000Z",
    "metadata": {},
    "payUrl": "payUrl",
    "succeededAttemptId": "succeededAttemptId",
    "attemptsCount": 1,
    "paymentLinkId": "paymentLinkId",
    "result": {
      "status": "pending",
      "provider": "provider",
      "attemptId": "attemptId",
      "failureCode": "declined",
      "authorizationCode": "authorizationCode",
      "instrument": {
        "type": null,
        "brand": null,
        "last4": null,
        "maskedId": null
      },
      "attemptsCount": 1,
      "failedAttemptsCount": 1,
      "checkoutOpensCount": 1,
      "firstOpenedAt": "2026-10-01T09:30:00.000Z",
      "completedAt": "2026-10-01T09:30:00.000Z",
      "durationMs": 1,
      "merchantConfirmation": "confirmed",
      "merchantConfirmationReason": {
        "outcome": null,
        "statusCode": null,
        "tries": null,
        "timeoutMs": null,
        "endpointDisabled": null,
        "nextRetryAt": null,
        "deliveryId": null
      }
    },
    "createdAt": "2026-10-01T09:30:00.000Z",
    "updatedAt": "2026-10-01T09:30:00.000Z"
  },
  "attempts": [
    {
      "id": "id",
      "number": 1,
      "provider": "provider",
      "status": "status",
      "externalRef": "externalRef",
      "amount": 1,
      "providerFee": 1,
      "affiliation": {
        "affiliationId": "affiliationId",
        "label": "default",
        "environment": "sandbox",
        "publicIdentifier": "publicIdentifier",
        "credentialVersion": 1
      },
      "checksCount": 1,
      "result": {
        "failureCode": "declined",
        "providerResultCode": "providerResultCode",
        "providerMessage": "providerMessage",
        "authorizationCode": "authorizationCode",
        "instrument": {
          "type": null,
          "brand": null,
          "last4": null,
          "maskedId": null
        },
        "initiatedAt": "2026-10-01T09:30:00.000Z",
        "redirectedAt": "2026-10-01T09:30:00.000Z",
        "authorizedAt": "2026-10-01T09:30:00.000Z",
        "completedAt": "2026-10-01T09:30:00.000Z",
        "durations": {
          "initMs": 1,
          "payerMs": 1,
          "totalMs": 1
        }
      },
      "createdAt": "2026-10-01T09:30:00.000Z",
      "raw": {
        "rawInit": {},
        "rawStatus": {},
        "rawCallback": {}
      }
    }
  ],
  "webhooks": {
    "deliveries": [
      {
        "id": "id",
        "endpointId": "endpointId",
        "paymentId": "665f1c2e8b3a4d0012ab34cd",
        "eventId": "eventId",
        "eventType": "payment.succeeded",
        "url": "url",
        "status": "pending",
        "attempts": 1,
        "lastStatusCode": 1,
        "lastError": "lastError",
        "lastAttemptAt": "2026-10-01T09:30:00.000Z",
        "deliveredAt": "2026-10-01T09:30:00.000Z",
        "lastOutcome": "delivered",
        "nextRetryAt": "2026-10-01T09:30:00.000Z",
        "manualTries": 1,
        "createdAt": "2026-10-01T09:30:00.000Z"
      }
    ],
    "tries": [
      {
        "id": "id",
        "deliveryId": "deliveryId",
        "endpointId": "endpointId",
        "eventId": "eventId",
        "eventType": "payment.succeeded",
        "url": "url",
        "tryNumber": 1,
        "trigger": "automatic",
        "requestedBy": "requestedBy",
        "requestHeaders": {},
        "requestBody": "requestBody",
        "startedAt": "2026-10-01T09:30:00.000Z",
        "durationMs": 1,
        "outcome": "delivered",
        "statusCode": 1,
        "responseHeaders": {},
        "responseExcerpt": "responseExcerpt",
        "errorMessage": "errorMessage",
        "nextRetryAt": "2026-10-01T09:30:00.000Z"
      }
    ]
  },
  "items": [
    {
      "id": "id",
      "seq": "seq",
      "kind": "payment_event",
      "type": "attempt_status_changed",
      "category": "payment",
      "occurredAt": "2026-10-01T09:30:00.000Z",
      "attemptId": "attemptId",
      "actor": {
        "type": "system",
        "id": "id"
      },
      "source": "merchant_api",
      "fromStatus": "fromStatus",
      "toStatus": "toStatus",
      "details": {},
      "attemptEvent": {
        "id": "id",
        "type": "transition",
        "fromStatus": "created",
        "toStatus": "created",
        "source": "init",
        "details": {},
        "createdAt": "2026-10-01T09:30:00.000Z"
      },
      "webhookTry": {
        "id": "id",
        "deliveryId": "deliveryId",
        "endpointId": "endpointId",
        "eventId": "eventId",
        "eventType": "payment.succeeded",
        "url": "url",
        "tryNumber": 1,
        "trigger": "automatic",
        "requestedBy": "requestedBy",
        "requestHeaders": {},
        "requestBody": "requestBody",
        "startedAt": "2026-10-01T09:30:00.000Z",
        "durationMs": 1,
        "outcome": "delivered",
        "statusCode": 1,
        "responseHeaders": {},
        "responseExcerpt": "responseExcerpt",
        "errorMessage": "errorMessage",
        "nextRetryAt": "2026-10-01T09:30:00.000Z"
      }
    }
  ],
  "nextCursor": "nextCursor",
  "eventTypesVersion": 1
}

Every platform setting with its value or secret hint and source

GET/admin/settingsSession du tableau de bord

Paramètres

Aucun paramètre.

Réponses

  • 200

    • keystringobligatoire
    • categorystringobligatoire
      • enum: "email", "platform", "payments"
    • descriptionstringobligatoire

      English help text

    • typeSettingTypeDtoobligatoire
      • kindstringobligatoire
        • enum: "string", "email", "integer", "boolean", "enum", "string_list", "secret"
      • maxLengthnumber

        string: maximum length

      • minnumber

        integer: minimum

      • maxnumber

        integer: maximum

      • optionsstring[]

        enum: allowed values

      • maxItemsnumber

        string_list: maximum number of entries

    • nullablebooleanobligatoire

      Accepts null (no value)

    • secretbooleanobligatoire

      Write-only: the value is never returned

    • requiresReauthbooleanobligatoire

      A write needs a re-authentication in the last 10 minutes

    • visibleWhenany | nullobligatoire
    • valuestring | number | boolean | string[]obligatoire

      Effective value (string, number, boolean or list); always null for secrets

    • defaultValuestring | number | boolean | string[]obligatoire

      Code default; always null for secrets

    • sourcestringobligatoire
      • enum: "database", "environment", "default"
    • secretSetbooleanobligatoire

      Secrets: a value is stored

    • secretLast4string | nullobligatoire

      Secrets: last four characters

    • versionnumberobligatoire

      Version of the database value, 0 when none

    • updatedAtstring (date-time) | nullobligatoire
    • updatedBystring (uuid) | nullobligatoire
    • storedValueInvalidbooleanobligatoire

      The stored value fails the current schema; the fallback applies

  • 401Not authenticated

  • 403konnect_staff_only for anyone but konnect_admin; reauth_required on sensitive writes

Exemples de code

curl -X GET "$KONNECT_API_URL/admin/settings" \
  -H "Cookie: konnect_session=$KONNECT_SESSION"

Exemple : 200

[
  {
    "key": "email.transport",
    "category": "email",
    "description": "description",
    "type": {
      "kind": "string",
      "maxLength": 1,
      "min": 1,
      "max": 1,
      "options": [
        "string"
      ],
      "maxItems": 1
    },
    "nullable": true,
    "secret": true,
    "requiresReauth": true,
    "visibleWhen": {
      "key": "email.transport",
      "equals": [
        "smtp"
      ]
    },
    "value": "value",
    "defaultValue": "defaultValue",
    "source": "database",
    "secretSet": true,
    "secretLast4": "secretLast4",
    "version": 1,
    "updatedAt": "2026-10-01T09:30:00.000Z",
    "updatedBy": "updatedBy",
    "storedValueInvalid": true
  }
]

Send a test e-mail through the current e-mail settings

POST/admin/settings/email/testSession du tableau de bord

Paramètres

Aucun paramètre.

Corps de la requête application/json

  • tostring

    Recipient; the admin's own address when omitted

Réponses

  • 200

    • statusstringobligatoire
      • enum: "sent", "suppressed"
    • transportstringobligatoire
      • enum: "ses", "smtp", "log"
    • messageIdstring
    • reasonstring
      • enum: "not_in_allowlist", "allowlist_required"
  • 401Not authenticated

  • 403konnect_staff_only for anyone but konnect_admin; reauth_required on sensitive writes

  • 502email_delivery_failed (reason: AWS error name or SMTP code) or email_not_configured

Exemples de code

curl -X POST "$KONNECT_API_URL/admin/settings/email/test" \
  -H "Cookie: konnect_session=$KONNECT_SESSION" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "to"
}'

Exemple : corps de la requête

{
  "to": "to"
}

Exemple : 200

{
  "status": "sent",
  "transport": "ses",
  "messageId": "messageId",
  "reason": "not_in_allowlist"
}

One platform setting

GET/admin/settings/{key}Session du tableau de bord

Paramètres

  • keystringpathobligatoire

Réponses

  • 200

    • keystringobligatoire
    • categorystringobligatoire
      • enum: "email", "platform", "payments"
    • descriptionstringobligatoire

      English help text

    • typeSettingTypeDtoobligatoire
      • kindstringobligatoire
        • enum: "string", "email", "integer", "boolean", "enum", "string_list", "secret"
      • maxLengthnumber

        string: maximum length

      • minnumber

        integer: minimum

      • maxnumber

        integer: maximum

      • optionsstring[]

        enum: allowed values

      • maxItemsnumber

        string_list: maximum number of entries

    • nullablebooleanobligatoire

      Accepts null (no value)

    • secretbooleanobligatoire

      Write-only: the value is never returned

    • requiresReauthbooleanobligatoire

      A write needs a re-authentication in the last 10 minutes

    • visibleWhenany | nullobligatoire
    • valuestring | number | boolean | string[]obligatoire

      Effective value (string, number, boolean or list); always null for secrets

    • defaultValuestring | number | boolean | string[]obligatoire

      Code default; always null for secrets

    • sourcestringobligatoire
      • enum: "database", "environment", "default"
    • secretSetbooleanobligatoire

      Secrets: a value is stored

    • secretLast4string | nullobligatoire

      Secrets: last four characters

    • versionnumberobligatoire

      Version of the database value, 0 when none

    • updatedAtstring (date-time) | nullobligatoire
    • updatedBystring (uuid) | nullobligatoire
    • storedValueInvalidbooleanobligatoire

      The stored value fails the current schema; the fallback applies

  • 401Not authenticated

  • 403konnect_staff_only for anyone but konnect_admin; reauth_required on sensitive writes

  • 404setting_not_found

Exemples de code

curl -X GET "$KONNECT_API_URL/admin/settings/key" \
  -H "Cookie: konnect_session=$KONNECT_SESSION"

Exemple : 200

{
  "key": "email.transport",
  "category": "email",
  "description": "description",
  "type": {
    "kind": "string",
    "maxLength": 1,
    "min": 1,
    "max": 1,
    "options": [
      "string"
    ],
    "maxItems": 1
  },
  "nullable": true,
  "secret": true,
  "requiresReauth": true,
  "visibleWhen": {
    "key": "email.transport",
    "equals": [
      "smtp"
    ]
  },
  "value": "value",
  "defaultValue": "defaultValue",
  "source": "database",
  "secretSet": true,
  "secretLast4": "secretLast4",
  "version": 1,
  "updatedAt": "2026-10-01T09:30:00.000Z",
  "updatedBy": "updatedBy",
  "storedValueInvalid": true
}

Change a platform setting (reason required); applies to every API process

PUT/admin/settings/{key}Session du tableau de bord

Paramètres

  • keystringpathobligatoire

Corps de la requête application/json

  • valuestring | number | boolean | string[]obligatoire

    New value; for a secret, the plain value (never returned)

  • reasonstringobligatoire
    • minLength: 3
    • maxLength: 500
  • expectedVersionnumber

    Version read before editing; 409 when it changed

Réponses

  • 200

    • keystringobligatoire
    • categorystringobligatoire
      • enum: "email", "platform", "payments"
    • descriptionstringobligatoire

      English help text

    • typeSettingTypeDtoobligatoire
      • kindstringobligatoire
        • enum: "string", "email", "integer", "boolean", "enum", "string_list", "secret"
      • maxLengthnumber

        string: maximum length

      • minnumber

        integer: minimum

      • maxnumber

        integer: maximum

      • optionsstring[]

        enum: allowed values

      • maxItemsnumber

        string_list: maximum number of entries

    • nullablebooleanobligatoire

      Accepts null (no value)

    • secretbooleanobligatoire

      Write-only: the value is never returned

    • requiresReauthbooleanobligatoire

      A write needs a re-authentication in the last 10 minutes

    • visibleWhenany | nullobligatoire
    • valuestring | number | boolean | string[]obligatoire

      Effective value (string, number, boolean or list); always null for secrets

    • defaultValuestring | number | boolean | string[]obligatoire

      Code default; always null for secrets

    • sourcestringobligatoire
      • enum: "database", "environment", "default"
    • secretSetbooleanobligatoire

      Secrets: a value is stored

    • secretLast4string | nullobligatoire

      Secrets: last four characters

    • versionnumberobligatoire

      Version of the database value, 0 when none

    • updatedAtstring (date-time) | nullobligatoire
    • updatedBystring (uuid) | nullobligatoire
    • storedValueInvalidbooleanobligatoire

      The stored value fails the current schema; the fallback applies

  • 401Not authenticated

  • 403konnect_staff_only for anyone but konnect_admin; reauth_required on sensitive writes

  • 404setting_not_found

  • 409setting_version_conflict

Exemples de code

curl -X PUT "$KONNECT_API_URL/admin/settings/key" \
  -H "Cookie: konnect_session=$KONNECT_SESSION" \
  -H "Content-Type: application/json" \
  -d '{
  "value": "value",
  "reason": "Switch to SES in eu-west-1",
  "expectedVersion": 1
}'

Exemple : corps de la requête

{
  "value": "value",
  "reason": "Switch to SES in eu-west-1",
  "expectedVersion": 1
}

Exemple : 200

{
  "key": "email.transport",
  "category": "email",
  "description": "description",
  "type": {
    "kind": "string",
    "maxLength": 1,
    "min": 1,
    "max": 1,
    "options": [
      "string"
    ],
    "maxItems": 1
  },
  "nullable": true,
  "secret": true,
  "requiresReauth": true,
  "visibleWhen": {
    "key": "email.transport",
    "equals": [
      "smtp"
    ]
  },
  "value": "value",
  "defaultValue": "defaultValue",
  "source": "database",
  "secretSet": true,
  "secretLast4": "secretLast4",
  "version": 1,
  "updatedAt": "2026-10-01T09:30:00.000Z",
  "updatedBy": "updatedBy",
  "storedValueInvalid": true
}

Delete the database value: the environment or code default applies

POST/admin/settings/{key}/resetSession du tableau de bord

Paramètres

  • keystringpathobligatoire

Corps de la requête application/json

  • reasonstringobligatoire
    • minLength: 3
    • maxLength: 500
  • expectedVersionnumber

Réponses

  • 200

    • keystringobligatoire
    • categorystringobligatoire
      • enum: "email", "platform", "payments"
    • descriptionstringobligatoire

      English help text

    • typeSettingTypeDtoobligatoire
      • kindstringobligatoire
        • enum: "string", "email", "integer", "boolean", "enum", "string_list", "secret"
      • maxLengthnumber

        string: maximum length

      • minnumber

        integer: minimum

      • maxnumber

        integer: maximum

      • optionsstring[]

        enum: allowed values

      • maxItemsnumber

        string_list: maximum number of entries

    • nullablebooleanobligatoire

      Accepts null (no value)

    • secretbooleanobligatoire

      Write-only: the value is never returned

    • requiresReauthbooleanobligatoire

      A write needs a re-authentication in the last 10 minutes

    • visibleWhenany | nullobligatoire
    • valuestring | number | boolean | string[]obligatoire

      Effective value (string, number, boolean or list); always null for secrets

    • defaultValuestring | number | boolean | string[]obligatoire

      Code default; always null for secrets

    • sourcestringobligatoire
      • enum: "database", "environment", "default"
    • secretSetbooleanobligatoire

      Secrets: a value is stored

    • secretLast4string | nullobligatoire

      Secrets: last four characters

    • versionnumberobligatoire

      Version of the database value, 0 when none

    • updatedAtstring (date-time) | nullobligatoire
    • updatedBystring (uuid) | nullobligatoire
    • storedValueInvalidbooleanobligatoire

      The stored value fails the current schema; the fallback applies

  • 401Not authenticated

  • 403konnect_staff_only for anyone but konnect_admin; reauth_required on sensitive writes

  • 404setting_not_found

  • 409setting_version_conflict

Exemples de code

curl -X POST "$KONNECT_API_URL/admin/settings/key/reset" \
  -H "Cookie: konnect_session=$KONNECT_SESSION" \
  -H "Content-Type: application/json" \
  -d '{
  "reason": "reason",
  "expectedVersion": 1
}'

Exemple : corps de la requête

{
  "reason": "reason",
  "expectedVersion": 1
}

Exemple : 200

{
  "key": "email.transport",
  "category": "email",
  "description": "description",
  "type": {
    "kind": "string",
    "maxLength": 1,
    "min": 1,
    "max": 1,
    "options": [
      "string"
    ],
    "maxItems": 1
  },
  "nullable": true,
  "secret": true,
  "requiresReauth": true,
  "visibleWhen": {
    "key": "email.transport",
    "equals": [
      "smtp"
    ]
  },
  "value": "value",
  "defaultValue": "defaultValue",
  "source": "database",
  "secretSet": true,
  "secretLast4": "secretLast4",
  "version": 1,
  "updatedAt": "2026-10-01T09:30:00.000Z",
  "updatedBy": "updatedBy",
  "storedValueInvalid": true
}

Changes of a setting, newest first (secrets masked)

GET/admin/settings/{key}/historySession du tableau de bord

Paramètres

  • keystringpathobligatoire
  • cursoranyquery

    nextCursor of the previous page

  • limitintegerquery
    • max: 200
    • default: 50

Réponses

  • 200

    • itemsSettingChangeDto[]obligatoire
      • idstring (uuid)obligatoire
      • keystringobligatoire
      • versionnumberobligatoire
      • actionstringobligatoire
        • enum: "set", "reset"
      • actorUserIdstring (uuid) | nullobligatoire
      • reasonstringobligatoire
      • beforeobject | nullobligatoire

        { value } or, for secrets, { masked: true, set }

      • afterobject | nullobligatoire
      • createdAtstring (date-time)obligatoire
    • nextCursorstring | nullobligatoire
  • 401Not authenticated

  • 403konnect_staff_only for anyone but konnect_admin; reauth_required on sensitive writes

  • 404setting_not_found

Exemples de code

curl -X GET "$KONNECT_API_URL/admin/settings/key/history" \
  -H "Cookie: konnect_session=$KONNECT_SESSION"

Exemple : 200

{
  "items": [
    {
      "id": "id",
      "key": "key",
      "version": 1,
      "action": "set",
      "actorUserId": "actorUserId",
      "reason": "reason",
      "before": {},
      "after": {},
      "createdAt": "2026-10-01T09:30:00.000Z"
    }
  ],
  "nextCursor": "nextCursor"
}