La API para el servidor PorMiCiudad


La API está diseñada para la compartición pública de la información acumulada en la base de datos de la Plataforma Ciudad, es decir, para funciones de búsqueda y consulta de los reportes enviados por los ciudadanos.

Se devuelven hasta 1000 solicitudes en cada consulta. Dichas solicitudes se ordenan de acuerdo a la fecha de comienzo, así que para obtener todas las solicitudes es necesario hacer varias solicitudes ajustando la fecha de comienzo y final.

La información puede recuperarse en formato XML y JSON.

El acceso es público para esta primera versión de la API.  Estamos en desarrollo de un módulo aplicativo para que las consultas a la API anexen un token otorgado a personas registradas, ello es para prevenir solamente casos de búsquedas excesivas o que sobrecarguen el servidor, toda vez que la información que proporciona la API es de naturaleza pública  y es accesada también desde front-end de la plataforma a través de las interfaces normales con el usuario.

 

Especificaciones de la API

API Endpoint

https://pormiciudad.online/api/v2

Portal API / Página de inicio

https://pormiciudad.online

Categoría primaria

Ámbito Público

Categorías secundarias

Comunidades, Ciudades, Municipios, Localización

URL de la página de inicio de Docs

https://plataforma.pormiciudad.online/api

Alcance

API de propósito único

Específico a Dispositivo

No

Estilo Arquitectónico

REST

Formatos de solicitud admitidosURI

Query String

Formatos de respuesta compatibles

XML, JSON

 

Descubrimiento de servicio

Archivo de descubrimiento de servicio estándar asociado con ellas para proporcionar enrutamiento entre versiones y tipos de API. 

 

Internacionalización y codificación

Formato de fecha/hora Todos los campos de fecha/hora deben formatearse en un subconjunto común de ISO 8601 según la nota w3. Se debe incluir la información de zona horaria (Z significa UTC, o un desplazamiento HH: MM de UTC).

Ejemplos:

 

Codificación

UTF-8 se utilizado en todas partes.

Todo el texto devuelto por el servicio, ya sea en XML, JSON o cualquier otro tipo de contenido basado en texto, está codificado en UTF-8. Los encabezados HTTP y el elemento raíz van precedidos de la declaración XML que incluya el atributo encoding="UTF-8". 

 

Soporte de formatos

XML es un formato requerido, pero JSON se puede proporcionar también. Los formatos de salida admitidos por el proveedor se indican a través del campo Formatos de descubrimiento de servicio para el punto final de API que se está utilizando. El cliente puede especificar el formato deseado agregando el nombre del formato al recurso. Por ejemplo, una solicitud GET a /services.xml para la salida text/xml  de los recursos y servicios, y /services/01.json para salida  application/json (RFC 4627).

Los encabezados de tipo de contenido HTTP tienen este aspecto para cada formato:

 

Soporte XML

XML para la API debe ser Content-Type: text/xml. La salida XML actualmente definida no tiene esquema y no tiene una declaración de espacio de nombres.  Para garantizar que todos los clientes puedan admitir la salida XML, se recomienda cumplir estrictamente con la especificación y no incluir etiquetas o espacios de nombres extranjeros. 

 

Soporte JSON

JSON para la API debe ser Content-Typeapplication/json. El soporte de JSON se basa en un mapeo programático del formato XML usando la Convención Spark. Lo que quiere decir si tiene un archivo XML, puede generar fácilmente la versión JSON con XSL. Esto se puede hacer usando un servidor XSLT.

 

Seguridad

El uso de HTTPS para los métodos es obligatorio.  No obstante que la información de PorMiCiudad es por definición pública.

 

Definiciones

jurisdition_id

Permite que esta API distinga múltiples jurisdicciones dentro de un punto final de la API,  es el identificador único para las ciudades. Se define por el nombre de dominio del sitio de la plataforma PorMiCiudad (sin www y sin el .online o .com) como "jurisdiction_id".  Por ejemplo, jurisdiction_id=pormiciudad, o  jurisdiction_id=tlaxcala, o jurisdiction_id=ecatepec, o jurisdiction_id=coyoacan, etc.  Las implementaciones pueden ignorar este parámetro y tratarlo como un "argumento opcional" si la implementación solo sirve a una jurisdicción, es decir si solo comprende a una sola ciudad o municipio.

Argumentos opcionales

