Skip to content

Update API Key 🔒 ​

Updates an existing API key's information (name, description, IP restrictions, active status).

Endpoint ​

PUT /api/ApiKey/update

🔒 JWT Required
x-api-key: <your-api-key>Authorization: Bearer <jwt-token>Content-Type: application/json

Authentication Required

🔒 JWT Required - Both API key and JWT token are required

Request Example ​

bash
curl -X PUT https://shipyo.it/api/ApiKey/update \
  -H "x-api-key: ak_1234567890abcdef" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
  -H "Content-Type: application/json" \
  -d '{
    "id": 1,
    "key": "ak_1234567890abcdef1234567890",
    "name": "Updated Production API Key",
    "allowedIp": "192.168.1.150",
    "isActive": true,
    "description": "Updated description for production API key"
  }'

Request Body ​

json
{
  "id": 1,
  "key": "ak_1234567890abcdef1234567890",
  "name": "Updated Production API Key",
  "allowedIp": "192.168.1.150",
  "isActive": true,
  "description": "Updated description for production API key"
}

Fields:

  • id (number, required): API Key ID to update
  • key (string, required): Existing API key value (cannot be changed)
  • name (string, required): Updated name for the API key
  • allowedIp (string, optional): Updated IP address restriction (null for no restriction)
  • isActive (boolean, required): Whether the API key should be active
  • description (string, optional): Updated description

Success Response ​

json
{
  "success": true,
  "data": {
    "id": 1,
    "key": "ak_****...****890",
    "name": "Updated Production API Key",
    "isActive": true,
    "description": "Updated description for production API key",
    "allowedIp": "192.168.1.150",
    "updatedDate": "2024-08-25T16:00:00Z"
  },
  "message": "API Key updated successfully"
}

Error Responses ​

404 Not Found ​

json
{
  "success": false,
  "message": "API Key not found",
  "errors": ["No API key found with ID 1"]
}

400 Bad Request - Validation Error ​

json
{
  "success": false,
  "message": "Validation failed",
  "errors": [
    "ID is required",
    "Key is required",
    "Name is required"
  ]
}

400 Bad Request - Invalid IP Address ​

json
{
  "success": false,
  "message": "Invalid IP address",
  "errors": ["allowedIp must be a valid IP address"]
}

409 Conflict - Name Already Exists ​

json
{
  "success": false,
  "message": "API Key name already exists",
  "errors": ["Another API key with this name already exists"]
}

401 Unauthorized ​

json
{
  "success": false,
  "message": "Accesso negato: token non valido o mancante",
  "errors": ["JWT token validation failed"]
}

403 Forbidden - Insufficient Permissions ​

json
{
  "success": false,
  "message": "Forbidden - Insufficient permissions",
  "errors": ["Cannot update this API key"]
}

What Can Be Updated ​

✅ Updatable Fields ​

  • Name: Change the display name
  • Description: Update the purpose description
  • allowedIp: Modify IP restrictions
  • isActive: Enable/disable the key

❌ Non-Updatable Fields ​

  • Key Value: The actual API key string cannot be changed
  • ID: The unique identifier is immutable
  • Created Date: Historical timestamp is preserved

Common Update Scenarios ​

Activate/Deactivate Key ​

json
{
  "id": 1,
  "key": "existing-key-value",
  "name": "Current Name",
  "isActive": false,  // Deactivate the key
  "allowedIp": null,
  "description": "Temporarily disabled"
}

Update IP Restriction ​

json
{
  "id": 1,
  "key": "existing-key-value", 
  "name": "Current Name",
  "allowedIp": "10.0.0.100",  // New IP restriction
  "isActive": true,
  "description": "Updated for new server IP"
}

Remove IP Restriction ​

json
{
  "id": 1,
  "key": "existing-key-value",
  "name": "Current Name", 
  "allowedIp": null,  // Remove IP restriction
  "isActive": true,
  "description": "Removed IP restriction for flexibility"
}

Security Considerations ​

Key Value Handling ​

  • Always include the existing key value in update requests
  • Key value serves as additional verification
  • System may mask the key in responses for security

IP Address Changes ​

  • Changing allowedIp takes effect immediately
  • Test connectivity after IP changes
  • Consider impact on existing integrations

Activation Status ​

  • Deactivating a key immediately blocks all API access
  • Ensure dependent services have alternative keys
  • Monitor for failed requests after deactivation

Best Practices ​

Before Updates ​

  • Document the reason for changes
  • Notify users of IP or activation changes
  • Have rollback plan for critical keys

After Updates ​

  • Test API key functionality
  • Monitor for authentication errors
  • Update documentation and configurations

Audit Trail ​

  • Updates are typically logged for security
  • Track who made changes and when
  • Maintain history of key modifications