Szybki start
Wykonaj pierwsze uwierzytelnione wywołanie, korzystając z przewodnika szybkiego startu.
API platformy DUST modeluje procesy związane z obiektami fizycznymi za pomocą niewielkiego zestawu zasobów, które można ze sobą łączyć. Rekord to cyfrowy zapis fizycznego przedmiotu; wszystko inne — identyfikatory, pliki, foldery, złożenia, udostępnianie, przesyłki — jest do rekordów dołączane, porządkuje je lub je przemieszcza. Ta strona jest mapą: każdemu pojęciu odpowiada jedna krótka sekcja z kluczowymi punktami końcowymi i linkiem do szczegółowego przewodnika.
Niektóre przestrzenie nazw API powstały przed obecnym słownictwem produktu. Aplikacja internetowa DICE i ta dokumentacja używają nazw z lewej kolumny; ścieżki API zachowują nazwy z prawej.
| Nazwa w DICE / w dokumentacji | Przestrzeń nazw API | Uwagi |
|---|---|---|
| Rekordy | /api/v1/threads | — |
| Identyfikatory | /api/v1/tags | Starsze nazewnictwo tags w ścieżkach |
| Pliki | /api/v1/files | W niektórych schematach nazywane zasobami (resources) |
| Foldery i kategorie | /api/v1/bundles | Bundle to nazwa implementacyjna |
| Złożenia | /api/v1/assemblies | Złożenia to rekordy rodzaju assembly |
| Zespoły | /api/v1/teams | Wybierane dla każdego żądania za pomocą nagłówka Dust-Ctx-Team-Id (starszy nagłówek Dust-Ctx-Grp-Id jest nadal akceptowany) |
| Połączenia | /api/v1/connections | Schematy przesyłanych danych zachowują starsze nazewnictwo team link |
| Udostępnianie | /api/v1/sharing | — |
| Przesyłki | /api/v1/transfers | Starsze nazewnictwo transfers w ścieżkach |
| Wydzielenia | /api/v1/slices | — |
| Fabric | /api/v1/fabric | Graf pochodzenia obejmujący wiele organizacji |
| Certyfikaty | /api/v1/certificates, /api/v1/certificate-forms | — |
| Strony publiczne | /api/v1/public-pages, /api/v1/public-page-designs | Publikowanie wymaga uprawnienia zespołu publisher |
| Zdarzenia | /api/v1/events | — |
Każde żądanie zawiera token Bearer wydany przez AuthD; punkty końcowe działające w zakresie organizacji — czyli prawie wszystkie — wymagają dodatkowo nagłówka Dust-Ctx-Org-Id (i opcjonalnie Dust-Ctx-Team-Id, aby wybrać zespół). Zobacz Uwierzytelnianie i Konwencje. Pełna dokumentacja na poziomie parametrów znajduje się w dokumentacji API.
Rekord to zapis jednego fizycznego składnika majątku, części, dokumentu lub elementu przepływu pracy: nazwa i opis, typowane dane pól, załączone pliki, powiązane identyfikatory oraz historia zdarzeń. Rekordy mają właściwość kind — zwykłe jednostki lub assembly (zobacz poniżej).
POST /api/v1/threads — utworzenie jednego lub wielu rekordówGET /api/v1/threads — wyszukiwanie i wyświetlanie listy (paginacja kursorowa)GET /api/v1/threads/{thread_id} — pobranie jednego rekordu wraz z danymi pólPOST /api/v1/threads/{thread_id}/data — wstawienie, aktualizacja lub usunięcie wartości pólPATCH /api/v1/threads/archive / PATCH /api/v1/threads/restore — cykl życia archiwizacjiSzczegóły: Przewodnik po API rekordów.
Wartości pól są typowane (text, number, date, select, odwołania do zasobów, a nawet pola, których wartościami są rekordy) i zagnieżdżone według typu. Szablony określają oczekiwane pola dla powtarzalnego rodzaju rekordu.
POST /api/v1/templates / GET /api/v1/templates — tworzenie szablonów i wyświetlanie ich listyGET /api/v1/templates/{templateId} / PATCH /api/v1/templates/{templateId} — odczyt i aktualizacjaIdentyfikator wiąże fizyczne oznakowanie — DUST, kod QR, kod kreskowy, symbol Data Matrix lub chip NFC — z rekordem, dzięki czemu skan wykonany w terenie prowadzi do cyfrowego zapisu. Przestrzeń nazw API to /api/v1/tags (starsze nazewnictwo).
POST /api/v1/tags/extract — przetworzenie ujęcia DUST na kanoniczny odcisk cyfrowy bez powiązaniaPOST /api/v1/tags/bind — powiązanie identyfikatora z rekordemPOST /api/v1/tags/identify — znalezienie rekordu pasującego do skanuPOST /api/v1/tags/verify — potwierdzenie, że skan pasuje do identyfikatorów określonego rekorduPOST /api/v1/tags/unbind — odłączenie identyfikatoraSzczegóły: Przewodnik po API identyfikatorów.
Pliki (w niektórych schematach nazywane zasobami) są przechowywane w magazynie obiektów i załączane do rekordów bezpośrednio lub za pośrednictwem pól typu zasób. Duże pliki są przesyłane za pomocą wznawialnego protokołu tus; małe — za pomocą pojedynczego żądania POST typu multipart.
POST /api/v1/files — proste przesyłanie multipartPOST /api/v1/files/finalize — przekształcenie zakończonych przesyłań tus w zapisy zasobówGET /api/v1/files/{resource_id}/download — pobieraniePOST /api/v1/files/urls — krótkotrwałe podpisane adresy URLGET /api/v1/files/search — wyszukiwanie w plikachSzczegóły: Przewodnik po API plików.
Tożsamość jest zarządzana w AuthD; API platformy przypisuje każde żądanie działające w zakresie organizacji do organizacji i zespołu za pomocą nagłówków kontekstu. Zespoły są właścicielami rekordów, a udostępnianie, połączenia i przesyłki działają między zespołami.
GET /api/v1/me — bieżący użytkownik i dostępne organizacjeGET /api/v1/teams — zespoły widoczne dla wywołującegoPOST /api/v1/org/teams / PATCH /api/v1/org/teams/{team_id} — zarządzanie zespołami (administratorzy organizacji)POST /api/v1/org/teams/members — zarządzanie członkostwem (administratorzy organizacji)Szczegóły: Zespoły, udostępnianie i połączenia.
Foldery i kategorie porządkują rekordy. W API jedne i drugie są pakietami (bundles) — kind: "folder" oznacza wyłączną przynależność, a kind: "category" niewyłączne oznaczanie — i pakiety można zagnieżdżać, tworząc drzewa.
POST /api/v1/bundles — utworzenie (z kind i opcjonalnym elementem nadrzędnym childOfId)GET /api/v1/bundles / GET /api/v1/bundles/children — wyświetlenie listy lub stopniowe przechodzenie drzewaPOST /api/v1/bundles/{bundle_id}/add / PATCH /api/v1/bundles/{bundle_id}/move — umieszczanie rekordówPATCH /api/v1/bundles/parent — zmiana elementu nadrzędnego pakietuZłożenie to rekord rodzaju assembly, którego części są innymi rekordami — to struktura zestawienia materiałów. Części można chronić przed wymontowaniem, a listy części są agregowane przechodnio.
GET /api/v1/assemblies — lista rekordów złożeńPOST /api/v1/assemblies/{assembly_id}/parts / DELETE /api/v1/assemblies/{assembly_id}/parts — dołączanie i wymontowywanie częściGET /api/v1/assemblies/{assembly_id}/rolled-up-parts — przechodnia lista częściPATCH /api/v1/assemblies/{assembly_id}/kind — przekształcenie rekordu między rodzajami unit i assemblyPOST /api/v1/imports/plan / POST /api/v1/imports/commit — próbne uruchomienie i zatwierdzenie importu całego pakietu złożeniaRekordy mogą odwoływać się do siebie nawzajem za pomocą typowanych linków. Definicje relacji nazywają rodzaje relacji; linki rekordów są ich wystąpieniami.
POST /api/v1/relations / GET /api/v1/relations — definiowanie rodzajów relacji i wyświetlanie ich listyPOST /api/v1/links / GET /api/v1/links — tworzenie linków między rekordami i wyświetlanie ich listyGET /api/v1/threads/{thread_id}/links — linki z perspektywy jednego rekorduDELETE /api/v1/links/{link_id} — rozłączenieUdostępnianie przyznaje innemu zespołowi dostęp viewer lub editor do rekordu lub pakietu. Uprawnienia są przechowywane jako krotki relacji; podsumowanie dostępu pokazuje wynik efektywny, w tym dostęp dziedziczony.
POST /api/v1/sharing — udostępnianie rekordów lub pakietów zespołomGET /api/v1/sharing — lista uprawnień (direction=in|out)GET /api/v1/sharing/access-summary — efektywny dostęp do jednego obiektuGET /api/v1/sharing/partner-inventory — wszystko, co udostępniono jednemu zespołowi partneraSzczegóły: Zespoły, udostępnianie i połączenia.
Połączenie (w API: team link) to stałe porozumienie między dwoma zespołami — często należącymi do różnych organizacji — które umożliwia udostępnianie i przesyłki w dozwolonym kierunku przepływu danych. Ma ono procedurę uzgadniania zaproszenie/akceptacja/potwierdzenie oraz cykl życia wstrzymania i wznowienia.
POST /api/v1/connections — utworzenie (zaproszenie)PATCH /api/v1/connections/accept / confirm / reject / cancel — uzgadnianiePATCH /api/v1/connections/pause / resume — wstrzymanie i przywróceniePOST /api/v1/connections/amend/propose — zaproponowanie zmiany kierunkuPrzesyłka (w API: transfer) przekazuje własność rekordów z jednego zespołu do innego: przygotowujesz manifest w wersji szkicu i wysyłasz go, a odbiorca go przyjmuje, odrzuca lub prosi o zmiany.
POST /api/v1/transfers — utworzenie szkicuPOST /api/v1/transfers/{transfer_id}/items — dodanie pozycji manifestuPOST /api/v1/transfers/{transfer_id}/send — wysłanie do zespołu odbierającegoPOST /api/v1/transfers/{transfer_id}/respond — przyjęcie / odrzucenie / prośba o zmianyGET /api/v1/transfers — widoki odebranych, wychodzących i wysłanychSemantyka i cykl życia: Przesyłki; podsumowanie punktów końcowych w sekcji Zespoły, udostępnianie i połączenia.
Wydzielenie tworzy nowy rekord na podstawie istniejącego w obrębie tego samego zespołu — wybrane pola, pliki i identyfikatory są kopiowane lub łączone — zwykle w celu przygotowania podzbioru, który można udostępnić.
POST /api/v1/slices — wydzielenie jednego rekorduPOST /api/v1/slices/batch — utworzenie wielu rekordów narazGET /api/v1/slices/{slice_id} — wydzielenie wraz z linkami FabricFabric to warstwa pochodzenia obejmująca wiele organizacji: gdy rekordy są przemieszczane lub ujawniane poza granice zespołu, Fabric zapisuje graf powiązanych rekordów i kontroluje, jakie dokładnie dane może zobaczyć każda strona dalej w łańcuchu (ujawnienie), wersja po wersji.
GET /api/v1/fabric/threads/{thread_id}/graph — graf pochodzenia widoczny z perspektywy rekorduGET /api/v1/fabric/links/{link_id}/context — dane obecnie ujawnione w linkuPOST /api/v1/fabric/threads/{thread_id}/disclosure/revise / redact — zmiana zakresu ujawnieniaPOST /api/v1/fabric/threads/{thread_id}/disclosure/push — wypchnięcie ujawnienia dalej w łańcuchuGET /api/v1/fabric/notifications — powiadomienia o ujawnieniach dla właścicieli dalej w łańcuchuPojęcia: Fabric.
Certyfikaty przekształcają dane rekordu w wystawione dokumenty, które można zweryfikować. Formularze certyfikatów to układy; generowanie wiąże formularz z rekordem według nazw pól.
Formularz może zawierać wiele stref kodów QR Vlink. Generowanie certyfikatu przyjmuje jedną konfigurację Vlink na każdy identyfikator strefy i zwraca wszystkie wystawione powiązania strefy z Vlink.
POST /api/v1/certificate-forms / GET /api/v1/certificate-forms — zarządzanie formularzamiPOST /api/v1/certificates/preflight — sprawdzenie, czy formularz daje się rozwiązać względem rekorduPOST /api/v1/certificates/generate — wystawienie certyfikatuGET /api/v1/certificates — lista certyfikatów rekorduPOST /api/v1/certificates/void — unieważnienie certyfikatuPojęcia: Certyfikaty.
Strona publiczna to dostępny bez uwierzytelniania widok rekordu w sieci — cyfrowy paszport produktu, do którego konsument trafia, skanując identyfikator. To, co pokazuje, zależy wyłącznie od wielokrotnego użytku projektu strony publicznej, którego właścicielem jest zespół, więc publikowanie nie wymaga podawania treści dla poszczególnych rekordów: publikacja rozwiązuje projekt względem rekordu. Adres URL strony jest rezerwowany i wiązany z rekordem, zanim cokolwiek zostanie opublikowane, dzięki czemu etykiety można wydrukować wcześniej.
Opublikowanie projektu zamraża niezmienną wersję projektu; każda strona przypina jedną wersję projektu oraz jedną migawkę danych (wartości rozwiązane dla danego rekordu). Publikacja zbiorcza ponownie publikuje każdą stronę w zakresie — folderze, kategorii, szablonie lub jawnym wyborze — za pomocą jednej wersji projektu, jako przebieg w tle z własnym śledzeniem postępu i niepowodzeń.
Zarezerwowanie adresu URL strony i powiązanie go z rekordem są dostępne na poziomie członka — rezerwacja adresu niczego nie publikuje, więc etykiety można wydrukować, zanim ktokolwiek zdecyduje o publikacji. Wszystko, co upublicznia dane — publikowanie strony, jej aktywowanie lub archiwizowanie, tworzenie projektu, publikowanie wersji projektu, wdrażanie i publikacje zbiorcze — wymaga uprawnienia zespołu publisher (wynika ono z roli administratora zespołu), podobnie jak kontrole wstępne i podglądy. Rozstrzygająca jest wartość x-required-role każdej operacji w dokumentacji API.
POST /api/v1/public-pages / POST /api/v1/public-pages/{publicPageId}/bind — zarezerwowanie stałego adresu URL strony, a następnie powiązanie go z rekordemGET / PUT /api/v1/public-pages/thread/{threadId} — odczyt strony rekordu lub jej pobranie albo utworzenieGET /api/v1/public-pages/thread/{threadId}/activity — anonimowe wyświetlenia i skany weryfikacyjne opublikowanej stronyPOST /api/v1/public-pages/{publicPageId}/publish — opublikowanie migawki za pomocą najnowszej wersji projektuPATCH /api/v1/public-pages/{publicPageId} — aktywowanie lub zarchiwizowanie strony bez zmiany jej adresu URLGET /api/v1/public-pages/{publicPageId}/publications — historia publikacjiPOST /api/v1/public-pages/preflight / preflight/batch — sprawdzenie, czy projekt daje się rozwiązać względem jednego lub wielu rekordówPOST /api/v1/public-page-designs / GET / PATCH /api/v1/public-page-designs/{designId} — tworzenie szkicu projektuPOST /api/v1/public-page-designs/{designId}/versions — opublikowanie wersji projektu (GET zwraca ich listę)POST /api/v1/public-pages/designs/{designId}/roll-out — wdrożenie najnowszej wersji projektu na wszystkich jego stronachPOST /api/v1/public-pages/waves — rozpoczęcie publikacji zbiorczej (GET zwraca jej zapis przebiegu, pozycje i listę)POST /api/v1/public-pages/waves/{waveId}/retry-failed / cancel — ponowienie nieudanych operacji lub zatrzymanie pozostałej pracyWdrażanie działa tylko w przód: wersja projektu nigdy nie jest przywracana, a anulowanie publikacji zbiorczej pozostawia już opublikowane strony w wersji, którą otrzymały.
Pojęcia: Strony publiczne.
Każda istotna zmiana — edycje pól, powiązania, udostępnienia, przesyłki — jest zapisywana jako zdarzenie. Zdarzenia tworzą ścieżkę audytu, wyświetlaną w DICE jako dziennik transakcji.
GET /api/v1/events — lista zdarzeń z możliwością filtrowania według rekordu, zespołu, akcji i czasu oraz opcjonalnym grupowaniem aktywności (groupBy)
lineage=upstream (razem z threadId) zwraca również zdarzenia każdego wcześniejszego rekordu w rodowodzie Fabric danego rekordu — pełną historię odebranego rekordu — w granicach tego, co ujawniło każde źródło. Wiersze z wcześniejszych ogniw zawierają obiekt lineage (rekord źródłowy, zespół źródłowy, link, przeskok) i mogą być oznaczone jako redacted; późniejsza zmiana ujawnienia przez źródło pojawia się jako wiersz fabric.disclosure.revised tylko do odczytu. Bez tego parametru odpowiedź zawiera wyłącznie zdarzenia samego rekordu.resourceId, tagId lub fieldId (pojedynczo, razem z threadId) zawężają historię do jednego pliku, identyfikatora lub pola; certyfikat jest wskazywany za pomocą jego pliku. W połączeniu z lineage=upstream uwzględniany jest rodowód samego elementu.threadId parametr scope określa, czyją aktywność obejmuje lista: team (wartość domyślna) to działania samego aktywnego zespołu; shared dodaje działania innych zespołów i organizacji na rekordach, które są obecnie udostępnione aktywnemu zespołowi lub przez niego; upstream to wcześniejsza historia każdego rekordu odebranego przez zespół (wiersze zawierają lineage.localThreadId, czyli własną kopię zespołu); all łączy je wszystkie pod jednym kursorem. Odczyty grupowane akceptują team, shared i all.ipAddress, userAgent i geolocation są zwracane wyłącznie dla działań wykonanych przez członków aktywnej organizacji wywołującego; dla działań każdej innej organizacji mają wartość null.transfer.received / slice.derived, przypisanego osobie, która przyjęła przesyłkę lub wykonała wydzielenie; taki rekord nie ma własnych zdarzeń created.thread ani bind.GET /api/v1/summary — główne wskaźniki liczboweGET /api/v1/notifications — powiadomienia wywołującegoSzybki start
Wykonaj pierwsze uwierzytelnione wywołanie, korzystając z przewodnika szybkiego startu.
Klient TypeScript
Zamiast surowego HTTP używaj typowanego klienta @dustid/apid-client.
Konwencje
Nagłówki, paginacja i błędy w sekcji Konwencje API.
Pełna dokumentacja
Każda ścieżka, każdy parametr i każdy schemat w dokumentacji API.
Wyciąg PDF na żądanie pobierzesz za pomocą GET /api/v1/receipts/{kind}/{id}, gdzie kind to file, thread lub shipment, a id to odpowiedni UUID. Użyj zwykłego uwierzytelniania oraz nagłówków kontekstu aktywnej organizacji i zespołu. Odpowiedź ma typ application/pdf, zawiera nazwę pliku załącznika i jest objęta prywatnym buforowaniem z dyrektywą no-store. Nagłówek Accept-Language wybiera język wyciągu.
Wyciągi dotyczące plików zawierają metadane, zapisaną sumę kontrolną SHA-256 (jeśli jest dostępna), informacje o powiązanym rekordzie oraz dozwolone wpisy dziennika transakcji. Wyciągi dotyczące rekordów zawierają pola, identyfikatory, pliki i sumy kontrolne, relacje, informacje o złożeniu i rodowodzie oraz dozwolone dzienniki. Wyciągi dotyczące przesyłek zaczynają się od informacji o przesyłce, jej bieżącego stanu i manifestu, a następnie zawierają widoczne szczegóły rekordów i dzienniki. W przypadku oczekujących przesyłek używane są oferowane migawki; w pozostałych stanach — zapisy, do których wywołujący ma obecnie dostęp.
W przypadku pliku widocznego dzięki ujawnieniu podaj linkId; w przypadku pliku oferowanego w oczekującej przesyłce podaj transferId. Tych opcjonalnych parametrów zapytania typu UUID nie można łączyć i dotyczą one wyłącznie wyciągów dotyczących plików. Obowiązują je te same ograniczenia dostępu i ujawniania co odpowiedni podgląd.
Wyciągi zawierają datę i godzinę wygenerowania oraz kod QR z linkiem do DICE. Są to niepodpisane migawki zapisów widocznych dla wywołującego, a nie podpisy cyfrowe. Generowanie jest operacją tylko do odczytu: nie jest zapisywany żaden załącznik z wyciągiem ani zdarzenie dziennika transakcji. Eksport, w którym dziennik zawiera ponad 10 000 widocznych zdarzeń, kończy się niepowodzeniem zamiast cichego obcięcia danych. Linki w wyciągu nadal wymagają dostępu do DICE.