"Opcional" significa que la respuesta debe ser la misma si se pasa un parámetro y está vacío o no se pasa en absoluto. Un parámetro nulo debe tratarse como equivalente a un parámetro no declarado en el procesamiento de la solicitud.

 

Atributos devueltos en cada petición

Atributo devuelto

Descripción

service_request_id

Es un único Id del servicio request creado.

description

Una descripción completa del request o reporte que está siendo enviado (es decir, recuperado al cliente).

lat, long

Latitud y Longitud usando la proyección(WGS84) .

media_url

La URL a los medios asociados con la solicitud, por ejemplo, una imagen.

status

Opciones: abierto, cerrado

requested_datetime

La fecha y hora en que se realizó la solicitud de servicio. Devuelto en formato w3, por ejemplo, 2010-01-01T00: 00: 00Z

updated_datetime

La fecha y hora en que se modificó por última vez la solicitud de servicio. Para solicitudes con estado = cerrado, esta será la fecha en que se cerró la solicitud.        Devuelto en formato w3, por ejemplo, 2010-01-01T00: 00: 00Z

service_code

El identificador único para el tipo de solicitud de servicio (Categoría del Problema a reportar)

service_name

El nombre legible por humanos del tipo de solicitud de servicio (Categoría del Problema a reportar)

agency_sent_datetime

La hora en que se envió el reporte al Ayuntamiento.

title

Título de Reporte enviado al Ayuntamiento

interface_used

Si se envió por web o por móvil.

comment_count

El número de veces que este reporte ha sido comentado o se le han proporcionado actualizaciones de otros usuarios.

requestor_name

Es el nombre de la persona que envió el reporte. Solo si el solicitante permitió que el nombre que se mostrará en el sitio.

agency_responsible

 

Se utiliza para listar las administraciones que han recibido la notificación de problemas. Es también posible buscar por agency_responsible para limitar las solicitudes a las enviados a una sola administración

 

Parámetros para búsquedas

service_request_id

 

Buscar por ID numérico específico de un reporte. Usar esto es idéntico a preguntar por un request individual usando el URL /requests/number.format.

service_code

Buscar por la categoría dada o la cadena del tipo de servicio.

Status

 

Buscar por reportes abiertos o cerrados (arreglados).

start_date 

Sólo regresa reportes después de cierta fecha requerida o en la fecha y hora. El formato es YYYY-MM-DDTHH:MM:SS+TZ:TZ.

 

end_date

Sólo regresa reportes establecidos antes de la fecha y hora especificados. Tiene el mismo formato que el star_date.

agency_responsible 

ID del cuerpo de gobierno local que recibe los reportes. Diversos ID’s pueden ser especificados con un caracter separador “|”. Este ID es el que el sistema le otorgó al crear el cuerpo o departamento responsable.

interface_used

Nombre / Identificador de la interface usada. Puede ser Web o Móbil (smartphone).

has_photo

Buscar por entradas con o sin fotos. Use el valor “true” para traer solo los reportes que se crearon con imágenes, y “false” para lo contrario.

max_requests

Número máximo de peticiones a regresar de la búsqueda. Si es más largo que el valor máximo especificado en en la llamada a Discovery, el valor provisto aquí es ignorado. El número máximo de entradas que la Api puede regresar es 1000.

 

 

Métodos API

 

1. INFORMACIÓN DE DESCUBRIMIENTO (Discovery)

https://pormiciudad.online/api/v2/discovery.xml?jurisdiction_id=pormiciudad

Respuesta:

  <discovery>

    <changeset>2019-04-08T00:00:00Z</changeset>

    <contact>Send email to contacto.pormiciudad@gmail.com.</contact>

    <endpoints>

      <endpoint>

        <changeset>2019-04-08T00:00:00Z</changeset>

        <formats>

          <format>text/xml</format>

          <format>application/json</format>

          <format>text/html</format>

        </formats>

        <specification>https://plataforma.pormiciudad.online/api</specification>

        <type>production</type>

        <url>https://pormiciudad.online/api</url>

      </endpoint>

      <endpoint>

        <changeset>2019-04-08T00:00:00Z</changeset>

        <formats>

          <format>text/xml</format>

          <format>application/json</format>

          <format>text/html</format>

        </formats>

        <specification>https://plataforma.pormiciudad.online/api</specification>

        <type>test</type>

        <url>https://pormiciudad.online/api</url>

      </endpoint>

    </endpoints>

    <key_service>Use una Api Key que puede generar en el sitio https://pormiciudad.online/apikey/register  -en desarrollo a Julio de 20019, etapa Beta deployment</key_service>

    <max_requests>1000</max_requests>

  </discovery>

 

2. OBTENER Lista de servicios

Propósito

Proporcionar una lista de tipos de solicitud de servicio aceptables y sus códigos de servicio asociados. Estos tipos de solicitud pueden ser exclusivos de la ciudad o de alguna jurisdicción.

URL

https: // [punto final API] / services. [formato]

Formatos

XML (JSON disponible)

Método HTTP

GET

Requiere clave API

No

 

URL  de muestra para Probar

https://pormiciudad.online/api/v2/services.xml?jurisdiction_id=pormiciudad.online

Recupera los servicios que se presentan en la plataforma

 

https://pormiciudad.online/api/v2/services.json?jurisdiction_id=pormiciudad&lat=19.4&long=-99.1

Recupera los servicios que se presentan en las coordenadas latitud=19.4  y  longitud=-99.1 (Centro de la Ciudad de México). Salida en JSON.

 

a)   De click en el link de arriba o cópielo en algún navegador.

b)   Si desea la salida en JSON con formato utf-8 cambie “xml” por “json” en la URL de arriba.

 

Argumentos requeridos

Nombre del campo

Descripción

Notas y requisitos

jurisdiction_id

 

Esto solo se requiere si el punto final sirve a múltiples jurisdicciones

 

Respuesta

Nombre del campo

Descripción

Notas y requisitos

services 

 

 

service 

 

 

service_code

El identificador único para el tipo de solicitud de servicio.

 

service_name

El nombre legible por humanos del tipo de solicitud de servicio.

 

description

Una breve descripción del tipo de solicitud de servicio.

 

metadata

Determina si hay campos de formulario adicionales para este tipo de servicio. 

true: Este tipo de solicitud de servicio requiere metadatos adicionales, por lo que el cliente deberá realizar una llamada al método de Definición de servicio (Discovery)
false: No se requiere información adicional y no se necesita una llamada al método de Definición de servicio (Discovery) .

Valores posibles: truefalse.

type

realtime: El ID de la solicitud de servicio se devolverá inmediatamente después de que se envíe la solicitud de servicio. 
batch: Se devolverá un token inmediatamente después de enviar la solicitud de servicio. Este token se puede usar luego para devolver la ID de solicitud de servicio. 
blackbox: No se devolverá ningún ID de solicitud de servicio después de enviar la solicitud de servicio.

Valores posibles: realtimebatchblackbox.

keywords

Una lista de etiquetas o palabras clave separadas por comas para ayudar a los usuarios a identificar el tipo de solicitud. Esto puede proporcionar sinónimos del service_name y el grupo.

 

group

Una categoría para agrupar este tipo de servicio. Esto proporciona una forma de agrupar varios tipos de solicitudes de servicio en una categoría, como "saneamiento"

 

Posibles errores

Los números representan el código de estado HTTP devuelto para cada tipo de error:

 

 

 

3. OBTENER solicitud de servicio

Propósito

Consultar el estado actual de una solicitud individual

URL

https: // [punto final de la API] /requests/ [service_request_id]. [formato]

Formatos

XML (JSON disponible)

Método HTTP

GET

Requiere clave API

No

 

URL’s  de muestra para Probar

https://pormiciudad.online/api/v2/requests/37.xml?jurisdiction_id=pormciudad.online

Recuperar el reporte con ID=37

 

https://pormiciudad.online/api/v2/requests/1.json?jurisdiction_id=pormciudad.online

Recuperar el reporte con ID=1 en salida JSON

 

a)   De click en el link de arriba o cópielo en algún navegador.

b)   Si desea la salida en JSON con formato utf-8 cambie “xml” por “json” en la URL de arriba.

 

Argumentos requeridos

Nombre del campo

Descripción

Notas y requisitos

jurisdiction_id

 

Esto solo se requiere si el punto final sirve a múltiples jurisdicciones

service_request_id

 

service_request_id se especifica en la ruta URL principal en lugar de un parámetro de cadena de consulta agregado.

 

Argumentos opcionales

Ninguno

 

Respuesta

Nombre del campo

Descripción

Notas y requisitos

service_requests 

 

 

request 

 

 

service_request_id

El ID único de la solicitud de servicio creada.

 

status

