Skip to content

docs: document Google Workspace connector 15.9 behaviour changes in all seven languages - #515

Open
marevol wants to merge 1 commit into
masterfrom
docs/gsuite-connector-15.9
Open

docs: document Google Workspace connector 15.9 behaviour changes in all seven languages#515
marevol wants to merge 1 commit into
masterfrom
docs/gsuite-connector-15.9

Conversation

@marevol

@marevol marevol commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Summary

Revises the Google Workspace connector page for 15.9 in all seven languages. The connector was
substantially reworked and several of the changes break existing configurations at startup, so the
documentation needed to change with it.

Only the 15.9 (development) tree is touched. No released version tree is modified.

Why this is a large diff

15.9 changes the connector's default behaviour in ways an operator must know about before upgrading:

  • crawl_target defaults to shared_drives and requires impersonate_user, so an unchanged
    configuration fails at startup. The crawl_target=legacy escape hatch is documented alongside it.
  • The default OAuth scope narrowed to drive.readonly, and crawl_target=users/both additionally
    require admin.directory.user.readonly — both of which must also be authorised in the Google
    Workspace admin console's domain-wide delegation entry.
  • default_permissions became a fallback rather than an addition; link-only sharing no longer grants
    a search role; a document whose ACL resolves to nothing is now skipped rather than indexed with no
    roles at all.
  • The indexed URL, the fields default, and the Google Docs/Sheets export formats all changed, each
    requiring a re-crawl.

New sections cover crawl_target, incremental crawling, rate limiting and retries, text extraction,
and a Limitations section.

Accuracy

Everything was checked against the connector source rather than against the plan, which corrected
several points:

  • url_filter is not a parameter. It exists as an internal constant but is never read from the
    configuration, so setting it does nothing. include_pattern / exclude_pattern are the real
    filtering knobs, and are documented instead.
  • corpora is inert under the default crawl target — only legacy reads it.
  • spaces applies to legacy and users, not legacy alone.
  • page_size and permission_page_size are clamped, not merely defaulted; a larger value is
    silently reduced because the API rejects anything above the cap.
  • "A failing drive or user no longer aborts the crawl" is only half true: per-drive and per-user file
    listings are skipped and reported, but drive enumeration, user enumeration and permission listing
    still fail the crawl deliberately, so a crawl that enumerated nothing cannot report success.
  • Export targets are chosen from the live exportFormats map, so Markdown and TSV apply only where
    Drive offers them; the documented fallback is plain text and CSV.
  • Drawings are metadata-only as well as Forms and Sites.
  • start_page_tokens and crawl_signature are written back by the plugin into the handler parameter
    field, where they look user-editable. The pages now say to leave them alone.

The proxy authentication limitation is documented rather than glossed: the credentials travel as a
Proxy-Authorization request header, which does not authenticate an HTTPS CONNECT tunnel — and all
Google API traffic is HTTPS. The JVM-level workaround is given.

Validation

All seven files parse cleanly under docutils at INFO level and above, with the Sphinx-only :doc:
role and the |Fess| substitution stubbed. That covers heading underline widths, directive syntax,
list-table structure, inline markup and internal target resolution. Two pre-existing warning sets
were fixed in passing (30 in fr, 5 in ko, all short underlines); both are now zero.

Parity was checked by script: the parameter-name set is identical across all seven files, and every
internal section reference resolves in each.

A full Sphinx build was not run. conf/ext.py is Python 2 source and fails to import under the
available Python 3.12 / Sphinx 9.1. That is unrelated to this change, but it means the HTML output is
unverified here.

Pre-existing gap in the Spanish page — not introduced here

es/15.9/config/datastore/ds-gsuite.rst is missing ten sections that the other six languages
have, and has been for some time:

  • the entire Usage Examples chapter and its three subsections,
  • the entire Permissions and Access Control chapter and its subsection,
  • four troubleshooting entries: API Quota Error, Private Key Format Error, Crawling Shared Drives,
    and Large Number of Files.

Every genuinely new 15.9 section was added to Spanish along with the rest. The pre-existing gap was
deliberately left alone rather than folded into this change. One consequence worth noting: because
Spanish has no permissions chapter, the Drive-permission-to-Fess-role mapping table appears in six
languages but not Spanish, which carries the same semantics in its changes table, the
default_permissions row and Limitations instead.

Worth a separate issue.

…ll seven languages

The fess-ds-gsuite connector was substantially reworked for 15.9. The
ds-gsuite.rst page still described the pre-15.9 connector, including a
default OAuth scope and a default crawl behaviour that no longer exist,
so an operator following it would hit a hard startup failure with no
explanation. Rewrite the page in en/ja/de/es/fr/ko/zh-cn against the
connector source.

Breaking changes now documented up front, in a new "Changes in 15.9"
section with a warning directive:

- crawl_target defaults to shared_drives and requires impersonate_user
  for every value except legacy. An existing configuration upgraded
  unchanged fails at startup with a DataStoreException. crawl_target=legacy
  is the escape hatch.
- The default OAuth scope narrowed from .../auth/drive to
  .../auth/drive.readonly. The domain-wide delegation entry in the Google
  Workspace admin console lists scopes explicitly, so it must be updated.
- crawl_target=users and both additionally require
  .../auth/admin.directory.user.readonly, validated at startup.
- The indexed URL is now webViewLink instead of the download link; a full
  re-crawl is needed.
- default_permissions is a fallback, not an addition, and a document whose
  ACL resolves to nothing is skipped rather than indexed with no roles.
- Link-only sharing (allowFileDiscovery=false on domain/anyone) no longer
  grants a search role.
- fields no longer defaults to "*" but to an explicit projection; a field
  outside it reads null in the crawl script.
- Google Docs export as Markdown and Sheets as TSV; re-crawl required.
- refresh_token_interval is ignored, with a warning.
- Forms and Sites are indexed as metadata only instead of erroring.

New sections added in every language: Crawl Target (legacy/shared_drives/
users/both, the startup validation, and why a service account's own view
reaches so little), Incremental Crawling (change feed per scope,
delete_old_docs forced to false, when tokens are discarded), Rate Limiting
and Retries, Text Extraction of Native Google Types, a Limitations section,
and troubleshooting entries for the startup failure and for skipped
documents.

The parameter table is split into a Parameter List and an Advanced
Parameters table covering the full set: impersonate_user, crawl_target,
scopes, user_query, incremental, domain_permission_format,
thread_pool_timeout_seconds, page_size, permission_page_size, max_retries,
retry_initial_interval_ms, max_backoff_ms, proxy_username and
proxy_password. Notes record that credential parameters are stripped from
the script context and that start_page_tokens and crawl_signature are
written back by the connector and must be left alone.

Parameter names, defaults and all configuration and script samples are
identical across the seven languages; only the prose is translated.

The Spanish page was already missing sections the other six have (the
usage-example group, four troubleshooting entries and the permissions
chapter). That gap predates this change and is left as-is; the new 15.9
sections are added to it like everywhere else.

All seven files parse cleanly under docutils with the Sphinx-only :doc:
role and the |Fess| substitution stubbed. A real Sphinx build was not run:
conf/ext.py is Python 2 source and cannot be imported by the Python 3
toolchain available here.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant