{"info":{"_postman_id":"091da6bb-aab6-4c9d-b684-a0efac70ecee","name":"SeedIQ-AI","description":"<html><head></head><body><img src=\"https://content.pstmn.io/d2c9613d-2733-4292-ae78-739e01a832c1/aW1hZ2UucG5n\" width=\"169\" height=\"211\">\n\n<p>A <strong>API de Inteligência Artificial (IA)</strong> do <strong>SeedIQ</strong> é o núcleo responsável pelo processamento e análise das imagens enviadas pelo aplicativo.</p>\n<p>Seu principal objetivo é identificar, classificar e quantificar características dos grãos (como soja e milho), utilizando modelos de visão computacional e aprendizado de máquina para fornecer resultados precisos e automatizados.</p>\n<p>Essa API atua em conjunto com a <strong>API central do SeedIQ</strong>, recebendo solicitações de classificação, processando as imagens em tempo real e retornando os resultados da análise, que posteriormente são enviados de volta ao sistema principal por meio de <em>webhooks</em>.</p>\n<p>Exemplo de uso: utilizada para processar e analisar imagens de grãos capturadas em campo, permitindo a classificação automática de acordo com a qualidade e tipo de semente.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"44409413","collectionId":"091da6bb-aab6-4c9d-b684-a0efac70ecee","publishedId":"2sB3WjzjEt","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"1a633c"},"publishDate":"2025-10-25T21:40:21.000Z"},"item":[{"name":"webhook","item":[{"name":"analyze","item":[{"name":"enqueue","id":"e1911eb8-fb66-43d9-bc1e-4a9ded8e920f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"callback_url\": \"https://webhook.site/6e3729cc-fea0-4eb5-94c1-99536689165e\",\n    \"payload\": {\n        \"external_id\": \"2da01f62-c895-4148-a3ff-92644810c4db\",\n        \"image_url\": \"https://bjjqkcvxfnxrcsxtrsai.supabase.co/storage/v1/object/public/base-images/storage/v1/s3/base-images/base-images/classifications/1aHgkzTpbJaY2utbT5cddZksDcsecnlwp1hkvJ4c.jpg\",\n        \"seed_category\": \"corn\"\n    }\n}\n","options":{"raw":{"language":"json"}}},"url":"webhook/analyze/enqueue","description":"<p>Este endpoint adiciona uma nova tarefa à <strong>fila de análise de imagens de grãos</strong>.  </p>\n<p>A API central envia uma requisição para este endpoint informando a imagem, o identificador da classificação (<code>external_id</code>) e a categoria da semente.  </p>\n<p>Após o envio, a tarefa será processada pelo sistema de IA, e o resultado será retornado via <strong>webhook</strong> no <code>callback_url</code> informado.</p>\n<p><strong>Exemplo de Uso:</strong>  </p>\n<p>Utilizado pela API central para enviar imagens de grãos que devem ser analisadas automaticamente, garantindo que cada classificação seja processada e os resultados retornados de forma assíncrona.</p>\n","urlObject":{"path":["analyze","enqueue"],"host":["webhook"],"query":[],"variable":[]}},"response":[{"id":"c428b037-b6d1-4135-87fd-f2930c7cfd93","name":"202","originalRequest":{"method":"POST","header":[{"key":"Accept-Language","value":"en","type":"text","disabled":true}],"body":{"mode":"raw","raw":"{\n    \"callback_url\": \"https://webhook.site/42c76dba-1db2-496f-8ce2-411b4f181c93\",\n    \"payload\": {\n        \"externalId\": \"12312u3bi12hjhasdjdcaskjhdbaskdhaskdj\",\n        \"imageUrl\": \"https://imagens-cdn.canalrural.com.br/wp-content/uploads/gr%C3%A3os-soja.jpg\",\n        \"seedCategory\": \"soy\"\n    }\n}\n","options":{"raw":{"language":"json"}}},"url":"webhook/analyze/enqueue"},"status":"ACCEPTED","code":202,"_postman_previewlanguage":null,"header":[{"key":"Server","value":"Werkzeug/3.0.1 Python/3.13.3"},{"key":"Date","value":"Thu, 23 Oct 2025 14:40:42 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"215"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"external_id\": \"12312u3bi12hjhasdjdcaskjhdbaskdhaskdj\",\n        \"job_id\": \"bd77a31a-aeab-43d0-b671-b2a8a7791223\",\n        \"status\": \"QUEUED\"\n    },\n    \"message\": \"Job queued successfully\",\n    \"status\": true\n}"},{"id":"5933b3d5-5d11-4138-b934-ec7be6ebb9c0","name":"202","originalRequest":{"method":"POST","header":[{"key":"Accept-Language","value":"en","type":"text","disabled":true}],"body":{"mode":"raw","raw":"{\n    \"callback_url\": \"http://laravel.test/api/webhook/analyze\",\n    \"payload\": {\n        \"external_id\": \"2da01f62-c895-4148-a3ff-92644810c4db\",\n        \"image_url\": \"https://imagens-cdn.canalrural.com.br/wp-content/uploads/gr%C3%A3os-soja.jpg\",\n        \"seed_category\": \"soy\"\n    }\n}\n","options":{"raw":{"language":"json"}}},"url":"webhook/analyze/enqueue"},"status":"ACCEPTED","code":202,"_postman_previewlanguage":null,"header":[{"key":"Server","value":"Werkzeug/3.0.1 Python/3.11.14"},{"key":"Date","value":"Sat, 22 Nov 2025 20:29:48 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"214"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"external_id\": \"2da01f62-c895-4148-a3ff-92644810c4db\",\n        \"job_id\": \"e6eb4b39-b6dd-4686-a7ea-9238a22992be\",\n        \"status\": \"QUEUED\"\n    },\n    \"message\": \"Job queued successfully\",\n    \"status\": true\n}"}],"_postman_id":"e1911eb8-fb66-43d9-bc1e-4a9ded8e920f"},{"name":"get_status","id":"d567618c-58cd-4aec-8c24-383adc50ed56","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"webhook/analyze/get_status/7b409c15-fbe6-45d3-9823-46764ef0d5bb","description":"<p>Este endpoint retorna o status atual de uma tarefa de análise de imagem de grãos previamente enfileirada.</p>\n<p>É utilizado para monitorar se a análise já foi concluída, está em andamento ou se ocorreu algum erro durante o processamento.</p>\n<p><strong>Exemplo de Uso:</strong></p>\n<p>Utilizado pela API central ou sistemas integrados para verificar o progresso de uma análise específica antes do recebimento do resultado final via webhook.</p>\n","urlObject":{"path":["analyze","get_status","7b409c15-fbe6-45d3-9823-46764ef0d5bb"],"host":["webhook"],"query":[],"variable":[]}},"response":[{"id":"d6268b0d-e3bf-491a-9951-ba0dd917699b","name":"200","originalRequest":{"method":"GET","header":[{"key":"Accept-Language","value":"en","type":"text","disabled":true}],"url":"webhook/analyze/get_status/088fe57b-bb46-45e8-af47-2d78425e7804"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Server","value":"Werkzeug/3.0.1 Python/3.13.3"},{"key":"Date","value":"Thu, 23 Oct 2025 15:32:07 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"472"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"job_id\": \"088fe57b-bb46-45e8-af47-2d78425e7804\",\n        \"payload\": {\n            \"external_id\": \"12312u3bi12hjhasdjdcaskjhdbaskdhaskdj\",\n            \"image_url\": \"https://imagens-cdn.canalrural.com.br/wp-content/uploads/gr%C3%A3os-soja.jpg\",\n            \"seed_category\": \"soy\"\n        },\n        \"result\": {\n            \"burned\": 17,\n            \"good_grains\": 126,\n            \"greenish\": 14\n        },\n        \"status\": \"COMPLETED\"\n    },\n    \"message\": \"Job status retrieved successfully\",\n    \"status\": true\n}"},{"id":"2b7cb81a-dad8-4b62-9c83-e91e70b0f852","name":"200","originalRequest":{"method":"GET","header":[{"key":"Accept-Language","value":"en","type":"text","disabled":true}],"url":"webhook/analyze/get_status/088fe57b-bb46-45e8-af47-2d78425e780a"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Server","value":"Werkzeug/3.0.1 Python/3.13.3"},{"key":"Date","value":"Thu, 23 Oct 2025 15:33:48 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"207"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"job_id\": \"088fe57b-bb46-45e8-af47-2d78425e780a\",\n        \"payload\": null,\n        \"result\": null,\n        \"status\": \"PENDING\"\n    },\n    \"message\": \"Job status retrieved successfully\",\n    \"status\": true\n}"},{"id":"3a950550-8bca-4b22-8098-5b145cc7d03f","name":"200","originalRequest":{"method":"GET","header":[{"key":"Accept-Language","value":"en","type":"text","disabled":true}],"url":"webhook/analyze/get_status/c380cc3d-ed90-499f-9366-a20c02cbcaff"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Server","value":"Werkzeug/3.0.1 Python/3.11.14"},{"key":"Date","value":"Sat, 22 Nov 2025 21:18:58 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"780"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"error\": null,\n        \"job_id\": \"c380cc3d-ed90-499f-9366-a20c02cbcaff\",\n        \"params_ai\": {\n            \"max_avg_area\": 1231.1574074074074,\n            \"min_avg_area\": 527.6388888888889,\n            \"total_grains\": 38\n        },\n        \"payload\": {\n            \"external_id\": \"2da01f62-c895-4148-a3ff-92644810c4db\",\n            \"image_url\": \"https://bjjqkcvxfnxrcsxtrsai.supabase.co/storage/v1/object/public/base-images/storage/v1/s3/base-images/base-images/classifications/1aHgkzTpbJaY2utbT5cddZksDcsecnlwp1hkvJ4c.jpg\",\n            \"seed_category\": \"corn\"\n        },\n        \"result\": {\n            \"bad_detection\": 11,\n            \"burned\": 0,\n            \"good\": 24,\n            \"greenish\": 0,\n            \"small\": 3,\n            \"unknown\": 0\n        },\n        \"status\": \"COMPLETED\"\n    },\n    \"message\": \"Job status retrieved successfully\",\n    \"status\": true\n}"}],"_postman_id":"d567618c-58cd-4aec-8c24-383adc50ed56"}],"id":"f1dcea99-175d-452f-a96d-00a20c0948f1","description":"<p>Esta pasta contém endpoints responsáveis pela <strong>gestão da fila de análises de imagens de grãos</strong>.</p>\n<p>Ela recebe requisições enviadas pela <strong>API central do SeedIQ</strong>, que envia imagens ou tarefas de classificação para serem processadas. Os endpoints dentro desta pasta permitem iniciar, monitorar e controlar o processamento das análises, garantindo que cada imagem seja analisada corretamente e que os resultados sejam retornados ao sistema central.</p>\n<p><strong>Exemplo de Uso:</strong> Utilizado pela API central para enviar novas tarefas de classificação de grãos, consultar o status das análises em andamento e processar os resultados antes do envio para os webhooks.</p>\n","_postman_id":"f1dcea99-175d-452f-a96d-00a20c0948f1"},{"name":"ping","id":"73bc3c89-0ffb-46f5-b9de-726e0396f4c4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":false},"method":"GET","header":[],"url":"webhook","description":"<p>Este endpoint recebe requisições enviadas pelo <strong>cliente</strong> para registrar notificações ou atualizações gerais relacionadas às análises de grãos. Ele funciona como o ponto central para envio de dados de classificação, permitindo que sistemas integrados atualizem informações no <strong>SeedIQ</strong> de forma segura.</p>\n<p>Todos os envios devem ser autenticados via <strong>Bearer Token</strong> ou <strong>chave de API</strong> no cabeçalho <code>Authorization</code>.</p>\n<p><strong>Exemplo de Uso:</strong>  </p>\n<p>Utilizado pelo cliente para enviar resultados de análises ou notificações de processamento, garantindo que o sistema central registre corretamente os dados recebidos.</p>\n","urlObject":{"host":["webhook"],"query":[],"variable":[]}},"response":[{"id":"13b00abd-e434-44a2-9530-9c4eca968cba","name":"200","originalRequest":{"method":"GET","header":[{"key":"Accept-Language","value":"en","type":"text","disabled":true}],"url":"webhook"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Server","value":"Werkzeug/3.0.1 Python/3.13.3"},{"key":"Date","value":"Thu, 23 Oct 2025 14:33:44 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"88"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": null,\n    \"message\": \"Webhook authenticated successfully\",\n    \"status\": true\n}"}],"_postman_id":"73bc3c89-0ffb-46f5-b9de-726e0396f4c4"}],"id":"ebc77656-f600-4acc-a2d6-925d0377184a","description":"<p>Esta pasta contém endpoints que recebem notificações enviadas pelo <strong>cliente</strong> (aplicativo SeedIQ ou sistemas integrados) para registrar resultados de classificações ou atualizar informações de análise de grãos.</p>\n<p>Os webhooks permitem enviar dados de forma segura e automatizada, incluindo <code>external_id</code> da classificação, status da análise, resultados numéricos e informações adicionais de payload. Todos os endpoints exigem autenticação via <strong>chave de API (WEBHOOK-API-KEY)</strong> no cabeçalho da requisição.</p>\n<p><strong>Exemplo de Uso:</strong> O cliente envia o resultado de uma análise de grãos realizada externamente para a API de IA, que valida e registra os dados no sistema central.</p>\n","_postman_id":"ebc77656-f600-4acc-a2d6-925d0377184a"},{"name":"welcome","id":"2a7340d9-603e-49d6-8c43-d27bc3f5a33c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"","description":"<p>Este endpoint retorna uma mensagem de boas-vindas da <strong>API de Inteligência Artificial (IA)</strong> do <strong>SeedIQ</strong>, indicando que a API está ativa e funcionando corretamente.</p>\n<p><strong>Exemplo de Uso:</strong>  </p>\n<p>Utilizado para verificar se a API de IA está online e acessível antes de iniciar chamadas de processamento ou integração com outros sistemas.</p>\n","urlObject":{"host":[""],"query":[],"variable":[]}},"response":[{"id":"04b97e12-43d4-42fe-98d5-83bf004c8d6e","name":"200","originalRequest":{"method":"GET","header":[{"key":"Accept-Language","value":"en","type":"text","disabled":true}],"url":""},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Server","value":"Werkzeug/3.0.1 Python/3.13.3"},{"key":"Date","value":"Thu, 23 Oct 2025 14:33:07 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"831"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"contact\": {\n            \"authors\": [\n                {\n                    \"github\": \"https://github.com/Erikli999\",\n                    \"name\": \"Erikli Arruda\",\n                    \"picture\": \"https://avatars.githubusercontent.com/u/138739176?v=4\"\n                },\n                {\n                    \"github\": \"https://github.com/piedro404\",\n                    \"name\": \"Pedro Henrique Martins Borges\",\n                    \"picture\": \"https://avatars.githubusercontent.com/u/88720549?v=4\"\n                },\n                {\n                    \"github\": \"https://github.com/thayna-bezerra\",\n                    \"name\": \"Thayna Bezerra\",\n                    \"picture\": \"https://avatars.githubusercontent.com/u/58120519?v=4\"\n                }\n            ],\n            \"github_organization\": \"https://github.com/CyberNomads404\",\n            \"name\": \"CyberNomads404\"\n        },\n        \"version\": \"1.0.0v\"\n    },\n    \"message\": \"Welcome to the SEEDIQ-AI API!\",\n    \"status\": true\n}"}],"_postman_id":"2a7340d9-603e-49d6-8c43-d27bc3f5a33c"},{"name":"routes","id":"2b617857-0965-4631-9aa6-8f9db2aea550","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"_routes","description":"<p>Este endpoint retorna todas as rotas disponíveis na API de IA do <strong>SeedIQ</strong>, incluindo métodos HTTP, caminhos e descrições associadas. Ele é útil para depuração, descoberta de endpoints e verificação da configuração da API em tempo real.</p>\n<p><strong>Exemplo de Uso:</strong>  </p>\n<p>Utilizado por desenvolvedores e sistemas integrados para obter uma visão geral de todas as rotas implementadas, facilitando testes e integração com novos endpoints.</p>\n","urlObject":{"host":["_routes"],"query":[],"variable":[]}},"response":[{"id":"68161781-733b-4699-9e57-a8754c070380","name":"200","originalRequest":{"method":"GET","header":[{"key":"Accept-Language","value":"en","type":"text","disabled":true}],"url":"_routes"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Server","value":"Werkzeug/3.0.1 Python/3.13.3"},{"key":"Date","value":"Thu, 23 Oct 2025 14:33:13 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"1518"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"routes\": [\n            {\n                \"endpoint\": \"static\",\n                \"methods\": [\n                    \"GET\"\n                ],\n                \"rule\": \"/static/<path:filename>\"\n            },\n            {\n                \"endpoint\": \"app_routes.swagger_ui\",\n                \"methods\": [\n                    \"GET\"\n                ],\n                \"rule\": \"/\"\n            },\n            {\n                \"endpoint\": \"app_routes.swagger\",\n                \"methods\": [\n                    \"GET\"\n                ],\n                \"rule\": \"/openapi.json\"\n            },\n            {\n                \"endpoint\": \"app_routes.favicon\",\n                \"methods\": [\n                    \"GET\"\n                ],\n                \"rule\": \"/favicon.ico\"\n            },\n            {\n                \"endpoint\": \"app_routes.api_routes.home\",\n                \"methods\": [\n                    \"GET\"\n                ],\n                \"rule\": \"/api/\"\n            },\n            {\n                \"endpoint\": \"app_routes.api_routes.list_routes\",\n                \"methods\": [\n                    \"GET\"\n                ],\n                \"rule\": \"/api/_routes\"\n            },\n            {\n                \"endpoint\": \"app_routes.api_routes.webhook_routes.webhook\",\n                \"methods\": [\n                    \"GET\"\n                ],\n                \"rule\": \"/api/webhook/\"\n            },\n            {\n                \"endpoint\": \"app_routes.api_routes.webhook_routes.analyze_routes.analyze_enqueue\",\n                \"methods\": [\n                    \"POST\"\n                ],\n                \"rule\": \"/api/webhook/analyze/enqueue\"\n            },\n            {\n                \"endpoint\": \"app_routes.api_routes.webhook_routes.analyze_routes.analyze_get_status\",\n                \"methods\": [\n                    \"GET\"\n                ],\n                \"rule\": \"/api/webhook/analyze/get_status\"\n            }\n        ]\n    },\n    \"message\": \"List of all available routes\",\n    \"status\": true\n}"}],"_postman_id":"2b617857-0965-4631-9aa6-8f9db2aea550"}],"event":[{"listen":"prerequest","script":{"id":"e7ac0133-dadf-4de5-be0f-2d7f27daaa3d","type":"text/javascript","packages":{},"requests":{},"exec":[""]}},{"listen":"test","script":{"id":"f32bd0d0-eb88-4c74-9823-46dfe3de41bb","type":"text/javascript","packages":{},"requests":{},"exec":[""]}}],"variable":[{"key":"base_url","value":""},{"key":"webhook_token","value":"","type":"default"}]}