El estado actual de la solicitud de servicio. 
open: Ha sido reportado. 
closed: ha sido resuelto.

Opciones: open, closed

status_notes

Explicación de por qué el estado se cambió al estado actual o más detalles sobre el estado actual que transmitido con el estado solo.

No puede ser devuelto

service_name

El nombre legible por humanos del tipo de solicitud de servicio

 

service_code

El identificador único para el tipo de solicitud de servicio

 

description

Una descripción completa de la solicitud o informe enviado.

Esto puede contener saltos de línea, pero no html o código. De lo contrario, este es un texto de forma libre limitado a 4.000 caracteres.

agency_responsible

El gobierno loical responsable de cumplir o abordar la solicitud de servicio. En este caso solo es válido si un mismo sitio de pormiciudad contiene varios municipios.

No puede ser devuelto

service_notice

Información sobre la acción esperada para cumplir con la solicitud o abordar la información reportada.

No puede ser devuelto

requested_datetime

La fecha y hora en que se realizó la solicitud de servicio.

Devuelto en formato w3, por ejemplo, 2019-01-01T00: 00: 00Z

updated_datetime

La fecha y hora en que se modificó por última vez la solicitud de servicio. Para solicitudes con estado = cerrado, esta será la fecha en que se cerró la solicitud.

Devuelto en formato w3, por ejemplo, 2019-01-01T00: 00: 00Z

expected_datetime

La fecha y hora en que se puede esperar que se cumpla la solicitud de servicio. Esto puede basarse en un acuerdo de nivel de servicio específico del servicio.

No puede ser devuelto

address

Dirección legible por humanos o descripción de la ubicación.

Debe proporcionarse desde la unidad geográfica más específica a la más general, por ejemplo, número de dirección o cruce de calles, nombre de la calle, barrio / distrito, ciudad / pueblo / aldea, condado, código postal.

address_id

La ID de dirección interna utilizada por un repositorio de direcciones maestro de jurisdicciones u otro sistema de direccionamiento.

 

zipcode

El código postal para la ubicación de la solicitud de servicio.

 

lat

latitud usando la proyección (WGS84) .

 

long

longitud utilizando la proyección (WGS84) .

 

media_url

Una URL a los medios asociados con la solicitud, por ejemplo, una imagen.

Aún no se ha establecido una convención para analizar los medios desde esta URL, por lo que actualmente se hará caso por caso, como lo hace twitter.com

Posibles errores

Los números representan el código de estado HTTP devuelto para cada tipo de error:

 


 

4. OBTENER solicitudes de servicio

Propósito

Consultar el estado actual de múltiples solicitudes

URL

https: // [punto final de la API] / requests. [formato]

Formatos

XML (JSON disponible)

Método HTTP

GET

Requiere clave API

No

 

URL’s de muestra para Probar

1

 

 

 

 

2

 

 

3

 

 

4

 

 

 

 

5

https://pormiciudad.online/api/v2/requests.xml?start_date=2019-01-24T00:00:00Z&end_date=2019-04-24T00:00:00Z&status=open&jurisdiction_id=pormiciudad.online

Recupera todos los reportes entre el 24 de enero al 24 de abril de 2019 que tengan el estatus de “abiertos” (problemas sin reparar todavía). 

 

https://pormiciudad.online/api/v2/requests.xml?jurisdiction_id=pormiciudad&service_code=Basura%20en%20la%20calle

Recupera todos los reportes con categoría de “Basura de la calle”.

 

https://pormiciudad.online/api/v2/requests.xml?jurisdiction_id=pormiciudad&status=closed

Recupera todos los reportes que tengan el estatus de “Arreglado”.

 

https://pormiciudad.online/api/v2/requests.xml?jurisdiction_id=pormiciudad&status=open&agency_responsible=1|5

Recupera todos los reportes que tengan el estatus de “Abierto” en las Alcaldías de Coyoacán=1 y Azcapotzalco=5 (Los ID’s de agency_responsible se obtienen del administrador del sistema o de su publicación para fines de uso de la API).

 

https://pormiciudad.online/api/v2/requests.json?jurisdiction_id=pormiciudad&requestor_name=Jorge%20Portillo&end_date=2019-05-24T00:00:00Z

Recupera todos los reportes que haya enviado el usuario ciudadano de nombre “Jorge Portillo” hasta antes del 24 de Mayo de 2019. Salida JSON.

 

