• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    NYXnyx :: API
    Nove API:
    Postup ziskani tokenu

    Postupně vznikající popis API ve Swaggeru (už by tam měl být nějaký základ):
    https://app.swaggerhub.com/apis/nyx.cz/nyx.cz/0.0.1 
    rozbalit záhlaví
    NYX
    NYX --- ---
    GIOMIKY: Zacnu dokumentovat co nejdriv, zatim ciste dump z toho co tam je:

    GET /api/gate
    GET /api/activity/<username>
    GET /api/people/active
    GET /api/people/active_friends
    GET /api/people/settings?<filter..>
    POST /api/profile/reference_reply/<reply_username>
    GET /api/icon/<username>
    GET /api/icon/<username>/discussion/<discussion_id>
    DELETE /api/profile/delete_token/<token>
    GET /api/mail
    GET /api/mail?<filter..>
    GET /api/mail/unread/<username>
    GET /api/mail/reminders
    POST /api/mail/send
    GET /api/mail/summary
    DELETE /api/mail/delete/<id>
    DELETE /api/mail/delete_unread/<id>
    POST /api/mail/reminder/<id>/<new_state>
    GET /api/notifications
    GET /api/bookmarks
    GET /api/bookmarks?<q..>
    GET /api/bookmarks/all
    GET /api/bookmarks/history
    GET /api/bookmarks/history/more
    GET /api/bookmarks/reminders
    POST /api/event/<discussion_id>/attendance/<new_state>
    POST /api/event/<did>/key_photo/<fid>
    GET /api/events?<q..>
    POST /api/events/location/<area_id>/<state>
    GET /api/market?<q..>
    GET /api/market/mine
    POST /api/market/<did>/state/<new_state>
    GET /api/market/<discussion_id>/parameters/<category_id>
    GET /api/discussion/<discussion_id> [2]
    GET /api/discussion/<discussion_id>?<filter..>
    GET /api/discussion/<discussion_id>/single/<id>
    GET /api/discussion/<discussion_id>/id/<id>/replies
    POST /api/discussion/rights?<q..>
    POST /api/discussion/rights/days_left?<q..>
    DELETE /api/discussion/rights?<q..>
    DELETE /api/discussion/<discussion_id>/delete/<id>
    POST /api/discussion/<discussion_id>/reminder/<id>/<new_state>
    POST /api/discussion/<discussion_id>/rating/<id>/<action>
    GET /api/discussion/<discussion_id>/rating/<id>
    POST /api/discussion/<discussion_id>/send/text
    GET /api/discussion/<discussion_id>/poll/<post_id>/results
    GET /api/discussion/<discussion_id>/content/poll/<content_id>/results
    POST /api/discussion/<discussion_id>/poll/<post_id>/vote/<answer_ids>
    POST /api/discussion/<discussion_id>/content/poll/<content_id>/vote/<answer_ids>
    POST /api/discussion/<discussion_id>/poll/<post_id>/finish
    POST /api/discussion/<discussion_id>/content/poll/<content_id>/finish
    POST /api/discussion/<discussion_id>/dice/<post_id>/roll
    POST /api/discussion/<discussion_id>/content/dice/<content_id>/roll
    POST /api/discussion/<discussion_id>/registration/<post_id>/confirm
    POST /api/discussion/<discussion_id>/discussion_create_request/<post_id>/vote_for
    POST /api/discussion/<discussion_id>/discussion_create_request/<post_id>/vote_against
    POST /api/discussion/<_discussion_id>/discussion_create_request/<post_id>/confirm
    POST /api/discussion/<_discussion_id>/discussion_create_request/<post_id>/cancel
    GET /api/last/discussions
    GET /api/last?<q..>
    GET /api/last
    GET /api/last/min_rating/<min_rating>
    GET /api/last/rated_by_friends
    PUT /api/file/upload
    DELETE /api/file/delete/<id>
    POST /api/file/embed/<id>/<state>
    GET /api/search/username/<username>
    GET /api/search/unified?<search>&<limit>
    GET /api/topics/category_for_dropdown/<domain_id>
    POST /api/create_token/<username>
    POST /api/register_for_notifications/<token>/<client>/<client_token>
    NYX
    NYX --- ---
    GIOMIKY: jj, viz nize

    Slušná část endpointů je dostupná čistě přidáním /api na začátek cesty, tj. z /mail se udělá /api/json a hurá, JSON. Jen někde dávalo smysl udělat nějaký custom, který akceptuje parametry v nějaké smysluplnější podobě.
    GIOMIKY
    GIOMIKY --- ---
    NYX: Super, uz jsem stahnul postu... prikladam zakladni pouziti v php ... akorat by se casem hodilo, jake funkce to ma... ale vsiml jsem si, ze ty url na alpha jsou asi strukturovany podobne jako API?



    NYX
    NYX --- ---
    GIOMIKY: Moje blbost :)
    GIOMIKY
    GIOMIKY --- ---
    NYX: :-) Aha... moje chyba, generoval jsem tokeny tobe
    (https://alpha.nyx.cz/api/create_token/NYX)
    a ne https://alpha.nyx.cz/api/create_token/UZIVATEL
    Myslel jsem, ze to Nyx je jako jmeno aplikace, pro kterou generuju ... sorry

    NYX
    NYX --- ---
    NYX: Samozrejme se svym nickem :) Takze

    curl --location --request POST 'https://alpha.nyx.cz/api/create_token/GIOMIKY'
    GIOMIKY
    GIOMIKY --- ---
    NYX: O.K. zatim mam pocit na alpha jeste neuplne funguje autorizace api... nejak jsem nenasel, kam zadat autorizacni kod. Muzu si vytvorit rucne, pojmenovat. Ale chce to heslo do Nyxu a ne autorizacni kod. Nevim, jestli to neni featura...
    NYX
    NYX --- ---
    SH_PANDA: Ja se bojim, ze se mi to casem rozjede, proto jsem koukal po nejakem generatoru. A existuje neco, co bere v potaz i custom serializacni anotace, tak mi to prislo idealni.
    SH_PANDA
    SH_PANDA --- ---
    NYX: ja udrzuju u nas k aplikaci rucne open api spec a neni to az takovej vopruz jak by se zdalo. idea + nejaky openapi plugin
    NYX
    NYX --- ---
    Takže už je to venku, proč se to API bude měnit, tak nějaké detaily.

    Nový Nyx je napsaný tak, že je extrémně snadné vyklopit do JSONu data, která by normálně šla do šablony, tj. endpointy poměrně věrně zrcadlí jednotlivé stránky Nyxu samotného. Přijde mi to pro účely Nyxu smysluplnější než nějaké "skutečně" REST/GraphQL api. Slušná část endpointů je dostupná čistě přidáním /api na začátek cesty, tj. z /mail se udělá /api/json a hurá, JSON. Jen někde dávalo smysl udělat nějaký custom, který akceptuje parametry v nějaké smysluplnější podobě.

    Úpravy ze starého API by měly být poměrně snadné, změnit endpointy + parametry a popasovat se s novou strukturou toho, co přijde zpět + drobné změny v tom, jak chodí zpět textový obsah (trochu jinak chodí obrázky apod.).

    Chtěl jsem mít k dispozici rovnou i automaticky generovanou OpenAPI dokumentaci pro Swagger a spol., ale je teď nějaká nekonzistence mezi frameworkem a generátorem a nepodařilo se mi to zatím zprovoznit, tak snad časem :-/

    Velka cast API tam funguje uz ted, takze zacnu nejak dokumentovat rucne. Brzo dam na nastenku nejaky dokument, zatim tam dam aspon popis jak se prihlasit :-)
    LUCIEN
    LUCIEN --- ---
    LUCIEN: Pardon. Vrací, ale nechtěl jsem to používat protože to u některých klubů vrací poměrně velký HTML. Ale asi lepší než to cachovat u sebe.
    LUCIEN
    LUCIEN --- ---
    To jsem si myslel :/ Cachovat to muzu, ale je to takove volake... budu s tim mit vic problemu nez uzitku. Prekvapilo me, ze ten endpoint pro vraceni nastenky nevraci i zakladni info o klubu...
    NYX
    NYX --- ---
    NYX: Teoreticky si muzes cachovat nazvy diskuzi u sebe. Ale nebude to 100%
    NYX
    NYX --- ---
    LUCIEN: Nic me ted nenapada :-/
    LUCIEN
    LUCIEN --- ---
    Pokud bych si chtel vytahnout informace o nejakem klubu (podle ID a de facto me zajima jen jeho nazev), ale zaroven neprijit o neprectene v tom klubu - jak na to nejlepe v aktualni api?
    NYX
    NYX --- ---
    VIRTUALVOID: Jsou to oddelene reauesty, tj. nejdriv nahravas soubor, ohandlujes error a teprve pak resis prispevek. Cekani na upload je problem appky.
    VIRTUALVOID
    VIRTUALVOID --- ---
    NYX: vies tam zabezpecit transakciu ? t.j. ak sa neuploadne subor, nebude existovat ani prispevok ?
    NYX
    NYX --- ---
    LUCIEN: Ano. Respektive jinak, upload souboru pojede separatne od poslani prispevku.

    Soubory se nahraji do lokace (posta, diskuze) a nasledujici prispevek je k sobe pripoji. Api samozrejme bude posilat seznam cekajicich souboru v dane lokaci.
    LUCIEN
    LUCIEN --- ---
    Nyxi, planujes v nove api moznost nahrani vice obrazku (souboru) najednou? Just curious...
    LUCIEN
    LUCIEN --- ---
    NYX: je to takovy zvlastni chovani kdyz ma clovek v premiovce zapnuty neanonymni minusky - uz par lidi mi to reportovalo jako bug, ale asi whatever...
    NYX
    NYX --- ---
    LUCIEN: Jo, na palce dolu uzivatele iniciativne neupozornujeme :-)
    Kliknutím sem můžete změnit nastavení reklam