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

# अपडेट एप्लिकेशन API: ग्राहक एप्लिकेशन प्रबंधित करें

> Didit के PATCH /organizations/me/{org_id}/applications/{app_id}/ से रीसेलर ग्राहक एप्लिकेशन, ब्रांड, एनवायरनमेंट या अलग उपयोग मामलों का मेटाडेटा अपडेट करें।



एप्लिकेशन अपडेट करने का प्रॉम्प्ट
        प्रॉम्प्ट को क्लिपबोर्ड पर कॉपी करें



      
      

\<pre>

\`Partially update one Didit application's metadata (name, public URLs, redirect URIs, description). Credentials (client_id, api_key, uuid) are NEVER changed by this call.

Endpoint:
PATCH https://apx.didit.me/auth/v2/organizations/me/{org_id}/applications/{app_id}/

Authentication:
Authorization: Bearer <access_token>
The access token must belong to an OWNER or ADMIN of the organization.

Path parameters:
\- org_id (UUID, required) — Organization that owns the application.
\- app_id (UUID, required) — Application UUID to update.

Request body — PATCH semantics. Send ONLY the fields you want to change. Omitted fields are preserved.
\- name (string, optional) — Display name.
\- website_url (string, URL, optional) — Public homepage.
\- redirect_uris (array of strings, optional) — Allowlisted OAuth-style redirect URIs. The array REPLACES the previous value entirely.
\- terms_url (string, URL, optional) — Terms-of-service link.
\- privacy_url (string, URL, optional) — Privacy policy link.
\- description (string, optional) — Internal note (not shown to end users).
\- products is read-only: a products key in the body is ignored.
\- data_location (string, optional) — The application's data location, chosen when it was created. Naming the location it already has is accepted; any other location answers 400. One exception: the live application created with your organization (at sign-up or by POST /programmatic/verify-email/) has its location chosen by the first update that names data_location, once, while none of its API keys has been used and it has no verification session. Only "eu" (European Union, Ireland) is available today.

What does NOT change:
\- uuid, client_id, api_key — credentials stay the same. Existing integrations keep working; no key rotation happens here.
\- data_location — set when the application is created (see above for the one exception).

curl example — rename and move to a new domain:
curl -X PATCH "https://apx.didit.me/auth/v2/organizations/me/<ORG_ID>/applications/<APP_ID>/" \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme Production App",
"website_url": "https://app.acme.example"
}'

curl example — add a second redirect URI (full replacement of the array):
curl -X PATCH "https://apx.didit.me/auth/v2/organizations/me/<ORG_ID>/applications/<APP_ID>/" \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"redirect_uris": [
  "https://acme.example/callback",
  "https://staging.acme.example/callback"
]
}'

Response (200 OK):
The full application record after the change, including products (same shape as GET /organizations/me/{org_id}/applications/{app_id}/). uuid, client_id, and api_key are unchanged.

When to call:
\- Reseller customer rebrands → rename their application.
\- Domain migration → update website_url, terms_url, privacy_url.
\- Add or remove a staging redirect URI.
\- Refresh terms / privacy URLs shown in the verification flow.

Failure modes:
\- 400 — { "<field>": ["Enter a valid URL."] } for malformed website_url / redirect_uris / terms_url / privacy_url.
\- 400 — { "data_location": ["An application's data location can't be changed after it is created."] } for a location other than the application's own, and { "data_location": ["This data location is not available yet."] } for "au" or "mx". Nothing is changed.
\- 503 — { "detail": "We couldn't confirm that this application is unused. Try again in a moment.", "code": "data_location_check_unavailable" } only while choosing the first application's location. Nothing is changed; retry.
\- 401: { "detail": "Invalid access token" } or { "detail": "Expired access token" } when the token is malformed or expired.
\- 403: { "detail": "Only organization owners and admins can manage applications." } when you are a member of the organization but not an owner or admin.
\- 403: { "detail": "Your access to this organization is suspended." } when your membership in the organization is suspended.
\- 403: { "detail": "You do not have permission to perform this action." } when the request has no Authorization header.
\- 404: { "detail": "Organization not found." } when the organization does not exist or you are not a member of it, or { "detail": "Application not found." } when the application is not in that organization.

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

यहाँ पेस्ट करें

इस endpoint का उपयोग हर एप्लिकेशन को उस ग्राहक, ब्रांड, एनवायरनमेंट या आंतरिक उपयोग के मामले के अनुरूप रखने के लिए करें, जिसे वह दर्शाता है।रीसेलर्स के लिए, इससे आप हर ग्राहक के एप्लिकेशन का नाम बदल सकते हैं या उसे अपडेट कर सकते हैं, और क्रेडेंशियल्स किसी दूसरे ग्राहक के साथ साझा किए बिना ऐसा कर सकते हैं। डायरेक्ट ग्राहकों के लिए, यह एक ही संगठन के अंतर्गत रहते हुए प्रोडक्ट, क्षेत्र या एनवायरनमेंट को अलग रखने में मदद करता है।> [!NOTE]
>
> यह endpoint एप्लिकेशन का मेटाडेटा अपडेट करता है। जब तक आप क्रेडेंशियल्स अलग से रोटेट नहीं करते, `api_key` वही रहती है।## डेटा स्थानएप्लिकेशन का डेटा स्थान (`data_location`) एप्लिकेशन बनाते समय चुना जाता है और उसके बाद बदला नहीं जा सकता: जो अपडेट उसी स्थान का नाम लेता है जो एप्लिकेशन के पास पहले से है, वह स्वीकार किया जाता है, और कोई भी अन्य स्थान 400 लौटाता है।इसका एक अपवाद है: आपके संगठन के साथ बनाया गया लाइव एप्लिकेशन, जो साइन-अप के समय या [ईमेल सत्यापन](https://docs.didit.me/hi/auth-api/verify-email.md) के माध्यम से बनता है। एप्लिकेशन का पहला अपडेट जो `data_location` का नाम लेता है, उसका स्थान एक बार के लिए तय कर देता है, बशर्ते एप्लिकेशन की किसी भी API कुंजी का उपयोग न हुआ हो और उसका कोई सत्यापन सत्र न हो। कंसोल का **Name your first application** चरण इसी के आधार पर आपके द्वारा वहां चुना गया स्थान सहेजता है। अभी केवल `eu` स्थान उपलब्ध है: यूरोपीय संघ (आयरलैंड)।


## OpenAPI

````yaml hi/openapi-auth.json PATCH /organizations/me/{org_id}/applications/{app_id}/
openapi: 3.0.0
info:
  version: 1.0.0
  title: Didit Auth API
  description: >-
    डेवलपर्स और AI एजेंट्स के लिए प्रोग्रामेटिक रजिस्ट्रेशन और प्रमाणीकरण API। 2
    API कॉल्स में रजिस्टर करें -- किसी ब्राउज़र की आवश्यकता नहीं। सबसे अधिक
    एजेंट-अनुकूल पहचान सत्यापन प्लेटफ़ॉर्म।


    ## बेस URL


    इस विनिर्देश के सभी endpoints `https://apx.didit.me/auth/v2` पर होस्ट किए गए
    हैं। यह सत्यापन API (`https://verification.didit.me/v3`) से एक अलग होस्ट है।
    इनका अंतर स्पष्ट रखें: यह ऑथ होस्ट आपके **JWT access tokens** जारी करता है
    और आपको अपने **संगठनों** और **एप्लिकेशन्स** को सूचीबद्ध और प्रबंधित करने की
    अनुमति देता है। सत्यापन होस्ट वह जगह है जहां आप इस API द्वारा लौटाए गए
    **`api_key`** के साथ प्रमाणित होकर सत्रों, वर्कफ़्लो, AML आदि को कॉल करते
    हैं।


    ## ऑथ फ़्लो कैसे काम करता है


    1. `POST /programmatic/register/` — ईमेल + पासवर्ड सबमिट करें।

    2. ईमेल द्वारा 6-वर्णों का अल्फ़ान्यूमेरिक कोड प्राप्त करें।

    3. `POST /programmatic/verify-email/` — कोड सबमिट करें। आपको एक JWT
    `access_token`, एक `refresh_token`, एक संगठन और `client_id` + `api_key` के
    साथ एक डिफ़ॉल्ट एप्लिकेशन वापस मिलता है।

    4. `api_key` को सहेजें। `https://verification.didit.me/v3/...` पर प्रत्येक
    कॉल के लिए इसे `x-api-key` के रूप में उपयोग करें।

    5. भविष्य में किसी भी मशीन से, `POST /programmatic/login/` आपके ईमेल +
    पासवर्ड के बदले एक नया JWT प्राप्त करता है, फिर क्रेडेंशियल्स को रिकवर या
    रोटेट करने के लिए `GET /organizations/me/` और एप्लिकेशन endpoints को कॉल
    करें।


    JWT केवल इस विनिर्देश में **Account Management** endpoints के लिए आवश्यक है;
    सत्यापन API ट्रैफ़िक लंबी अवधि वाले `api_key` का उपयोग करता है, न कि JWT का।


    ## कन्वेंशन


    - सभी अनुरोध और रिस्पॉन्स बॉडी JSON (`Content-Type: application/json`) हैं।

    - **`POST /programmatic/register/` का परीक्षण करते समय वास्तविक, डिलीवर होने
    योग्य ईमेल पते का उपयोग करें।** endpoint सत्यापन कोड को सिंक्रोनस रूप से
    भेजता है, इसलिए आरक्षित परीक्षण डोमेन (`@example.com`, `@example.org`,
    `@*.test`, `@*.example`, `@*.invalid`) पर पतों को मेल डिलीवरी द्वारा
    अस्वीकार कर दिया जाता है और अनुरोध `500` लौटाता है। नमूनों में दिए गए
    `you@yourdomain.com` प्लेसहोल्डर को ऐसे इनबॉक्स से बदलें जिसे आप वास्तव में
    पढ़ सकते हैं।

    - सत्यापन त्रुटियां दो में से किसी एक एन्वेलप के साथ HTTP `400` लौटाती हैं:
    फ़ील्ड-स्तरीय समस्याओं के लिए `{"field": ["message", ...]}` या
    व्यावसायिक-नियम त्रुटियों के लिए `{"detail": "message"}`। कुछ वैलिडेटर
    (रजिस्टर पर पासवर्ड की मजबूती, verify-email पर कोड की समय-सीमा समाप्ति)
    वर्तमान में फ़ील्ड-की वाले फ़ॉर्म के बजाय केवल एक ऐरे `["message"]` के साथ
    रिस्पॉन्स देते हैं -- यह एक ज्ञात सर्वर-साइड विसंगति है, इसलिए क्लाइंट कोड
    को दोनों प्रारूपों को स्वीकार करना चाहिए।

    - प्रमाणीकरण त्रुटियां HTTP `401` (अमान्य bearer token) या `403` (अनुपलब्ध
    bearer token / अपर्याप्त विशेषाधिकार) के साथ `{"detail": "..."}` के रूप में
    वापस आती हैं।

    - रेट लिमिट रिस्पॉन्स में सेकंड में कूलडाउन के साथ एक `wait` फ़ील्ड शामिल
    होता है।
