// Guía del desarrollador – abril 2023 – por nubis //

Desde ∅ ↦ emisión de diplomas.

certificados de asistencia y también insignias.

Puede utilizar CONSTATA para emitir documentos certificados en formato HTML verificable, firmados digitalmente por usted y con sello de tiempo en la blockchain de Bitcoin.

Un documento HTML verificable es un diploma, certificado de asistencia o insignia que puede ser compartido en línea o descargado y almacenado. Cualquier persona puede verlo y verificarlo utilizando solo su navegador web predeterminado, para siempre.

Estos documentos se generan a partir de una plantilla. Esta guía le mostrará cómo emitir un lote de diplomas desde la plantilla predeterminada, interactuando con nuestra API de GraphQL desde la línea de comandos.

Debería contratarnos eventualmente para hacerle una plantilla con un aspecto personalizado que también pueda incluir información adicional, como una foto del estudiante, calificaciones y transcripciones.

¿Para quién es esta guía? ¿Cómo se utiliza?

Esta guía es para administradores de sistemas que escriben scripts de shell que utilizan Constata y personas técnicas que exploran las capacidades de la API de emisiones.

Se debe seguir paso a paso en BASH para Linux, pero debería funcionar en Windows y Mac con cambios mínimos.

Nuestro API y documentación están originalmente en inglés, puede ver esta guía en inglés.

Si necesita ayuda, encuentra un error o simplemente lo encuentra confuso, envíenos un correo electrónico a devops@constata.eu.

¿Es usted un desarrollador que integra nuestra API? Después de leer esto, consulte nuestro explorador de API de GraphQL y nuestro repositorio de GitHub, especialmente la librería de clientes en Rust en la que se basa la herramienta de línea de comandos y la biblioteca de clientes en C#.

¿No es técnico? No se preocupe, tenemos una aplicación WEB3 para hacer esto directamente desde su navegador, simplemente vaya aquí.

Pasos

  1. Genere su firma digital.
  2. Obtenga la utilidad de línea de comando.
  3. Liste los estudiantes en un archivo CSV.
  4. Envíe su CSV para crear una Emisión.
  5. Firme los diplomas.
  6. Relájese mientras hacemos nuestra magia.

Genere su firma digital.

Usted puede hacer esto registrándose en constata. Es rápido y proporcionar su dirección de correo electrónico es opcional, solamente lo requerimos si desea que le enviemos diplomas por correo electrónico.

El proceso de registro creará una clave privada protegida por contraseña en su dispositivo, y ofrecerá guardar un archivo signature.json que utilizará para autenticarse en la utilidad de línea de comando.

Constata nunca conoce su clave privada, usted debe contactarnos si cree que ha sido comprometida.

Cada solicitud a nuestro sitio web y API se firma en su dispositivo siguiendo el protocolo de firma de mensaje de Bitcoin, utilizando la clave generada.

También puede registrarse en nuestro entorno de prueba, que imita el servicio de producción. Envíenos un correo electrónico para solicitar crédito ilimitado para emitir diplomas en el entorno de prueba.

Los documentos generados en el entorno de prueba son solo para fines de prueba, no están cubiertos por nuestros términos y condiciones, y se registrarán en la red testnet de Bitcoin insegura.

Obtenga la utilidad de línea de comando.

$ wget -q https://github.com/constata-eu/constata/releases/download/latest/constata-cli-linux $ chmod +x constata-cli-linux $ ./constata-cli-linux help help Print this message or the help of the given subcommand(s) Usage: constata-cli-linux help [COMMAND]... Arguments: [COMMAND]... Print help for the subcommand(s)

La API de Constata se construye en GraphQL y requiere firmar cada solicitud para autenticación, por lo que construimos esta utilidad para realizar solicitudes autenticadas y analizar los resultados desde la línea de comando.

Estos son los enlaces de descarga de los binarios precompilados para Linux, Windows y Mac OS. Siempre están disponibles con notas de lanzamiento en la página de lanzamiento más reciente.