a)   De click en el link de arriba o cópielo en algún navegador.

b)   Si desea la salida en JSON con formato utf-8 cambie “xml” por “json” en la URL de arriba.

 

Argumentos requeridos

Nombre del campo

Descripción

Notas y requisitos

jurisdiction_id

 

Esto solo se requiere si el punto final sirve a múltiples jurisdicciones

 

Argumentos opcionales

Nombre del campo

Descripción

Notas y requisitos

service_request_id

Para llamar a múltiples solicitudes de servicio a la vez, se pueden declarar múltiples service_request_id; separado por comas.

Esto anula todos los demás argumentos.

service_code

Especifique el tipo de servicio llamando a la ID única del código_servicio.

Esto predeterminado a todos los códigos de servicio cuando no se declara; se puede declarar varias veces, delimitado por comas

start_date

Fecha y hora más temprana para incluir en la búsqueda. Cuando se proporciona end_date, le permite a uno buscar solicitudes que tienen un tiempo request_date que coincide con un rango determinado, pero que no puede abarcar más de 90 días.

Cuando no se especifica, el rango se predetermina a los 90 días más recientes. Debe usar el formato w3, por ejemplo, 2010-01-01T00: 00: 00Z.

end_date

Última fecha y hora para incluir en la búsqueda. Cuando se proporciona start_date, le permite a uno buscar solicitudes que tienen un request_datetime que coincide con un rango determinado, pero que no puede abarcar más de 90 días.

Cuando no se especifica, el rango se predetermina a los 90 días más recientes. Debe usar el formato w3, por ejemplo, 2010-01-01T00: 00: 00Z.

status

Permite buscar solicitudes que tienen un estado específico. Esto predeterminado a todos los estados; se puede declarar varias veces, delimitado por comas;

Opciones: open, closed

Respuesta

Nombre del campo

Descripción

Notas y requisitos

service_requests 

 

 

request 

 

 

service_request_id

El ID único de la solicitud de servicio creada.

 

status

El estado actual de la solicitud de servicio. 

open: Ha sido reportado. 

closed: ha sido resuelto.

Opciones: open, closed

status_notes

Explicación de por qué el estado se cambió al estado actual o más detalles sobre el estado actual que transmitido con el estado solo.

No puede ser devuelto

service_name

El nombre legible por humanos del tipo de solicitud de servicio

 

service_code

El identificador único para el tipo de solicitud de servicio

 

description

Una descripción completa de la solicitud o informe enviado.

Esto puede contener saltos de línea, pero no html o código. De lo contrario, este es un texto de forma libre limitado a 4.000 caracteres.

agency_responsible

La agencia responsable de cumplir o abordar la solicitud de servicio.

No puede ser devuelto

service_notice

Información sobre la acción esperada para cumplir con la solicitud o abordar la información reportada.

No puede ser devuelto

requested_datetime

La fecha y hora en que se realizó la solicitud de servicio.

Devuelto en formato w3, por ejemplo, 2010-01-01T00: 00: 00Z

updated_datetime

La fecha y hora en que se modificó por última vez la solicitud de servicio. Para solicitudes con estado = cerrado, esta será la fecha en que se cerró la solicitud.

Devuelto en formato w3, por ejemplo, 2010-01-01T00: 00: 00Z

expected_datetime

La fecha y hora en que se puede esperar que se cumpla la solicitud de servicio. Esto puede basarse en un acuerdo de nivel de servicio específico del servicio.

No puede ser devuelto

address

Dirección legible por humanos o descripción de la ubicación.

Debe proporcionarse desde la unidad geográfica más específica a la más general, por ejemplo, número de dirección o cruce de calles, nombre de la calle, barrio / distrito, ciudad / pueblo / aldea, condado, código postal.

address_id

La ID de dirección interna utilizada por un repositorio de direcciones maestro de jurisdicciones u otro sistema de direccionamiento.

 

zipcode

El código postal para la ubicación de la solicitud de servicio.

 

lat

latitud usando la proyección (WGS84) .

 

long

longitud utilizando la proyección (WGS84) .

 

media_url

Una URL a los medios asociados con la solicitud, por ejemplo, una imagen.

Aún no se ha establecido una convención para analizar los medios desde esta URL, por lo que actualmente se hará caso por caso, como lo hace Twitter.com

 

Volumen de respuesta

Posibles errores

Los números representan el código de estado HTTP devuelto para cada tipo de error: