From 3d5f11d00c169b1e33acada51166fc412a058134 Mon Sep 17 00:00:00 2001 From: wayneshn Date: Mon, 28 Jul 2025 08:38:43 +0000 Subject: [PATCH] deploy: 4e0f6ce5df39fcee8905cc94c4d9ae2f572b0313 --- 404.html | 8 ++++---- SUMMARY.html | 16 ++++++++-------- api/archived-email.html | 16 ++++++++-------- api/auth.html | 16 ++++++++-------- api/authentication.html | 16 ++++++++-------- api/dashboard.html | 16 ++++++++-------- api/index.html | 16 ++++++++-------- api/ingestion.html | 16 ++++++++-------- api/search.html | 16 ++++++++-------- api/storage.html | 16 ++++++++-------- ...Y.md.DsFfZpsz.js => SUMMARY.md.5seSND4L.js} | 2 +- ...psz.lean.js => SUMMARY.md.5seSND4L.lean.js} | 2 +- ...Hy.js => api_archived-email.md.Di9i_OKb.js} | 2 +- ... => api_archived-email.md.Di9i_OKb.lean.js} | 2 +- ....md.Du3O3W7h.js => api_auth.md.Kt3iNEMn.js} | 2 +- ...7h.lean.js => api_auth.md.Kt3iNEMn.lean.js} | 2 +- ...1b.js => api_authentication.md.DDCP-z1j.js} | 2 +- ... => api_authentication.md.DDCP-z1j.lean.js} | 2 +- ...BdDRqLA.js => api_dashboard.md.CqvOiGVx.js} | 2 +- ...an.js => api_dashboard.md.CqvOiGVx.lean.js} | 2 +- ...md.rAxPnnFp.js => api_index.md.DFnFK07E.js} | 2 +- ...p.lean.js => api_index.md.DFnFK07E.lean.js} | 2 +- ...b0jMzxp.js => api_ingestion.md.DOeFHoQv.js} | 2 +- ...an.js => api_ingestion.md.DOeFHoQv.lean.js} | 2 +- ...d.KKtP7fd6.js => api_search.md.BRCIJTXq.js} | 2 +- ....lean.js => api_search.md.BRCIJTXq.lean.js} | 2 +- ....DJf0CH38.js => api_storage.md.DKUKvFrO.js} | 2 +- ...lean.js => api_storage.md.DKUKvFrO.lean.js} | 2 +- assets/{app.DguYn8Bw.js => app.DjTtYN4Q.js} | 2 +- .../chunks/@localSearchIndexroot.B6T--PPy.js | 1 + assets/chunks/VPLocalSearchBox.BaPkDjV5.js | 8 ++++++++ assets/chunks/framework.Cd-3tpCq.js | 18 ------------------ assets/chunks/framework.S-Qvb3wi.js | 18 ++++++++++++++++++ assets/chunks/theme.D5-fWCd8.js | 1 - assets/chunks/theme.DYYm5jhY.js | 2 ++ ...dex.md.Jke24r4b.js => index.md.9PKJf5H1.js} | 2 +- ...24r4b.lean.js => index.md.9PKJf5H1.lean.js} | 2 +- ...yQfsBc.js => services_index.md.BLn224J3.js} | 2 +- ...n.js => services_index.md.BLn224J3.lean.js} | 2 +- ...=> services_storage-service.md.Dqpyxk77.js} | 2 +- ...rvices_storage-service.md.Dqpyxk77.lean.js} | 2 +- .../{style.L7-rAhYi.css => style.3jgUiUT_.css} | 2 +- ...-providers_google-workspace.md.BWo_12De.js} | 2 +- ...iders_google-workspace.md.BWo_12De.lean.js} | 2 +- ...guides_email-providers_imap.md.Cdk3vG_S.js} | 2 +- ...s_email-providers_imap.md.Cdk3vG_S.lean.js} | 2 +- ...uides_email-providers_index.md.DPaSFiTO.js} | 2 +- ..._email-providers_index.md.DPaSFiTO.lean.js} | 2 +- ...ail-providers_microsoft-365.md.QHHVfYxW.js} | 2 +- ...roviders_microsoft-365.md.QHHVfYxW.lean.js} | 2 +- ...ser-guides_installation.md.D5Jetfyl.lean.js | 1 - ...=> user-guides_installation.md.Lx-5aly3.js} | 4 ++-- ...ser-guides_installation.md.Lx-5aly3.lean.js | 1 + hashmap.json | 2 +- index.html | 16 ++++++++-------- services/index.html | 16 ++++++++-------- services/storage-service.html | 16 ++++++++-------- .../email-providers/google-workspace.html | 16 ++++++++-------- user-guides/email-providers/imap.html | 16 ++++++++-------- user-guides/email-providers/index.html | 16 ++++++++-------- user-guides/email-providers/microsoft-365.html | 16 ++++++++-------- user-guides/installation.html | 16 ++++++++-------- 62 files changed, 207 insertions(+), 197 deletions(-) rename assets/{SUMMARY.md.DsFfZpsz.js => SUMMARY.md.5seSND4L.js} (91%) rename assets/{SUMMARY.md.DsFfZpsz.lean.js => SUMMARY.md.5seSND4L.lean.js} (66%) rename assets/{api_archived-email.md.BkbaV2Hy.js => api_archived-email.md.Di9i_OKb.js} (99%) rename assets/{api_archived-email.md.BkbaV2Hy.lean.js => api_archived-email.md.Di9i_OKb.lean.js} (70%) rename assets/{api_auth.md.Du3O3W7h.js => api_auth.md.Kt3iNEMn.js} (98%) rename assets/{api_auth.md.Du3O3W7h.lean.js => api_auth.md.Kt3iNEMn.lean.js} (66%) rename assets/{api_authentication.md.BeVpHL1b.js => api_authentication.md.DDCP-z1j.js} (98%) rename assets/{api_authentication.md.BeVpHL1b.lean.js => api_authentication.md.DDCP-z1j.lean.js} (69%) rename assets/{api_dashboard.md.CBdDRqLA.js => api_dashboard.md.CqvOiGVx.js} (99%) rename assets/{api_dashboard.md.CBdDRqLA.lean.js => api_dashboard.md.CqvOiGVx.lean.js} (68%) rename assets/{api_index.md.rAxPnnFp.js => api_index.md.DFnFK07E.js} (93%) rename assets/{api_index.md.rAxPnnFp.lean.js => api_index.md.DFnFK07E.lean.js} (66%) rename assets/{api_ingestion.md.Db0jMzxp.js => api_ingestion.md.DOeFHoQv.js} (99%) rename assets/{api_ingestion.md.Db0jMzxp.lean.js => api_ingestion.md.DOeFHoQv.lean.js} (68%) rename assets/{api_search.md.KKtP7fd6.js => api_search.md.BRCIJTXq.js} (98%) rename assets/{api_search.md.KKtP7fd6.lean.js => api_search.md.BRCIJTXq.lean.js} (67%) rename assets/{api_storage.md.DJf0CH38.js => api_storage.md.DKUKvFrO.js} (94%) rename assets/{api_storage.md.DJf0CH38.lean.js => api_storage.md.DKUKvFrO.lean.js} (67%) rename assets/{app.DguYn8Bw.js => app.DjTtYN4Q.js} (81%) create mode 100644 assets/chunks/@localSearchIndexroot.B6T--PPy.js create mode 100644 assets/chunks/VPLocalSearchBox.BaPkDjV5.js delete mode 100644 assets/chunks/framework.Cd-3tpCq.js create mode 100644 assets/chunks/framework.S-Qvb3wi.js delete mode 100644 assets/chunks/theme.D5-fWCd8.js create mode 100644 assets/chunks/theme.DYYm5jhY.js rename assets/{index.md.Jke24r4b.js => index.md.9PKJf5H1.js} (97%) rename assets/{index.md.Jke24r4b.lean.js => index.md.9PKJf5H1.lean.js} (66%) rename assets/{services_index.md.DfyQfsBc.js => services_index.md.BLn224J3.js} (88%) rename assets/{services_index.md.DfyQfsBc.lean.js => services_index.md.BLn224J3.lean.js} (88%) rename assets/{services_storage-service.md.xOqM9CWx.js => services_storage-service.md.Dqpyxk77.js} (99%) rename assets/{services_storage-service.md.xOqM9CWx.lean.js => services_storage-service.md.Dqpyxk77.lean.js} (72%) rename assets/{style.L7-rAhYi.css => style.3jgUiUT_.css} (95%) rename assets/{user-guides_email-providers_google-workspace.md.CWhO43nR.js => user-guides_email-providers_google-workspace.md.BWo_12De.js} (98%) rename assets/{user-guides_email-providers_google-workspace.md.CWhO43nR.lean.js => user-guides_email-providers_google-workspace.md.BWo_12De.lean.js} (74%) rename assets/{user-guides_email-providers_imap.md.BcXBEq43.js => user-guides_email-providers_imap.md.Cdk3vG_S.js} (98%) rename assets/{user-guides_email-providers_imap.md.BcXBEq43.lean.js => user-guides_email-providers_imap.md.Cdk3vG_S.lean.js} (73%) rename assets/{user-guides_email-providers_index.md.DY3ytyxv.js => user-guides_email-providers_index.md.DPaSFiTO.js} (94%) rename assets/{user-guides_email-providers_index.md.DY3ytyxv.lean.js => user-guides_email-providers_index.md.DPaSFiTO.lean.js} (86%) rename assets/{user-guides_email-providers_microsoft-365.md.C4O8w9wT.js => user-guides_email-providers_microsoft-365.md.QHHVfYxW.js} (99%) rename assets/{user-guides_email-providers_microsoft-365.md.C4O8w9wT.lean.js => user-guides_email-providers_microsoft-365.md.QHHVfYxW.lean.js} (86%) delete mode 100644 assets/user-guides_installation.md.D5Jetfyl.lean.js rename assets/{user-guides_installation.md.D5Jetfyl.js => user-guides_installation.md.Lx-5aly3.js} (91%) create mode 100644 assets/user-guides_installation.md.Lx-5aly3.lean.js diff --git a/404.html b/404.html index e83cbcc..7894977 100644 --- a/404.html +++ b/404.html @@ -3,20 +3,20 @@ - 404 | Open Archiver Documentation + 404 | Open Archiver - + - +
- + \ No newline at end of file diff --git a/SUMMARY.html b/SUMMARY.html index cae3739..b52e565 100644 --- a/SUMMARY.html +++ b/SUMMARY.html @@ -3,23 +3,23 @@ - Table of contents | Open Archiver Documentation + Table of contents | Open Archiver - + - + - - - + + + -
- +
+ \ No newline at end of file diff --git a/api/archived-email.html b/api/archived-email.html index bbffc0a..6873eae 100644 --- a/api/archived-email.html +++ b/api/archived-email.html @@ -3,22 +3,22 @@ - Archived Email Service API | Open Archiver Documentation + Archived Email Service API | Open Archiver - + - + - - - + + + -
Skip to content

