> This page is for API Reference.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.navipartner.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.navipartner.com/_mcp/server.

# Confirm Revoke Ticket

POST https://api.npretail.app/{tenant}/{environment}/{company}/ticket/{ticketId}/confirmRevoke
Content-Type: application/json

Confirms and executes the revocation of a ticket using the revokeId obtained from Request Revoke Ticket. This step finalizes the cancellation, making the ticket invalid for entry or use and releasing any associated resources. It may include additional customer details such as the ticketHolder name, notificationAddress for sending tickets or notifications, and a paymentReference to link the reservation to a payment transaction.

Reference: https://docs.navipartner.com/apis/api-reference/ticketing/service-ticket/confirm-revoke-ticket

## Authentication

- `x-np-api-key` header (required) — API Key authentication via header

## Request

### Path parameters

- `tenant` (string, required) — Your Entra Tenant ID. [More details.](/paths#1-tenant)
- `environment` (string, required) — Your Business Central Environment. [More details.](/paths#2-environment)
- `company` (string, required) — Your Business Central Company. [More details.](/paths#3-company)
- `ticketId` (UUID, required) — The unique identifier of a ticket

### Body (application/json)

This endpoint expects a ConfirmRevokeTicketRequest.

- `revokeId` (string, required) — A unique token that identifies a ticket reservation
- `ticketHolder` (string, optional) — The name of the person holding the ticket(s)
- `ticketHolderLanguage` (string, optional) — The language code the ticket holder wants to receive notifications in.
- `notificationAddress` (string, optional) — The email address or mobile phone number to send tickets and notifications to
- `paymentReference` (string, optional) — A reference to the payment transaction. Unless provided, the reservation is not considered paid. A confirmed unpaid reservation must be paid on site before the tickets are valid for usage.

## Response

### 200

- `revokeId` (string, required) — A unique token that identifies a ticket reservation
- `status` (string, required)

## Examples

**Request**

```json
{
  "revokeId": "R123456BAR789BAZ00",
  "ticketHolder": "John Doe",
  "ticketHolderLanguage": "ENU",
  "notificationAddress": "john@acme.com",
  "paymentReference": "R-1234"
}
```

**Response**

```json
{
  "revokeId": "R123456BAR789BAZ00",
  "status": "revoked"
}
```

**SDK Code**

```python
import requests

url = "https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./ticket/12345678-1234-1234-1234-123456789012/confirmRevoke"

payload = {
    "revokeId": "R123456BAR789BAZ00",
    "ticketHolder": "John Doe",
    "ticketHolderLanguage": "ENU",
    "notificationAddress": "john@acme.com",
    "paymentReference": "R-1234"
}
headers = {
    "x-np-api-key": "<NaviPartner API Key>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./ticket/12345678-1234-1234-1234-123456789012/confirmRevoke';
const options = {
  method: 'POST',
  headers: {'x-np-api-key': '<NaviPartner API Key>', 'Content-Type': 'application/json'},
  body: '{"revokeId":"R123456BAR789BAZ00","ticketHolder":"John Doe","ticketHolderLanguage":"ENU","notificationAddress":"john@acme.com","paymentReference":"R-1234"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./ticket/12345678-1234-1234-1234-123456789012/confirmRevoke"

	payload := strings.NewReader("{\n  \"revokeId\": \"R123456BAR789BAZ00\",\n  \"ticketHolder\": \"John Doe\",\n  \"ticketHolderLanguage\": \"ENU\",\n  \"notificationAddress\": \"john@acme.com\",\n  \"paymentReference\": \"R-1234\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("x-np-api-key", "<NaviPartner API Key>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./ticket/12345678-1234-1234-1234-123456789012/confirmRevoke")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-np-api-key"] = '<NaviPartner API Key>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"revokeId\": \"R123456BAR789BAZ00\",\n  \"ticketHolder\": \"John Doe\",\n  \"ticketHolderLanguage\": \"ENU\",\n  \"notificationAddress\": \"john@acme.com\",\n  \"paymentReference\": \"R-1234\"\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./ticket/12345678-1234-1234-1234-123456789012/confirmRevoke")
  .header("x-np-api-key", "<NaviPartner API Key>")
  .header("Content-Type", "application/json")
  .body("{\n  \"revokeId\": \"R123456BAR789BAZ00\",\n  \"ticketHolder\": \"John Doe\",\n  \"ticketHolderLanguage\": \"ENU\",\n  \"notificationAddress\": \"john@acme.com\",\n  \"paymentReference\": \"R-1234\"\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./ticket/12345678-1234-1234-1234-123456789012/confirmRevoke', [
  'body' => '{
  "revokeId": "R123456BAR789BAZ00",
  "ticketHolder": "John Doe",
  "ticketHolderLanguage": "ENU",
  "notificationAddress": "john@acme.com",
  "paymentReference": "R-1234"
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-np-api-key' => '<NaviPartner API Key>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./ticket/12345678-1234-1234-1234-123456789012/confirmRevoke");
var request = new RestRequest(Method.POST);
request.AddHeader("x-np-api-key", "<NaviPartner API Key>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"revokeId\": \"R123456BAR789BAZ00\",\n  \"ticketHolder\": \"John Doe\",\n  \"ticketHolderLanguage\": \"ENU\",\n  \"notificationAddress\": \"john@acme.com\",\n  \"paymentReference\": \"R-1234\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "x-np-api-key": "<NaviPartner API Key>",
  "Content-Type": "application/json"
]
let parameters = [
  "revokeId": "R123456BAR789BAZ00",
  "ticketHolder": "John Doe",
  "ticketHolderLanguage": "ENU",
  "notificationAddress": "john@acme.com",
  "paymentReference": "R-1234"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./ticket/12345678-1234-1234-1234-123456789012/confirmRevoke")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```