Categories
Tags
/ 2fa ab aboutme access-control access-management active-directory actix-web ad-blocking administration admission-control adr advanced-devops agile ai AI AI Agents AI Development AI-Automation ai-integration AI-Marketing AI-Sales AI-security AI-Security ai-translation airtable alerting Alpine-Linux amplitude amtd analysis analytics Analytics Android anomaly-detection Anomaly-Detection ansible api API api-client api-design api-gateway api-management api-security apparmor apple Apple-Intelligence Apple-security applescript application-security applications APT-attacks arch-linux architecture Architecture architecture-patterns argocd asgi assemblyscript astro-ai async Async athena Attack-Classification Attack-Mitigation attestation audio auth0 authentication Authentication authorization Authorization automation Automation autoscaling aws AWS AWS-Lambda awslambda aya Aya azure azure-ad backend background-services backstage backup Backup bare-metal bash basics bcc behavioral-analysis benchmarking Best Practices best-practices BestPractices bgp bind-mounts biometric-security blacklist blog-platforms Blogging blue-green blue-team bluechi bochs borrowing bot-management Bot-Management boto3 bpftrace broadcom browser build build-configuration busybox c caddy calico Campaign-Management canary career Career cdc cdn CDN centos certificate-authority certificates Cgroups chartmuseum chatbot chatops check_wmi_plus choreography chrome ci-cd CI-CD CI/CD cicd cilium circuit-breaker cis cis-benchmark cka Claude claude-3-opus claude-code cleanup cli cli-tools clickhouse client-go cloud cloud-native Cloud-Native cloud-providers cloud-security Cloud-Storage cloudflare Cloudflare cloudflared CloudNative cloudrun cluster cluster-deployment cluster-health cluster-management cluster-setup cmd cni cnn cocktails code management code-generation collaboration communication communication-patterns community compensation compliance Compliance Compose compression conference-translation confidential-computing configmaps configuration configuration-management consul container Container Orchestration Container-Architecture container-management container-orchestration Container-Orchestration container-runtime container-security Containerd containerization Containerization containers Containers content-automation content-generation Content-Marketing contextual-translation continuous-improvement contract-testing controller controller-manager Controllers cookiecutter cooking coredns coreos Coroutines correlation cors cosmopolitan Cost Optimization cost-optimization Cost-Optimization cpp cqrs crd CRD CRI cri-o CRM cronjob cronjobs cross-account cross-cloud Cross-Platform cryptography csharp css custom linux custom-decoders Customer-Success customization CVE-2025-31200 CVE-2025-31201 cyber-threats cybersec cybersecurity Cybersecurity d1-database D1-Database daemonsets dashboard dashboards data-analytics data-architecture data-breach data-channels data-consistency data-fetcher data-governance data-management data-masking data-migration data-prepper data-processing data-protection data-recovery database DataBinding Datasets datasette dba ddos-protection DDoS-Protection debian debugging decoders deep-learning deepl-voice deepseek-r1 defense defensive-security Demo deno dep Deployment deployment design-patterns desktop-development detection detection-accuracy Developer Tools developer-portal developer-portals development devops DevOps devops-culture devops-journey devsecops DevSecOps devtools devtron diagrams digital-payments digital-transformation digitalocean disaster-recovery discord discovery disk-encryption disk-provisioning Distributed Systems distributed-security distributed-systems distributed-transactions distro distrobox django dkim dmarc dnf dns docker Docker document-processing documentation domain-administration domain-driven-design dotnet duckdb dx-operational-observability DynamicClient dynamodb e-payment ebpf eBPF ec2 ECS edge-computing Edge-Database edge-devices edge-functions edge-security edr elastic-alternative elasticsearch electron elk-stack email email-automation Email-Automation Email-Marketing embedded linux embedded-systems Embeddings encryption endpoint-protection endpoint-security Engineering enterprise Enterprise Enterprise Security enterprise-architecture enterprise-integration enterprise-security environment-variables envoy error-handling etcd ETL eureka event-driven event-driven-architecture event-sourcing event-streaming Example exif exploit-mitigation exploit-prevention exploitation falco Fargate fault-tolerance Feature-Engineering feature-flags federation fedora fedora-coreos ffmpeg FIDO2 file-integrity file-transfer filebeat FileVault financial-security fintech fips-203 Firecracker firefox firewall Flow fluentbit flux fly forensics full-stack functions fundamentals future-translation gainsaheb Gatekeeper gcp gcs gemini-2.5 general gis git github github-actions gitlab gitops GitOps Global-Distribution gmail go Go golang google google-authenticator google-cloud google-sheets googlecloud governance gpt GPT-4 gpt-4o gpt3 grafana graph-api graphical interface graphql GraphQL group-policy grpc gui guide hacker-news ham-radio hardening hardware hardware-security hashicorp health-probes helm helm-charts heroku high-availability high-risk-security Hilt hirte history homebrew homelab Honeypot hpa html http http3 https httpx HubSpot Hugging-Face hugo hybrid-cloud hybrid-quantum-classical I/O-Optimization iac iam icinga ics identity identity management identity-governance identity-management ignition imagemagick incident-response index index-management indexer industrial-iot industrial-security Infopercept infrastructure Infrastructure infrastructure-as-code ingress installation instrumentation integration Integration Integration Testing integration-testing internet introduction intrusion-detection inventory Invinsense ios iOS-development iOS-security iot isa Isolation istio IT-security iterators jamstack jasmin java javascript JavaScript jenkins jest Jetpack Jetpack Compose jinja jq json jsonpath jupyter jwt JWT k8s kafka kannel kaslr Kata-Containers keepalive kernel Kernel Kernel-Tuning keycloak KIND kiota Kotlin kprobe kpti kubeadm Kubebuilder kubectl kubernetes Kubernetes kustomize KVM kyber labels lambda language-processing large-language-models lattice-cryptography launchd Lead-Generation learning Legacy Code legacy-systems libvirt lightsail lightweight distro linkding linux Linux linux development linux from scratch linux kernel linux kernel compilation linux system linux-kernel linux-security Linux-Security LiveData liveness lkl llm LLM llm-translation llms Lockdown-Mode log log-analysis Log-Analysis log-ingestion log-management log-parsing logging logs Logwatch low-latency lsm lstm Machine Learning machine-learning Machine-Learning machine-translation machinelearning macos macOS macOS-development macOS-security malware malware-analysis malware-detection malware-protection management manifest maps Markdown markdown Marketing-Automation master-keys mastodon MCP mdm Media-Storage mediawiki Memory Management memory-management Memory-Management memory-safety mermaid message-queue messaging metrics metrics-server MFA mfa micro-segmentation micromdm microservices Microservices microsoft microsoft-copilot microsoft-graph microsoft-kiota MicroVM microwindows midjourney migration Migration Migrations minimalistic os minio misc mitigation ml-kem mobile-device-management mobile-security monitoring Monitoring morphisec mtls Multi-Agent Systems multi-cluster Multi-Service multi-tenancy Multi-Tenancy multi-tenant multilingual-blogs multimodal-ai multipass musl MVVM n8n nagios Namespaces nano-x nats Navigation netdata netflix Network network-access network-correlation Network-Performance network-security Network-Security networking Networking neural-machine-translation neural-networks neuvector nextjs-ai nfs nginx no-code No-Code node node-affinity node-exporter Node.js nodejs noisy-neighbors nosql notifications npm NSO-group oauth oauth2 OAuth2 object-storage Object-Storage objective-c observability observable observable-plot ocr offensive-security oidc open source openai openapi opensearch OpenSearch openssh openssl OpenSSL opentelemetry openvpn operating system operating-systems Operations operators Operators OperatorSDK optimization Optimization oracle oracle23c orchestration organizational-charts ot-ics overture-maps owasp ownership OXDR p2p P2P package-management packaging packet-capture packet-processing pact pages pagination partitioning passkeys passwordless patterns PCI-DSS pdf PDF-Reports peer-to-peer Pegasus-protection performance Performance performance-optimization Performance-Optimization permissions persistentvolumeclaims persistentvolumes personalization php pihole pipeline Pipeline-Management pixelmator pixie PKI pki Platform Development platform-engineering playwright pluggy plugin plugins pmp pod-security podman pods polyglot-persistence post-quantum-cryptography postgresql powershell presenting pricing privacy-controls privacy-engineering privacy-protection Private-Cloud-Compute process-exporter Process-Supervision processor production Production Production-Deployment Production-Setup productivity Productivity programming Programming project-management prometheus protocols proxy purpleair pyodide pypi pytest python Python qemu quadlet quadlets quality-assurance quantum-acceleration quantum-ai quantum-algorithms quantum-computing quantum-nlp quantum-resistant quarto quic r2 R2 r2-storage rabbitmq RAG ransomware rate-limiting Rate-Limiting rbac RBAC rdp react readiness readthedocs real-time real-time-analytics real-time-translation red-team reddit Refactoring reference remote-access ReplicaSet repository management resilience resilience4j resource-management resources REST rest-api restore Revenue-Operations risc-v risk-management rocky-linux roles rolling-updates Room rootkit rootless routing rpki rpm-ostree rsyslog rule-engine rules runtime-protection RuntimeClass rust Rust s3 s3-compatible S3-Compatible s6-overlay safari safety-critical saga-pattern Sales-Automation Salesforce sandboxed-execution scalability Scalability sched_ext scheduler scheduling scim screen-sharing sdk-development sdk-generation sdlc seamlessm4t search search-engine Seccomp secrets secrets-management secure-boot secure-coding secure-enclave security Security Security Platform security-analytics Security-Analytics security-architecture Security-Automation security-commands security-implementation security-monitoring security-patches security-platform security-tools security-trends security-updates selenium selinux seo SEO seo-optimization server-setup serverless Serverless service mesh service-accounts service-discovery service-mesh service-workers ServiceAccounts Services shell shell-configuration shell-scripting shellcode shot-scraper siem SIEM signaling simultaneous-interpretation single-node sinkhole site-speed slack smack smallstep smpp SMS sms-gateway smtp snapshot SOC Social-Media software development software-testing spatialite speech-translation spf sphinx spiffe spire spreadsheet spring-boot spyware-protection sql SQL sqlite SQLite squarespace sre SRE ssh ssl SSL/TLS starship State Management StateFlow static-sites stepca storage storageclass streaming STUN svg swift sysadmin sysmon System Architecture system services system-administration System-Administration system-calls system-design system-extension system-integrity system-maintenance systemd systems-programming tailscale taints targeted-attacks TCC tcp team-collaboration telegram terminal terminal-services terraform tesseract testcontainers testing Testing tetragon textract threading threat-detection threat-hunting Threat-Hunting threat-intelligence Threat-Intelligence threat-landscape threat-modeling tiktok time-series tinyemu tls TLS toast-notifications token-flow tokio Tokio tolerations tomcat tools tpm tracee tracing Traffic-Analysis troubleshooting trusted-execution tunnel tunneling tunnels turing TURN tutorial twitter typescript ubuntu udp ui UI UI Testing uninstallation unisolation Unit Testing unix utilities upgrade uprobes usb-control use-cases user-experience user-session utm-stack valtown vault Vector-Database vega version control version-control Video video video-chat ViewModel vim virtualization Virtualization visualization vmware volumes vpn vpn-replacement vscode vulnerabilities vulnerability vulnerability-analysis vulnerability-detection vulnerability-scanning waf WAF wasi wasm wazuh Wazuh web Web Development web-components web-development web-filtering web-infrastructure web-performance web-security Web-Security web-servers webassembly webauthn WebAuthn webhooks webrtc WebRTC websockets white-labeling wikipedia windows Windows Services windows-10-iot windows-api windows-monitoring windows-security winexe winrt wmi wordpress worker-nodes workers Workers workflow Workflow workload-identity xdp XDP XDR xdr xpc xprotect XProtect yaml youtube zeit-now zero-copy zero-day zero-trust zsh ztna
70 words
1 minute
Read the Docs Search API
Read the Docs Search API#
I stumbled across this API today: https://docs.datasette.io/_/api/v2/docsearch/?q=startup&project=datasette&version=stable&language=en
It’s used by the search feature at https://docs.datasette.io/en/stable/search.html?q=startup&check_keywords=yes&area=default - I had assumed that feature was implemented in JavaScript (as is common in Sphinx world), but Read the Docs have upgraded it with their own backend search index.
It’s built on Elasticsearch - they have developer docs for it here: https://github.com/readthedocs/readthedocs.org/blob/master/docs/development/search.rst
It looks like the key bits of the server-side implementation live here:
Read the Docs Search API
https://mranv.pages.dev/posts/read-the-docs-search-api/ Seeing which functions are unique to a specific SQLite / Datasette instance
Docker Images and Dockerfile Best Practices