Sidrocjenici

Dokumentacija

Objava i javne adrese

Kada se objavljuje, gdje su datoteke i kako ih poslužiti s vlastite domene.

Kada

  • Proizvodi: svako jutro prije 7:00 (Sidro najprije povuče promjene iz WooCommercea, Shopifyja ili feeda, pa objavi). Zakonski rok je 8:00.
  • Usluge: odmah nakon svake promjene cijene u Sidru.
  • Ručno: gumb Objavi cjenik sada ili POST /api/v1/publish.
  • Rezerva: ako dnevna objava iz bilo kojeg razloga kasni, prvi dohvat javne datoteke nakon ponoći je sam pokrene; jutarnja provjera (oko 8:30, zimi oko 7:30) pokuša još jednom i pošalje upozorenje ako cjenik i dalje nije objavljen.

Javne adrese

Sve su bez prijave, s dopuštenim CORS-om — namijenjene automatiziranom dohvatu (t. VII.).

Adresa Sadržaj
/c/{oznaka} stranica s cjenicima svih lokacija i arhivom
/c/{oznaka}/index.json, index.xml strojni popis lokacija i svih datoteka (s SHA-256)
/c/{oznaka}/{lokacija}/latest.csv, latest.xml zadnja objava (stalna adresa)
/c/{oznaka}/{lokacija}/{NAZIV}.csv, .xml točno određena objava — nikad se ne mijenja
/c/{oznaka}/{lokacija}/uzivo.csv, .xml, .json cijene u stvarnom vremenu (stare najviše minutu)

Datirane datoteke imaju ETag (SHA-256) i predmemoriju od godinu dana; latest.* minutu.

Arhiva

Datoteke ostaju javne najmanje 35 dana (propis traži 30), u plaćenim paketima dulje (90 dana, godinu, dvije). Nakon isteka datoteka se briše, a zapis objave (vrijeme, broj stavki, sažetak) ostaje u reviziji.

Poveznica s vašeg weba

Propis traži objavu na vašim mrežnim stranicama. Najmanje: poveznica „Cjenici" u podnožju na javnu stranicu:

<a href="https://sidro-cjenici.vercel.app/c/vasa-oznaka" aria-label="Cjenici proizvoda i usluga (CSV i XML)">Cjenici</a>

Datoteke s vlastite domene

Ako želite da datoteke budu i na vašoj domeni (npr. https://vasatrgovina.hr/cjenici/…), proslijedite putanju na Sidro. Dodatak za WooCommerce to radi sam. Za ostale:

nginx

location /cjenici/ {
  proxy_pass https://sidro-cjenici.vercel.app/c/vasa-oznaka/;
  proxy_set_header Host sidro-cjenici.vercel.app;
  proxy_ssl_server_name on;
}

Apache (mod_proxy)

SSLProxyEngine on
ProxyPass        /cjenici/ https://sidro-cjenici.vercel.app/c/vasa-oznaka/
ProxyPassReverse /cjenici/ https://sidro-cjenici.vercel.app/c/vasa-oznaka/

Next.js (next.config.js)

module.exports = {
  async rewrites() {
    return [{ source: '/cjenici/:path*', destination: 'https://sidro-cjenici.vercel.app/c/vasa-oznaka/:path*' }];
  },
};

Vercel (vercel.json)

{ "rewrites": [{ "source": "/cjenici/:path*", "destination": "https://sidro-cjenici.vercel.app/c/vasa-oznaka/:path*" }] }

Netlify (_redirects)

/cjenici/*  https://sidro-cjenici.vercel.app/c/vasa-oznaka/:splat  200

Cloudflare Worker

export default {
  fetch(req) {
    const u = new URL(req.url);
    if (!u.pathname.startsWith('/cjenici/')) return fetch(req);
    return fetch('https://sidro-cjenici.vercel.app/c/vasa-oznaka/' + u.pathname.slice(9) + u.search);
  },
};