Ir para o conteúdo principal

Teste da API Smarthands

Este guia fornece abordagens e exemplos de testes específicos para a API Equinix Smarthands, com base nos princípios gerais de Teste de API.

Visão geral da API Smarthands

A API Smarthands permite que você solicite e gerencie programaticamente vários serviços de mãos remotas em data centers Equinix IBX. Aqui está o mapeamento da API ECP para os tipos de mãos inteligentes suportados:

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

Fluxo de trabalho de teste Smarthands

Antes de testar a API Smarthands, certifique-se de ter:

  • Credenciais de API válidas com as permissões apropriadas
  • Acesso às instalações Equinix IBX onde você possui equipamentos.
  • Familiaridade com o fluxo de trabalho de chamados de serviço.

Criando uma solicitação de serviço 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}")

Verificando o status da solicitação

# 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}")

Testando cenários de erro

Sempre teste o tratamento de erros na implementação da sua 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"

Melhores práticas para testes de API do Smarthands

Nota importante: A API da Equinix é um sistema de produção que gera solicitações de envio reais. Siga sempre estas boas práticas de teste para garantir que você não crie trabalho operacional não planejado.

  1. Crie uma conta dedicada para testes: Solicite uma conta separada para testes, se possível.
  2. Comece com operações somente leitura: Teste os endpoints GET antes de criar/modificar recursos.
  3. Use solicitações de teste claramente identificadas: Sempre prefixe as descrições com "TESTE:" para ajudar os operadores a identificar as solicitações de teste.
  4. Limpar recursos de teste: Cancele imediatamente quaisquer envios de teste após a criação bem-sucedida.
  5. Inclua detalhes completos: Forneça informações abrangentes em suas solicitações.
  6. Números de Rastreamento: Sempre forneça números de rastreamento precisos para remessas recebidas a fim de garantir o manuseio adequado.
  7. Informações de contato: Certifique-se de que as informações de contato estejam atualizadas e que a pessoa esteja disponível durante o horário de atendimento agendado.
  8. Detalhes da descrição: Seja detalhado, porém conciso, ao descrever os requisitos para ajudar a equipe da unidade a concluir sua solicitação com eficiência.

Considerações sobre automação

Ao criar automações em torno da API Smarthands:

  • Implemente um tratamento de erros e tentativas adequadas.
  • Considere implementar receptores de webhook para atualizações de status.
  • Inclua validação para janelas de tempo e disponibilidade do serviço.
  • Incluir registro de auditoria de todas as interações com a API.
  • Garanta que as informações de rastreamento sejam incluídas automaticamente em todas as solicitações relacionadas a envios.
  • Confirme a disponibilidade de contato durante os horários de atendimento agendados.

Recursos adicionais

Esta página foi útil?