Archived Email Service API

The Archived Email Service is responsible for retrieving archived emails and their details from the database and storage.

Endpoints

All endpoints in this service require authentication.

GET /api/v1/archived-emails/ingestion-source/:ingestionSourceId

Retrieves a paginated list of archived emails for a specific ingestion source.

Access: Authenticated

URL Parameters

ParameterTypeDescription
ingestionSourceIdstringThe ID of the ingestion source to get emails for.

Query Parameters

ParameterTypeDescriptionDefault
pagenumberThe page number for pagination.1
limitnumberThe number of items per page.10

Responses

  • 200 OK: A paginated list of archived emails.

    json
    {
    +    
    Skip to content

    Archived Email Service API

    The Archived Email Service is responsible for retrieving archived emails and their details from the database and storage.

    Endpoints

    All endpoints in this service require authentication.

    GET /api/v1/archived-emails/ingestion-source/:ingestionSourceId

    Retrieves a paginated list of archived emails for a specific ingestion source.

    Access: Authenticated

    URL Parameters

    ParameterTypeDescription
    ingestionSourceIdstringThe ID of the ingestion source to get emails for.

    Query Parameters

    ParameterTypeDescriptionDefault
    pagenumberThe page number for pagination.1
    limitnumberThe number of items per page.10

    Responses

    • 200 OK: A paginated list of archived emails.

      json
      {
           "items": [
               {
                   "id": "email-id",
      @@ -53,7 +53,7 @@
               }
           ]
       }
    • 404 Not Found: The archived email with the specified ID was not found.

    • 500 Internal Server Error: An unexpected error occurred.

    Service Methods

    getArchivedEmails(ingestionSourceId: string, page: number, limit: number): Promise<PaginatedArchivedEmails>

    Retrieves a paginated list of archived emails from the database for a given ingestion source.

    • ingestionSourceId: The ID of the ingestion source.
    • page: The page number for pagination.
    • limit: The number of items per page.
    • Returns: A promise that resolves to a PaginatedArchivedEmails object.

    getArchivedEmailById(emailId: string): Promise<ArchivedEmail | null>

    Retrieves a single archived email by its ID, including its raw content and attachments.

    • emailId: The ID of the archived email.
    • Returns: A promise that resolves to an ArchivedEmail object or null if not found.
    - + \ No newline at end of file diff --git a/api/auth.html b/api/auth.html index 6a32a53..2e629eb 100644 --- a/api/auth.html +++ b/api/auth.html @@ -3,22 +3,22 @@ - Auth Service API | Open Archiver Documentation + Auth Service API | Open Archiver - + - + - - - + + + -
    Skip to content

    Auth Service API

    The Auth Service is responsible for handling user authentication, including login and token verification.

    Endpoints

    POST /api/v1/auth/login

    Authenticates a user and returns a JWT if the credentials are valid.

    Access: Public

    Rate Limiting: This endpoint is rate-limited to prevent brute-force attacks.

    Request Body

    FieldTypeDescription
    emailstringThe user's email address.
    passwordstringThe user's password.

    Responses

    • 200 OK: Authentication successful.

      json
      {
      +    
      Skip to content

      Auth Service API

      The Auth Service is responsible for handling user authentication, including login and token verification.

      Endpoints

      POST /api/v1/auth/login

      Authenticates a user and returns a JWT if the credentials are valid.

      Access: Public

      Rate Limiting: This endpoint is rate-limited to prevent brute-force attacks.

      Request Body

      FieldTypeDescription
      emailstringThe user's email address.
      passwordstringThe user's password.

      Responses

      • 200 OK: Authentication successful.

        json
        {
             "accessToken": "your.jwt.token",
             "user": {
                 "id": "user-id",
        @@ -32,7 +32,7 @@
         }
      • 500 Internal Server Error: An unexpected error occurred.

        json
        {
             "message": "An internal server error occurred"
         }

      Service Methods

      verifyPassword(password: string, hash: string): Promise<boolean>

      Compares a plain-text password with a hashed password to verify its correctness.

      • password: The plain-text password.
      • hash: The hashed password to compare against.
      • Returns: A promise that resolves to true if the password is valid, otherwise false.

      login(email: string, password: string): Promise<LoginResponse | null>

      Handles the user login process. It finds the user by email, verifies the password, and generates a JWT upon successful authentication.

      • email: The user's email.
      • password: The user's password.
      • Returns: A promise that resolves to a LoginResponse object containing the accessToken and user details, or null if authentication fails.

      verifyToken(token: string): Promise<AuthTokenPayload | null>

      Verifies the authenticity and expiration of a JWT.

      • token: The JWT string to verify.
      • Returns: A promise that resolves to the token's AuthTokenPayload if valid, otherwise null.
      - + \ No newline at end of file diff --git a/api/authentication.html b/api/authentication.html index bfb52f0..e3a1dc8 100644 --- a/api/authentication.html +++ b/api/authentication.html @@ -3,22 +3,22 @@ - API Authentication | Open Archiver Documentation + API Authentication | Open Archiver - + - + - - - + + + -
      Skip to content

      API Authentication

      To access protected API endpoints, you need to include a JSON Web Token (JWT) in the Authorization header of your requests.

      Obtaining a JWT

      First, you need to authenticate with the /api/v1/auth/login endpoint by providing your email and password. If the credentials are correct, the API will return an accessToken.

      Request:

      http
      POST /api/v1/auth/login
      +    
      Skip to content

      API Authentication

      To access protected API endpoints, you need to include a JSON Web Token (JWT) in the Authorization header of your requests.

      Obtaining a JWT

      First, you need to authenticate with the /api/v1/auth/login endpoint by providing your email and password. If the credentials are correct, the API will return an accessToken.

      Request:

      http
      POST /api/v1/auth/login
       Content-Type: application/json
       
       {
      @@ -34,7 +34,7 @@
       }

      Making Authenticated Requests

      Once you have the accessToken, you must include it in the Authorization header of all subsequent requests to protected endpoints, using the Bearer scheme.

      Example:

      http
      GET /api/v1/dashboard/stats
       Authorization: Bearer your.jwt.token

      If the token is missing, expired, or invalid, the API will respond with a 401 Unauthorized status code.

      Using a Super API Key

      Alternatively, for server-to-server communication or scripts, you can use a super API key. This key provides unrestricted access to the API and should be kept secret.

      You can set the SUPER_API_KEY in your .env file.

      To authenticate using the super API key, include it in the Authorization header as a Bearer token.

      Example:

      http
      GET /api/v1/dashboard/stats
       Authorization: Bearer your-super-secret-api-key
      - + \ No newline at end of file diff --git a/api/dashboard.html b/api/dashboard.html index 555a236..7b19896 100644 --- a/api/dashboard.html +++ b/api/dashboard.html @@ -3,22 +3,22 @@ - Dashboard Service API | Open Archiver Documentation + Dashboard Service API | Open Archiver - + - + - - - + + + -
      Skip to content

      Dashboard Service API

      The Dashboard Service provides endpoints for retrieving statistics and data for the main dashboard.

      Endpoints

      All endpoints in this service require authentication.

      GET /api/v1/dashboard/stats

      Retrieves overall statistics, including the total number of archived emails, total storage used, and the number of failed ingestions in the last 7 days.

      Access: Authenticated

      Responses

      • 200 OK: An object containing the dashboard statistics.

        json
        {
        +    
        Skip to content

        Dashboard Service API

        The Dashboard Service provides endpoints for retrieving statistics and data for the main dashboard.

        Endpoints

        All endpoints in this service require authentication.

        GET /api/v1/dashboard/stats

        Retrieves overall statistics, including the total number of archived emails, total storage used, and the number of failed ingestions in the last 7 days.

        Access: Authenticated

        Responses

        • 200 OK: An object containing the dashboard statistics.

          json
          {
               "totalEmailsArchived": 12345,
               "totalStorageUsed": 54321098,
               "failedIngestionsLast7Days": 3
          @@ -56,7 +56,7 @@
                   }
               ]
           }
        - + \ No newline at end of file diff --git a/api/index.html b/api/index.html index 44d98e0..724ee65 100644 --- a/api/index.html +++ b/api/index.html @@ -3,23 +3,23 @@ - API Overview | Open Archiver Documentation + API Overview | Open Archiver - + - + - - - + + + -
        Skip to content

        API Overview

        Welcome to the Open Archiver API documentation. This section provides detailed information about the available API endpoints.

        All API endpoints are prefixed with /api/v1.

        Authentication

        Before making requests to protected endpoints, you must authenticate with the API. See the Authentication Guide for details on how to obtain and use API tokens.

        API Services

        - +
        Skip to content

        API Overview

        Welcome to the Open Archiver API documentation. This section provides detailed information about the available API endpoints.

        All API endpoints are prefixed with /api/v1.

        Authentication

        Before making requests to protected endpoints, you must authenticate with the API. See the Authentication Guide for details on how to obtain and use API tokens.

        API Services

        + \ No newline at end of file diff --git a/api/ingestion.html b/api/ingestion.html index 10bbdc9..f7c9395 100644 --- a/api/ingestion.html +++ b/api/ingestion.html @@ -3,22 +3,22 @@ - Ingestion Service API | Open Archiver Documentation + Ingestion Service API | Open Archiver - + - + - - - + + + -
        Skip to content

        Ingestion Service API

        The Ingestion Service manages ingestion sources, which are configurations for connecting to email providers and importing emails.

        Endpoints

        All endpoints in this service require authentication.

        POST /api/v1/ingestion

        Creates a new ingestion source.

        Access: Authenticated

        Request Body

        The request body should be a CreateIngestionSourceDto object.

        typescript
        interface CreateIngestionSourceDto {
        +    
        Skip to content

        Ingestion Service API

        The Ingestion Service manages ingestion sources, which are configurations for connecting to email providers and importing emails.

        Endpoints

        All endpoints in this service require authentication.

        POST /api/v1/ingestion

        Creates a new ingestion source.

        Access: Authenticated

        Request Body

        The request body should be a CreateIngestionSourceDto object.

        typescript
        interface CreateIngestionSourceDto {
             name: string;
             provider: 'google' | 'microsoft' | 'generic_imap';
             providerConfig: IngestionCredentials;
        @@ -34,7 +34,7 @@
                 | 'paused'
                 | 'error';
         }

        Responses

        • 200 OK: The updated ingestion source object.
        • 404 Not Found: Ingestion source not found.
        • 500 Internal Server Error: An unexpected error occurred.

        DELETE /api/v1/ingestion/:id

        Deletes an ingestion source and all associated data.

        Access: Authenticated

        URL Parameters

        ParameterTypeDescription
        idstringThe ID of the ingestion source.

        Responses

        • 204 No Content: The ingestion source was deleted successfully.
        • 404 Not Found: Ingestion source not found.
        • 500 Internal Server Error: An unexpected error occurred.

        POST /api/v1/ingestion/:id/import

        Triggers the initial import process for an ingestion source.

        Access: Authenticated

        URL Parameters

        ParameterTypeDescription
        idstringThe ID of the ingestion source.

        Responses

        • 202 Accepted: The initial import was triggered successfully.
        • 404 Not Found: Ingestion source not found.
        • 500 Internal Server Error: An unexpected error occurred.

        POST /api/v1/ingestion/:id/pause

        Pauses an active ingestion source.

        Access: Authenticated

        URL Parameters

        ParameterTypeDescription
        idstringThe ID of the ingestion source.

        Responses

        • 200 OK: The updated ingestion source object with a paused status.
        • 404 Not Found: Ingestion source not found.
        • 500 Internal Server Error: An unexpected error occurred.

        POST /api/v1/ingestion/:id/sync

        Triggers a forced synchronization for an ingestion source.

        Access: Authenticated

        URL Parameters

        ParameterTypeDescription
        idstringThe ID of the ingestion source.

        Responses

        • 202 Accepted: The force sync was triggered successfully.
        • 404 Not Found: Ingestion source not found.
        • 500 Internal Server Error: An unexpected error occurred.
        - + \ No newline at end of file diff --git a/api/search.html b/api/search.html index 21bf4b2..1ceb107 100644 --- a/api/search.html +++ b/api/search.html @@ -3,22 +3,22 @@ - Search Service API | Open Archiver Documentation + Search Service API | Open Archiver - + - + - - - + + + -
        Skip to content