Skip to main content

Tests de l'API Smarthands

Ce guide fournit des approches de test spécifiques et des exemples pour l'API Equinix Smarthands, en s'appuyant sur les principes généraux de test d'API.

Aperçu de l'API Smarthands

L'API Smarthands vous permet de demander et de gérer par programmation divers services d'assistance à distance dans les centres de données Equinix IBX. Voici la correspondance entre l'API ECP et les types d'appareils SmartHands pris en charge:

Smarthands TypeDescriptionECP API Mapping
Request photos/documentationRequest cage-related photos or documentationhttps://api.equinix.com/v1/orders/smarthands/pictures
SmartHand OtherRequest a Smart Hands order not listed abovehttps://api.equinix.com/v1/orders/smarthands/other
SmartHand Cage Clean upRequest a cage clean uphttps://api.equinix.com/v1/orders/smarthands/cageCleanup
SmartHand Shipment UnpackUnpack inbound shipment and dispose packaginghttps://api.equinix.com/v1/orders/smarthands/shipmentUnpack
SmartHand Cage EscortRequest IBX security escorthttps://api.equinix.com/v1/orders/smarthands/cageEscort
Equipment InstallRequest equipment installationhttps://api.equinix.com/v1/orders/smarthands/equipmentInstall
Request CablesRequest cableshttps://api.equinix.com/v1/orders/smarthands/cableRequest
Locate PackagesRequest package locationhttps://api.equinix.com/v1/orders/smarthands/locatePackage
Run Patch CablesRequest cables run between deviceshttps://api.equinix.com/v1/orders/smarthands/runJumperCable
Patch Cable InstallRequest patch cable installationhttps://api.equinix.com/v1/orders/smarthands/patchCableInstall
Move Patch CableMove patch cables between deviceshttps://api.equinix.com/v1/orders/smarthands/moveJumperCable
Patch Cable RemovalRemove patch cableshttps://api.equinix.com/v1/orders/smarthands/patchCableRemoval
Large SmartHands OrderLarge cable/equipment requestshttps://api.equinix.com/v1/orders/smarthands/largeOrder

Flux de travail de test Smarthands

Avant de tester l'API Smarthands, assurez-vous d'avoir:

  • Identifiants d'API valides avec les autorisations appropriées
  • Accès aux emplacements Equinix IBX où se trouve votre équipement
  • Connaissance du flux de travail des tickets de service

Création d'une demande de service Smarthands

import requests
import json

# Setup authentication
auth_url = "https://api.equinix.com/oauth2/v1/token"
auth_payload = {
"grant_type": "client_credentials",
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
}

auth_response = requests.post(auth_url, data=auth_payload)
token = auth_response.json()["access_token"]

# Test creating a Smarthands request
base_url = "https://api.equinix.com/v1"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}

# Example: Create a cage escort request
request_payload = {
"customerReferenceNumber": "RSS41244",
"purchaseOrder": {
"number": "123455",
"purchaseOrderType": "EXISTING"
},
"ibxLocation": {
"ibx": "AM1",
"cages": [
{
"cage": "AM1:01:001MC3",
"accountNumber": "12345",
"cabinets": [
"AM1:01:001MC3:0102"
]
}
]
},
"contacts": [
{
"contactType": "ORDERING",
"userName": "jondoe@test.com"
},
{
"contactType": "NOTIFICATION",
"userName": "jondoe@test.com"
},
{
"contactType": "TECHNICAL",
"name": "John Doe",
"workPhone": "1111111",
"workPhonePrefToCall": "ANYTIME",
"mobilePhone": "1111111",
"mobilePhonePrefToCall": "ANYTIME"
}
],
"schedule": {
"scheduleType": "STANDARD",
"requestedStartDate": "2017-04-05T12:00:00Z",
"requestedCompletionDate": "2017-04-05T12:00:00Z"
},
"attachments": [
{
"id": "eb9ab7e9-3785-41e4-af24-112dff",
"name": "eb9ab7e9-3785-41e4-af24-asfsa5424"
}
],
"serviceDetails": {
"durationVisit": "30 Minutes",
"openCabinetForVisitor": false,
"scopeOfWork": "Scope of work",
"supervisionReqForVisitor": false,
"workVisitOrderNumber": "1-108050984499"
}
}

