Saltar a contenido

📍 API de Ubicaciones Geográficas - DocuCenter

📋 Descripción

API para consultar información geográfica de Panamá, incluyendo provincias, distritos y corregimientos. No requiere autenticación.

🌐 Base URL

/api/v1/locations

📋 Endpoints

🌍 1. Obtener Todas las Ubicaciones

GET /api/v1/locations

Obtiene todas las ubicaciones disponibles organizadas por provincia con formato específico.

📤 Headers
Accept: application/json
📥 Respuesta Exitosa (200)
{
  "8": [
    [
      "PANAMA - SAN FELIPE - 8-8-1",
      "PANAMA - EL CHORRILLO - 8-8-2",
      "PANAMA - SANTA ANA - 8-8-3"
    ],
    [
      "SAN MIGUELITO - AMELIA DENIS DE ICAZA - 8-8-4",
      "SAN MIGUELITO - BELISARIO FRIAS - 8-8-5"
    ]
  ],
  "1": [
    [
      "BOCAS DEL TORO - BOCAS DEL TORO - 1-1-1",
      "BOCAS DEL TORO - BASTIMENTOS - 1-1-2"
    ]
  ]
}

🏛️ 2. Obtener Solo Provincias

GET /api/v1/locations/provincies

Obtiene la lista de todas las provincias de Panamá.

📤 Headers
Accept: application/json
📥 Respuesta Exitosa (200)
[
  {
    "id": 13,
    "nombre": "PANAMA OESTE",
    "codigo": "13"
  },
  {
    "id": 12,
    "nombre": "COMARCA NGÄBERE-BUGLÉ",
    "codigo": "12"
  },
  {
    "id": 11,
    "nombre": "COMARCA GUNA YALA",
    "codigo": "11"
  },
  {
    "id": 10,
    "nombre": "COMARCA EMBERÁ-WOUNAAN",
    "codigo": "10"
  },
  {
    "id": 9,
    "nombre": "VERAGUAS",
    "codigo": "9"
  },
  {
    "id": 8,
    "nombre": "PANAMA",
    "codigo": "8"
  },
  {
    "id": 7,
    "nombre": "LOS SANTOS",
    "codigo": "7"
  },
  {
    "id": 6,
    "nombre": "HERRERA",
    "codigo": "6"
  },
  {
    "id": 5,
    "nombre": "DARIÉN",
    "codigo": "5"
  },
  {
    "id": 4,
    "nombre": "CHIRIQUÍ",
    "codigo": "4"
  },
  {
    "id": 3,
    "nombre": "COLÓN",
    "codigo": "3"
  },
  {
    "id": 2,
    "nombre": "COCLÉ",
    "codigo": "2"
  },
  {
    "id": 1,
    "nombre": "BOCAS DEL TORO",
    "codigo": "1"
  }
]

🏛️ 3. Obtener Detalles de Provincia (Básicos)

GET /api/v1/locations/provincies/{codec}

Obtiene los detalles básicos de una provincia específica.

📝 Parámetros de Ruta
  • codec (integer, requerido): Código de la provincia (1-13)
📤 Headers
Accept: application/json
📥 Respuesta Exitosa (200)
{
  "nombre": "PANAMA",
  "codigo": "8"
}

🏛️ 4. Obtener Detalles de Provincia (Completos)

GET /api/v1/locations/provincies/{codec}?full_details=1

Obtiene los detalles completos de una provincia incluyendo distritos y corregimientos.

📝 Parámetros de Ruta
  • codec (integer, requerido): Código de la provincia (1-13)
🔍 Parámetros de Query
  • full_details (string, opcional): Valores aceptados: 0, 1, true, false
