Misiones
Ver una misión
Para ver una misión se puede enviar un GET request como se muestra a continuación:
HTTP:
GET /v1.0/workspaces/55ac11bf-bc15-493a-8063-abbea15473db/assignments/afc76c05-136e-4fda-8286-33a3c55a4008/ HTTP/1.1
Host: api.optacheck.com
Authorization: Token f88dc82a9023ee952613ff6d3b521a4b90b6817e
x-api-key: 7eb16e78fdb4de13fa4eb3aadd26225fcff97dac
Cache-Control: no-cache
curl -X GET \
https://api.optacheck.com/v1.0/workspaces/55ac11bf-bc15-493a-8063-abbea15473db/assignments/afc76c05-136e-4fda-8286-33a3c55a4008/ \
-H 'Authorization: Token f88dc82a9023ee952613ff6d3b521a4b90b6817e' \
-H 'Cache-Control: no-cache' \
-H 'x-api-key: 7eb16e78fdb4de13fa4eb3aadd26225fcff97dac'
Crear una misión
Para crear una misión se utiliza el metodo POST:
HTTP:
POST /v1.0/workspaces/55ac11bf-bc15-493a-8063-abbea15473db/assignments/ HTTP/1.1
Host: api.optacheck.com
Authorization: Token f88dc82a9023ee952613ff6d3b521a4b90b6817e
x-api-key: 7eb16e78fdb4de13fa4eb3aadd26225fcff97dac
Content-Type: application/json
Cache-Control: no-cache
{
"status": "assigned",
"title": "Jul 14 test - 3",
"description": "test 3 del Jul 14",
"form": "10ee467b-3ae1-423f-ae0f-e4ba9a6fd751",
"project": null,
"client": "0e5acd00-53c1-4fdd-ba2a-c7b3de4fbbde",
"data": {},
"user_email": "pablo.monterroso@somosopta.com"
}
CURL:
curl -X POST \
https://api.optacheck.com/v1.0/workspaces/55ac11bf-bc15-493a-8063-abbea15473db/assignments/ \
-H 'Authorization: Token f88dc82a9023ee952613ff6d3b521a4b90b6817e' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'x-api-key: 7eb16e78fdb4de13fa4eb3aadd26225fcff97dac' \
-d '{
"status": "assigned",
"title": "Jul 14 test - 3",
"description": "test 3 del Jul 14",
"form": "10ee467b-3ae1-423f-ae0f-e4ba9a6fd751",
"project": null,
"client": "0e5acd00-53c1-4fdd-ba2a-c7b3de4fbbde",
"data": {},
"user_email": "pablo.monterroso@somosopta.com"
}'
Actualizar una misión
Para actualizar el estado de una mision se utiliza el metodo PATCH:
HTTP:
PATCH /v1.0/workspaces/55ac11bf-bc15-493a-8063-abbea15473db/assignments/efa5a106-1900-4840-873a-3a94aad71c42/ HTTP/1.1
Host: api.optacheck.com
Authorization: Token f88dc82a9023ee952613ff6d3b521a4b90b6817e
x-api-key: 7eb16e78fdb4de13fa4eb3aadd26225fcff97dac
Content-Type: application/json
Cache-Control: no-cache
{
"status": "active"
}
CURL:
curl -X PATCH \
https://api.optacheck.com/v1.0/workspaces/55ac11bf-bc15-493a-8063-abbea15473db/assignments/efa5a106-1900-4840-873a-3a94aad71c42/ \
-H 'Authorization: Token f88dc82a9023ee952613ff6d3b521a4b90b6817e' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'x-api-key: 7eb16e78fdb4de13fa4eb3aadd26225fcff97dac' \
-d '{
"status": "active"
}'
Eliminar una misión
Para eliminar una mision se utiliza el metodo DELETE:
HTTP:
DELETE /v1.0/workspaces/55ac11bf-bc15-493a-8063-abbea15473db/assignments/efa5a106-1900-4840-873a-3a94aad71c42/ HTTP/1.1
Host: api.optacheck.com
Authorization: Token f88dc82a9023ee952613ff6d3b521a4b90b6817e
x-api-key: 7eb16e78fdb4de13fa4eb3aadd26225fcff97dac
Content-Type: application/json
Cache-Control: no-cache
CURL:
curl -X DELETE \
https://api.optacheck.com/v1.0/workspaces/55ac11bf-bc15-493a-8063-abbea15473db/assignments/efa5a106-1900-4840-873a-3a94aad71c42/ \
-H 'Authorization: Token f88dc82a9023ee952613ff6d3b521a4b90b6817e' \
-H 'Cache-Control: no-cache' \
-H 'x-api-key: 7eb16e78fdb4de13fa4eb3aadd26225fcff97dac'
Campos de una misión
Los principales campos que tiene una mision son:
- status: Estado de la misión.
- title: Titulo puede ser usado para reconocer la misión. Un maximo de 100 carácteres.
- description (optional): Una descripción de la misión. Un maximo de 255 carácteres.
- form (optional): ID de un formulario que la misión utilizara.
- project (optional): ID de un proyecto.
- client (optional): ID de un cliente.
- user_email: Email del usuario al que queremos asignar la misión.
- data (optional): Información de las preguntas que aparecen en la misión.
Los posibles valores para el estado de una mision son:
- assigned: Asignado
- active: Activa
- done: Terminada y exitosa
- failed: Teminada y falló
- cancel: Terminada y cancelada
Tipos de campos
El campo "data" debe de estar compuesto de los siguientes valores según el tipo de pregunta.
Tipo texto
{
"type": "text",
"title": "",
"value": "",
"editable": true, // (true permite al operador editar la pregunta, false puede ser usado para mostrar información de ayuda al operador)
"max_length": 100, (Cantidad maxima de carácteres que permitira ingresar en la App)
"input_type": "text" (opciones: text, number, tel)
}
Tipo texto con multiples respuestas
Le permite al usuario ingresar varias respuestas a una pregunta. Las respuestas estan en el atributo "value" que es una lista (array of strings).
{ "type": "multi-text", "title": "", "value": ["respuesta 1", "respuesta 2", "respuesta 3"], "max_length": 100, (Cantidad maxima de carácteres que permitira ingresar en la App) "input_type": "text" (opciones: text, number, tel) }
Tipo foto
{
"type": "photo",
"title": "",
"value": "" // (an uuid value)
}
Tipo GPS
{
"type": "gps",
"title": "",
"value": null
}
Tipo fecha
{
"type": "date",
"title": "",
"value": "year-month-day"
}
Tipo selección
{
"type": "select",
"title": "",
"value": null,
"select_default_value": { (valor por defecto tomado del campo select_values, puede dejar este campo como null)
"idx": 1,
"value": "Titular"
},
"select_values": [
{
"value": "ejemplo-1",
"idx": 1
},
{
"value": "ejemplo-2",
"idx": 2
},
{
"value": "ejemplo-3",
"idx": 3
}
]
}
Tipo si/no (checkbox)
{
"type": "checkbox",
"title": "¿Esta funcionando bien?",
"value": true
}
Tipo Firma (signature)
Le permite al usuario dibujar su firma en la app. Esta se guarda en el atributo "value" como una imagen en Base64.
{
"type": "signature",
"title": "Firma del cliente",
"value": ""
}
Tipo Ticket Impreso
Ejemplo 1:
El campo "value" acepta un objeto con un atributo "content" que consiste en una lista de objectos. en cada objeto en esta lista puede llevar:
"text": string - el texto que se desea imprimir.
"fontsize": number - tamaño del font.
"bold": boolean - texto en negrita.
"margin": number - Un número para margenes iguales o una lista de números indicando [left, top, right, bottom] o [horizontal, vertical]
"alignment": string - Disposición - "right", "center", "left"
{
"type": "print-ticket",
"title": "Ticket de aviso",
"value": {
"content": [
{ image: "data:image/jpeg;base64,...encodedContent...", fit: [100, 100]},
{ "text": "Comprobante de pago", "fontSize": 25, "bold": true, "alignment": "center" },
{ "text": "Fecha: 2018-12-09", "alignment": "right", "fontSize": 22, "bold": true, "margin": [5, 0] },
{ "text": "Le informamos que: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor",
"fontSize": 22, "margin": [10, 10, 10, 10] },
"Un simple texto sin ningún formato",
{ "text": "Cualquier consulta comunicarse al:", "fontSize": 22, "margin": [5, 5, 5, 5], "alignment": "center" },
{ "text": "Tel. 55332211", "fontSize": 22, "alignment": "center", "bold": true },
{
text: [
"Este texto pude llevar otros objectos para definir un formato dentro de otro",
{ text: "por ejemplo hacer parte del texto con otro tamaño de fuente", fontSize: 15 },
"que el resto"
]
}
]
}
}
Ejemplo 2:
Una forma más simple es colocando en value todo el contenido pero sin formato.
{
"type": "print-ticket",
"title": "Ticket de aviso",
"value": "Asi simple un texto que se quiera mostrar. Este texto puede llevar saltos de linea utilando el simbolo . Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation"
}