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

# Xóa Đặc Quyền

> Xóa mềm một đặc quyền. Các cấp đã tồn tại trên đặc quyền không bị ảnh hưởng.

<Warning>
  Xóa một đặc quyền là **xóa mềm làm ẩn các cấp hiện có khỏi cổng khách hàng**. Nó không thu hồi quyền truy cập từ phía nền tảng:

  * Các cấp liên kết với đặc quyền vẫn còn trong cơ sở dữ liệu và giữ nguyên trạng thái hiện tại `status`.
  * Vai trò Discord, quyền truy cập cộng tác viên GitHub, quyền truy cập Notion, thành viên Telegram, khóa license, và các URL tệp kỹ thuật số vẫn hợp lệ.
  * Không có `entitlement_grant.revoked` webhook nào được phát ra, và `revoked_at` / `revocation_reason` không được thiết lập.

  Khách hàng ngừng thấy các quyền truy cập này trong cổng thông tin khách hàng của họ, nhưng quyền truy cập của họ trên nền tảng cơ bản sẽ tiếp tục cho đến khi vòng đời đăng ký/thanh toán hủy nó (hủy bỏ, hoàn tiền) hoặc bạn thu hồi từng quyền truy cập theo cách thủ công qua [`DELETE /entitlements/{id}/grants/{grant_id}`](/api-reference/entitlements/revoke-grant).

  Nếu bạn cần cắt hoàn toàn quyền truy cập, hãy thu hồi các cấp trước, sau đó xóa đặc quyền.
</Warning>


## OpenAPI

````yaml delete /entitlements/{id}
openapi: 3.1.0
info:
  title: public
  description: ''
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  version: 1.106.2
servers:
  - url: https://test.dodopayments.com/
    description: Test Mode Server Host
  - url: https://live.dodopayments.com/
    description: Live Mode Server Host
security: []
tags:
  - name: Products
  - name: Payments
  - name: Subscriptions
  - name: Addons
  - name: Customers
  - name: Refunds
  - name: Disputes
  - name: Events
  - name: License Keys
  - name: Entitlements
  - name: Licenses
  - name: Discounts
  - name: Meters
  - name: Credit Entitlements
  - name: Credit Entitlement Balances
  - name: Outgoing Webhooks
  - name: Checkout
  - name: Webhook Events
  - name: Payment Connector Webhooks
paths:
  /entitlements/{id}:
    delete:
      tags:
        - Entitlements
      summary: DELETE /entitlements/{id} (soft-delete)
      operationId: delete_entitlement_public_handler
      parameters:
        - name: id
          in: path
          description: Entitlement ID
          required: true
          schema:
            type: string
          example: ent_jt7jcvI79Xh8eehqgWdcm
      responses:
        '200':
          description: Entitlement deactivated
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
        '500':
          description: Something went wrong
      security:
        - API_KEY: []
      x-codeSamples:
        - lang: JavaScript
          source: |-
            import DodoPayments from 'dodopayments';

            const client = new DodoPayments({
              bearerToken: process.env['DODO_PAYMENTS_API_KEY'], // This is the default and can be omitted
            });

            await client.entitlements.delete('ent_jt7jcvI79Xh8eehqgWdcm');
        - lang: Python
          source: |-
            import os
            from dodopayments import DodoPayments

            client = DodoPayments(
                bearer_token=os.environ.get("DODO_PAYMENTS_API_KEY"),  # This is the default and can be omitted
            )
            client.entitlements.delete(
                "ent_jt7jcvI79Xh8eehqgWdcm",
            )
        - lang: Go
          source: "package main\n\nimport (\n\t\"context\"\n\n\t\"github.com/dodopayments/dodopayments-go\"\n\t\"github.com/dodopayments/dodopayments-go/option\"\n)\n\nfunc main() {\n\tclient := dodopayments.NewClient(\n\t\toption.WithBearerToken(\"My Bearer Token\"),\n\t)\n\terr := client.Entitlements.Delete(context.TODO(), \"ent_jt7jcvI79Xh8eehqgWdcm\")\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n}\n"
        - lang: Java
          source: >-
            package com.dodopayments.api.example;


            import com.dodopayments.api.client.DodoPaymentsClient;

            import com.dodopayments.api.client.okhttp.DodoPaymentsOkHttpClient;

            import
            com.dodopayments.api.models.entitlements.EntitlementDeleteParams;


            public final class Main {
                private Main() {}

                public static void main(String[] args) {
                    DodoPaymentsClient client = DodoPaymentsOkHttpClient.fromEnv();

                    client.entitlements().delete("ent_jt7jcvI79Xh8eehqgWdcm");
                }
            }
        - lang: Kotlin
          source: >-
            package com.dodopayments.api.example


            import com.dodopayments.api.client.DodoPaymentsClient

            import com.dodopayments.api.client.okhttp.DodoPaymentsOkHttpClient

            import
            com.dodopayments.api.models.entitlements.EntitlementDeleteParams


            fun main() {
                val client: DodoPaymentsClient = DodoPaymentsOkHttpClient.fromEnv()

                client.entitlements().delete("ent_jt7jcvI79Xh8eehqgWdcm")
            }
        - lang: Ruby
          source: >-
            require "dodopayments"


            dodo_payments = Dodopayments::Client.new(
              bearer_token: "My Bearer Token",
              environment: "test_mode" # defaults to "live_mode"
            )


            result =
            dodo_payments.entitlements.delete("ent_jt7jcvI79Xh8eehqgWdcm")


            puts(result)
        - lang: PHP
          source: |-
            <?php

            require_once dirname(__DIR__) . '/vendor/autoload.php';

            use Dodopayments\Client;
            use Dodopayments\Core\Exceptions\APIException;

            $client = new Client(
              bearerToken: getenv('DODO_PAYMENTS_API_KEY') ?: 'My Bearer Token',
              environment: 'test_mode',
            );

            try {
              $result = $client->entitlements->delete('ent_jt7jcvI79Xh8eehqgWdcm');

              var_dump($result);
            } catch (APIException $e) {
              echo $e->getMessage();
            }
        - lang: C#
          source: >-
            using DodoPayments.Client;

            using DodoPayments.Client.Models.Entitlements;


            DodoPaymentsClient client = new();


            EntitlementDeleteParams parameters = new() { ID =
            "ent_jt7jcvI79Xh8eehqgWdcm" };


            await client.Entitlements.Delete(parameters);
        - lang: Rust
          source: |-
            use dodopayments::Client;

            #[tokio::main]
            async fn main() -> dodopayments::Result<()> {
                let client = Client::from_env()?;
                let id = "id";
                let result = client
                    .entitlements()
                    .delete()
                    .id(id)
                    .await?;
                println!("{result:?}");
                Ok(())
            }
components:
  securitySchemes:
    API_KEY:
      type: http
      scheme: bearer

````