{"openapi":"3.1.0","info":{"title":"eZif — API-ul extern pentru aplicații conectate și magazine online","version":"0.42.6","description":"Facturare, proforme cu plată (proforma plătită devine factură fiscală automat), încasări, documente, articole și stoc. Fiecare cerere e semnată: X-Ezif-Signature = HMAC-SHA256 hex cu secretul cheii, peste timestamp + \\n + METODA + \\n + calea (fără ?…) + \\n + sha256(corp). Documentația: https://app.ezif.ro/dezvoltatori","contact":{"name":"ANY PROJECT SOLUTIONS S.R.L.","url":"https://ezif.ro"}},"servers":[{"url":"https://app.ezif.ro/api/ext/v1","description":"producție"},{"url":"https://dev.ezif.ro/api/ext/v1","description":"test (mediul de test ANAF)"}],"paths":{"/ping":{"get":{"tags":["Cheia"],"summary":"Verifică cheia","operationId":"ping_api_ext_v1_ping_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"description":"Firma, utilizatorul tehnic, drepturile, seriile, setările și evenimentele cheii.","security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/callback":{"post":{"tags":["Webhooks"],"summary":"Adresa de webhook","description":"Aplicația își înregistrează adresa; răspunsul conține secretul de semnare. Dreptul cheii: webhooks:manage.","operationId":"set_callback_api_ext_v1_callback_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CallbackIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/callback/test":{"post":{"tags":["Webhooks"],"summary":"Testează webhook-ul","description":"eZif apelează imediat adresa și spune dacă a primit 2xx. Dreptul cheii: webhooks:manage.","operationId":"callback_test_api_ext_v1_callback_test_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/invoices":{"post":{"tags":["Facturi"],"summary":"Emite o factură (sau proformă)","operationId":"create_invoice_api_ext_v1_invoices_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceSpec"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"description":"Pentru magazine; idempotentă pe external_id (comanda). Dreptul cheii: invoice:write.","security":[{"cheie":[],"ora":[],"semnatura":[]}]},"get":{"tags":["Facturi"],"summary":"Lista facturilor","description":"Facturile și stornările emise: since, series, status, spv, page, per_page (≤ 200). Dreptul cheii: documents:read.","operationId":"invoices_list_api_ext_v1_invoices_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Since"}},{"name":"series","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Series"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"spv","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spv"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Per Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/invoices/{iid}/shipping":{"post":{"tags":["Facturi"],"summary":"Livrarea facturii","description":"Metoda de plată, curierul, AWB-ul, costul transportului. Dreptul cheii: invoice:write.","operationId":"invoice_shipping_api_ext_v1_invoices__iid__shipping_post","parameters":[{"name":"iid","in":"path","required":true,"schema":{"type":"integer","title":"Iid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShippingIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/invoices/by-external/{external_id}":{"get":{"tags":["Facturi"],"summary":"Factura după external_id","operationId":"invoice_by_external_api_ext_v1_invoices_by_external__external_id__get","parameters":[{"name":"external_id","in":"path","required":true,"schema":{"type":"string","title":"External Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"description":"Factura unei comenzi. Dreptul cheii: documents:read.","security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/invoices/{iid}":{"get":{"tags":["Facturi"],"summary":"Factura","operationId":"invoice_api_ext_v1_invoices__iid__get","parameters":[{"name":"iid","in":"path","required":true,"schema":{"type":"integer","title":"Iid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"description":"Număr, total, încasat, stare, stare SPV, PDF, from_proforma_id. Dreptul cheii: documents:read.","security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/invoices/{iid}/pdf":{"get":{"tags":["Facturi"],"summary":"PDF-ul facturii","operationId":"invoice_pdf_api_ext_v1_invoices__iid__pdf_get","parameters":[{"name":"iid","in":"path","required":true,"schema":{"type":"integer","title":"Iid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"description":"Documentul PDF. Dreptul cheii: documents:read.","security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/invoices/{iid}/storno":{"post":{"tags":["Facturi"],"summary":"Storno total","operationId":"invoice_storno_api_ext_v1_invoices__iid__storno_post","parameters":[{"name":"iid","in":"path","required":true,"schema":{"type":"integer","title":"Iid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StornoIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"description":"Factura storno pentru întreaga factură. Dreptul cheii: invoice:write.","security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/series":{"get":{"tags":["Facturi"],"summary":"Seriile active","description":"Seriile de facturi și proforme, cu seria implicită. Dreptul cheii: documents:read.","operationId":"series_api_ext_v1_series_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/invoices/{iid}/convert":{"post":{"tags":["Facturi"],"summary":"Proforma → factură (manual)","description":"Pentru proformele emise prin POST /invoices. Dreptul cheii: invoice:write.","operationId":"invoice_convert_api_ext_v1_invoices__iid__convert_post","parameters":[{"name":"iid","in":"path","required":true,"schema":{"type":"integer","title":"Iid"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ConvertIn"},{"type":"null"}],"title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/invoices/{iid}/payments":{"post":{"tags":["Facturi"],"summary":"Încasare pe factură","operationId":"invoice_payment_api_ext_v1_invoices__iid__payments_post","parameters":[{"name":"iid","in":"path","required":true,"schema":{"type":"integer","title":"Iid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"description":"Idempotentă pe external_id. Dreptul cheii: payment:write.","security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/items":{"get":{"tags":["Articole și stoc"],"summary":"Articolele","operationId":"items_api_ext_v1_items_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Per Page"}},{"name":"changed_since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Changed Since"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"description":"Cu codurile de bare și stocul total; page, per_page, changed_since. Dreptul cheii: items:read.","security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/items/{sku}":{"get":{"tags":["Articole și stoc"],"summary":"Un articol","operationId":"item_api_ext_v1_items__sku__get","parameters":[{"name":"sku","in":"path","required":true,"schema":{"type":"string","title":"Sku"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"description":"După cod. Dreptul cheii: items:read.","security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/stock":{"get":{"tags":["Articole și stoc"],"summary":"Stocul","description":"Pe articol × gestiune: fizic, rezervat, disponibil. Dreptul cheii: items:read.","operationId":"stock_api_ext_v1_stock_get","parameters":[{"name":"warehouse","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Warehouse"}},{"name":"sku","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sku"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/proformas":{"post":{"tags":["Proforme cu plată"],"summary":"Emite o proformă cu plată","operationId":"proforma_create_api_ext_v1_proformas_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProformaSpec"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"description":"Din seria cheii; idempotentă pe external_id; la plata integrală eZif emite singur factura fiscală. Dreptul cheii: proforma:write.","security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/proformas/by-external/{external_id}":{"get":{"tags":["Proforme cu plată"],"summary":"Proforma după external_id","operationId":"proforma_by_external_api_ext_v1_proformas_by_external__external_id__get","parameters":[{"name":"external_id","in":"path","required":true,"schema":{"type":"string","title":"External Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"description":"La fel ca GET /proformas/{id}. Dreptul cheii: documents:read.","security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/proformas/{pid}":{"get":{"tags":["Proforme cu plată"],"summary":"Proforma","operationId":"proforma_get_api_ext_v1_proformas__pid__get","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"integer","title":"Pid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"description":"Starea, totalul, încasat, valabilitatea, linkul de plată, PDF-ul, încasările și factura emisă. Dreptul cheii: documents:read.","security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/proformas/{pid}/payments":{"post":{"tags":["Proforme cu plată"],"summary":"Plata raportată de aplicație","operationId":"proforma_payment_api_ext_v1_proformas__pid__payments_post","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"integer","title":"Pid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"description":"La plata integrală, răspunsul conține factura emisă. Același external_id nu se înregistrează de două ori. Dreptul cheii: payment:write.","security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/proformas/{pid}/cancel":{"post":{"tags":["Proforme cu plată"],"summary":"Anulează proforma","operationId":"proforma_cancel_api_ext_v1_proformas__pid__cancel_post","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"integer","title":"Pid"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/app__routers__ext_api__CancelIn"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"description":"Doar o proformă neplătită. Dreptul cheii: proforma:write.","security":[{"cheie":[],"ora":[],"semnatura":[]}]}},"/proformas/{pid}/send":{"post":{"tags":["Proforme cu plată"],"summary":"Retrimite proforma pe e-mail","operationId":"proforma_send_api_ext_v1_proformas__pid__send_post","parameters":[{"name":"pid","in":"path","required":true,"schema":{"type":"integer","title":"Pid"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/app__routers__ext_api__SendIn"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"cheia, ora sau semnătura nu sunt valide (API_AUTH_REQUIRED, API_STALE, API_SIGNATURE_INVALID, API_KEY_INVALID)"},"403":{"description":"dreptul lipsește (MISSING_SCOPE) sau domeniul nu e autorizat"},"429":{"description":"peste 120 de cereri pe minut pe cheie (antetul Retry-After)"}},"description":"La adresa clientului sau la cea trimisă. Dreptul cheii: proforma:write.","security":[{"cheie":[],"ora":[],"semnatura":[]}]}}},"components":{"schemas":{"CallbackIn":{"properties":{"url":{"type":"string","maxLength":500,"title":"Url"},"rotate":{"type":"boolean","title":"Rotate","default":false}},"type":"object","required":["url"],"title":"CallbackIn"},"ClientIn":{"properties":{"name":{"type":"string","maxLength":250,"minLength":2,"title":"Name"},"kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"},"cui":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cui"},"cnp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cnp"},"vat_payer":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Vat Payer"},"reg_com":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reg Com"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"country":{"type":"string","title":"Country","default":"RO"},"county":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"County"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"street":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"}},"type":"object","required":["name"],"title":"ClientIn"},"ConvertIn":{"properties":{"external_id":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"External Id"}},"type":"object","title":"ConvertIn"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InvoiceSpec":{"properties":{"kind":{"type":"string","title":"Kind","default":"invoice"},"series":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Series"},"external_id":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"External Id"},"issue_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Issue Date"},"due_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Due Date"},"due_days":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":0.0},{"type":"null"}],"title":"Due Days"},"currency":{"type":"string","title":"Currency","default":"RON"},"price_mode":{"type":"string","title":"Price Mode","default":"net"},"notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Notes"},"expected_total":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Expected Total"},"shipping":{"anyOf":[{"$ref":"#/components/schemas/ShippingIn"},{"type":"null"}]},"client":{"$ref":"#/components/schemas/ClientIn"},"lines":{"items":{"$ref":"#/components/schemas/app__routers__ext_api__LineIn"},"type":"array","maxItems":500,"minItems":1,"title":"Lines"}},"type":"object","required":["client","lines"],"title":"InvoiceSpec"},"PaymentIn":{"properties":{"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount"},"paid_on":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Paid On"},"method":{"type":"string","title":"Method","default":"card"},"reference":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Reference"},"external_id":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"External Id"}},"type":"object","required":["amount"],"title":"PaymentIn"},"PeriodIn":{"properties":{"from":{"type":"string","format":"date","title":"From"},"to":{"type":"string","format":"date","title":"To"}},"type":"object","required":["from","to"],"title":"PeriodIn"},"ProformaSpec":{"properties":{"external_id":{"type":"string","maxLength":64,"minLength":1,"title":"External Id"},"series":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Series"},"issue_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Issue Date"},"valid_days":{"anyOf":[{"type":"integer","maximum":90.0,"minimum":1.0},{"type":"null"}],"title":"Valid Days"},"currency":{"type":"string","title":"Currency","default":"RON"},"price_mode":{"type":"string","title":"Price Mode","default":"net"},"notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Notes"},"period":{"anyOf":[{"$ref":"#/components/schemas/PeriodIn"},{"type":"null"}]},"client":{"$ref":"#/components/schemas/ClientIn"},"lines":{"items":{"$ref":"#/components/schemas/app__routers__ext_api__LineIn"},"type":"array","maxItems":500,"minItems":1,"title":"Lines"}},"type":"object","required":["external_id","client","lines"],"title":"ProformaSpec"},"ShippingIn":{"properties":{"payment_method":{"anyOf":[{"type":"string","pattern":"^(ramburs|card|transfer|alta)$"},{"type":"null"}],"title":"Payment Method"},"courier":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Courier"},"awb":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}],"title":"Awb"},"order_ref":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Order Ref"},"shipping_cost":{"anyOf":[{"type":"number","maximum":100000.0,"minimum":0.0},{"type":"null"}],"title":"Shipping Cost"}},"type":"object","title":"ShippingIn"},"StornoIn":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason","default":"Retur / anulare comandă"}},"type":"object","title":"StornoIn"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"app__routers__ext_api__CancelIn":{"properties":{"reason":{"type":"string","maxLength":300,"minLength":3,"title":"Reason","default":"Anulată de aplicație"}},"type":"object","title":"CancelIn"},"app__routers__ext_api__LineIn":{"properties":{"code":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Code"},"name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Name"},"qty":{"type":"number","title":"Qty"},"uom":{"anyOf":[{"type":"string","maxLength":12},{"type":"null"}],"title":"Uom"},"price":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Price"},"vat":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Vat"},"discount_pct":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Discount Pct","default":0},"warehouse":{"anyOf":[{"type":"string","maxLength":12},{"type":"null"}],"title":"Warehouse"},"service":{"type":"boolean","title":"Service","default":false}},"type":"object","required":["qty"],"title":"LineIn"},"app__routers__ext_api__SendIn":{"properties":{"email":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Email"}},"type":"object","title":"SendIn"}},"securitySchemes":{"cheie":{"type":"apiKey","in":"header","name":"X-Ezif-Key","description":"cheia aplicației (ezk_…)"},"ora":{"type":"apiKey","in":"header","name":"X-Ezif-Timestamp","description":"secunde Unix (UTC), ±5 minute"},"semnatura":{"type":"apiKey","in":"header","name":"X-Ezif-Signature","description":"HMAC-SHA256 hex (vezi descrierea)"}}}}