📤 Headers
Accept: application/json
📥 Respuesta Exitosa (200)
{
  "nombre": "PANAMA",
  "codigo": "8",
  "districts": [
    {
      "id": 1,
      "nombre": "PANAMA",
      "codigo": "8",
      "corregimientos": [
        {
          "id": 1,
          "nombre": "SAN FELIPE",
          "codigo": "1",
          "codigo_ubicacion": "8-8-1"
        },
        {
          "id": 2,
          "nombre": "EL CHORRILLO",
          "codigo": "2", 
          "codigo_ubicacion": "8-8-2"
        }
      ]
    },
    {
      "id": 2,
      "nombre": "SAN MIGUELITO",
      "codigo": "9",
      "corregimientos": [
        {
          "id": 3,
          "nombre": "AMELIA DENIS DE ICAZA",
          "codigo": "1",
          "codigo_ubicacion": "8-9-1"
        }
      ]
    }
  ]
}
❌ Respuesta de Error (404)
{
  "message": "No query results for model [App\\Models\\Province] 99"
}

📍 5. Obtener Detalles de Ubicación Específica

GET /api/v1/locations/{locationCode}

Obtiene los detalles completos de una ubicación específica usando su código de ubicación.

📝 Parámetros de Ruta
  • locationCode (string, requerido): Código completo de la ubicación (ej: "8-8-1")
📤 Headers
Accept: application/json
📥 Respuesta Exitosa (200)
{
  "provincia": {
    "id": 8,
    "nombre": "PANAMA",
    "codigo": "8"
  },
  "distrito": {
    "id": 1,
    "nombre": "PANAMA", 
    "codigo": "8"
  },
  "corregimiento": {
    "id": 1,
    "nombre": "SAN FELIPE",
    "codigo": "1",
    "codigo_ubicacion": "8-8-1"
  }
}
❌ Respuesta de Error (404)
{
  "message": "No query results for model [App\\Models\\Corregimiento] 8-8-99"
}
❌ Respuesta de Error (400) - Formato Inválido
{
  "message": "Invalid location code format."
}

📊 Estructura de Datos

🏛️ Provincia

Campo Tipo Descripción
id integer ID único de la provincia
nombre string Nombre de la provincia (mayúsculas)
codigo string Código de la provincia (1-13)

🏘️ Distrito

Campo Tipo Descripción
id integer ID único del distrito
nombre string Nombre del distrito (mayúsculas)
codigo string Código del distrito

🏠 Corregimiento

Campo Tipo Descripción
id integer ID único del corregimiento
nombre string Nombre del corregimiento (mayúsculas)
codigo string Código del corregimiento
codigo_ubicacion string Código completo de ubicación (provincia-distrito-corregimiento)

💡 Casos de Uso

1. Listar Todas las Ubicaciones (Para Dropdown)

curl -X GET "http://localhost:8000/api/v1/locations" \
     -H "Accept: application/json"

2. Obtener Solo Provincias

curl -X GET "http://localhost:8000/api/v1/locations/provincies" \
     -H "Accept: application/json"

3. Consultar Provincia (Básico)

curl -X GET "http://localhost:8000/api/v1/locations/provincies/8" \
     -H "Accept: application/json"

4. Consultar Provincia (Completo)

curl -X GET "http://localhost:8000/api/v1/locations/provincies/8?full_details=1" \
     -H "Accept: application/json"

5. Obtener Ubicación por Código

curl -X GET "http://localhost:8000/api/v1/locations/8-8-1" \
     -H "Accept: application/json"

📊 Códigos de Estado HTTP

Código Descripción
200 Operación exitosa
400 Formato de código inválido
404 Ubicación no encontrada
422 Error de validación
500 Error interno del servidor

⚠️ Notas Adicionales

  • Sin autenticación: Todos los endpoints son públicos
  • Nombres en mayúsculas: Todos los nombres vienen en mayúsculas desde la base de datos
  • Orden descendente: Las provincias se devuelven ordenadas por ID descendente
  • Formato de código: Los códigos de ubicación siguen el formato provincia-distrito-corregimiento
  • Validación de formato: El código de ubicación debe tener exactamente 3 partes separadas por guiones
  • Datos de prueba: El test confirma que "8-8-1" corresponde a "PANAMA - PANAMA - SAN FELIPE"

📞 Soporte

Para soporte con ubicaciones geográficas: