Skip to main content

Overview

The Documents API provides comprehensive document management with AI-powered features including semantic search, automatic metadata extraction, OCR processing, and document relationships. Base Path: /documentos/ Search documents by metadata and content.
GET /documentos/api/buscar/
q
string
Search query for document title, code, or content
tipo_id
integer
Filter by document type ID
disciplina_id
integer
Filter by discipline ID
estado
string
Filter by status: BORRADOR, REVISION, APROBADO, ARCHIVADO
fecha_desde
string
Filter by date from (YYYY-MM-DD)
fecha_hasta
string
Filter by date to (YYYY-MM-DD)

Response

results
array
Array of document objects
Perform AI-powered semantic search using embeddings.
POST /documentos/api/busqueda-vectorial/
query
string
required
Natural language search query
limit
integer
default:"10"
Number of results to return
similarity_threshold
float
default:"0.7"
Minimum similarity score (0-1)
biblioteca_id
integer
Filter by library/collection ID

Response

results
array
Array of search results with similarity scores
fetch('/documentos/api/busqueda-vectorial/', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-CSRFToken': csrfToken
  },
  credentials: 'same-origin',
  body: JSON.stringify({
    query: 'pump maintenance procedures',
    limit: 5,
    similarity_threshold: 0.75
  })
})
.then(res => res.json())
.then(data => console.log(data.results));

Document Details

Get Document Details

Retrieve comprehensive information about a document.
GET /documentos/api/detalle/{doc_id}/
doc_id
integer
required
Document ID

Response

id
integer
Document ID
codigo
string
Document code
titulo
string
Document title
tipo
object
Document type information
disciplina
object
Discipline information
estado
string
Current status
revision_actual
object
Current revision details
metadatos
object
Custom metadata fields
comentarios
array
Array of comments
respuestas
array
Related response documents
responsable
object
Responsible user information

Document Operations

Update Document Status

Change the status of a document.
POST /documentos/api/actualizar-estado/{doc_id}/
doc_id
integer
required
Document ID
estado
string
required
New status: BORRADOR, REVISION, APROBADO, ARCHIVADO
comentario
string
Optional comment explaining the status change

Update Document Responsible

Assign a new responsible person.
POST /documentos/api/actualizar-responsable/{doc_id}/
doc_id
integer
required
Document ID
responsable_id
integer
required
User ID of new responsible person

Update Document Date

Update the document date.
POST /documentos/api/actualizar-fecha/{doc_id}/
doc_id
integer
required
Document ID
fecha
string
required
New date (YYYY-MM-DD format)
tipo
string
required
Date type: emision, vencimiento, recepcion

Comments and Annotations

Add Comment

Add a comment to a document.
POST /documentos/api/comentar/{doc_id}/
doc_id
integer
required
Document ID
texto
string
required
Comment text
x
float
X coordinate for pin comment on PDF
y
float
Y coordinate for pin comment on PDF
pagina
integer
PDF page number for pin
vinculos
array
Array of document IDs to link

Response

status
string
“success” or “error”
comentario_id
integer
Created comment ID
fetch('/documentos/api/comentar/456/', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-CSRFToken': csrfToken
  },
  credentials: 'same-origin',
  body: JSON.stringify({
    texto: 'This section needs revision',
    x: 150.5,
    y: 300.2,
    pagina: 3
  })
});

Edit Comment

Update an existing comment.
POST /documentos/api/comentar/u/{comentario_id}/
comentario_id
integer
required
Comment ID
texto
string
required
Updated comment text

Delete Comment

Remove a comment.
POST /documentos/api/comentar/d/{comentario_id}/
comentario_id
integer
required
Comment ID to delete

AI Processing

Trigger Text Extraction

Trigger n8n workflow to extract text from PDF.
POST /documentos/api/trigger-extraction/{doc_id}/
doc_id
integer
required
Document ID
This endpoint triggers an external n8n workflow for PDF text extraction using OCR.

Update Extracted Text

Callback endpoint to receive extracted text from n8n.
POST /documentos/api/update-texto/{doc_id}/
doc_id
integer
required
Document ID
texto
string
required
Extracted text content

Vectorize Document

Generate embeddings for semantic search.
POST /documentos/api/vectorize/{doc_id}/
doc_id
integer
required
Document ID
Uses Google Gemini API to generate embeddings from extracted text. Configured via GEMINI_API_KEY setting.

Chat with AI

Ask questions about documents using AI.
POST /documentos/api/chat-ia/
query
string
required
Natural language question
documento_id
integer
Specific document ID to query
biblioteca_id
integer
Library/collection ID to search within

Response

respuesta
string
AI-generated answer
documentos_relevantes
array
Array of relevant document IDs
confianza
float
Confidence score (0-1)
fetch('/documentos/api/chat-ia/', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-CSRFToken': csrfToken
  },
  credentials: 'same-origin',
  body: JSON.stringify({
    query: 'What is the recommended maintenance interval for centrifugal pumps?',
    biblioteca_id: 5
  })
});

Library Management

Get Document Libraries

Retrieve libraries/collections for a document.
GET /documentos/api/bibliotecas/{doc_id}/
doc_id
integer
required
Document ID

Response

bibliotecas
array
Array of library objects

Toggle Library Membership

Add or remove document from a library.
POST /documentos/api/bibliotecas/toggle/{doc_id}/{bib_id}/
doc_id
integer
required
Document ID
bib_id
integer
required
Library ID

Get Library Documents

Retrieve all documents in a library.
GET /documentos/api/bibliotecas/documentos/{bib_id}/
bib_id
integer
required
Library ID
page
integer
default:"1"
Page number for pagination

Metadata Management

Get Model Fields

Retrieve available fields for a content type (for metadata configuration).
GET /documentos/api/model-fields/
ct_id
integer
required
ContentType ID

Response

fields
array
Array of field names available for the model

Update Metadata Value

Update a custom metadata field value.
POST /documentos/api/metadato/u/{mv_id}/
mv_id
integer
required
MetadataValue ID
valor
string
required
New metadata value

Document Creation

Bulk Upload

Upload multiple documents at once.
POST /documentos/carga-masiva/submit/
archivos
array
required
Array of file uploads (multipart/form-data)
tipo_id
integer
required
Default document type ID
disciplina_id
integer
Default discipline ID
auto_process
boolean
default:"true"
Automatically trigger AI processing

n8n Integration

Processing Callback

Webhook endpoint for n8n to return processing results.
POST /documentos/api/callback-procesamiento/{revision_id}/
revision_id
integer
required
Revision ID
texto_extraido
string
Extracted text from PDF
metadata
object
Extracted metadata (title, author, date, etc.)
procesado_exitoso
boolean
required
Whether processing was successful
This endpoint is called by the n8n workflow after PDF processing completes.Configuration:
  • N8N_PROCESS_DOCUMENT_WEBHOOK_URL - Webhook URL to trigger processing
  • INTERNAL_SITE_URL - URL for n8n to callback to Django

Configuration

Key Settings

# energia/settings.py

# n8n Integration
N8N_BASE_URL = os.environ.get('N8N_INTERNAL_URL', 'http://n8n:5678')
N8N_EXTRACT_TEXTO_WEBHOOK_URL = f'{N8N_BASE_URL}/webhook/extract-text'
N8N_PROCESS_DOCUMENT_WEBHOOK_URL = f'{N8N_BASE_URL}/webhook/process-document'
N8N_CHAT_WEBHOOK_URL = f'{N8N_BASE_URL}/webhook/chat-documento'

# AI Configuration
GEMINI_API_KEY = os.environ.get('GEMINI_API_KEY', '')

# Callback URL
INTERNAL_SITE_URL = os.environ.get('INTERNAL_SITE_URL', 'http://app:8000')

Next Steps

Assets API

Asset management endpoints

Maintenance API

Work orders and maintenance

Build docs developers (and LLMs) love