Estamos vinculando los binarios de manera estática para su conveniencia, pero nuestro código es de código abierto, usted puede bifurcar el cliente y construir el suyo propio.

Liste los estudiantes en un archivo CSV.

$ cat <<EOF > students.csv name;email;custom_text;motive;date;place Alice Doe;alice@example.com;Experta en Blockchain;XXI Masterclass de Blockchain;30 de mayo de 2023;El Metaverso Bob Bobson;bob@example.com;Experto en Blockchain;XXI Masterclass de Blockchain;30 de mayo de 2023;El Metaverso EOF

Si verifica su dirección de correo electrónico con Constata, tendrá acceso a nuestras funciones de correo electrónico; así podrá cambiar el correo electrónico de Alice y hacer que el diploma se entregue allí.

Puede usar ,, : o ; como separadores de columna. El tamaño máximo permitido para un archivo CSV es de 50 megabytes.

Este CSV tiene columnas compatibles con la plantilla predeterminada, llamamos a esta definición de columna un esquema.

Cuando nos contrata para hacer su plantilla personalizada, le daremos un archivo CSV de ejemplo para que lo use con su esquema.

También puede consultar tus plantillas existentes para ver sus esquemas y los campos que son obligatorios.

$ ./constata-cli-linux all-templates

Envíe su CSV para crear una Emisión.

$ ./constata-cli-linux create-issuance-from-csv "Test issuance name" --csv-file=students.csv \ --new-kind=diploma --new-name="My Template" --new-logo-text="Widgets Inc." { "id": 265, "templateId": 164, "templateName": "My Template", "templateKind": "DIPLOMA", "state": "received", "name": "Test issuance name", "createdAt": "2023-04-20T19:27:01.355285Z", "errors": null, "tokensNeeded": null, "entriesCount": 2, "adminVisitedCount": 0, "publicVisitCount": 0 }

Este comando producirá una nueva Emisión con 2 Entradas — una para cada estudiante — pero los diplomas reales se generan de manera asíncrona, esto significa que su emisión comienza en un estado de recibido, y cambiará a creado después de unos segundos.

Usted puede esperar hasta que esta emisión, con id 265, sea creada para asegurarse de que estamos listos para revisar y firmar.

$ ./constata-cli-linux estado-emision 265 creado --wait

También estamos creando una copia de nuestra plantilla predeterminada en el mismo comando con las opciones --new-kind, --new-name y --new-logo-text. Consulte la ayuda del comando para más opciones.

$ ./constata-cli-linux ayuda crear-emision-desde-csv

La única personalización permitida para la plantilla predeterminada es agregar el nombre de su empresa o la imagen de su logo de la empresa. Sugerimos que usted nos contrate para hacer una plantilla personalizada si eso no es suficiente.

O envie cada entrada usando JSON.

$ ./constata-cli-linux --json-pointer=/id create-issuance-from-json "Another Test" --template-id 164 266 $ ./constata-cli-linux append-entries-to-issuance 266 --entry='{"name":"Bob","motive":"Accredited Expert"}' { "id": 266, "templateId": 164, "templateName": "My Template", "templateKind": "DIPLOMA", "state": "received", "name": "Another Test", "createdAt": "2023-04-20T19:27:01.355285Z", "errors": null, "tokensNeeded": null, "entriesCount": 1, "adminVisitedCount": 0, "publicVisitCount": 0 }

El ejemplo anterior inicia una nueva Emisión sin entradas. También utiliza el argumento --json-pointer para imprimir solo el identificador de la nueva emisión en lugar de todo el JSON. El segundo comando agrega una sola Entrada en formato JSON.

Hay muchas opciones y variaciones en ambos comandos, como enviar varias entradas a la vez, o usar un archivo JSON. La ayuda de cada comando le proporcionará más información.

Las entradas se pueden agregar libremente hasta que comience la firma. Después de ese punto, no se permiten nuevas entradas.

Firme los diplomas.

$ ./constata-cli-linux preview-sample-from-issuance 265 preview.html && open preview.html Preview for entry 265 saved to file Opening in browser window $ ./constata-cli-linux sign-issuance 265 Signing entry 1 of 2 Signing entry 2 of 2

