# Farm storefront API

> Catalog, delivery windows, orders, subscription boxes and delivery quotes of one farm.

Catalog, delivery windows, orders, subscription boxes and delivery quotes of one farm.

| Field | Value |
| --- | --- |
| Base URL | `https://fina.do/api/farm/v1` |
| Authentication | `X-Farm-App-Key` + customer bearer token on private routes |
| OpenAPI 3.1 | [/api/farm/v1/openapi.json](https://fina.do/api/farm/v1/openapi.json) |
| Built for | Custom customer apps and websites for a farm |

Shared rules (app key, envelope, /config, delivery quotes): [Storefront APIs](https://fina.do/developers/storefront-apis.md).

### Endpoints

Base URL: `https://fina.do/api/farm/v1`

| Method | Path | Summary | Auth |
| --- | --- | --- | --- |
| GET | `/config` | Identidad de la granja y lo que la app necesita para arrancar | App key |
| GET | `/locations` | Sucursales activas donde se puede recoger | App key |
| GET | `/catalog` | Catálogo con unidad de venta y precio por pieza derivado | App key |
| GET | `/plans` | Planes con su precio, su ahorro por ciclo y por pieza | App key |
| GET | `/windows` | Franjas de una fecha para una modalidad | App key |
| GET | `/me` | Perfil del cliente en esta granja | App key + Customer token |
| PATCH | `/me` | Editar nombre y teléfono | App key + Customer token |
| DELETE | `/me` | Baja de cuenta (exige contraseña o código al correo) | App key + Customer token |
| POST | `/me/delete-code` | Enviar al correo el código para confirmar la baja | App key + Customer token |
| GET | `/addresses` | Libreta de direcciones | App key + Customer token |
| POST | `/addresses` | Guardar una dirección | App key + Customer token |
| PATCH | `/addresses/{id}` | Editar una dirección | App key + Customer token |
| DELETE | `/addresses/{id}` | Borrar una dirección | App key + Customer token |
| GET | `/geocode/reverse` | Dirección escrita de un punto («usar mi ubicación») | App key |
| POST | `/delivery/estimate` | Costo de envío a una dirección | App key + Customer token |
| POST | `/discount-codes/validate` | Vista previa de un cupón: `{ code, subtotal_minor }` → `{ valid, discount_minor, … }` | App key |
| GET | `/orders` | Pedidos del cliente | App key + Customer token |
| POST | `/orders` | Crear un pedido | App key + Customer token |
| GET | `/orders/{id}` | Detalle y seguimiento de un pedido | App key + Customer token |
| POST | `/orders/{id}/cancel` | Cancelar un pedido | App key + Customer token |
| GET | `/tracking` | Pedidos en curso | App key + Customer token |
| GET | `/subscriptions` | Planes del cliente | App key + Customer token |
| POST | `/subscriptions` | Contratar un plan | App key + Customer token |
| GET | `/subscriptions/{id}` | Detalle con sus ciclos | App key + Customer token |
| PATCH | `/subscriptions/{id}` | Cambiar día, franja, destino o medio de pago | App key + Customer token |
| DELETE | `/subscriptions/{id}` | Cancelar el plan | App key + Customer token |
| POST | `/subscriptions/{id}/pause` | Pausar | App key + Customer token |
| POST | `/subscriptions/{id}/resume` | Reanudar | App key + Customer token |
| POST | `/subscriptions/{id}/skip` | Saltar la entrega siguiente | App key + Customer token |
| POST | `/subscriptions/fina-pay/checkout` | Checkout de Fina Pay para pagar un plan | App key + Customer token |
| GET | `/subscriptions/fina-pay/{id}` | Estado del pago con Fina Pay de un plan | App key + Customer token |
| GET | `/payment-methods` | Tarjetas guardadas | App key + Customer token |
| DELETE | `/payment-methods/{id}` | Borrar una tarjeta | App key + Customer token |
| GET | `/announcements/active` | Anuncios vigentes del negocio para quien abre la app | App key + Customer token (or App key) |
| POST | `/announcements/{id}/events` | Registrar que un anuncio se vio, se tocó un botón o se cerró | App key + Customer token (or App key) |
| GET | `/loyalty` | Programa de fidelidad, recompensas y tarjeta del cliente | App key + Customer token (or App key) |
| POST | `/loyalty/redemptions` | Canjear una recompensa con puntos | App key + Customer token |
| POST | `/loyalty/redemptions/{id}/cancel` | Cancelar un canje propio pendiente | App key + Customer token |
| POST | `/loyalty/check-in` | Check-in de autoservicio con el QR del mostrador | App key + Customer token |
| GET | `/network/application` | Mi solicitud para vender a través de este negocio | App key + Customer token |
| POST | `/network/application` | Enviar «Vende con nosotros» | App key + Customer token |
| GET | `/advisory` | Advisory service, request form and my cases | App key + Customer token (or App key) |
| POST | `/advisory/requests` | Request advisory | App key + Customer token |
| GET | `/advisory/cases/{id}` | Case detail | App key + Customer token |
| GET | `/advisory/cases/{id}/activities` | Case timeline visible to the client | App key + Customer token |
| POST | `/advisory/cases/{id}/messages` | Send a message to the advisor | App key + Customer token |
| GET | `/advisory/cases/{id}/dossiers` | Document folders of the case | App key + Customer token |
| POST | `/advisory/uploads` | Upload a file (raw bytes) | App key + Customer token |
| POST | `/advisory/dossier-items/{id}/files` | Attach an uploaded file to a document | App key + Customer token |
| DELETE | `/advisory/files/{id}` | Delete one of my files | App key + Customer token |
| GET | `/advisory/files/{id}/url` | Signed URL of a file | App key + Customer token |
| GET | `/advisory/cases/{id}/visits` | Visits of the case | App key + Customer token |
| POST | `/advisory/cases/{id}/visit-requests` | Request a visit | App key + Customer token |
| GET | `/advisory/visits/{id}/report-pdf` | Signed URL of the published report PDF | App key + Customer token |
| POST | `/advisory/visits/{id}/cancel` | Cancel a visit | App key + Customer token |
| POST | `/advisory/visits/{id}/acknowledge` | Acknowledge a published visit report | App key + Customer token |
| GET | `/advisory/cases/{id}/metrics` | Indicators of the case with their series | App key + Customer token |
| POST | `/advisory/metrics/{id}/records` | Record a measurement | App key + Customer token |
| GET | `/advisory/cases/{id}/market` | My offers and the opportunities shared with me | App key + Customer token |
| POST | `/advisory/cases/{id}/offers` | Propose an offer | App key + Customer token |
| POST | `/advisory/opportunities/{id}/respond` | Respond to a shared opportunity | App key + Customer token |
| GET | `/blog` | Datos del blog del negocio | App key + Customer token (or App key) |
| GET | `/blog/posts` | Posts publicados (sin cuerpo) | App key + Customer token (or App key) |
| GET | `/blog/posts/{id}` | Un post con su cuerpo según el acceso del cliente | App key + Customer token (or App key) |
| POST | `/blog/posts/{id}/purchase` | Comprar un post de pago con Fina Pay | App key + Customer token |
| POST | `/blog/posts/{id}/tips` | Dejar una propina con Fina Pay | App key + Customer token (or App key) |
| POST | `/blog/membership/checkout` | Unirse a la membresía del blog (checkout de suscripción) | App key + Customer token |
| POST | `/devices` | Registrar el token push del dispositivo | App key + Customer token |
| POST | `/devices/ping` | Enviar un aviso de prueba a mis dispositivos | App key + Customer token |
| DELETE | `/devices/{id}` | Revocar el token | App key + Customer token |
| GET | `/me/pricing` | Mayoreo / B2B: los precios de este cliente | App key + Customer token |
| GET | `/quotes` | Mayoreo / B2B: cotizaciones del cliente | App key + Customer token |
| POST | `/quotes/request` | Mayoreo / B2B: pedir una cotización | App key + Customer token |
| GET | `/quotes/{id}` | Mayoreo / B2B: detalle de una cotización | App key + Customer token |
| POST | `/quotes/{id}/accept` | Mayoreo / B2B: aceptar una cotización (crea el pedido) | App key + Customer token |
| POST | `/quotes/{id}/decline` | Mayoreo / B2B: rechazar una cotización | App key + Customer token |

Source: https://fina.do/developers#api-farm