Appearance
Referencia API
API completa del BFF de PROXIMITI — 40 endpoints en 14 grupos de etiquetas. Para pruebas interactivas, usa Swagger UI.
PROXIMITI PUDO ecosystem BFF — API Gateway with JWT validation, center enrichment, and downstream service orchestration.
Contact
Servers
http://localhost:8090Generated server url
Update pricing tier (admin)
PUT
/api/v1/pricing/admin/{id}
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Request Body
application/json
{
}
Responses
Pricing tier updated
*/*
{
}
Delete pricing tier (admin)
DELETE
/api/v1/pricing/admin/{id}
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Responses
Pricing tier deleted
List all pricing tiers (admin)
GET
/api/v1/pricing/admin
Includes inactive tiers. Requires USER_ADMIN role
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Responses
All pricing tiers
*/*
{
}
Create pricing tier (admin)
POST
/api/v1/pricing/admin
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Request Body
application/json
{
}
Responses
Pricing tier created
*/*
{
}
List active pricing tiers
GET
/api/v1/pricing
Available to all authenticated users
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Responses
Active pricing tiers
*/*
{
}
Estimate shipping cost
GET
/api/v1/pricing/estimate
Calculate price estimate for a given weight
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Query Parameters
weightKg*
Type
Requirednumber
Format
"double"Responses
Price estimate
*/*
{
}
Customer
Customer portal — profile, addresses, shipments, dashboard (requires USER_CUSTOMER role)
Get customer profile
GET
/api/v1/customer/profile
Returns profile from users service or JWT defaults if unavailable
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Keycloak-Sub
Type
string
X-Correlation-Id
Type
string
Responses
Customer profile
*/*
{
}
Update customer profile
PUT
/api/v1/customer/profile
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Keycloak-Sub
Type
string
X-Correlation-Id
Type
string
Request Body
application/json
{
}
Responses
Profile updated
*/*
{
}
Update address
PUT
/api/v1/customer/addresses/{id}
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Keycloak-Sub
Type
string
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Request Body
application/json
{
}
Responses
Address updated
*/*
{
}
Delete address
DELETE
/api/v1/customer/addresses/{id}
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Keycloak-Sub
Type
string
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Responses
Address deleted
List saved addresses
GET
/api/v1/customer/addresses
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Keycloak-Sub
Type
string
X-Correlation-Id
Type
string
Responses
Address list
*/*
{
}
Create address
POST
/api/v1/customer/addresses
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Keycloak-Sub
Type
string
X-Correlation-Id
Type
string
Request Body
application/json
{
}
Responses
Address created
*/*
{
}
List customer shipments
GET
/api/v1/customer/shipments
Paginated shipments scoped to the authenticated customer
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Customer-Id
Type
string
X-Correlation-Id
Type
string
Query Parameters
page
Type
integer
Format
"int32"Default
0size
Type
integer
Format
"int32"Default
20estado
Type
string
Responses
Paginated shipment list
*/*
{
}
Get customer dashboard
GET
/api/v1/customer/dashboard
Aggregated stats — active shipments, delivered count, pending pickups
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Customer-Id
Type
string
X-Correlation-Id
Type
string
Responses
Customer dashboard data
*/*
{
}
Update vehicle
PUT
/api/v1/admin/vehicles/{id}
Update vehicle matricula, type, and expiry dates
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Request Body
application/json
{
}
Responses
Vehicle updated
*/*
{
}
Deactivate vehicle
PUT
/api/v1/admin/vehicles/{id}/deactivate
Mark a vehicle as inactive
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Responses
Vehicle deactivated
*/*
{
}
Activate vehicle
PUT
/api/v1/admin/vehicles/{id}/activate
Reactivate a previously deactivated vehicle
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Responses
Vehicle activated
*/*
{
}
Create vehicle
POST
/api/v1/admin/vehicles
Create a new vehicle and assign it to a carrier
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Request Body
application/json
{
}
Responses
Vehicle created
*/*
{
}
List vehicles for carrier
GET
/api/v1/admin/vehicles/carrier/{carrierId}
List all vehicles assigned to a carrier
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
carrierId*
Type
Requiredinteger
Format
"int64"Responses
Vehicle list
*/*
{
}
Get user by ID
GET
/api/v1/admin/users/{id}
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Responses
User found
*/*
{
}
Update user
PUT
/api/v1/admin/users/{id}
Update a user's role and center assignment
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Request Body
application/json
{
}
Responses
User updated
*/*
{
}
List all users
GET
/api/v1/admin/users
Paginated list of all users
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Query Parameters
page
Type
integer
Format
"int32"Default
0size
Type
integer
Format
"int32"Default
20Responses
Paginated user list
*/*
{
}
Admin - Contracts
Admin contract CRUD, lifecycle transitions, and template management (requires USER_ADMIN role)
Operations
PUT/api/v1/admin/templates/contracts/{codPlantilla}DELETE/api/v1/admin/templates/contracts/{codPlantilla}GET/api/v1/admin/centers/{centerCode}/contracts/{codContrato}PUT/api/v1/admin/centers/{centerCode}/contracts/{codContrato}DELETE/api/v1/admin/centers/{centerCode}/contracts/{codContrato}GET/api/v1/admin/templates/contractsPOST/api/v1/admin/templates/contractsGET/api/v1/admin/centers/{centerCode}/contractsPOST/api/v1/admin/centers/{centerCode}/contractsPATCH/api/v1/admin/centers/{centerCode}/contracts/{codContrato}/statusGET/api/v1/admin/centers/{centerCode}/contracts/{codContrato}/historialGET/api/v1/admin/centers/{centerCode}/contracts/active
Update contract template
PUT
/api/v1/admin/templates/contracts/{codPlantilla}
Full replacement update of a contract template
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
codPlantilla*
Type
Requiredstring
Request Body
application/json
{
}
Responses
Template updated
*/*
{
}
Delete contract template
DELETE
/api/v1/admin/templates/contracts/{codPlantilla}
Soft-delete a contract template (sets activo=false)
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
codPlantilla*
Type
Requiredstring
Responses
Template deleted
Get contract
GET
/api/v1/admin/centers/{centerCode}/contracts/{codContrato}
Get a contract by its code
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
centerCode*
Type
Requiredstring
codContrato*
Type
Requiredstring
Responses
Contract found
*/*
{
}
Update contract
PUT
/api/v1/admin/centers/{centerCode}/contracts/{codContrato}
Update financial terms of a BORRADOR contract. ACTIVO contracts reject updates.
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
centerCode*
Type
Requiredstring
codContrato*
Type
Requiredstring
Request Body
application/json
{
}
Responses
Contract updated
*/*
{
}
Delete contract
DELETE
/api/v1/admin/centers/{centerCode}/contracts/{codContrato}
Soft-delete a BORRADOR contract (transitions to RESCINDIDO). Non-BORRADOR rejected.
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
centerCode*
Type
Requiredstring
codContrato*
Type
Requiredstring
Responses
Contract deleted
List contract templates
GET
/api/v1/admin/templates/contracts
List all active contract templates (STANDARD, PREMIUM, ENTERPRISE)
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Responses
Template list
*/*
{
}
Create contract template
POST
/api/v1/admin/templates/contracts
Create a new contract template with default financial terms
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Request Body
application/json
{
}
Responses
Template created
*/*
{
}
List contracts
GET
/api/v1/admin/centers/{centerCode}/contracts
List all contracts for a PUDO center, newest first
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
centerCode*
Type
Requiredstring
Responses
Contract list
*/*
{
}
Create contract
POST
/api/v1/admin/centers/{centerCode}/contracts
Create a new contract for a PUDO center, optionally pre-filled from a template
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
centerCode*
Type
Requiredstring
Request Body
application/json
{
}
Responses
Contract created
*/*
{
}
Transition contract status
PATCH
/api/v1/admin/centers/{centerCode}/contracts/{codContrato}/status
Move contract through state machine: BORRADOR→PENDIENTE_FIRMA→ACTIVO→SUSPENDIDO/VENCIDO/RESCINDIDO
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
centerCode*
Type
Requiredstring
codContrato*
Type
Requiredstring
Request Body
application/json
{
}
Responses
Status transitioned
*/*
{
}
Get contract history
GET
/api/v1/admin/centers/{centerCode}/contracts/{codContrato}/historial
Audit trail of all status transitions, most recent first
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
centerCode*
Type
Requiredstring
codContrato*
Type
Requiredstring
Responses
Contract history
*/*
{
}
Get active contract
GET
/api/v1/admin/centers/{centerCode}/contracts/active
Get the currently active contract for a PUDO center
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
centerCode*
Type
Requiredstring
Responses
Active contract
*/*
{
}
Admin - Centers
Admin PUDO center CRUD with ETag-based optimistic locking (requires USER_ADMIN role)
Operations
Get center by code
GET
/api/v1/admin/centers/{centerCode}
Returns center with ETag for optimistic locking
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Center-Id
Type
string
Path Parameters
centerCode*
Type
Requiredstring
Responses
Center found
*/*
{
}
Update center
PUT
/api/v1/admin/centers/{centerCode}
Update center with If-Match ETag for concurrency control
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
If-Match
Type
string
X-Correlation-Id
Type
string
Path Parameters
centerCode*
Type
Requiredstring
Request Body
application/json
{
}
Responses
Center updated
*/*
{
}
Delete center
DELETE
/api/v1/admin/centers/{centerCode}
Soft delete a PUDO center
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
centerCode*
Type
Requiredstring
Responses
Center deleted
List all centers
GET
/api/v1/admin/centers
Paginated list of all PUDO centers with full detail, optionally filtered by lifecycle status
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Query Parameters
page
Type
integer
Format
"int32"Default
0size
Type
integer
Format
"int32"Default
100status
Type
string
Responses
Paginated center list
*/*
{
}
Create center
POST
/api/v1/admin/centers
Create a new PUDO center
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Request Body
application/json
{
}
Responses
Center created
*/*
{
}
Transition center lifecycle status
PATCH
/api/v1/admin/centers/{centerCode}/lifecycle
Change center status with reason tracking
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
centerCode*
Type
Requiredstring
Request Body
application/json
{
}
Responses
Status transitioned
*/*
{
}
Get center lifecycle history
GET
/api/v1/admin/centers/{centerCode}/historial
Audit trail of status transitions
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
centerCode*
Type
Requiredstring
Responses
Lifecycle history
*/*
{
}
List establishment types
GET
/api/v1/admin/centers/tipos
Catalog of establishment types for center classification
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Responses
Type catalog
*/*
{
}
Admin - Carrier Contracts
Admin carrier contract CRUD, lifecycle, and template management (requires USER_ADMIN)
Operations
GET/api/v1/admin/carrier-contracts/{codContrato}PUT/api/v1/admin/carrier-contracts/{codContrato}DELETE/api/v1/admin/carrier-contracts/{codContrato}GET/api/v1/admin/carrier-contractsPOST/api/v1/admin/carrier-contractsGET/api/v1/admin/carrier-contracts/templatesPOST/api/v1/admin/carrier-contracts/templatesPATCH/api/v1/admin/carrier-contracts/{codContrato}/statusGET/api/v1/admin/carrier-contracts/{codContrato}/historyDELETE/api/v1/admin/carrier-contracts/templates/{codPlantilla}
Get carrier contract
GET
/api/v1/admin/carrier-contracts/{codContrato}
Get a carrier contract by code
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
codContrato*
Type
Requiredstring
Responses
Contract found
*/*
{
}
Update carrier contract
PUT
/api/v1/admin/carrier-contracts/{codContrato}
Update a carrier contract in editable state
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
codContrato*
Type
Requiredstring
Request Body
application/json
{
}
Responses
Contract updated
*/*
{
}
Delete carrier contract
DELETE
/api/v1/admin/carrier-contracts/{codContrato}
Hard-delete a BORRADOR carrier contract
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
codContrato*
Type
Requiredstring
Responses
Contract deleted
List carrier contracts
GET
/api/v1/admin/carrier-contracts
List carrier contracts, optionally filtered by carrierId
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Query Parameters
carrierId
Type
integer
Format
"int64"Responses
Contract list
*/*
{
}
Create carrier contract
POST
/api/v1/admin/carrier-contracts
Create a new carrier contract, optionally pre-filled from a template
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Request Body
application/json
{
}
Responses
Contract created
*/*
{
}
List carrier contract templates
GET
/api/v1/admin/carrier-contracts/templates
List all carrier contract templates
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Responses
Template list
*/*
{
}
Create carrier contract template
POST
/api/v1/admin/carrier-contracts/templates
Create a new carrier contract template
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Request Body
application/json
{
}
Responses
Template created
*/*
{
}
Transition carrier contract status
PATCH
/api/v1/admin/carrier-contracts/{codContrato}/status
Move carrier contract through state machine
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
codContrato*
Type
Requiredstring
Request Body
application/json
{
}
Responses
Status transitioned
*/*
{
}
Get carrier contract history
GET
/api/v1/admin/carrier-contracts/{codContrato}/history
Audit trail of all status transitions
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
codContrato*
Type
Requiredstring
Responses
Contract history
*/*
{
}
Delete carrier contract template
DELETE
/api/v1/admin/carrier-contracts/templates/{codPlantilla}
Delete a carrier contract template
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
codPlantilla*
Type
Requiredstring
Responses
Template deleted
Admin - Carrier Candidatos
Admin carrier onboarding pipeline management (requires USER_ADMIN role)
Operations
PUT/api/v1/admin/carrier-candidatos/{id}/rejectPUT/api/v1/admin/carrier-candidatos/{id}/notesPUT/api/v1/admin/carrier-candidatos/{id}/advanceGET/api/v1/admin/carrier-candidatosPOST/api/v1/admin/carrier-candidatosPOST/api/v1/admin/carrier-candidatos/{id}/convertGET/api/v1/admin/carrier-candidatos/{id}
Reject carrier candidato
PUT
/api/v1/admin/carrier-candidatos/{id}/reject
Reject carrier candidato — sets RECHAZADO state and records reason
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Request Body
application/json
{
}
Responses
Carrier candidato rejected
*/*
{
}
Update carrier candidato notes
PUT
/api/v1/admin/carrier-candidatos/{id}/notes
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Request Body
application/json
{
}
Responses
Notes updated
*/*
{
}
Advance carrier candidato
PUT
/api/v1/admin/carrier-candidatos/{id}/advance
Move carrier candidato forward one pipeline stage
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Query Parameters
nuevoEstado
Type
string
Responses
Carrier candidato advanced to next stage
*/*
{
}
List carrier candidatos
GET
/api/v1/admin/carrier-candidatos
All carrier candidatos for kanban pipeline view
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Responses
Carrier candidato summary list
*/*
[
]
Create carrier candidato
POST
/api/v1/admin/carrier-candidatos
Create a new carrier candidato application
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Request Body
application/json
{
}
Responses
Carrier candidato created
*/*
{
}
Convert carrier candidato to carrier
POST
/api/v1/admin/carrier-candidatos/{id}/convert
Creates carrier entity + draft contract from READY candidato, then provisions Keycloak user. Returns one-time credentials.
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Request Body
application/json
{
}
Responses
Conversion successful — carrier + contract created, Keycloak user provisioned
*/*
{
}
Get carrier candidato detail
GET
/api/v1/admin/carrier-candidatos/{id}
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Responses
Carrier candidato detail
*/*
{
}
Accept T&C
POST
/api/v1/tc/accept/{idTerminos}
Record T&C acceptance for the authenticated user. Routes to center or carrier acceptance based on JWT role.
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Center-Id
Type
string
X-Carrier-Id
Type
string
X-Correlation-Id
Type
string
Path Parameters
idTerminos*
Type
Requiredinteger
Format
"int64"Responses
Acceptance recorded successfully
*/*
{
}
Shipments
Parcel lifecycle — create, list, detail, handshake, QR sessions, batch drop, labels
Operations
GET/api/v1/shipmentsPOST/api/v1/shipmentsPOST/api/v1/shipments/{barcode}/retrievePOST/api/v1/shipments/{barcode}/pod/upload-tokenPOST/api/v1/shipments/{barcode}/carrier-handshakePOST/api/v1/shipments/qr-session/{sessionToken}/validatePOST/api/v1/shipments/batch-dropGET/api/v1/shipments/{barcode}GET/api/v1/shipments/{barcode}/podGET/api/v1/shipments/{barcode}/pod/image/{type}GET/api/v1/shipments/{barcode}/labelGET/api/v1/shipments/qr-session/{sessionToken}/statusGET/api/v1/shipments/pending
List shipments
GET
/api/v1/shipments
Paginated shipment list with optional filters: estado, date range, centerCode
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Center-Id
Type
string
X-Center-Code
Type
string
Query Parameters
page
Type
integer
Format
"int32"Default
0size
Type
integer
Format
"int32"Default
20estado
Type
string
fromDate
Type
string
toDate
Type
string
centerCode
Type
string
Responses
Paginated shipment list
*/*
{
}
Create shipment
POST
/api/v1/shipments
Create a new parcel shipment with idempotency support
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Idempotency-Key
Type
string
X-Center-Id
Type
string
X-Center-Code
Type
string
Request Body
application/json
{
}
Responses
Shipment created
*/*
{
}
Retrieve expired parcel
POST
/api/v1/shipments/{barcode}/retrieve
Mark an expired parcel as retrieved by the carrier
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Center-Code
Type
string
Path Parameters
barcode*
Type
Requiredstring
Responses
Parcel retrieved
*/*
{
}
Generate POD upload token
POST
/api/v1/shipments/{barcode}/pod/upload-token
Generate a presigned upload URL for POD images
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Center-Id
Type
string
X-Center-Code
Type
string
Path Parameters
barcode*
Type
Requiredstring
Request Body
application/json
{
}
Responses
Upload token generated
*/*
{
}
Carrier handshake
POST
/api/v1/shipments/{barcode}/carrier-handshake
Carrier initiates dual-QR handshake for parcel pickup
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Center-Code
Type
string
Path Parameters
barcode*
Type
Requiredstring
Responses
Handshake initiated
*/*
{
}
Validate QR session
POST
/api/v1/shipments/qr-session/{sessionToken}/validate
PUDO operator confirms the dual-QR handshake
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Center-Code
Type
string
Path Parameters
sessionToken*
Type
Requiredstring
Responses
Session validated
*/*
{
}
Batch drop parcels
POST
/api/v1/shipments/batch-drop
Carrier drops multiple parcels at a PUDO center (requires USER_PUDO, USER_CARRIER, or USER_ADMIN)
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Center-Code
Type
string
Request Body
application/json
{
}
Responses
Batch drop result
*/*
{
}
Get shipment by barcode
GET
/api/v1/shipments/{barcode}
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Center-Id
Type
string
X-Center-Code
Type
string
Path Parameters
barcode*
Type
Requiredstring
Responses
Shipment found
*/*
{
}
Get POD metadata
GET
/api/v1/shipments/{barcode}/pod
Retrieve proof-of-delivery metadata for a shipment
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Center-Id
Type
string
X-Center-Code
Type
string
Path Parameters
barcode*
Type
Requiredstring
Responses
POD metadata
*/*
{
}
Stream POD image
GET
/api/v1/shipments/{barcode}/pod/image/{type}
Stream POD image bytes (signature or evidence photo) via BFF proxy
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Center-Id
Type
string
X-Center-Code
Type
string
Path Parameters
barcode*
Type
Requiredstring
type*
Type
Requiredstring
Responses
Image bytes
*/*
[
]
Get shipment label
GET
/api/v1/shipments/{barcode}/label
Generate print-ready HTML label for a shipment
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Center-Id
Type
string
X-Center-Code
Type
string
Path Parameters
barcode*
Type
Requiredstring
Responses
HTML label
text/html
"string"
Get QR session status
GET
/api/v1/shipments/qr-session/{sessionToken}/status
Poll the status of a dual-QR handshake session
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Center-Code
Type
string
Path Parameters
sessionToken*
Type
Requiredstring
Responses
Session status
*/*
{
}
List pending shipments
GET
/api/v1/shipments/pending
Zone-filtered pending list for carriers, all pending for non-carriers
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Center-Id
Type
string
X-Center-Code
Type
string
X-Carrier-Id
Type
string
Query Parameters
page
Type
integer
Format
"int32"Default
0size
Type
integer
Format
"int32"Default
20Responses
Paginated pending shipments
*/*
{
}
Submit PUDO application
POST
/api/v1/public/onboarding/apply
Public form submission — creates candidato in LEAD state and returns a tracking token. No authentication required.
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Request Body
application/json
{
}
Responses
Application submitted — includes tokenSolicitud for status tracking
*/*
{
}
Check application status
GET
/api/v1/public/onboarding/status/{token}
Public status check by tracking token — no authentication required
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
token*
Type
Requiredstring
Responses
Application status with current pipeline state
*/*
{
}
Get profile photo
GET
/api/v1/profile/photo
Stream the authenticated user's profile photo
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Responses
Image bytes
*/*
Upload profile photo
POST
/api/v1/profile/photo
Upload a profile photo (max 2MB, JPEG/PNG/WebP). Overwrites any existing photo.
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Request Body
multipart/form-data
object
file
string
Required
Format
"binary"Responses
Photo uploaded successfully
*/*
{
}
Delete profile photo
DELETE
/api/v1/profile/photo
Delete the authenticated user's profile photo from storage and clear URL
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Responses
Photo deleted
Accept contract
POST
/api/v1/operator/contract/accept
Digital acceptance of a PENDIENTE_FIRMA contract. Transitions contract to ACTIVO. IP is captured server-side for audit.
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Request Body
application/json
{
}
Responses
Contract accepted — transitioned to ACTIVO
*/*
{
}
Get my contract
GET
/api/v1/operator/contract
Get the contract for the authenticated operator's center. Returns PENDIENTE_FIRMA if pending signature, otherwise ACTIVO. Returns 404 if no relevant contract.
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Responses
Contract found
*/*
{
}
List issues
GET
/api/v1/issues
Paginated issue list with optional filters: status, issue_type, severity
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Center-Id
Type
string
Query Parameters
page
Type
integer
Format
"int32"Default
0size
Type
integer
Format
"int32"Default
20status
Type
string
issue_type
Type
string
severity
Type
string
Responses
Paginated issue list
*/*
{
}
Create issue
POST
/api/v1/issues
Report a new issue or claim
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Center-Id
Type
string
Request Body
application/json
{
}
Responses
Issue created
*/*
{
}
Escalate issue
POST
/api/v1/issues/{id}/escalate
Escalate issue to a higher support tier
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Center-Id
Type
string
Path Parameters
id*
Type
Requiredstring
Responses
Issue escalated
*/*
{
}
Update issue status
PATCH
/api/v1/issues/{id}/status
Transition issue to a new status
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Center-Id
Type
string
Path Parameters
id*
Type
Requiredstring
Request Body
application/json
{
}
Responses
Status updated
*/*
{
}
Get issue by ID
GET
/api/v1/issues/{id}
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
X-Center-Id
Type
string
Path Parameters
id*
Type
Requiredstring
Responses
Issue found
*/*
{
}
Carrier lifecycle transition
POST
/api/v1/carriers/{code}/lifecycle
Transition carrier status (e.g., ACTIVO → SUSPENDIDO)
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
code*
Type
Requiredstring
Request Body
application/json
{
}
Responses
Transition successful
*/*
{
}
List carriers
GET
/api/v1/carriers
List all carrier companies
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Responses
Carrier list
*/*
{
}
Get carrier
GET
/api/v1/carriers/{code}
Get carrier details by code
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
code*
Type
Requiredstring
Responses
Carrier details
*/*
{
}
Carrier history
GET
/api/v1/carriers/{code}/history
Get carrier lifecycle history
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
code*
Type
Requiredstring
Responses
History entries
*/*
{
}
Carrier - Contract
Carrier contract view and acceptance endpoints (requires USER_CARRIER)
Accept carrier contract
POST
/api/v1/carrier/contract/accept
Digital acceptance of a PENDIENTE_FIRMA carrier contract. Transitions to ACTIVO. IP captured server-side for audit.
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Carrier-Id
Type
string
X-Correlation-Id
Type
string
Request Body
application/json
{
}
Responses
Contract accepted -- transitioned to ACTIVO
*/*
{
}
Get my carrier contract
GET
/api/v1/carrier/contract
Get the contract for the authenticated carrier. Returns PENDIENTE_FIRMA if pending, otherwise ACTIVO. Returns 404 if no relevant contract.
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Responses
Contract found
*/*
{
}
Admin - Terms and Conditions
Admin T&C version management: create, publish, deprecate, acceptance history (requires USER_ADMIN role)
List T&C versions
GET
/api/v1/admin/terminos
List all T&C versions ordered by creation date descending
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Responses
T&C version list
*/*
{
}
Create T&C version
POST
/api/v1/admin/terminos
Create a new T&C version in BORRADOR state. Upload PDF via /upload-token first.
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Request Body
application/json
{
}
Responses
T&C version created
*/*
{
}
Publish T&C version
POST
/api/v1/admin/terminos/{id}/publish
Publish a BORRADOR T&C version — becomes the active version, previous is auto-deprecated
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Responses
T&C version published
*/*
{
}
Deprecate T&C version
POST
/api/v1/admin/terminos/{id}/deprecate
Manually deprecate a T&C version
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Responses
T&C version deprecated
*/*
{
}
Get PDF upload token
POST
/api/v1/admin/terminos/upload-token
Generate a presigned MinIO URL for uploading a T&C PDF document
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Responses
Upload token generated
*/*
{
}
Get T&C version
GET
/api/v1/admin/terminos/{id}
Get a specific T&C version by numeric ID
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Responses
T&C version found
*/*
{
}
Get acceptance history
GET
/api/v1/admin/terminos/acceptance-history
Get T&C acceptance history for a specific PUDO center
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Query Parameters
centerId*
Type
Requiredinteger
Format
"int64"Responses
Acceptance history list
*/*
{
}
Admin - Seed Data
Seed/dummy data management for development (requires USER_ADMIN role)
Load seed data
POST
/api/v1/admin/seed/load
Insert seed data into the database. Use force=true to replace existing data
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Query Parameters
force
Type
boolean
Default
falseRequest Body
application/json
{
}
Responses
Seed data loaded
*/*
{
}
Get seed data status
GET
/api/v1/admin/seed/status
Record counts for all tables grouped by domain
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Responses
Seed status
*/*
{
}
Unload seed data
DELETE
/api/v1/admin/seed/unload
Delete all seed data from the database
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Responses
Seed data removed
*/*
{
}
Convert candidato to center
POST
/api/v1/admin/candidatos/{id}/convert
Creates center + draft contract from READY candidato, then provisions Keycloak user. Returns one-time credentials.
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Request Body
application/json
{
}
Responses
Conversion successful — center + contract created, Keycloak user provisioned
*/*
{
}
Reject candidato
PATCH
/api/v1/admin/candidatos/{id}/reject
Reject candidato — sets RECHAZADO state and records reason
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Request Body
application/json
{
}
Responses
Candidato rejected
*/*
{
}
Advance candidato
PATCH
/api/v1/admin/candidatos/{id}/advance
Move candidato forward one pipeline stage (LEAD->VETTING->CONTRACTING->READY)
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Responses
Candidato advanced to next stage
*/*
{
}
List candidatos
GET
/api/v1/admin/candidatos
All active candidatos (excluding RECHAZADO) for kanban pipeline view
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Responses
Candidato summary list
*/*
[
]
Get candidato detail
GET
/api/v1/admin/candidatos/{id}
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Responses
Candidato detail
*/*
{
}
Admin - Adapter
Provider catalog sync — Kanguro, Hublocker (requires USER_ADMIN role)
Trigger provider sync
POST
/api/v1/admin/adapter/sync/{provider}
Start catalog synchronization for a specific provider (KANGURO, HUBLOCKER)
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
provider*
Type
Requiredstring
Responses
Sync result
*/*
{
}
List providers
GET
/api/v1/admin/adapter/providers
Get all providers with center counts and sync status
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Responses
Provider list
*/*
[
]
Mark notification as read
PATCH
/api/v1/notifications/{id}/read
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Center-Id
Type
string
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Responses
Marked as read
List notifications
GET
/api/v1/notifications
Paginated notifications scoped by center. Admins see all
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Center-Id
Type
string
X-Correlation-Id
Type
string
Query Parameters
page
Type
integer
Format
"int32"Default
0size
Type
integer
Format
"int32"Default
20Responses
Paginated notification list
*/*
"string"
Get unread notification count
GET
/api/v1/notifications/unread-count
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Center-Id
Type
string
X-Correlation-Id
Type
string
Responses
Unread count
*/*
"string"
Track shipment by barcode
GET
/api/v1/public/track/{barcode}
Public tracking — returns status and event timeline without internal data
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
barcode*
Type
Requiredstring
Responses
Tracking info
*/*
{
}
External Centers
PUDO center search and detail for the embeddable PUDO Selector Widget
Get center detail
GET
/api/v1/external/centers/{centerCode}/detail
Full center information including schedule, capacity, and photos
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
centerCode*
Type
Requiredstring
Responses
Center detail
*/*
{
}
Search nearby PUDO centers
GET
/api/v1/external/centers/near
Find centers by postal code or coordinates with Haversine distance sorting
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Query Parameters
postal_code
Type
string
latitude
Type
number
Format
"double"longitude
Type
number
Format
"double"max_radius_km
Type
number
Format
"double"Default
10Responses
List of matching centers
*/*
{
}
Get dashboard data
GET
/api/v1/dashboard
Returns aggregated dashboard for the user's center, or admin dashboard if no center is assigned
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Center-Id
Type
integer
Format
"int64"Responses
Dashboard data
*/*
{
}
List all clusters
List PUDO centers within cluster zone
GET
/api/v1/clusters/{id}/centers
Returns centers whose coordinates fall inside the cluster polygon (PostGIS ST_Within)
Authorizations
Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
id*
Type
Requiredinteger
Format
"int64"Responses
Centers within zone
*/*
[
]
List carriers assigned to cluster
List all centers
GET
/api/v1/centers
Returns all PUDO centers for the operator center dropdown
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Responses
List of centers
*/*
[
]
Get carrier KPIs
GET
/api/v1/carriers/{code}/kpis
Aggregated carrier performance metrics: deliveries, on-time rate, avg batch, deliveries/day
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Parameters
Header Parameters
X-Correlation-Id
Type
string
Path Parameters
code*
Type
Requiredstring
Responses
KPI metrics
*/*
{
}
Admin - Schema
Database schema introspection — tables, columns, constraints, FK edges (requires USER_ADMIN role)
Operations
Get database schema
GET
/api/v1/admin/schema
Complete metadata about all tp_pprx_* tables including columns, constraints, and foreign key edges
Authorizations
bearer-jwt
Keycloak OAuth2 password flow. Test users: pudo-operator-1, carrier-1, admin-1, customer-1 (password: password)
password Flow
Token URL
"http://keycloak:8080/realms/proximiti/protocol/openid-connect/token"Responses
Schema metadata
*/*
{
}