create_response = requests.post(
f"{base_url}/orders/smarthands/cageEscort",
headers=headers,
data=json.dumps(request_payload)
)

# Verify response
assert create_response.status_code == 201, f"Failed to create request: {create_response.text}"
order_number = create_response.json()["OrderNumber"]

print(f"Successfully created Smarthands request with order number: {order_number}")

Vérification de l'état de la demande

# Test retrieving request status
status_response = requests.get(
f"https://api.equinix.com/colocations/v2/orders/{order_number}",
headers=headers
)

assert status_response.status_code == 200, f"Failed to retrieve status: {status_response.text}"
status = status_response.json()["status"]

print(f"Current request status: {status}")

Scénarios d'erreurs de test

Testez toujours la gestion des erreurs de votre implémentation d'API:

# Test with invalid location
invalid_payload = {
"customerReferenceNumber": "RSS41244",
"purchaseOrder": {
"number": "123455",
"purchaseOrderType": "EXISTING"
},
"ibxLocation": {
"ibx": "INVALID", # Invalid IBX code
"cages": [
{
"cage": "INVALID:01:001MC3",
"accountNumber": "12345",
"cabinets": [
"INVALID:01:001MC3:0102"
]
}
]
},
"contacts": [
{
"contactType": "ORDERING",
"userName": "jondoe@test.com"
}
],
"schedule": {
"scheduleType": "STANDARD",
"requestedStartDate": "2025-08-01T10:00:00Z",
"requestedCompletionDate": "2025-08-01T12:00:00Z"
},
"serviceDetails": {
"durationVisit": "30 Minutes",
"openCabinetForVisitor": false,
"scopeOfWork": "Test invalid IBX location",
"supervisionReqForVisitor": false
}
}

error_response = requests.post(
f"{base_url}/orders/smarthands/cageEscort",
headers=headers,
data=json.dumps(invalid_payload)
)

# Verify error response
assert error_response.status_code == 400, f"Expected error but got: {error_response.status_code}"
assert "Invalid IBX location" in error_response.text, "Error message not as expected"

Meilleures pratiques pour les tests d'API Smarthands

Note importante: L'API Equinix est un système de production qui génère de véritables demandes d'expédition. Suivez toujours ces bonnes pratiques de test afin d'éviter toute surcharge opérationnelle imprévue.

  1. Créer un compte de test dédié: Demandez un compte distinct pour les tests si possible.
  2. Commencez par des opérations en lecture seule: testez d’abord les points de terminaison GET avant de créer ou de modifier des ressources.
  3. Utilisez des demandes de test clairement identifiées: Préfixez toujours les descriptions par « TEST: » pour aider les opérateurs à identifier les demandes de test.
  4. Nettoyage des ressources de test: Annulez immédiatement tout envoi de test après sa création réussie.
  5. Veuillez inclure tous les détails: Fournissez des renseignements complets dans vos demandes.
  6. Numéros de suivi: Veuillez toujours fournir des numéros de suivi précis pour les envois entrants afin d’assurer leur bonne prise en charge.
  7. Coordonnées de contact: Veuillez vous assurer que les coordonnées sont à jour et que la personne est disponible pendant la plage horaire prévue pour le service.
  8. Détails de la description: Soyez précis mais concis dans votre description afin d’aider le personnel de l’établissement à traiter votre demande efficacement.

Considérations relatives à l'automatisation

Lors de la création d'automatisations autour de l'API Smarthands:

  • Mettre en œuvre une gestion appropriée des erreurs et des tentatives de nouvelle tentative
  • Envisagez la mise en place de récepteurs de webhook pour les mises à jour de statut.
  • Intégrer la validation des plages horaires et de la disponibilité du service
  • Inclure la journalisation d'audit de toutes les interactions avec l'API
  • S'assurer que les informations de suivi sont automatiquement incluses pour toutes les demandes relatives aux expéditions
  • Vérifiez la disponibilité du contact pendant les créneaux horaires de service prévus.

Ressources additionnelles

Cette page vous a-t-elle été utile ?