curl --request DELETE \
--url https://jmpy.me/api/v1/qr-codes/{id} \
--header 'Authorization: Bearer <token>'{
"success": true,
"data": {
"message": "<string>"
}
}Delete a QR code
curl --request DELETE \
--url https://jmpy.me/api/v1/qr-codes/{id} \
--header 'Authorization: Bearer <token>'{
"success": true,
"data": {
"message": "<string>"
}
}temp-) cannot be deleted as they are not persisted.Show Response Structure
curl -X DELETE "https://jmpy.me/api/v1/qr-codes/770e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer YOUR_API_KEY"
const fetch = require('node-fetch');
const qrCodeId = '770e8400-e29b-41d4-a716-446655440000';
const response = await fetch(
`https://jmpy.me/api/v1/qr-codes/${qrCodeId}`,
{
method: 'DELETE',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}
);
const data = await response.json();
if (data.success) {
console.log('QR code deleted successfully');
} else {
console.error('Error:', data.error.message);
}
import axios from 'axios';
const qrCodeId = '770e8400-e29b-41d4-a716-446655440000';
try {
const response = await axios.delete(
`https://jmpy.me/api/v1/qr-codes/${qrCodeId}`,
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
console.log('Deleted:', response.data.data.message);
} catch (error) {
if (axios.isAxiosError(error)) {
console.error('Error:', error.response?.data.error.message);
}
}
import requests
qr_code_id = '770e8400-e29b-41d4-a716-446655440000'
response = requests.delete(
f'https://jmpy.me/api/v1/qr-codes/{qr_code_id}',
headers={'Authorization': 'Bearer YOUR_API_KEY'}
)
data = response.json()
if data['success']:
print('QR code deleted successfully')
else:
print(f"Error: {data['error']['message']}")
<?php
$client = new GuzzleHttp\Client();
$qrCodeId = '770e8400-e29b-41d4-a716-446655440000';
$response = $client->request('DELETE', "https://jmpy.me/api/v1/qr-codes/{$qrCodeId}", [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY'
]
]);
$data = json_decode($response->getBody(), true);
if ($data['success']) {
echo "QR code deleted successfully";
}
?>
package main
import (
"fmt"
"net/http"
)
func main() {
qrCodeId := "770e8400-e29b-41d4-a716-446655440000"
url := fmt.Sprintf("https://jmpy.me/api/v1/qr-codes/%s", qrCodeId)
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer YOUR_API_KEY")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
if resp.StatusCode == 200 {
fmt.Println("QR code deleted successfully")
}
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.URI;
import java.net.http.HttpResponse;
String qrCodeId = "770e8400-e29b-41d4-a716-446655440000";
String url = "https://jmpy.me/api/v1/qr-codes/" + qrCodeId;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer YOUR_API_KEY")
.DELETE()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"success": true,
"data": {
"message": "QR code deleted successfully"
}
}
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "QR code not found"
}
}
{
"success": false,
"error": {
"code": "INVALID_INPUT",
"message": "Invalid QR code ID format. Please provide a valid UUID."
}
}
{
"success": false,
"error": {
"code": "INVALID_INPUT",
"message": "Temporary QR codes cannot be deleted. Please sign in to save and manage QR codes permanently."
}
}
{
"success": false,
"error": {
"code": "ACCESS_DENIED",
"message": "You do not have permission to access this resource"
}
}
Delete with confirmation
async function deleteQRCodeWithConfirmation(qrCodeId, confirm = false) {
if (!confirm) {
// First, get the QR code details
const detailsResponse = await fetch(
`https://jmpy.me/api/v1/qr-codes/${qrCodeId}`,
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const details = await detailsResponse.json();
if (details.success) {
const qr = details.data.qrCode;
console.log(`About to delete: "${qr.name}"`);
console.log(` - Total scans: ${qr.scan_count}`);
console.log(` - Created: ${qr.created_at}`);
console.log('Call with confirm=true to proceed.');
return { confirmed: false, qrCode: qr };
}
}
// Proceed with deletion
const response = await fetch(
`https://jmpy.me/api/v1/qr-codes/${qrCodeId}`,
{
method: 'DELETE',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}
);
return await response.json();
}
Bulk delete expired QR codes
import requests
from datetime import datetime
def delete_expired_qr_codes():
# First, get all QR codes
response = requests.get(
'https://jmpy.me/api/v1/qr-codes?limit=100',
headers={'Authorization': 'Bearer YOUR_API_KEY'}
)
data = response.json()
now = datetime.now()
deleted_count = 0
for qr in data['data']['qrCodes']:
if qr.get('expires_at'):
expires = datetime.fromisoformat(qr['expires_at'].replace('Z', '+00:00'))
if expires < now.astimezone():
# Delete expired QR code
delete_response = requests.delete(
f"https://jmpy.me/api/v1/qr-codes/{qr['id']}",
headers={'Authorization': 'Bearer YOUR_API_KEY'}
)
if delete_response.json()['success']:
print(f"Deleted expired: {qr['name']}")
deleted_count += 1
print(f"Deleted {deleted_count} expired QR codes")
delete_expired_qr_codes()
Archive before deleting
async function archiveAndDeleteQRCode(qrCodeId) {
// Get full QR code details
const detailsResponse = await fetch(
`https://jmpy.me/api/v1/qr-codes/${qrCodeId}`,
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const details = await detailsResponse.json();
if (!details.success) {
throw new Error(details.error.message);
}
// Archive the data (e.g., save to file or database)
const archive = {
deletedAt: new Date().toISOString(),
qrCode: details.data.qrCode
};
// Save archive (example: to localStorage, file, or database)
console.log('Archived:', JSON.stringify(archive, null, 2));
// Delete the QR code
const deleteResponse = await fetch(
`https://jmpy.me/api/v1/qr-codes/${qrCodeId}`,
{
method: 'DELETE',
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}
);
return await deleteResponse.json();
}