https://www.quantopian.com/posts/were-joining-robinhood

Am continuat sa pastrez aceasta documentatie actualizata si acum este completa la nivel local si, pana de curand, am fost bucuros sa raspund la intrebari care nu ar putea expune un API intern, o caracteristica neeliberata sau date sensibile ale unor terte parti. Dar unii dintre acestia s-au mutat de la dezvoltatori open source prietenosi la stalkeri furiosi si ciudati si au folosit chiar aceasta documentatie cu rautate pentru a fura active si pentru a deturna conturile. Din pacate, inchiderea urmaritorului de probleme a fost doar o solutie temporara. Oprirea proiectului va fi mai permanenta.

Pentru cei ciudati: Nu ma contactati despre Robinhood. Nu mai trimiteti niciun e-mail. Nu ma trimite un mesaj text Nu ma mai suna. Nu mai vorbiti in comun cu membrii familiei adolescente si nu mai lasati mesaje pentru mine pe mesageria vocala. Nu mai oferi bani pentru a te ajuta. Nu o sa.

Pentru toti ceilalti: actori, profitori si escroci rai au creat o situatie care ne pune pe toti in pericol sa ne inchidem conturile. Va sugerez sa gasiti modalitati de a va distanta. Acesti oameni au impins Robinhood sa faca schimbari drastice la API-ul lor, sa inchida parteneriatele stabilite si sa isi puna in aplicare acordurile cu clientii. Daca nu ati fost inca contactat de un agent de asistenta automatizat pentru utilizarea directa a API-ului, nu fiti prea surprinsi daca va aflati in viitorul apropiat.

Nu sunt inca sigur ce se va intampla cu aceasta repo, dar am avut o relatie buna cu RH HQ, deoarece a existat o lista de asteptare pentru a crea chiar un cont si intentionez sa raman in bunavointa lor. Nu voi conecta unul aici, dar exista firme fara comisioane care sunt proiectate pentru a fi accesate prin intermediul API-ului lor. Daca acest lucru este in conformitate cu planurile dvs., utilizati una dintre aceste firme.

Cuprins:

  • Cuprins
  • Introducere
    • Dezvoltare
  • Securitate API
  • Raportarea erorilor API
  • Paginare
    • Semi-Paginare

Vezi si

Lucrurile pe care inca nu le-am organizat sunt in Unsorted.md

Robinhood este un brokeraj online de valori mobiliare fara comisioane. Asa cum v-ati astepta, a fi un serviciu online inseamna ca totul este gestionat printr-o solicitare adresata unei anumite adrese URL.

Protocolul HTTPS este utilizat pentru a accesa API-ul Robinhood. Tranzactiile necesita securitate, deoarece majoritatea apelurilor transmit informatii reale despre cont. SSL Pinning este utilizat in aplicatiile oficiale Android si iOS pentru a preveni atacurile MITM; ai fi intelept sa faci acelasi lucru cel putin.

Apelurile catre punctele finale API utilizeaza doua niveluri diferite de autentificare:

  1. Niciuna : fara autentificare. Oricine poate interoga metoda.
  2. Jeton : necesita un jeton de autorizare generat cu un apel pentru a va conecta.

Apelurile care nu necesita autentificare sunt, in general, informative (strangere de cotatii, cautare de valori mobiliare etc.).

Apelurile autorizate necesita un antet HTTP de autorizare cu tipul de autentificare setat ca Token (Exemplu: Autorizare: Token 40charauthozationtokenherexxxxxxxxxxxxxx).

API raporteaza date incorecte sau utilizare necorespunzatoare cu coduri de stare HTTP si obiecte JSON returnate ca continut de corp. Unele pe care le-am intalnit includ:

HTTP Status Cheie Valoare Ce am facut gresit 400 non_field_errors [“Imposibil de conectat cu acreditarile furnizate.”] Incercat sa va conectati cu nume de utilizator / parola incorecte 400 parola [“Este posibil ca acest camp sa nu fie gol.”] A incercat sa va conectati fara un parola 401 detaliu [“Jeton nevalid.”] Incercare de utilizare a jetonului memorat in cache dupa deconectare 400 parola [“Aceasta parola este prea scurta. Trebuie sa contina cel putin 10 caractere.”, “Aceasta parola este prea obisnuita.”] A incercat sa se modifice parola mea la parola

… ai ideea. Anuntandu-va exact ce a gresit, API-ul este aproape auto-documentat, asa ca multumim Robinhood.

Unele date sunt returnate din API-ul Robinhood ca date paginate cu cursorele urmatoare si anterioare deja in forma URL.

Daca apelul dvs. returneaza date paginate, va arata ca acest apel la https://api.robinhood.com/instruments/:

{“previous”: null, “results”: [{“split”: “https://api.robinhood.com/instruments/42e07e3a-ca7a-4abc-8c23-de49cb657c62/splits/”, “margin_initial_ratio”: “1.0000 “,” url “:” https://api.robinhood.com/instruments/42e07e3a-ca7a-4abc-8c23-de49cb657c62/ “,” quote “:” https://api.robinhood.com/quotes/SBPH/ “,” symbol “:” SBPH “,” bloomberg_unique “:” EQ0000000028928752 “,” list_date “: nul,” fundamentals “:” https://api.robinhood.com/fundamentals/SBPH/ “,” state “:” active “,” tradeable “: true,” maintenance_ratio “:” 1.0000 “,” id “:” 42e07e3a-ca7a-4abc-8c23-de49cb657c62 “,” market “:” https: //api.robinhood.com / markets / XNAS / “,” name “:” Spring Bank Pharmaceuticals, Inc. Common Stock “}, …],” next “:” https://api.robinhood.com/instruments/?cursor=cD04NjUz “}

Pentru a obtine urmatoarea pagina de rezultate, trebuie doar sa utilizati urmatoarea adresa URL.

Semi-Paginare

Unele date sunt returnate ca o lista de rezultate ca si cum ar fi paginate, dar API-ul nu ne furnizeaza cheile anterioare sau urmatoare.