Sandbox a kód
Na téhle doméně běží funkční implementace tohohle kontraktu. Vyvíjejte proti ní, dokud vlastní feed nemáte, a porovnávejte s ní odpovědi, když něco nesedí.
Sandbox feed
Základní adresa: https://upwolf.com/dev/sandbox/feed
Token: sandbox-demo-token
— pošlete ho v hlavičce Authorization, nebo ho vynechte úplně. Špatný token vrátí 401, takže jde vyzkoušet i tahle cesta.
| Zkusit | Co ukazuje |
|---|---|
| offers | Všechno, co je právě živé |
| offers/DEMO-1001 | Plně vyplněná nabídka — všechna doporučená pole |
| offers/DEMO-1002 | Holé minimum — jen povinná pole, ať je vidět degradace |
| offers/DEMO-1003 | Zavřená nabídka, která pořád odpovídá |
| offers/NOPE | Neznámá nabídka — 404 s chybovým tělem |
| offers?updated_since=2026-08-01T00:00:00Z | Změnový výpis |
| campaign-candidates | Kandidáti na kampaň, jeden aktivní a jeden zrušený |
| offers/DEMO-1001/applications-stats?from=2026-09-01T00:00:00Z | Počty reakcí |
| ?upwolf_route=offers/DEMO-1001 | Varianta cest s parametrem, pro hosting bez PATH_INFO |
Referenční implementace
Jeden soubor v PHP, žádné závislosti, žádný framework. Řeší obě varianty cest, bearer autentizaci i tvary chyb; co nemá, je vaše databáze. Tři funkce jsou označené TODO — doplňte je a feed je hotový.
Stáhnout feed-upwolf.php · zobrazit v prohlížeči
shell
curl -s https://upwolf.com/assets/dev/reference-feed.php.txt -o feed-upwolf.php
Jedna past, o které je dobré vědět:
na CGI a FastCGI hostingu se hlavička Authorization do PHP vůbec nedostane. Když vám token pořád chybí, tohle je důvod — v referenčním souboru jsou řádky do .htaccess, které to spraví.
Než nám řeknete, že je hotovo
- Snapshot `offers` vrací všechny právě aktivní nabídky a nic navíc.
- `version` se mění při každé změně obsahu nabídky — a nemění se, když se obsah nezměnil.
- Detail odpovídá i u nabídky se stavem `closed`.
- Neznámá nabídka vrací `404` s tělem `{"error": {...}}`, ne `200` s prázdným objektem.
- Zrušený kandidát má `status: "cancelled"`, nezmizí z výpisu.
- `locations` posíláte i jako prázdné pole, když nabídka žádné město nemá.
- `count` u statistiky reakcí je celé číslo, ne řetězec.
- Máš popsané, jestli je hranice `updated_since` inkluzivní, a jestli je řazení stabilní.
- Validátor na `/dev/validator` projde bez červené.
Pustit validátor na svůj feed — projde tentýž seznam a k tomu tvary odpovědí.