Rejestr eksportu danych
Ten rejestr opisuje, jak przenieść dane firmy z ppwrly do innego dostawcy (Data Act, art. 26). Aktualizujemy go razem z formatem eksportu.
Procedura zmiany dostawcy i terminy
- Pobierz eksport firmy w profilu firmy (właściciel albo administrator) albo wydaj nowemu dostawcy klucz dostępu — dostawca pobierze ten sam plik sam.
- Zakończ umowę w profilu firmy. Zaczyna się 30 dni karencji: dane są tylko do odczytu, eksport i dostęp dla nowego dostawcy działają, a usunięcie można w każdej chwili anulować.
- Po karencji firma i jej dane są usuwane według zasad opisanych niżej. „Usuń natychmiast” pomija karencję.
- Eksport, dostęp dla nowego dostawcy i zmiana dostawcy są bezpłatne; nie ma kar za wcześniejsze rozwiązanie umowy.
Metody pobrania danych
- Eksport w panelu: plik JSON jednej firmy, który pobiera właściciel albo administrator firmy — najwyżej 5 razy na godzinę.
- Dostęp dla nowego dostawcy: dostawca pobiera ten sam plik kluczem dostępu (opis interfejsu niżej).
Format i wersja
- Identyfikator formatu
ppwrly.company-export- Bieżąca wersja
1.0- Schemat maszynowy (JSON Schema)
- /legal/data-export-register/company-export-1.0.schema.json
Plik JSON w UTF-8. Liczby dziesiętne jako napisy (bez utraty precyzji), chwile w ISO 8601 (UTC), daty jako RRRR-MM-DD.
Katalog pól
Każde pole pliku: ścieżka od korzenia ([] oznacza element tablicy), typ, czy może być puste i wersja formatu, w której się pojawiło.
Koperta pliku
formatIdentyfikator formatu: „ppwrly.company-export”.formatVersionWersja formatu MAJOR.MINOR — ta sama co w rejestrze.exportedAtChwila migawki danych (pole zmienne).registerUrlAdres rejestru formatów i procedur eksportu.
company
company.Identyfikator wiersza.id company.Nazwa firmy.name company.Numer identyfikacji podatkowej (NIP / VAT).taxId company.Adres — ulica i numer.address company.Adres — druga linia.address2 company.Miejscowość.city company.Kod pocztowy.postalCode company.Kraj siedziby (kod ISO 3166-1 alfa-2).country company.Branża.industry company.Wielkość firmy.companySize company.Strona internetowa.website company.Plan usługi ppwrly.subscriptionPlan company.Koniec bieżącego okresu planu.subscriptionExpires company.Plan zaplanowany od następnego okresu.pendingTier company.Chwila zmiany na plan zaplanowany.pendingTierEffectiveAt company.Koniec okresu próbnego.trialEndsAt company.Czy ukończono konfigurację firmy.onboardingCompleted company.Chwila utworzenia.createdAt company.Chwila ostatniej zmiany.updatedAt
company.countries[]
company.Identyfikator wiersza.countries[]. id company.Identyfikator firmy.countries[]. companyId company.Kraj rynku firmy (kod ISO 3166-1 alfa-2).countries[]. countryCode company.Chwila utworzenia.countries[]. createdAt
company.products[]
company.Identyfikator wiersza.products[]. id company.Identyfikator firmy.products[]. companyId company.Kod produktu nadany przez firmę (SKU).products[]. sku company.Nazwa produktu.products[]. name company.Opis produktu.products[]. description company.Kategoria produktu.products[]. category company.Kod EAN / GTIN.products[]. eanGtin company.Czy produkt jest aktywny (niezarchiwizowany).products[]. isActive company.Chwila utworzenia.products[]. createdAt company.Chwila ostatniej zmiany.products[]. updatedAt
company.products[].productCountries[]
company.Identyfikator wiersza.products[]. productCountries[]. id company.Identyfikator produktu.products[]. productCountries[]. productId company.Kraj sprzedaży produktu (ISO 3166-1 alfa-2).products[]. productCountries[]. countryCode company.Roczna liczba sztuk wprowadzanych na rynek.products[]. productCountries[]. annualUnits
company.products[].packagingComponents[]
company.Identyfikator wiersza.products[]. packagingComponents[]. id company.Identyfikator produktu.products[]. packagingComponents[]. productId company.Nazwa elementu opakowania.products[]. packagingComponents[]. name company.Rodzaj opakowania (np. podstawowe, zbiorcze).products[]. packagingComponents[]. packagingType company.Materiał (kod słownika ppwrly).products[]. packagingComponents[]. materialType company.Podrodzaj materiału.products[]. packagingComponents[]. materialSubtype company.Masa elementu w gramach.products[]. packagingComponents[]. weightGrams company.Zawartość recyklatu w procentach.products[]. packagingComponents[]. recycledContentPct company.Źródło informacji o recyklacie.products[]. packagingComponents[]. recycledContentSource company.Ocena przydatności do recyklingu.products[]. packagingComponents[]. recyclabilityGrade company.Czy element jest wielokrotnego użytku.products[]. packagingComponents[]. isReusable company.Pusta przestrzeń w procentach.products[]. packagingComponents[]. emptySpacePct company.Notatki firmy.products[]. packagingComponents[]. notes company.Chwila utworzenia.products[]. packagingComponents[]. createdAt company.Chwila ostatniej zmiany.products[]. packagingComponents[]. updatedAt
company.products[].publicationVersions[]
company.Identyfikator wiersza.products[]. publicationVersions[]. id company.Identyfikator produktu.products[]. publicationVersions[]. productId company.Numer wersji karty publicznej.products[]. publicationVersions[]. version company.Część adresu karty publicznej z kodu QR.products[]. publicationVersions[]. publicToken company.Migawka danych opublikowanych na karcie.products[]. publicationVersions[]. snapshot company.Skrót danych wersji (porównanie z podglądem).products[]. publicationVersions[]. projectionFingerprint company.Chwila publikacji.products[]. publicationVersions[]. publishedAt company.Konto, które opublikowało wersję.products[]. publicationVersions[]. publishedBy company.Chwila wycofania wersji.products[]. publicationVersions[]. withdrawnAt company.Konto, które wycofało wersję.products[]. publicationVersions[]. withdrawnBy
company.products[].publicationVersions[].artifacts
company.Adres karty publicznej (tylko wersja aktywna).products[]. publicationVersions[]. artifacts. publicUrl company.Trasa obrazu kodu QR w API (tylko wersja aktywna).products[]. publicationVersions[]. artifacts. qrCodePath
company.ppwrDeclarations[]
company.Identyfikator wiersza.ppwrDeclarations[]. id company.Identyfikator firmy.ppwrDeclarations[]. companyId company.Identyfikator produktu.ppwrDeclarations[]. productId company.Numer wersji deklaracji.ppwrDeclarations[]. version company.Stan deklaracji.ppwrDeclarations[]. status company.Nazwa producenta w deklaracji.ppwrDeclarations[]. producerName company.Adres producenta w deklaracji.ppwrDeclarations[]. producerAddress company.Opis opakowania.ppwrDeclarations[]. packagingDescription company.Skład materiałowy.ppwrDeclarations[]. materialComposition company.Informacja o recyklacie.ppwrDeclarations[]. recycledContentInfo company.Ocena przydatności do recyklingu.ppwrDeclarations[]. recyclabilityGrade company.Normy i odniesienia.ppwrDeclarations[]. standardsReference company.Oświadczenie producenta.ppwrDeclarations[]. complianceStatement company.Migawka danych, z których powstaje deklaracja i jej PDF.ppwrDeclarations[]. snapshotJson company.Lista brakujących danych w chwili utworzenia.ppwrDeclarations[]. missingItems company.Dawny klucz publicznej strony deklaracji (dana historyczna).ppwrDeclarations[]. publicToken company.Osoba podpisująca.ppwrDeclarations[]. signedBy company.Chwila podpisu.ppwrDeclarations[]. signedAt company.Dawny adres pliku PDF (dana historyczna).ppwrDeclarations[]. pdfUrl company.Dawna treść kodu QR deklaracji (dana historyczna).ppwrDeclarations[]. qrCodeData company.Chwila utworzenia.ppwrDeclarations[]. createdAt company.Chwila ostatniej zmiany.ppwrDeclarations[]. updatedAt
company.ppwrDeclarations[].artifacts
company.Trasa API, która tworzy PDF deklaracji na żądanie.ppwrDeclarations[]. artifacts. pdfPath
company.eprRegistrations[]
company.Identyfikator wiersza.eprRegistrations[]. id company.Identyfikator firmy.eprRegistrations[]. companyId company.Kraj rejestracji ROP/EPR.eprRegistrations[]. countryCode company.Organizacja odzysku.eprRegistrations[]. proName company.Numer rejestrowy.eprRegistrations[]. registrationNumber company.Data rejestracji.eprRegistrations[]. registrationDate company.Data wygaśnięcia.eprRegistrations[]. expiryDate company.Stan rejestracji.eprRegistrations[]. status company.Numer umowy z organizacją odzysku.eprRegistrations[]. contractReference company.Notatki firmy.eprRegistrations[]. notes company.Chwila utworzenia.eprRegistrations[]. createdAt company.Chwila ostatniej zmiany.eprRegistrations[]. updatedAt
company.eprDeclarations[]
company.Identyfikator wiersza.eprDeclarations[]. id company.Identyfikator firmy.eprDeclarations[]. companyId company.Kraj deklaracji ROP/EPR.eprDeclarations[]. countryCode company.Rodzaj okresu sprawozdawczego.eprDeclarations[]. periodType company.Początek okresu.eprDeclarations[]. periodStart company.Koniec okresu.eprDeclarations[]. periodEnd company.Stan deklaracji.eprDeclarations[]. status company.Łączna masa w kilogramach.eprDeclarations[]. totalWeightKg company.Łączna opłata w euro (szacunek).eprDeclarations[]. totalFeeEur company.Chwila złożenia.eprDeclarations[]. submittedAt company.Dane deklaracji.eprDeclarations[]. dataJson company.Adres pliku PDF deklaracji.eprDeclarations[]. pdfUrl company.Chwila utworzenia.eprDeclarations[]. createdAt company.Chwila ostatniej zmiany.eprDeclarations[]. updatedAt
company.complianceChecklists[]
company.Identyfikator wiersza.complianceChecklists[]. id company.Identyfikator firmy.complianceChecklists[]. companyId company.Regulacja listy kontrolnej (np. PPWR).complianceChecklists[]. regulation company.Postęp listy w procentach.complianceChecklists[]. overallProgress company.Chwila utworzenia.complianceChecklists[]. createdAt company.Chwila ostatniej zmiany.complianceChecklists[]. updatedAt
company.complianceChecklists[].items[]
company.Identyfikator wiersza.complianceChecklists[]. items[]. id company.Identyfikator listy kontrolnej.complianceChecklists[]. items[]. checklistId company.Numer kroku.complianceChecklists[]. items[]. stepNumber company.Klucz tłumaczenia tytułu kroku.complianceChecklists[]. items[]. titleKey company.Klucz tłumaczenia opisu kroku.complianceChecklists[]. items[]. descriptionKey company.Odniesienie do przepisu.complianceChecklists[]. items[]. articleRef company.Termin kroku.complianceChecklists[]. items[]. deadline company.Czy krok jest wykonany.complianceChecklists[]. items[]. isCompleted company.Chwila wykonania.complianceChecklists[]. items[]. completedAt company.Konto, które oznaczyło wykonanie.complianceChecklists[]. items[]. completedBy company.Notatki firmy.complianceChecklists[]. items[]. notes company.Kraj kroku (dla kroków krajowych).complianceChecklists[]. items[]. countryCode company.Chwila utworzenia.complianceChecklists[]. items[]. createdAt
company.billingHistory[]
company.Identyfikator wiersza.billingHistory[]. id company.Identyfikator firmy.billingHistory[]. companyId company.Plan, którego dotyczy płatność.billingHistory[]. billingTier company.Kwota.billingHistory[]. amount company.Waluta.billingHistory[]. currency company.Stan płatności.billingHistory[]. status company.Początek okresu rozliczeniowego.billingHistory[]. periodStart company.Koniec okresu rozliczeniowego.billingHistory[]. periodEnd company.Chwila utworzenia.billingHistory[]. createdAt
company.members[]
company.Identyfikator wiersza.members[]. id company.Identyfikator konta członka.members[]. userId company.Identyfikator firmy.members[]. companyId company.Rola w firmie (owner, admin, member).members[]. role company.Konto zapraszające.members[]. invitedBy company.Chwila zaproszenia.members[]. invitedAt company.Chwila przyjęcia zaproszenia.members[]. acceptedAt company.Chwila utworzenia.members[]. createdAt company.Adres e-mail członka.members[]. email company.Wyświetlana nazwa członka.members[]. displayName
company.invitations[]
company.Identyfikator wiersza.invitations[]. id company.Identyfikator firmy.invitations[]. companyId company.Zapraszany adres e-mail.invitations[]. email company.Rola z zaproszenia.invitations[]. role company.Stan zaproszenia.invitations[]. status company.Konto zapraszające.invitations[]. invitedBy company.Chwila utworzenia.invitations[]. createdAt company.Termin ważności zaproszenia.invitations[]. expiresAt company.Chwila rozstrzygnięcia (przyjęcie, odrzucenie, odwołanie).invitations[]. resolvedAt company.Konto, które rozstrzygnęło zaproszenie.invitations[]. resolvedBy
company.companyAuditLog[]
company.Identyfikator wiersza.companyAuditLog[]. id company.Konto wykonujące (puste po usunięciu konta albo dla zdarzeń systemu).companyAuditLog[]. userId company.Identyfikator firmy.companyAuditLog[]. companyId company.Rodzaj zdarzenia.companyAuditLog[]. action company.Rodzaj obiektu zdarzenia.companyAuditLog[]. entityType company.Identyfikator obiektu zdarzenia.companyAuditLog[]. entityId company.Szczegóły zdarzenia (bez adresów IP).companyAuditLog[]. details company.Chwila utworzenia.companyAuditLog[]. createdAt
Pola zmienne między pobraniami
Poza tymi polami dwa pobrania tej samej firmy bez zmian w danych dają ten sam plik.
exportedAt— Chwila migawki — inna przy każdym pobraniu.company.companyAuditLog[]— Wpisy „company.export” powstałe po migawce wcześniejszego z porównywanych artefaktów (każde pobranie zostawia ślad w dzienniku firmy).
Historia wersji formatu
- 1.0 (2026-10-24) — Pierwsza wersja eksportu firmy: koperta, dane firmy, produkty z opakowaniami i kartami, deklaracje, rejestracje i deklaracje EPR, listy kontrolne, historia płatności bez identyfikatorów Stripe’a, członkowie, zaproszenia i dziennik firmy bez adresów IP.
Znane ograniczenia
- Pliki PDF deklaracji powstają na żądanie poza eksportem — eksport zawiera dane, z których powstają, i trasę pobrania.
- Kwota polskiej opłaty produktowej jest wyłącznie w kalkulatorze — eksport zawiera dane wejściowe (produkty, opakowania, kraje), nie kwotę.
- Instrukcje sortowania pokazywane na karcie publicznej nie są częścią migawki wersji — pochodzą ze słownika ppwrly w chwili wyświetlenia.
- Raporty CSV z panelu są niepełne względem eksportu — kompletne dane zawiera wyłącznie eksport JSON.
- Eksport powstaje w pamięci w całości (bez strumieniowania); bardzo duży katalog produktów wydłuża czas odpowiedzi.
Dostęp dla nowego dostawcy (interfejs delegowany)
Właściciel albo administrator firmy może wydać dostawcy docelowemu delegację dostępu (domyślnie 30, najwyżej 90 dni). Dostawca pobiera ten sam artefakt co panel żądaniem GET z nagłówkiem „Authorization: Bearer <token>”. Token pokazujemy raz; baza trzyma wyłącznie jego skrót. Delegację można cofnąć w każdej chwili — cofnięta albo wygasła daje odpowiedź 401. Delegacja daje wyłącznie odczyt eksportu jednej firmy.
- Metoda, Adres
GET /api/v1/portability/company-export- Uwierzytelnienie
- nagłówek Authorization: Bearer <klucz>; klucz zaczyna się od ppwrly_pt_
- Zakres
company_export:read- Ważność
- domyślnie 30 dni, najwyżej 90 dni
- Limity
- 10 pobrań na godzinę jednym kluczem, 30 żądań na godzinę z adresu IP, najwyżej 5 aktywnych kluczy na firmę
Kody błędów
- 401 · Powód w odpowiedzi: brak — Brak nagłówka, inny schemat niż Bearer, token nieznany, zniekształcony, cofnięty albo wygasły — zawsze ta sama odpowiedź, bez wskazania, który przypadek zaszedł.
- 429 · Powód w odpowiedzi:
portability_download_limit— Więcej niż 10 pobrań jedną delegacją w ciągu godziny. - 429 · Powód w odpowiedzi: brak — Więcej niż 30 żądań z jednego adresu IP (dla IPv6 — z jednej sieci /64) w ciągu godziny.
Cofnięcie klucza
Cofnięcie działa od razu dla każdego nowego pobrania. Pobranie, które odczytało delegację przed cofnięciem, kończy się artefaktem z chwili swojego startu; pobranie, które trafi na cofnięcie w trakcie zatwierdzania, dostaje 401.
Usunięcie danych po zakończeniu umowy
Co dzieje się z danymi po usunięciu
- Usuwane
- Konto: adres e-mail, skrót hasła i tokeny logowania.
- Firma i wszystkie jej dane: kraje, produkty, opakowania, wersje kart, deklaracje, rejestracje i deklaracje EPR, listy kontrolne, członkostwa, zaproszenia i delegacje.
Kiedy: Po karencji albo od razu przy „Usuń natychmiast”.
- Anonimizowane
- Wpisy dziennika zdarzeń wykonanych z konta (także nieudane logowania) — tracą treść, adres IP i powiązanie z kontem.
Kiedy: Treść od razu; wiersz po 5 latach (retencja dziennika).
- Zachowywane
- Dokumenty księgowe wymagane ustawą — poza bazą ppwrly (system księgowy i KSeF).
- Dane objęte aktywną blokadą prawną albo incydentu — do jej zwolnienia; historia zwolnionych blokad 5 lat.
- Rejestr usunięć z identyfikatorem usuniętego konta lub firmy — dana pseudonimizowana, 60 dni.
- Skróty tokenów kart publicznych — bez powiązania z firmą, żeby wydrukowany kod QR pokazywał „karta niedostępna”.
Kiedy: Według podstawy zachowania.
- Kopie zapasowe
- Zrzuty bazy — najwyżej 30 dni.
- Obrazy serwera — najwyżej 16 dni.
Kiedy: Najwyżej 46 dni po usunięciu. Po odtworzeniu kopii usunięcia z rejestru są powtarzane w trybie najlepszej staranności.