POST
/passingsInsertar pasadas
Requiere el tipo de acceso con llave WRITE o READ_WRITE api.
Autenticación
Envía una de las cabeceras de clave API compatibles en cada solicitud.
Cuerpo de la solicitud
application/json| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
token_session | string | Obligatorio | — |
passings_list | array<Passing> | Obligatorio | — |
Respuestas
201Passings inserted succesfullyInsertPassingsResponse
400Bad requestEnvelopeAny
403ForbiddenEnvelopeAny
404Not foundEnvelopeAny
413Payload too largeEnvelopeAny
500Internal server errorEnvelopeNull
curl --request POST \
--url 'https://api.runonrufus.com/v0/passings' \
--header 'accept: application/json' \
--header 'api_key: YOUR_API_KEY' \
--header 'content-type: application/json' \
--data '{
"token_session": "SESSION_TOKEN",
"passings_list": [
{
"timestamp": "2026-09-02T10:30:00.000Z",
"num_passing": 1,
"bib": "string",
"participant_id": "string",
"chip": "string",
"latitude": 1,
"longitude": 1,
"status": "string",
"timezone": "string",
"gender": "string"
}
]
}'Operación OpenAPI original
{
"openapi": "3.0.3",
"info": {
"title": "RUFUS Public REST API",
"version": "0.1.0"
},
"tags": [
{
"name": "Passings"
}
],
"servers": [
{
"url": "https://api.runonrufus.com/v0",
"description": "Production (v0)"
}
],
"security": [
{
"ApiKeyHeader": []
},
{
"XApiKeyHeader": []
}
],
"components": {
"securitySchemes": {
"ApiKeyHeader": {
"type": "apiKey",
"in": "header",
"name": "api_key",
"description": "API key for authentication."
},
"XApiKeyHeader": {
"type": "apiKey",
"in": "header",
"name": "x-api-key",
"description": "API key for authentication (alternate header)."
}
},
"schemas": {
"InsertPassingsRequest": {
"type": "object",
"additionalProperties": false,
"properties": {
"token_session": {
"type": "string"
},
"passings_list": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/components/schemas/Passing"
}
}
},
"required": [
"token_session",
"passings_list"
]
},
"Passing": {
"type": "object",
"additionalProperties": false,
"properties": {
"timestamp": {
"type": "string",
"format": "date-time"
},
"num_passing": {
"type": "integer",
"minimum": 0
},
"bib": {
"type": "string"
},
"participant_id": {
"type": "string",
"nullable": true
},
"chip": {
"type": "string",
"nullable": true
},
"latitude": {
"type": "number",
"nullable": true
},
"longitude": {
"type": "number",
"nullable": true
},
"status": {
"type": "string",
"nullable": true
},
"timezone": {
"type": "string",
"nullable": true
},
"gender": {
"type": "string",
"nullable": true
}
},
"required": [
"timestamp",
"num_passing",
"bib"
]
},
"InsertPassingsResponse": {
"type": "object",
"additionalProperties": false,
"properties": {
"body": {
"type": "object",
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"token_session": {
"type": "string"
},
"inserted_count": {
"type": "integer",
"minimum": 0
},
"duplicate_count": {
"type": "integer",
"minimum": 0
}
},
"required": [
"description",
"token_session"
]
}
},
"required": [
"body"
]
},
"EnvelopeAny": {
"type": "object",
"additionalProperties": false,
"properties": {
"body": {
"description": "Operation result body."
}
}
},
"EnvelopeNull": {
"type": "object",
"additionalProperties": false,
"properties": {
"body": {
"nullable": true
}
},
"required": [
"body"
]
}
},
"responses": {
"BadRequest": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EnvelopeAny"
}
}
}
},
"Forbidden": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EnvelopeAny"
}
}
}
},
"NotFound": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EnvelopeAny"
}
}
}
},
"PayloadTooLarge": {
"description": "Payload too large",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EnvelopeAny"
}
}
}
},
"InternalError": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EnvelopeNull"
}
}
}
}
}
},
"paths": {
"/passings": {
"post": {
"tags": [
"Passings"
],
"summary": "Insert passings",
"description": "Requires `WRITE` or `READ_WRITE` api key access type.",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InsertPassingsRequest"
}
}
}
},
"responses": {
"201": {
"description": "Passings inserted succesfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InsertPassingsResponse"
}
}
}
},
"400": {
"$ref": "#/components/responses/BadRequest"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"413": {
"$ref": "#/components/responses/PayloadTooLarge"
},
"500": {
"$ref": "#/components/responses/InternalError"
}
}
}
}
}
}GET
/passings/session/{token_session}Obtener pases de sesión
Requiere el tipo de acceso con llave READ o READ_WRITE api.
Autenticación
Envía una de las cabeceras de clave API compatibles en cada solicitud.
Parámetros
| Nombre | Ubicación | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
first | query | integer | Opcional | First num_passing to include (inclusive). Use -1 to ignore. |
last | query | integer | Opcional | Last num_passing to include (inclusive). Use -1 to ignore. |
page | query | integer | Opcional | 0 disables paging. When > 0, behaves like 1-based page. |
Respuestas
200SuccessPassingsListResponse
403ForbiddenEnvelopeAny
404Not foundEnvelopeAny
500Internal server errorEnvelopeNull
curl --request GET \
--url 'https://api.runonrufus.com/v0/passings/session/{token_session}?first=-1&last=-1&page=0' \
--header 'accept: application/json' \
--header 'api_key: YOUR_API_KEY'Operación OpenAPI original
{
"openapi": "3.0.3",
"info": {
"title": "RUFUS Public REST API",
"version": "0.1.0"
},
"tags": [
{
"name": "Passings"
}
],
"servers": [
{
"url": "https://api.runonrufus.com/v0",
"description": "Production (v0)"
}
],
"security": [
{
"ApiKeyHeader": []
},
{
"XApiKeyHeader": []
}
],
"components": {
"securitySchemes": {
"ApiKeyHeader": {
"type": "apiKey",
"in": "header",
"name": "api_key",
"description": "API key for authentication."
},
"XApiKeyHeader": {
"type": "apiKey",
"in": "header",
"name": "x-api-key",
"description": "API key for authentication (alternate header)."
}
},
"parameters": {
"First": {
"name": "first",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"minimum": 0,
"default": -1
},
"description": "First num_passing to include (inclusive). Use -1 to ignore."
},
"Last": {
"name": "last",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"minimum": 0,
"default": -1
},
"description": "Last num_passing to include (inclusive). Use -1 to ignore."
},
"PageZeroBased": {
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"minimum": 0,
"default": 0
},
"description": "0 disables paging. When > 0, behaves like 1-based page."
}
},
"schemas": {
"PassingsListResponse": {
"type": "object",
"additionalProperties": false,
"properties": {
"body": {
"type": "object",
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"result": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Passing"
}
}
},
"required": [
"description"
]
}
},
"required": [
"body"
]
},
"Passing": {
"type": "object",
"additionalProperties": false,
"properties": {
"timestamp": {
"type": "string",
"format": "date-time"
},
"num_passing": {
"type": "integer",
"minimum": 0
},
"bib": {
"type": "string"
},
"participant_id": {
"type": "string",
"nullable": true
},
"chip": {
"type": "string",
"nullable": true
},
"latitude": {
"type": "number",
"nullable": true
},
"longitude": {
"type": "number",
"nullable": true
},
"status": {
"type": "string",
"nullable": true
},
"timezone": {
"type": "string",
"nullable": true
},
"gender": {
"type": "string",
"nullable": true
}
},
"required": [
"timestamp",
"num_passing",
"bib"
]
},
"EnvelopeAny": {
"type": "object",
"additionalProperties": false,
"properties": {
"body": {
"description": "Operation result body."
}
}
},
"EnvelopeNull": {
"type": "object",
"additionalProperties": false,
"properties": {
"body": {
"nullable": true
}
},
"required": [
"body"
]
}
},
"responses": {
"Forbidden": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EnvelopeAny"
}
}
}
},
"NotFound": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EnvelopeAny"
}
}
}
},
"InternalError": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EnvelopeNull"
}
}
}
}
}
},
"paths": {
"/passings/session/{token_session}": {
"get": {
"tags": [
"Passings"
],
"summary": "Get session passings",
"description": "Requires `READ` or `READ_WRITE` api key access type.",
"parameters": [
{
"$ref": "#/components/parameters/First"
},
{
"$ref": "#/components/parameters/Last"
},
{
"$ref": "#/components/parameters/PageZeroBased"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PassingsListResponse"
}
}
}
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"500": {
"$ref": "#/components/responses/InternalError"
}
}
}
}
}
}GET
/passings/device/{deviceid}Obtener pases de dispositivo
Requiere el tipo de acceso con llave READ o READ_WRITE api.
Autenticación
Envía una de las cabeceras de clave API compatibles en cada solicitud.
Parámetros
| Nombre | Ubicación | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
from | query | string<date-time> | Opcional | Filter passings with timestamp >= from. |
to | query | string<date-time> | Opcional | Filter passings with timestamp <= to. |
page | query | integer | Opcional | 0 disables paging. When > 0, behaves like 1-based page. |
Respuestas
200SuccessPassingsListResponse
403ForbiddenEnvelopeAny
404Not foundEnvelopeAny
500Internal server errorEnvelopeNull
curl --request GET \
--url 'https://api.runonrufus.com/v0/passings/device/{deviceid}?from=%7Bfrom%7D&to=%7Bto%7D&page=0' \
--header 'accept: application/json' \
--header 'api_key: YOUR_API_KEY'Operación OpenAPI original
{
"openapi": "3.0.3",
"info": {
"title": "RUFUS Public REST API",
"version": "0.1.0"
},
"tags": [
{
"name": "Passings"
}
],
"servers": [
{
"url": "https://api.runonrufus.com/v0",
"description": "Production (v0)"
}
],
"security": [
{
"ApiKeyHeader": []
},
{
"XApiKeyHeader": []
}
],
"components": {
"securitySchemes": {
"ApiKeyHeader": {
"type": "apiKey",
"in": "header",
"name": "api_key",
"description": "API key for authentication."
},
"XApiKeyHeader": {
"type": "apiKey",
"in": "header",
"name": "x-api-key",
"description": "API key for authentication (alternate header)."
}
},
"parameters": {
"From": {
"name": "from",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "date-time"
},
"description": "Filter passings with timestamp >= from."
},
"To": {
"name": "to",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "date-time"
},
"description": "Filter passings with timestamp <= to."
},
"PageZeroBased": {
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"minimum": 0,
"default": 0
},
"description": "0 disables paging. When > 0, behaves like 1-based page."
}
},
"schemas": {
"PassingsListResponse": {
"type": "object",
"additionalProperties": false,
"properties": {
"body": {
"type": "object",
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"result": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Passing"
}
}
},
"required": [
"description"
]
}
},
"required": [
"body"
]
},
"Passing": {
"type": "object",
"additionalProperties": false,
"properties": {
"timestamp": {
"type": "string",
"format": "date-time"
},
"num_passing": {
"type": "integer",
"minimum": 0
},
"bib": {
"type": "string"
},
"participant_id": {
"type": "string",
"nullable": true
},
"chip": {
"type": "string",
"nullable": true
},
"latitude": {
"type": "number",
"nullable": true
},
"longitude": {
"type": "number",
"nullable": true
},
"status": {
"type": "string",
"nullable": true
},
"timezone": {
"type": "string",
"nullable": true
},
"gender": {
"type": "string",
"nullable": true
}
},
"required": [
"timestamp",
"num_passing",
"bib"
]
},
"EnvelopeAny": {
"type": "object",
"additionalProperties": false,
"properties": {
"body": {
"description": "Operation result body."
}
}
},
"EnvelopeNull": {
"type": "object",
"additionalProperties": false,
"properties": {
"body": {
"nullable": true
}
},
"required": [
"body"
]
}
},
"responses": {
"Forbidden": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EnvelopeAny"
}
}
}
},
"NotFound": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EnvelopeAny"
}
}
}
},
"InternalError": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EnvelopeNull"
}
}
}
}
}
},
"paths": {
"/passings/device/{deviceid}": {
"get": {
"tags": [
"Passings"
],
"summary": "Get device passings",
"description": "Requires `READ` or `READ_WRITE` api key access type.",
"parameters": [
{
"$ref": "#/components/parameters/From"
},
{
"$ref": "#/components/parameters/To"
},
{
"$ref": "#/components/parameters/PageZeroBased"
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PassingsListResponse"
}
}
}
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"500": {
"$ref": "#/components/responses/InternalError"
}
}
}
}
}
}