Ese último comando descarga y firma cada entrada, moviendo la emisión del estado created [creado] al estado signed [firmado]. Puede tomar algún tiempo firmar todas las entradas, pero el proceso puede interrumpirse y reanudarse de manera segura.

En general, es buena idea leer antes de firmar — por lo que el primer comando obtiene una vista previa de una de las entradas de la emisión y la abre en su navegador.

También puede listar todas las entradas de la emisión y obtener una vista previa de entradas específicas con estos dos comandos a continuación.

$ ./constata-cli-linux all-entries --issuance-id-eq=265 $ ./constata-cli-linux preview-entry <entry_id> preview.html

Se aplican algunos cargos.

$ ./constata-cli-linux --json-pointer=/missing account-state 2 $ ./constata-cli-linux --json-pointer=/pendingInvoiceLinkUrl account-state https://api.constata.eu/#/invoice/note+computer+beach+music+train

Usted paga por su emisión justo después de firmarla, utilizando tókens de constata — revise su estado de cuenta para asegurarse de que no le falten.

Si le faltan tókens, sus entradas pueden ser puestas en espera y nos pondremos en contacto con usted, pero también puede comprarlos visitando pendingInvoiceLinkUrl.

Los clientes Premium pueden tener crédito hasta una cantidad acordada, o una tarifa plana, y nunca quedarse sin tókens.

Para fines de esta guía, asumiremos que se acaba de registrar en el nivel gratuito, que regala hasta 10 tókens al mes para la emisión de diplomas.

Para el entorno de pruebas, debe contactarnos para que le demos un crédito ilimitado.

Relájese mientras hacemos nuestra magia.

$ ./constata-cli-linux --json-pointer=/allIssuances/0/state all-issuances --id-eq 265 "completed" $ if ./constata-cli-linux issuance-state 265 completed; then ./constata-cli-linux issuance-export 265 issuance_exported.csv fi Export for Issuance #265 saved to file

Procesaremos su emisión firmada y la moveremos al estado completed [completado], esto generalmente tarda menos de una hora. Debería hacer una consulta cada par de minutos para verificar si está listo, como se muestra en el ejemplo anterior.

Si está bien con un proceso de larga duración, esta variante bloqueará hasta que la emisión esté completada.

$ ./constata-cli-linux issuance-state 265 completed --wait

El proceso de certificación puede tardar más debido a las condiciones de la red blockchain fuera de nuestro control, pero siempre estamos monitoreando y acelerando activamente el proceso.

Cada entrada tendrá una URL de acceso administrativo especial que puede compartir con los estudiantes, donde pueden ver o descargar su diploma, así como compartirlo en línea y administrar sus derechos de protección de datos.

Esta URL se les envía por correo electrónico de inmediato si proporciona su dirección de correo electrónico — recuerde verificar su propio correo electrónico para habilitar esta función.

También puede exportar su emisión de vuelta a CSV, el CSV exportado incluirá las columnas originales y mantendrá su orden, pero también tendrá nuevas columnas como la constata_admin_access_url. Podría utilizarla en herramientas de correo masivo como Mailchimp o Sendinblue si prefiere administrar su propio correo.

Consulte su emisión y sus entradas de la siguiente manera.

$ ./constata-cli-linux --json-pointer=/allIssuances/0 all-issuances --id-eq=265 $ ./constata-cli-linux all-entries --issuance-id-eq=265

¡Listo!

Acaba de emitir sus primeros diplomas verificables con Constata.

Para ser breve — como ya sabe, ha sido difícil — se han omitido la mayoría de las opciones en la utilidad de línea de comandos, le sugiero que consulte la ayuda de los subcomandos.

Si tiene algún comentario, puede comunicarse con nosotros por correo electrónico, GitHub o en nuestras otras redes sociales, encuentre los enlaces en el pie de página.

Esta guía en sí misma está disponible en nuestro repositorio de GitHub y se aceptan "pull requests".