Overview
The EmpresaXPublicista API manages the many-to-many relationships between companies (Empresas) and publicists (Publicistas). This allows publicists to work with multiple companies, and companies to work with multiple publicists.
Base Endpoint
POST /Database/Database/empresaxpublicistas/
GET /Database/Database/empresaxpublicistas/
GET /Database/Database/empresaxpublicistas/{id}/
PUT /Database/Database/empresaxpublicistas/{id}/
PATCH /Database/Database/empresaxpublicistas/{id}/
DELETE /Database/Database/empresaxpublicistas/{id}/
The EmpresaXPublicista Object
Unique identifier for the relationship (auto-generated)
Foreign key reference to the Publicista (Advertiser) in this relationship
Foreign key reference to the Empresa (Company) in this relationship
Status of the relationship. Common values:
- 0: Inactive
- 1: Active
- 3: Terminated
Date when the relationship was established (YYYY-MM-DD format)
Date when the relationship was last modified (YYYY-MM-DD format)
Create a Company-Publicist Relationship
curl -X POST https://api.example.com/Database/Database/Database/empresaxpublicistas/ \
-H "Content-Type: application/json" \
-d '{
"id_publicista": 5,
"id_empresa": 12,
"estado": 1,
"fecha_creacion": "2024-01-25",
"fecha_modificacion": "2024-01-25"
}'
{
"id": 18,
"id_publicista": 5,
"id_empresa": 12,
"estado": 1,
"fecha_creacion": "2024-01-25",
"fecha_modificacion": "2024-01-25"
}
Retrieve a Relationship
curl -X GET https://api.example.com/Database/Database/Database/empresaxpublicistas/18/
{
"id": 18,
"id_publicista": 5,
"id_empresa": 12,
"estado": 1,
"fecha_creacion": "2024-01-25",
"fecha_modificacion": "2024-01-25"
}
List All Relationships
curl -X GET https://api.example.com/Database/Database/Database/empresaxpublicistas/
[
{
"id": 18,
"id_publicista": 5,
"id_empresa": 12,
"estado": 1,
"fecha_creacion": "2024-01-25",
"fecha_modificacion": "2024-01-25"
},
{
"id": 19,
"id_publicista": 5,
"id_empresa": 13,
"estado": 1,
"fecha_creacion": "2024-02-01",
"fecha_modificacion": "2024-02-01"
},
{
"id": 20,
"id_publicista": 6,
"id_empresa": 12,
"estado": 1,
"fecha_creacion": "2024-02-10",
"fecha_modificacion": "2024-02-10"
}
]
Update a Relationship
curl -X PATCH https://api.example.com/Database/Database/Database/empresaxpublicistas/18/ \
-H "Content-Type: application/json" \
-d '{
"estado": 0,
"fecha_modificacion": "2024-03-09"
}'
{
"id": 18,
"id_publicista": 5,
"id_empresa": 12,
"estado": 0,
"fecha_creacion": "2024-01-25",
"fecha_modificacion": "2024-03-09"
}
Delete a Relationship
curl -X DELETE https://api.example.com/Database/Database/Database/empresaxpublicistas/18/
Filter by Publicist
Retrieve all companies associated with a specific publicist:
curl -X GET "https://api.example.com/Database/Database/Database/empresaxpublicistas/?id_publicista=5"
[
{
"id": 18,
"id_publicista": 5,
"id_empresa": 12,
"estado": 1,
"fecha_creacion": "2024-01-25",
"fecha_modificacion": "2024-01-25"
},
{
"id": 19,
"id_publicista": 5,
"id_empresa": 13,
"estado": 1,
"fecha_creacion": "2024-02-01",
"fecha_modificacion": "2024-02-01"
}
]
Filter by Company
Retrieve all publicists associated with a specific company:
curl -X GET "https://api.example.com/Database/Database/Database/empresaxpublicistas/?id_empresa=12"
[
{
"id": 18,
"id_publicista": 5,
"id_empresa": 12,
"estado": 1,
"fecha_creacion": "2024-01-25",
"fecha_modificacion": "2024-01-25"
},
{
"id": 20,
"id_publicista": 6,
"id_empresa": 12,
"estado": 1,
"fecha_creacion": "2024-02-10",
"fecha_modificacion": "2024-02-10"
}
]
Filter by Status
Retrieve only active relationships:
curl -X GET "https://api.example.com/Database/Database/Database/empresaxpublicistas/?estado=1"
Combined Filters
You can combine multiple filters to narrow down results:
curl -X GET "https://api.example.com/Database/Database/Database/empresaxpublicistas/?id_publicista=5&estado=1"
[
{
"id": 18,
"id_publicista": 5,
"id_empresa": 12,
"estado": 1,
"fecha_creacion": "2024-01-25",
"fecha_modificacion": "2024-01-25"
},
{
"id": 19,
"id_publicista": 5,
"id_empresa": 13,
"estado": 1,
"fecha_creacion": "2024-02-01",
"fecha_modificacion": "2024-02-01"
}
]
Use Cases
Grant Publicist Access to Company
When a company wants to work with a publicist, create an active relationship:
import requests
from datetime import date
url = "https://api.example.com/Database/Database/empresaxpublicistas/"
today = date.today().isoformat()
payload = {
"id_publicista": 5,
"id_empresa": 12,
"estado": 1,
"fecha_creacion": today,
"fecha_modificacion": today
}
response = requests.post(url, json=payload)
if response.status_code == 201:
print("Publicist granted access to company")
Revoke Publicist Access
To revoke a publicist’s access to a company, update the relationship status:
import requests
from datetime import date
relationship_id = 18
url = f"https://api.example.com/Database/Database/empresaxpublicistas/{relationship_id}/"
payload = {
"estado": 0,
"fecha_modificacion": date.today().isoformat()
}
response = requests.patch(url, json=payload)
if response.status_code == 200:
print("Publicist access revoked")
Get All Companies for a Publicist
Retrieve all companies that a publicist can manage:
import requests
publicist_id = 5
url = f"https://api.example.com/Database/Database/empresaxpublicistas/?id_publicista={publicist_id}&estado=1"
response = requests.get(url)
relationships = response.json()
company_ids = [rel['id_empresa'] for rel in relationships]
print(f"Publicist {publicist_id} manages companies: {company_ids}")
Integration with Views
The platform includes specialized views that use these relationships:
empresas_list/{usuario_id}/ - Returns companies accessible to a publicist user
sectores_por_usuario/{usuario_id}/ - Returns sectors for companies a publicist manages
These views automatically filter based on the user’s role and their EmpresaXPublicista relationships.