servers:
  - url: https://apx.didit.me/auth/v2
    description: प्रोडक्शन ऑथ सर्वर
security: []
tags:
  - name: Programmatic Auth
    description: >-
      ईमेल-और-पासवर्ड खाता जीवनचक्र: रजिस्टर करें, सत्यापित करें, लॉगिन करें। यह
      JWT `access_token` लौटाता है जिसका उपयोग आप खाता प्रबंधन endpoints के लिए
      करते हैं, साथ ही (सत्यापन पर) आपके पहले एप्लिकेशन की `client_id` और
      `api_key` भी।
  - name: Account Management
    description: >-
      प्रमाणित endpoints (JWT bearer) जो संगठनों को सूचीबद्ध करते हैं और
      एप्लिकेशन बनाते, प्राप्त करते या अपडेट करते हैं। इनका उपयोग उस `api_key`
      को पुनर्प्राप्त या रोटेट करने के लिए करें जिसके साथ आप सत्यापन API कॉल को
      प्रमाणित करते हैं।
paths:
  /organizations/me/{org_id}/applications/{app_id}/:
    patch:
      tags:
        - Account Management
      summary: एप्लिकेशन अपडेट करें
      description: >-
        एप्लिकेशन मेटाडेटा (नाम, URLs, रीडायरेक्ट URIs) अपडेट करें। `api_key` और
        `client_id` कभी रोटेट नहीं किए जाते हैं। `products` केवल-पढ़ने के लिए
        है: बॉडी में `products` कुंजी को अनदेखा कर दिया जाता है। एप्लिकेशन बनने
        के बाद `data_location` को बदला नहीं जा सकता है, सिवाय आपके संगठन के साथ
        बनाए गए लाइव एप्लिकेशन पर एक बार, जब तक कि इसका उपयोग न किया गया हो
        (अनुरोध बॉडी देखें)। इसके लिए owner/admin JWT आवश्यक है।
      operationId: update_organization_application
      parameters:
        - name: org_id
          in: path
          required: true
          description: उस संगठन का UUID जो एप्लिकेशन का स्वामी है।
          schema:
            type: string
            format: uuid
            example: a1b2c3d4-5678-90ab-cdef-111111111111
        - name: app_id
          in: path
          required: true
          description: अपडेट किए जाने वाले एप्लिकेशन का UUID।
          schema:
            type: string
            format: uuid
            example: b2c3d4e5-6789-01bc-defg-222222222222
      requestBody:
        required: true
        description: >-
          केवल वे फ़ील्ड भेजें जिन्हें आप बदलना चाहते हैं। PATCH सेमेंटिक्स:
          अनुपस्थित फ़ील्ड सुरक्षित रखे जाते हैं।
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationUpdateRequest'
            examples:
              RenameCustomerApplication:
                summary: नाम बदलें और नए डोमेन पर ले जाएं
                value:
                  name: Acme Production App
                  website_url: https://app.acme.example
              UpdateRedirectUris:
                summary: एक दूसरा रीडायरेक्ट URI जोड़ें
                value:
                  redirect_uris:
                    - https://acme.example/callback
                    - https://staging.acme.example/callback
              UpdatePolicies:
                summary: शर्तें और गोपनीयता URL रीफ़्रेश करें
                value:
                  terms_url: https://acme.example/v2/terms
                  privacy_url: https://acme.example/v2/privacy
      responses:
        '200':
          description: >-
            एप्लिकेशन अपडेट किया गया। रिस्पॉन्स परिवर्तन के बाद का पूरा
            एप्लिकेशन रिकॉर्ड है, जिसमें `products` शामिल हैं; `uuid`,
            `client_id`, और `api_key` अपरिवर्तित रहते हैं।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
              examples:
                Success:
                  value:
                    uuid: b2c3d4e5-6789-01bc-defg-222222222222
                    name: Acme Production App
                    client_id: S9LIYGSoWNuGMLHsvEt9dQ
                    api_key: sk_live_example_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                    website_url: https://app.acme.example
                    redirect_uris:
                      - https://acme.example/callback
                    terms_url: https://acme.example/terms
                    privacy_url: https://acme.example/privacy
                    description: null
                    created_at: '2025-06-01T10:00:00Z'
                    data_location: eu
                    products:
                      - product: identity
                        status: enabled
                        modules:
                          user_verification: true
                          business_verification: true
                          case_management: true
                      - product: transactions
                        status: disabled
                        modules:
                          travel_rule: true
                          case_management: true
                      - product: authentication
                        status: disabled
                        modules: {}
        '400':
          description: >-
            अनुरोध बॉडी में सत्यापन त्रुटि: उदाहरण के लिए एक विकृत URL, एक
            `data_location` जो अभी उपलब्ध नहीं है, या एप्लिकेशन के अपने स्थान के
            अलावा कोई अन्य `data_location`। कुछ भी बदला नहीं गया है।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
              examples:
                InvalidUrl:
                  value:
                    website_url:
                      - Enter a valid URL.
                DataLocationFixed:
                  summary: एप्लिकेशन के अपने डेटा स्थान के अलावा कोई अन्य स्थान
                  value:
                    data_location:
                      - >-
                        An application's data location can't be changed after it
                        is created.
                DataLocationNotAvailable:
                  summary: एक डेटा स्थान जो जल्द ही आ रहा है
                  value:
                    data_location:
                      - This data location is not available yet.
        '401':
          description: >-
            एक्सेस token विकृत, अमान्य या समय-सीमा समाप्त है। `POST
            /programmatic/login/` के साथ एक नया प्राप्त करें।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthError'
              examples:
                InvalidToken:
                  value:
                    detail: Invalid access token
                ExpiredToken:
                  value:
                    detail: Expired access token
        '403':
          description: >-
            आप इस एप्लिकेशन को अपडेट नहीं कर सकते। संगठन का एक सदस्य जो स्वामी
            या व्यवस्थापक नहीं है, उसे `Only organization owners and admins can
            manage applications.` प्राप्त होता है। एक स्वामी या व्यवस्थापक जिसकी
            संगठन तक पहुँच निलंबित है, उसे `Your access to this organization is
            suspended.` प्राप्त होता है। बिना `Authorization` हेडर वाले अनुरोध
            को `You do not have permission to perform this action.` प्राप्त होता
            है।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthError'
              examples:
                NotOwnerOrAdmin:
                  summary: सदस्य जो स्वामी या व्यवस्थापक नहीं है
                  value:
                    detail: >-
                      Only organization owners and admins can manage
                      applications.
                Suspended:
                  summary: सदस्यता निलंबित
                  value:
                    detail: Your access to this organization is suspended.
                MissingToken:
                  summary: कोई Authorization हेडर नहीं
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            संगठन मौजूद नहीं है या आप इसके सदस्य नहीं हैं, या उस संगठन में
            एप्लिकेशन मौजूद नहीं है।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthError'
              examples:
                OrganizationNotFound:
                  summary: संगठन नहीं मिला, या आप सदस्य नहीं हैं
                  value:
                    detail: Organization not found.
                ApplicationNotFound:
                  summary: इस संगठन में ऐसा कोई एप्लिकेशन नहीं है
                  value:
                    detail: Application not found.
        '503':
          description: >-
            केवल तभी जब अपडेट आपके संगठन के साथ बनाए गए लाइव एप्लिकेशन के लिए
            कोई अन्य डेटा स्थान चुनता है: Didit पुष्टि नहीं कर सका कि एप्लिकेशन
            में अभी तक कोई सत्यापन सत्र नहीं है, इसलिए कुछ भी नहीं बदला गया।
            अनुरोध का पुनः प्रयास करें।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableError'
              examples:
                DataLocationCheckUnavailable:
                  value:
                    detail: >-
                      We couldn't confirm that this application is unused. Try
                      again in a moment.
                    code: data_location_check_unavailable
      security:
        - BearerAuth: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -X PATCH
            "https://apx.didit.me/auth/v2/organizations/me/$ORG_ID/applications/$APP_ID/"
            \
              -H "Authorization: Bearer $ACCESS_TOKEN" \
              -H "Content-Type: application/json" \
              -d '{
                "name": "Acme Production App",
                "website_url": "https://app.acme.example"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Use the access token that account.login returns.
            client = Didit(account_token="YOUR_ACCESS_TOKEN")

            result = client.account.applications.update(
                "a1b2c3d4-5678-90ab-cdef-111111111111",
                "b2c3d4e5-6789-01bc-defg-222222222222",
                name="Acme Production App",
                website_url="https://app.acme.example",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Use the access token that account.login returns.
            const didit = new Didit({ accountToken: "YOUR_ACCESS_TOKEN" });

            const result = await didit.account.applications.update(
              "a1b2c3d4-5678-90ab-cdef-111111111111",
              "b2c3d4e5-6789-01bc-defg-222222222222",
              {
                name: "Acme Production App",
                website_url: "https://app.acme.example",
              },
            );
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Use the access token that account.login returns.\nclient := didit.NewClient(option.WithAccountToken(\"YOUR_ACCESS_TOKEN\"))\n\nresult, err := client.Account.Applications.Update(ctx, \"a1b2c3d4-5678-90ab-cdef-111111111111\", \"b2c3d4e5-6789-01bc-defg-222222222222\", didit.ApplicationUpdateRequest{\n\tName:       didit.String(\"Acme Production App\"),\n\tWebsiteURL: didit.String(\"https://app.acme.example\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.ApplicationUpdateRequest;


            // Use the access token that account.login returns.

            Didit client =
            Didit.builder().accountToken("YOUR_ACCESS_TOKEN").build();


            var result =
            client.account().applications().update("a1b2c3d4-5678-90ab-cdef-111111111111",
            "b2c3d4e5-6789-01bc-defg-222222222222",
            ApplicationUpdateRequest.builder()
                    .name("Acme Production App")
                    .websiteUrl("https://app.acme.example")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Use the access token that account.login returns.

            $didit = new DiditClient(accountToken: 'YOUR_ACCESS_TOKEN');


            $result =
            $didit->account->applications->update('a1b2c3d4-5678-90ab-cdef-111111111111',
            'b2c3d4e5-6789-01bc-defg-222222222222', [
                'name' => 'Acme Production App',
                'website_url' => 'https://app.acme.example',
            ]);

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Use the access token that account.login returns.
            didit = Didit::Client.new(account_token: "YOUR_ACCESS_TOKEN")

            result = didit.account.applications.update(
              "a1b2c3d4-5678-90ab-cdef-111111111111",
              "b2c3d4e5-6789-01bc-defg-222222222222",
              name: "Acme Production App",
              website_url: "https://app.acme.example"
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Use the access token that account.login returns.

            using var client = new DiditClient(new DiditClientOptions {
            AccountToken = "YOUR_ACCESS_TOKEN" });


            var result = await
            client.Account.Applications.UpdateAsync("a1b2c3d4-5678-90ab-cdef-111111111111",
            "b2c3d4e5-6789-01bc-defg-222222222222", new ApplicationUpdateRequest

            {
                Name = "Acme Production App",
                WebsiteUrl = "https://app.acme.example",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    ApplicationUpdateRequest:
      type: object
      description: >-
        एप्लिकेशन मेटाडेटा के लिए PATCH बॉडी। केवल वे फ़ील्ड भेजें जिन्हें आप
        बदलना चाहते हैं; छोड़े गए फ़ील्ड सुरक्षित रहते हैं। `uuid`, `client_id`,
        और `api_key` को अपडेट नहीं किया जा सकता है। `products` केवल पढ़ने के लिए
        है: बॉडी में `products` कुंजी को अनदेखा कर दिया जाता है। एप्लिकेशन बनने
        के बाद `data_location` को बदला नहीं जा सकता: इसके पास पहले से मौजूद
        स्थान को स्वीकार किया जाता है, और कोई अन्य स्थान 400 का उत्तर देता है।
        इसका एकमात्र अपवाद आपके संगठन के साथ बनाया गया लाइव एप्लिकेशन है: पहला
        अपडेट जो `data_location` निर्दिष्ट करता है, उसे एक बार चुनता है, जबकि
        एप्लिकेशन की किसी भी API कुंजी का उपयोग नहीं किया गया है और इसका कोई
        सत्यापन सत्र नहीं है।
      properties:
        name:
          type: string
          description: एप्लिकेशन प्रदर्शन नाम।
          example: Acme Production App
        website_url:
          type: string
          description: इस एप्लिकेशन से संबद्ध वेबसाइट या ऐप URL।
          example: https://app.acme.example
        redirect_uris:
          type: array
          items:
            type: string
          description: >-
            OAuth-शैली और सत्यापन रीडायरेक्ट फ़्लो के लिए स्वीकृत रीडायरेक्ट
            URI।
          example:
            - https://acme.example/callback
        terms_url:
          type: string
          description: सत्यापन फ़्लो में दिखाया गया सेवा की शर्तों का URL।
        privacy_url:
          type: string
          description: सत्यापन फ़्लो में दिखाया गया गोपनीयता नीति URL।
        description:
          type: string
          description: एप्लिकेशन के लिए आंतरिक विवरण।
        data_location:
          $ref: '#/components/schemas/ApplicationDataLocation'
    Application:
      type: object
      description: >-
        पूर्ण एप्लिकेशन रिकॉर्ड। निर्माण के बाद `uuid`, `client_id`, और
        `api_key` कभी नहीं बदलते। `data_location` भी नहीं बदलता, सिवाय आपके
        संगठन के साथ बनाए गए लाइव एप्लिकेशन पर उपयोग किए जाने से पहले एक बार
        (अपडेट अनुरोध देखें)।
      properties:
        uuid:
          type: string
          format: uuid
          description: एप्लिकेशन UUID। बाद के कॉलों में `{app_id}` के रूप में उपयोग करें।
          example: b2c3d4e5-6789-01bc-defg-222222222222
        name:
          type: string
          description: Didit कंसोल में दिखाया जाने वाला एप्लिकेशन प्रदर्शन नाम।
          example: Acme Production App
        client_id:
          type: string
          description: >-
            सार्वजनिक क्लाइंट पहचानकर्ता, OAuth-शैली फ़्लो में एम्बेड करने के
            लिए सुरक्षित।
          example: S9LIYGSoWNuGMLHsvEt9dQ
        api_key:
          type: string
          description: >-
            दीर्घकालिक सीक्रेट (जिसे `client_secret` भी कहा जाता है)।
            `https://verification.didit.me/v3/...` (सत्र, वर्कफ़्लो, AML, आदि)
            के प्रत्येक कॉल के लिए `x-api-key` हेडर के रूप में उपयोग करें। इसे
            क्रेडेंशियल की तरह रखें; क्लाइंट-साइड पर कभी भी उजागर न करें। नई
            कुंजियाँ `sk_live_` (लाइव एप्लिकेशन) या `sk_test_` (सैंडबॉक्स
            एप्लिकेशन) से शुरू होती हैं, जिसके बाद 43 URL-सुरक्षित वर्ण (अक्षर,
            अंक, `-` और `_`) होते हैं। इस प्रारूप से पहले बनाई गई कुंजियों में
            कोई उपसर्ग नहीं होता है और वे बिना किसी बदलाव के काम करती रहती हैं।
            आपके द्वारा अपना खाता पुनर्प्राप्त करने के 72 घंटों तक, सूचीबद्ध
            करना, प्राप्त करना और अपडेट करना कुंजी के स्थान पर यहाँ एक खाली
            स्ट्रिंग लौटाते हैं।
          example: sk_live_example_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        website_url:
          type: string
          nullable: true
          description: इस एप्लिकेशन से संबद्ध वेबसाइट या ऐप URL।
          example: https://acme.example
        redirect_uris:
          type: array
          items:
            type: string
          description: >-
            OAuth-शैली और सत्यापन रीडायरेक्ट फ़्लो के लिए स्वीकृत रीडायरेक्ट
            URI।
          example:
            - https://acme.example/callback
        terms_url:
          type: string
          nullable: true
          description: सत्यापन फ़्लो में दिखाया गया सेवा की शर्तों का URL।
          example: https://acme.example/terms
        privacy_url:
          type: string
          nullable: true
          description: सत्यापन फ़्लो में दिखाया गया गोपनीयता नीति URL।
          example: https://acme.example/privacy
        description:
          type: string
          nullable: true
          description: >-
            एप्लिकेशन के लिए आंतरिक विवरण (अंतिम उपयोगकर्ताओं को नहीं दिखाया
            जाता)।
        created_at:
          type: string
          format: date-time
          example: '2025-06-01T10:00:00Z'
        data_location:
          $ref: '#/components/schemas/ApplicationDataLocation'
        products:
          type: array
          readOnly: true
          description: >-
            एप्लिकेशन के उत्पाद। हमेशा तीनों, इसी क्रम में: `identity`,
            `transactions`, `authentication`। एक नए एप्लिकेशन में प्रत्येक
            मॉड्यूल चालू होने के साथ `identity` सक्षम होती है, और `transactions`
            व `authentication` अक्षम होते हैं। केवल-पढ़ने योग्य: निर्माण या
            अपडेट बॉडी में `products` कुंजी को अनदेखा कर दिया जाता है।
          items:
            $ref: '#/components/schemas/ApplicationProduct'
          example:
            - product: identity
              status: enabled
              modules:
                user_verification: true
                business_verification: true
                case_management: true
            - product: transactions
              status: disabled
              modules:
                travel_rule: true
                case_management: true
            - product: authentication
              status: disabled
              modules: {}
    ValidationError:
      description: >-
        सत्यापन त्रुटि बॉडी। अभीष्ट एनवलप फ़ील्ड-स्तरीय त्रुटियों के लिए
        `{field: ["message", ...]}` मैप या व्यावसायिक-नियम त्रुटियों के लिए
        `{detail: "..."}` सिंगल-की एनवलप है। मुट्ठी भर सत्यापनकर्ता (register पर
        पासवर्ड स्ट्रेंथ, verify-email पर कोड वैधता) वर्तमान में एक बेयर ऐरे
        `["message"]` के साथ रिस्पॉन्स देते हैं -- ज्ञात सर्वर-साइड विसंगति।
        नीचे दिया गया स्कीमा उस बेयर-ऐरे शाखा को बनाए रखता है ताकि इस विनिर्देश
        से उत्पन्न क्लाइंट कोड आज के रिस्पॉन्स को डिसेरिएलाइज़ कर सके, लेकिन नए
        क्लाइंट कोड को इसे प्रासंगिक फ़ील्ड-की वाले रूप (`{password: [...]}` या
        `{code: [...]}`) के रूप में मानना चाहिए और सर्वर अनुबंध उस आकार पर
        अभिसरित होगा।
      oneOf:
        - type: object
          additionalProperties:
            type: array
            items:
              type: string
          example:
            email:
              - Enter a valid email address.
        - type: object
          properties:
            detail:
              type: string
          example:
            detail: An account with this email already exists.
        - type: array
          items:
            type: string
          example:
            - Invalid or expired verification code.
    AuthError:
      type: object
      description: प्रमाणीकरण / प्राधिकरण / नहीं-मिला त्रुटि एनवलप।
      properties:
        detail:
          type: string
          example: Invalid access token
    ServiceUnavailableError:
      type: object
      description: >-
        अनुरोध अभी पूरा नहीं किया जा सका और कुछ भी नहीं बदला गया। कुछ ही क्षणों
        में पुनः प्रयास करें।
      properties:
        detail:
          type: string
          example: >-
            We couldn't confirm that this application is unused. Try again in a
            moment.
        code:
          type: string
          example: data_location_check_unavailable
    ApplicationDataLocation:
      type: string
      enum:
        - eu
        - au
        - mx
      description: >-
        एप्लिकेशन का सत्यापन डेटा कहाँ संग्रहीत और संसाधित किया जाता है, जिसे
        एप्लिकेशन बनाते समय चुना जाता है। `eu` यूरोपीय संघ (आयरलैंड) है, जो
        डिफ़ॉल्ट है। `au` (ऑस्ट्रेलिया, सिडनी) और `mx` (मेक्सिको) जल्द ही आ रहे
        हैं: उनका नाम देने वाला अनुरोध 400 `This data location is not available
        yet.` उत्तर देता है। किसी संगठन का सैंडबॉक्स एप्लिकेशन हमेशा यूरोपीय संघ
        में होता है।
      example: eu
    ApplicationProduct:
      type: object
      description: >-
        किसी एप्लिकेशन का एक उत्पाद और उसकी स्थिति। केवल-पठन: एप्लिकेशन endpoint
        इसे लौटाते हैं और अनुरोध बॉडी में इसे अनदेखा करते हैं।
      properties:
        product:
          type: string
          enum:
            - identity
            - transactions
            - authentication
          description: >-
            `identity` (पहचान सत्यापन), `transactions` (लेन-देन निगरानी) या
            `authentication` (प्रमाणीकरण)।
          example: identity
        status:
          type: string
          enum:
            - enabled
            - early_access
            - disabled
          description: >-
            क्या इस एप्लिकेशन के लिए प्रोडक्ट चालू है। `early_access` केवल
            `authentication` पर लागू होता है, जिसे Didit आपके लिए चालू करता है।
          example: enabled
        modules:
          type: object
          additionalProperties:
            type: boolean
          description: >-
            उत्पाद के मॉड्यूल स्विच, प्रत्येक `true` या `false`। `identity` में
            `user_verification`, `business_verification` और `case_management`
            हैं। `transactions` में `travel_rule` और `case_management` हैं।
            `authentication` में कोई नहीं है (`{}`)। `case_management` एक सेटिंग
            है जो `identity` और `transactions` दोनों के अंतर्गत दिखाई जाती है,
            इसलिए दोनों पर इसका मान समान होता है।
          example:
            user_verification: true
            business_verification: true
            case_management: true
      required:
        - product
        - status
        - modules
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        `POST /programmatic/login/` या `POST /programmatic/verify-email/` द्वारा
        लौटाया गया RS256-हस्ताक्षरित JWT `access_token`। `Authorization: Bearer
        <access_token>` के रूप में भेजें। डिफ़ॉल्ट जीवनकाल 86400 सेकंड (24 घंटे)
        है। यह token केवल `apx.didit.me/auth/v2` पर खाता प्रबंधन endpoints के
        लिए मान्य है। सत्यापन API (`verification.didit.me/v3`) इसके बजाय
        `x-api-key` के रूप में दीर्घकालिक `api_key` का उपयोग करता है।

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.