# JSON Schema

A declarative language for defining the structure and constraints of JSON data.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## A better way to build MCP servers with Laravel

DevFeed: [A better way to build MCP servers with Laravel](<https://devfeed.tech/articles/a-better-way-to-build-mcp-servers-with-laravel-20840.md>)

Original publisher: [Read original article](<https://laravel.com/blog/a-better-way-to-build-mcp-servers-with-laravel>)

Author: Pushpak Chhajed

Published: 2026-09-11T12:01:00Z

Content type: article

Language: en

Sources: [Laravel Blog](<https://devfeed.tech/sources/laravel-blog.md>)

Topics: [MCP](<https://devfeed.tech/topics/mcp.md>), [Laravel](<https://devfeed.tech/topics/laravel.md>), [MCP Server](<https://devfeed.tech/topics/mcp-server.md>), [context window](<https://devfeed.tech/topics/context-window.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [Cloudflare](<https://devfeed.tech/topics/cloudflare.md>)

Tags: [cloudflare](<https://devfeed.tech/tags/cloudflare.md>), [context-window](<https://devfeed.tech/tags/context-window.md>), [json-schema](<https://devfeed.tech/tags/json-schema.md>), [laravel](<https://devfeed.tech/tags/laravel.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [mcp-server](<https://devfeed.tech/tags/mcp-server.md>)

### AI overview

The article explains how Laravel MCP 1.0 uses searchable tool catalogs to avoid loading every MCP tool definition into an agent's context on every request. It describes the context costs of large tool surfaces and the evolution of the author's implementation.

### Source excerpt

Every MCP tool loads on every request. Laravel MCP 1.0 fixes that with searchable tool catalogs: the same payload for 10 or 100 tools.

## Sign JWTs from your Functions without managing private keys

DevFeed: [Sign JWTs from your Functions without managing private keys](<https://devfeed.tech/articles/sign-jwts-from-your-functions-without-managing-private-keys-1097.md>)

Original publisher: [Read original article](<https://vercel.com/changelog/sign-jwts-from-your-functions-without-managing-private-keys>)

Author: Jeff Pope

Published: 2026-08-18T00:00:00Z

Content type: release

Language: en

Sources: [Vercel News](<https://devfeed.tech/sources/vercel-news.md>)

Topics: [Vercel](<https://devfeed.tech/topics/vercel.md>), [JSON Web Tokens](<https://devfeed.tech/topics/jwt.md>), [OpenID connect (OIDC)](<https://devfeed.tech/topics/oidc.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [dashboards](<https://devfeed.tech/topics/dashboards.md>)

Tags: [cli](<https://devfeed.tech/tags/cli.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [jwks](<https://devfeed.tech/tags/jwks.md>), [oidc](<https://devfeed.tech/tags/oidc.md>), [openid-connect](<https://devfeed.tech/tags/openid-connect.md>), [rsa](<https://devfeed.tech/tags/rsa.md>), [tokens](<https://devfeed.tech/tags/tokens.md>), [vercel](<https://devfeed.tech/tags/vercel.md>)

### AI overview

Vercel KMS enables Vercel Functions to sign JWTs and arbitrary messages with managed asymmetric keys, keeping private keys out of application code and environment variables. It supports issuer and key management, environment-specific access grants, claim constraints, JSON Schema validation, and standard OIDC and JWKS-based verification.

### Source excerpt

Vercel KMS lets you sign JWTs and arbitrary messages from your Vercel Functions using managed asymmetric signing keys, so private keys never live in your code or environment variables. Your function authenticates with its Vercel OIDC token, and the private key stays inside Vercel's key management service while verifiers use only the public key. With Vercel KMS you can: Create and rotate issuers and signing keys (RSA, ECDSA, and EdDSA) from the CLI and dashboard. Sign JWTs with custom claims and a configurable TTL, or sign raw bytes, using the @vercel/kms package. Grant a project signing access per environment, including production, preview, development, and custom environments. Constrain the claims a project can request per grant, and validate token claims against a JSON Schema. Verify signed tokens anywhere. Each issuer publishes a public OpenID Connect Discovery document at https://kms.vercel.com/<issuerId>/.well-known/openid-configuration and a JWK set at https://kms.vercel.com/<issuerId>/jwks.json, so any standard OIDC or JOSE library can validate tokens without Vercel-specific code. Sign a token inside a function: Verify a token anywhere with a standard JOSE library, using the issuer's public JWKS: Set up an issuer and grant a project access from the CLI: As a best practice, create a separate issuer per project and environment. Isolating issuers keeps each token audience distinct, scopes signing access to exactly one project and environment, and lets you rotate or revoke keys for one without affecting the others. To get started, read the docs or open Key Management in your team's dashboard. Read more

## Connect AI agents to data sources with Redis

DevFeed: [Connect AI agents to data sources with Redis](<https://devfeed.tech/articles/connect-ai-agents-to-data-sources-with-redis-4779.md>)

Original publisher: [Read original article](<https://redis.io/blog/connect-ai-agents-to-data-sources-redis/>)

Author: Jeff Mills

Published: 2026-08-03T00:00:00Z

Content type: tutorial

Language: en

Sources: [Redis Blog](<https://devfeed.tech/sources/redis-blog.md>)

Topics: [AI Agent](<https://devfeed.tech/topics/ai-agent.md>), [Redis](<https://devfeed.tech/topics/redis.md>), [data](<https://devfeed.tech/topics/data.md>), [Model Context Protocol](<https://devfeed.tech/topics/model-context-protocol.md>), [Retrieval Augmented Generation (RAG)](<https://devfeed.tech/topics/retrieval-augmented-generation-rag.md>), [API](<https://devfeed.tech/topics/api.md>), [Embeddings](<https://devfeed.tech/topics/embeddings.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>)

Tags: [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [api](<https://devfeed.tech/tags/api.md>), [data](<https://devfeed.tech/tags/data.md>), [embeddings](<https://devfeed.tech/tags/embeddings.md>), [integration](<https://devfeed.tech/tags/integration.md>), [json](<https://devfeed.tech/tags/json.md>), [llm](<https://devfeed.tech/tags/llm.md>), [model-context-protocol](<https://devfeed.tech/tags/model-context-protocol.md>), [rag](<https://devfeed.tech/tags/rag.md>), [redis](<https://devfeed.tech/tags/redis.md>), [retrieval](<https://devfeed.tech/tags/retrieval.md>), [tech-de](<https://devfeed.tech/tags/tech-de.md>)

### AI overview

This guide explains how to connect AI agents to production data sources and provide runtime context. It covers RAG, tool and function calling, Model Context Protocol, and custom API connectors, with Redis Iris presented as a real-time context engine for production workloads.

### Source excerpt

An AI agent that can't reach your data is just a chatbot with opinions. Without runtime context, a model only knows its training data and whatever sits in the current prompt. So your app has to feed it production-specific facts at runtime: your produc...

## Unlock runtime insights: Introducing third-party developer tools for Chrome DevTools for agents

DevFeed: [Unlock runtime insights: Introducing third-party developer tools for Chrome DevTools for agents](<https://devfeed.tech/articles/unlock-runtime-insights-introducing-third-party-developer-tools-for-chrome-devtools-for-agents-4133.md>)

Original publisher: [Read original article](<https://developer.chrome.com/blog/devtools-for-agents-3p-tools?hl=en>)

Author: Wolfgang Beyer X GitHub

Published: 2026-06-18T07:00:00Z

Content type: article

Language: en

Sources: [developer.chrome.com: Blog](<https://devfeed.tech/sources/developer-chrome-com-blog.md>)

Topics: [AI Agent](<https://devfeed.tech/topics/ai-agent.md>), [Chrome](<https://devfeed.tech/topics/chrome.md>), [MCP Server](<https://devfeed.tech/topics/mcp-server.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [debugging](<https://devfeed.tech/topics/debugging.md>), [Puppeteer](<https://devfeed.tech/topics/puppeteer.md>), [Document Object Model (DOM)](<https://devfeed.tech/topics/dom.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Angular](<https://devfeed.tech/topics/angular.md>), [React](<https://devfeed.tech/topics/react.md>), [Vue.js](<https://devfeed.tech/topics/vue.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-agent](<https://devfeed.tech/tags/ai-agent.md>), [ai-coding](<https://devfeed.tech/tags/ai-coding.md>), [angular](<https://devfeed.tech/tags/angular.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [developer-tools](<https://devfeed.tech/tags/developer-tools.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [json](<https://devfeed.tech/tags/json.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [mcp-server](<https://devfeed.tech/tags/mcp-server.md>), [react](<https://devfeed.tech/tags/react.md>), [vue](<https://devfeed.tech/tags/vue.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

Chrome DevTools for agents now supports third-party developer tools that expose runtime context from frameworks and applications to AI coding assistants. The article explains how these tools help agents inspect internal state, connect DOM elements to framework components, access server-side or database state, and debug issues beyond static source-code analysis.

### Source excerpt

Chrome DevTools for agents introduces third-party developer tools, which lets frameworks and applications share rich, runtime context with AI coding assistants.

## Haiku Activity & Contract Report, April 2026

DevFeed: [Haiku Activity & Contract Report, April 2026](<https://devfeed.tech/articles/haiku-activity-contract-report-april-2026-34784.md>)

Original publisher: [Read original article](<https://www.haiku-os.org/blog/waddlesplash/2026-05-11-haiku_activity_contract_report_april_2026/>)

Author: waddlesplash

Published: 2026-05-12T03:30:00Z

Content type: article

Language: en

Sources: [Haiku Project](<https://devfeed.tech/sources/haiku-project.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [bug](<https://devfeed.tech/topics/bug.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [activity-report](<https://devfeed.tech/tags/activity-report.md>), [bug](<https://devfeed.tech/tags/bug.md>), [code](<https://devfeed.tech/tags/code.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [contractor](<https://devfeed.tech/tags/contractor.md>), [json-schema](<https://devfeed.tech/tags/json-schema.md>), [memory-leak](<https://devfeed.tech/tags/memory-leak.md>), [report](<https://devfeed.tech/tags/report.md>)

### AI overview

Haiku's April 2026 activity and contract report covers revisions hrev59570 through hrev59671, documenting performance improvements, bug fixes, memory-leak fixes, JSON Schema code-generation work, and command-line tool changes.

### Source excerpt

This report covers hrev59570 through hrev59671. GSoC selection happened at the end of last month; you can read the news post announcing this year's selectees. Thanks to everyone who applied! Applications phoudoin disabled some redundant filetype checking in TextSearch, improving performance a bit. nipos dropped some obsolete code from WebPositive's tab bar. jscipione continued his work on Tracker, removing redundant code, fixing problems with Copy/Paste, the Trash icon, and much more. waddlesplash came by and made a few fixes too, including one to avoid a lot of unnecessary node monitoring syscalls. aquamatic123 did some cleanups to the Devices internals, solving another TODO. He also tracked down and fixed a memory leak. apl refactored the JSON schema code generation system in HaikuDepot, to prepare for potential use with REST APIs (among other reasons.) He also fixed the "Featured" tab displaying as disabled incorrectly in some circumstances (which also entailed fixing a bug in BTabView), and reworked how the package view data is updated. humdinger removed some unnecessary spacing in the Appearance preferences. jscipione made the message body text colors in Mail automatically update when the system colors change. nathan242 fixed a crash in SoftwareUpdater when trying to quit while a download was running. waddlesplash implemented automatic cleanup of the "admin" directory in it, meaning that older states will now automatically be deleted to free up space (unless the setting is disabled.) jscipione cleaned up some code and added some missing functions to DeskCalc's math backend. Command line tools waddlesplash improved the (not yet ready for general use) ltrace implementation, fixing a number of TODOs and inefficiencies. However, it's still not ready for general consumption, as it causes problems and crashes when it traces calls. waddlesplash split the "clean up admin directory" functionality of pkgman into a separate subcommand (pkgman cleanup), and changed install

## Structured outputs with Pydantic AI

DevFeed: [Structured outputs with Pydantic AI](<https://devfeed.tech/articles/structured-outputs-with-pydantic-ai-30003.md>)

Original publisher: [Read original article](<https://engineering.freeagent.com/2026/03/24/structured-outputs-with-pydantic-ai/>)

Author: Ed Berry

Published: 2026-03-24T10:34:08Z

Content type: tutorial

Language: en

Sources: [FreeAgent](<https://devfeed.tech/sources/freeagent.md>)

Topics: [Large Language Model](<https://devfeed.tech/topics/llm.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [Prompt Engineering](<https://devfeed.tech/topics/prompt-engineering.md>), [Pydantic](<https://devfeed.tech/topics/pydantic.md>), [Python](<https://devfeed.tech/topics/python.md>), [Structured-data](<https://devfeed.tech/topics/structured-data.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [data](<https://devfeed.tech/tags/data.md>), [data-ml](<https://devfeed.tech/tags/data-ml.md>), [data-science](<https://devfeed.tech/tags/data-science.md>), [data-validation](<https://devfeed.tech/tags/data-validation.md>), [genai](<https://devfeed.tech/tags/genai.md>), [json-schema](<https://devfeed.tech/tags/json-schema.md>), [llms](<https://devfeed.tech/tags/llms.md>), [prompt-engineering](<https://devfeed.tech/tags/prompt-engineering.md>), [python](<https://devfeed.tech/tags/python.md>), [schema](<https://devfeed.tech/tags/schema.md>), [structured-output](<https://devfeed.tech/tags/structured-output.md>)

### AI overview

This article explains structured outputs for LLMs using Pydantic AI. It introduces the relationship between Python type hints, static analysis, Pydantic, and runtime data validation, while noting that Pydantic AI is model-agnostic.

### Source excerpt

One of the challenges of working with LLMs is getting them to respond with a consistent format, such as a given JSON schema. Anyone who has tried to solve this issue with prompt engineering knows how frustrating it can be. You add a 'MUST' here and an 'always return JSON' there, but still the output [...]

## How to Get Structured Responses back from OpenAI

DevFeed: [How to Get Structured Responses back from OpenAI](<https://devfeed.tech/articles/how-to-get-structured-responses-back-from-openai-30854.md>)

Original publisher: [Read original article](<https://www.packetcoders.io/how-to-get-structured-responses-back-from-openai/>)

Author: Rick Donato

Published: 2026-01-28T08:00:56Z

Content type: tutorial

Language: en

Sources: [Packet Coders - Learn Network Automation](<https://devfeed.tech/sources/packet-coders-learn-network-automation.md>)

Topics: [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [OpenAI](<https://devfeed.tech/topics/openai.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>)

Tags: [example](<https://devfeed.tech/tags/example.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [json](<https://devfeed.tech/tags/json.md>), [json-schema](<https://devfeed.tech/tags/json-schema.md>), [llm](<https://devfeed.tech/tags/llm.md>), [openai](<https://devfeed.tech/tags/openai.md>), [responses](<https://devfeed.tech/tags/responses.md>), [schema](<https://devfeed.tech/tags/schema.md>), [structured](<https://devfeed.tech/tags/structured.md>), [structured-output](<https://devfeed.tech/tags/structured-output.md>), [tips](<https://devfeed.tech/tags/tips.md>)

### AI overview

This tutorial explains that structured responses from OpenAI can be obtained by defining the expected output format with JSON Schema. It includes a Python example using the OpenAI client.

### Source excerpt

OpenAI Tip: If you need structured output from the LLM, use structured responses and define the expected format with JSON Schema. Here's an example: from openai import OpenAI import os client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) # Define the exact shape you want back.

## AI agent steps in Windmill flows

DevFeed: [AI agent steps in Windmill flows](<https://devfeed.tech/articles/ai-agent-steps-in-windmill-flows-30709.md>)

Original publisher: [Read original article](<https://www.windmill.dev/blog/ai-agents>)

Author: Hugo Casademont

Published: 2025-11-12T00:00:00Z

Content type: article

Language: en

Sources: [Windmill Blog](<https://devfeed.tech/sources/windmill-blog.md>)

Topics: [AI Agent](<https://devfeed.tech/topics/ai-agent.md>), [workflow automation](<https://devfeed.tech/topics/workflow-automation.md>), [Model Context Protocol](<https://devfeed.tech/topics/model-context-protocol.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>)

Tags: [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-agent](<https://devfeed.tech/tags/ai-agent.md>), [ai-windmill-agents](<https://devfeed.tech/tags/ai-windmill-agents.md>), [automation](<https://devfeed.tech/tags/automation.md>), [json-schema](<https://devfeed.tech/tags/json-schema.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [model-context-protocol](<https://devfeed.tech/tags/model-context-protocol.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [webhooks](<https://devfeed.tech/tags/webhooks.md>), [windmill](<https://devfeed.tech/tags/windmill.md>)

### AI overview

This article explains how Windmill AI agent steps let workflows dynamically select and orchestrate tools based on context. It covers tool integration through Windmill scripts and MCP servers, JSON Schema-based tool definitions, structured output across AI providers, MCP compliance, and webhook or HTTP-triggered workflows with streaming options.

### Source excerpt

Implementing AI agent steps in Windmill flows: architecture decisions, multi-provider structured output handling, and MCP protocol compliance challenges.

## Supabase MCP Server

DevFeed: [Supabase MCP Server](<https://devfeed.tech/articles/supabase-mcp-server-450.md>)

Original publisher: [Read original article](<https://supabase.com/blog/mcp-server>)

Author: Greg Richardson

Published: 2025-04-04T07:00:00Z

Content type: article

Language: en

Sources: [Supabase Blog](<https://devfeed.tech/sources/supabase-blog.md>)

Topics: [MCP Server](<https://devfeed.tech/topics/mcp-server.md>), [Supabase](<https://devfeed.tech/topics/supabase.md>), [Model Context Protocol](<https://devfeed.tech/topics/model-context-protocol.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Database](<https://devfeed.tech/topics/database.md>), [Claude](<https://devfeed.tech/topics/claude.md>), [cursor](<https://devfeed.tech/topics/cursor.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [Next.js](<https://devfeed.tech/topics/next-js.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-tools](<https://devfeed.tech/tags/ai-tools.md>), [claude](<https://devfeed.tech/tags/claude.md>), [cursor](<https://devfeed.tech/tags/cursor.md>), [database](<https://devfeed.tech/tags/database.md>), [json](<https://devfeed.tech/tags/json.md>), [json-schema](<https://devfeed.tech/tags/json-schema.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [mcp-server](<https://devfeed.tech/tags/mcp-server.md>), [model-context-protocol](<https://devfeed.tech/tags/model-context-protocol.md>), [next-js](<https://devfeed.tech/tags/next-js.md>), [sql](<https://devfeed.tech/tags/sql.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

Supabase introduces an official MCP server that connects AI tools such as Cursor and Claude directly to Supabase. The server provides tools for managing databases, tables, projects, configuration, data, logs, migrations, and generated TypeScript types, with setup requiring a personal access token and client-specific configuration.

### Source excerpt

Connect your AI tools to Supabase using MCP

## Blog: Introducing Falco 0.39.1

DevFeed: [Blog: Introducing Falco 0.39.1](<https://devfeed.tech/articles/blog-introducing-falco-0-39-1-32488.md>)

Original publisher: [Read original article](<https://falco.org/blog/falco-0-39-1/>)

Published: 2024-10-09T00:00:00Z

Content type: release

Language: en

Sources: [Falco - Falco](<https://devfeed.tech/sources/falco-falco.md>), [Falco - The Falco blog](<https://devfeed.tech/sources/falco-the-falco-blog.md>)

Topics: [Falco](<https://devfeed.tech/topics/falco.md>), [bug](<https://devfeed.tech/topics/bug.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>)

Tags: [aws](<https://devfeed.tech/tags/aws.md>), [bug](<https://devfeed.tech/tags/bug.md>), [docker](<https://devfeed.tech/tags/docker.md>), [falco](<https://devfeed.tech/tags/falco.md>), [json-schema](<https://devfeed.tech/tags/json-schema.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [release](<https://devfeed.tech/tags/release.md>)

### AI overview

Falco 0.39.1 is a small patch release that fixes a plugin event-parsing crash, a command-line parsing bug involving commas in object definitions, and a JSON Schema issue allowing null plugin init_config values.

### Source excerpt

Today we announce the release of Falco 0.39.1 🦅! Fixes Falco's 0.39.1 is a small patch release that includes some important bugfixes: Fixed a crash when using plugin with event parsing capabilities (eg: k8smeta plugin) Fixed a bug while parsing -o key={object} command line arguments, when the object definition contains a comma Improved config json schema to allow null init_config for plugin info Thanks to everyone in the community for helping us with spotting these annoying bugs and improving Falco every day 🐛! You make Falco successful 🦅! Thanks as always to the Falco maintainers for their support and effort during the entire release process. Try it! 🏎 As usual, in case you just want to try out the stable Falco 0.39.1, you can install its packages following the process outlined in the docs: CentOS/Amazon Linux Debian/Ubuntu openSUSE Linux binary package Prefer to use a container image? No problem at all! 🐳 You can read more about running Falco with Docker in the docs. You can also find the Falcosecurity container images on the public AWS ECR gallery: falco falco-no-driver falco-driver-loader Let's meet 🤝 We meet every Wednesday in our community calls, if you want to know the latest and the greatest you should join us there! If you have any questions Join the #falco channel on the Kubernetes Slack Join the Falco mailing list Thanks to all the amazing contributors! Enjoy 😎, Federico

## AWS API Gateway's Request Validation: Navigating the Quirks

DevFeed: [AWS API Gateway's Request Validation: Navigating the Quirks](<https://devfeed.tech/articles/aws-api-gateway-s-request-validation-navigating-the-quirks-23894.md>)

Original publisher: [Read original article](<https://medium.com/smg-real-estate/aws-api-gateways-request-validation-navigating-the-quirks-38285cb0a1c1?source=rss----2186e5b9bd8f---4>)

Author: Thomas Klein

Published: 2024-08-09T12:07:11Z

Content type: tutorial

Language: en

Sources: [Homegate Engineering Blog - Medium](<https://devfeed.tech/sources/homegate-engineering-blog-medium.md>)

Topics: [Amazon API Gateway](<https://devfeed.tech/topics/amazon-api-gateway.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>), [API](<https://devfeed.tech/topics/api.md>), [gateway](<https://devfeed.tech/topics/gateway.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [enum](<https://devfeed.tech/topics/enum.md>), [HTTP](<https://devfeed.tech/topics/http.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [api-gateway](<https://devfeed.tech/tags/api-gateway.md>), [aws](<https://devfeed.tech/tags/aws.md>), [aws-api-gateway](<https://devfeed.tech/tags/aws-api-gateway.md>), [aws-lambda](<https://devfeed.tech/tags/aws-lambda.md>), [enum](<https://devfeed.tech/tags/enum.md>), [gateway](<https://devfeed.tech/tags/gateway.md>), [handler](<https://devfeed.tech/tags/handler.md>), [http](<https://devfeed.tech/tags/http.md>), [json](<https://devfeed.tech/tags/json.md>), [json-schema](<https://devfeed.tech/tags/json-schema.md>), [middleware](<https://devfeed.tech/tags/middleware.md>), [middy](<https://devfeed.tech/tags/middy.md>), [tests](<https://devfeed.tech/tags/tests.md>), [type-safety](<https://devfeed.tech/tags/type-safety.md>), [typescript](<https://devfeed.tech/tags/typescript.md>), [validation](<https://devfeed.tech/tags/validation.md>), [zod](<https://devfeed.tech/tags/zod.md>)

### AI overview

This tutorial examines AWS API Gateway request validation. It explains that query-parameter presence is checked, but enum values may not be enforced, while POST and PUT payloads are validated with JSON Schema Draft 4. It also discusses generic error messages and TypeScript-based validation approaches.

### Source excerpt

AWS API Gateway's request validation follows a specific set of rules that developers should be aware of when setting up their APIs. While it offers some validation features, it's important to understand its scope and limitations. Let's examine how it works with a common API configuration: parameters: - name: offerType in: query required: true description: RENT or BUY schema: type: string enum: - RENT - BUY With this configuration, API Gateway diligently checks for the presence of the query parameter, returning an HTTP 400 error if it's missing. However, it falls short when it comes to validating the actual value. Surprisingly, it would accept "KERMIT" without batting an eye, despite the clear enum specification. This behavior, while documented, can be a source of frustration for developers expecting more comprehensive validation. Interestingly, API Gateway shows more validation prowess with POST and PUT requests. It validates request payloads using JSON Schema Draft 4, demonstrating a somewhat inconsistent approach to input validation across different HTTP methods. Even when it does catch an error, API Gateway's feedback is less than illuminating. Instead of specific error details, you're met with a generic {"message": "Invalid request body"}. For more information, you'll need to dig into the associated log streams, which isn't ideal for surfacing error details in API responses. Example output in AWS console from a failed request validation when a body request validator is setup. API Gateway's validation is handy, but it leaves a lot to be desired. Developers often need to add extra checks for a truly robust API. While API Gateway supports various integrations and Lambda languages, let's focus on TypeScript. TypeScript's strong typing and runtime checks can catch issues early, sparing your users from cryptic error messages. Let's explore how to use this to make your API smarter and your users happier. Option 1: DIY Validation (AKA The "I've Got Trust Issues" Approac

## Nix Weekly Recap: 2024-05-26

DevFeed: [Nix Weekly Recap: 2024-05-26](<https://devfeed.tech/articles/nix-weekly-recap-2024-05-26-34720.md>)

Original publisher: [Read original article](<https://nixpkgs.news/archive/2024-05-26/>)

Published: 2024-05-26T00:00:00Z

Content type: article

Language: en

Sources: [nixpkgs.news](<https://devfeed.tech/sources/nixpkgs-news.md>)

Topics: [Nix](<https://devfeed.tech/topics/nix.md>), [Elixir](<https://devfeed.tech/topics/elixir.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [Neovim](<https://devfeed.tech/topics/neovim.md>), [modules](<https://devfeed.tech/topics/modules.md>)

Tags: [elixir](<https://devfeed.tech/tags/elixir.md>), [modules](<https://devfeed.tech/tags/modules.md>), [recap](<https://devfeed.tech/tags/recap.md>), [updates](<https://devfeed.tech/tags/updates.md>), [weekly](<https://devfeed.tech/tags/weekly.md>)

### AI overview

A weekly recap covering the final steps toward the NixOS 24.05 release, a Constitutional Assembly Q&A, the deps_nix Elixir builder, Neovim flake changes, and a tool for extracting JSON Schema definitions from NixOS modules.

### Source excerpt

Closing in on NixOS 24.05, Constitutional Assembly Q&A, an improved Elixir builder, Neovim flake updates, and JSON Schemas for NixOS modules.

## A brief introduction to OpenAPI

DevFeed: [A brief introduction to OpenAPI](<https://devfeed.tech/articles/a-brief-introduction-to-openapi-19081.md>)

Original publisher: [Read original article](<https://httptoolkit.com/blog/introduction-to-openapi/>)

Author: HTTP Toolkit; Phil Sturgeon

Published: 2023-11-28T09:30:00Z

Content type: tutorial

Language: en

Sources: [HTTP Toolkit](<https://devfeed.tech/sources/http-toolkit.md>)

Topics: [OpenAPI Specification](<https://devfeed.tech/topics/openapi.md>), [API](<https://devfeed.tech/topics/api.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>), [JSON](<https://devfeed.tech/topics/json.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [api-documentation](<https://devfeed.tech/tags/api-documentation.md>), [apis](<https://devfeed.tech/tags/apis.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [http](<https://devfeed.tech/tags/http.md>), [json-schema](<https://devfeed.tech/tags/json-schema.md>), [openapi](<https://devfeed.tech/tags/openapi.md>), [sdks](<https://devfeed.tech/tags/sdks.md>), [standards](<https://devfeed.tech/tags/standards.md>), [swagger](<https://devfeed.tech/tags/swagger.md>), [validation](<https://devfeed.tech/tags/validation.md>)

### AI overview

An introduction to OpenAPI as a machine-readable description format for HTTP APIs. The article explains how OpenAPI describes endpoints, requests, responses, authentication, and validation, and how it supports documentation, testing, validation, SDK generation, server stubs, and mock servers.

### Source excerpt

It's hard to work on APIs without hearing about OpenAPI. OpenAPI is an API description format, which is essentially metadata that describes an HTTP API: where it lives, how it works, what data is available, and how it's authenticated. Additional keywords can be used to provide all sorts of validation information, adding a type system to what would otherwise just be arbitrary JSON flying around the internet. OpenAPI has been around for donkeys years, previously known as Swagger but renamed to OpenAPI in 2016. It's powered by JSON Schema, which is also pretty popular in certain circles, but it's only in the last few years that OpenAPI has solidified its place as the description format for HTTP APIs, pushing aside others like RAML and API Blueprint. Elder developers will remember working with WSDLs and XML Schema, and gRPC and GraphQL folks might be thinking "hang on this sounds a bit familiar", and absolutely. Type systems for APIs are pretty common, but here's an excellent one you can use for your REST/RESTish API. Here's an example to give you an idea: openapi: 3.1.3 info: title: Your Awesome API version: '1.0.3' description: More information and introduction. paths: /things: post: summary: Create a thing requestBody: content: application/json: schema: type: object properties: name: type: string examples: - Tim responses: '201': description: "Created" content: application/json: schema: type: object properties: id: type: string format: uuid name: type: string examples: - Tim created_at: type: string format: date-time example: 2020-01-01T00:00:00Z This describes an API in a machine-readable format, including overall metadata, endpoint paths, request formats, and the details of possible responses you might receive. What can OpenAPI do? OpenAPI specifications provide a machine-readable base on top of which lots of neat API tools can be used and even generated. One of the most common uses by many API teams to to generate API reference documentation, which helps end-users

## Supabase Beta August 2022

DevFeed: [Supabase Beta August 2022](<https://devfeed.tech/articles/supabase-beta-august-2022-602.md>)

Original publisher: [Read original article](<https://supabase.com/blog/supabase-beta-update-august-2022>)

Author: Ant Wilson

Published: 2022-09-07T07:00:00Z

Content type: article

Language: en

Sources: [Supabase Blog](<https://devfeed.tech/sources/supabase-blog.md>)

Topics: [Supabase](<https://devfeed.tech/topics/supabase.md>), [API](<https://devfeed.tech/topics/api.md>), [REST API](<https://devfeed.tech/topics/rest-api.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [GraphQL](<https://devfeed.tech/topics/graphql.md>), [Cache](<https://devfeed.tech/topics/cache.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [cache](<https://devfeed.tech/tags/cache.md>), [cli](<https://devfeed.tech/tags/cli.md>), [github](<https://devfeed.tech/tags/github.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [hackathon](<https://devfeed.tech/tags/hackathon.md>), [json-schema](<https://devfeed.tech/tags/json-schema.md>), [launch](<https://devfeed.tech/tags/launch.md>), [mfa](<https://devfeed.tech/tags/mfa.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [rest-api](<https://devfeed.tech/tags/rest-api.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

Supabase's August 2022 Beta Update covers Launch Week 5 releases, including Supabase CLI v1, the Management API Beta, supabase-js v2, SOC2 compliance, Realtime features, and several additional platform capabilities.

### Source excerpt

Launch Week Special. See everything we shipped, plus winners of the Hackathon and the extended Community Highlights

## Supabase Launch Week releases: Vault, Auth UI, Dashboard permissions, JSON Schema validation, and pg\_graphql updates

DevFeed: [Supabase Launch Week releases: Vault, Auth UI, Dashboard permissions, JSON Schema validation, and pg\_graphql updates](<https://devfeed.tech/articles/one-more-thing-426.md>)

Original publisher: [Read original article](<https://supabase.com/blog/launch-week-5-one-more-thing>)

Author: Paul Copplestone

Published: 2022-08-19T07:00:00Z

Content type: release

Language: en

Sources: [Supabase Blog](<https://devfeed.tech/sources/supabase-blog.md>)

Topics: [Supabase](<https://devfeed.tech/topics/supabase.md>), [Database](<https://devfeed.tech/topics/database.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [Encryption](<https://devfeed.tech/topics/encryption.md>), [GraphQL](<https://devfeed.tech/topics/graphql.md>), [React](<https://devfeed.tech/topics/react.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Rust](<https://devfeed.tech/topics/rust.md>)

Tags: [database](<https://devfeed.tech/tags/database.md>), [encryption](<https://devfeed.tech/tags/encryption.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [json-schema](<https://devfeed.tech/tags/json-schema.md>), [new-feature](<https://devfeed.tech/tags/new-feature.md>), [permissions](<https://devfeed.tech/tags/permissions.md>), [react](<https://devfeed.tech/tags/react.md>), [release](<https://devfeed.tech/tags/release.md>), [rust](<https://devfeed.tech/tags/rust.md>), [ui](<https://devfeed.tech/tags/ui.md>), [vault](<https://devfeed.tech/tags/vault.md>)

### AI overview

Supabase announces several Launch Week updates: Vault, a Postgres extension for managing secrets and encryption; a separately installable and customizable Auth UI package with initial React support; granular Dashboard permissions with Owner, Administrator, and Developer roles; JSON Schema validation through a new Postgres extension; and pg_graphql v0.4.0 with additional type support, filtering, larger-schema introspection, and bug fixes.

### Source excerpt

Let's be honest, it's never just one more thing.

## pg\_jsonschema: JSON Schema support for Postgres

DevFeed: [pg\_jsonschema: JSON Schema support for Postgres](<https://devfeed.tech/articles/pg-jsonschema-json-schema-support-for-postgres-484.md>)

Original publisher: [Read original article](<https://supabase.com/blog/pg-jsonschema-a-postgres-extension-for-json-validation>)

Author: Oliver Rice

Published: 2022-08-19T07:00:00Z

Content type: article

Language: en

Sources: [Supabase Blog](<https://devfeed.tech/sources/supabase-blog.md>)

Topics: [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Supabase](<https://devfeed.tech/topics/supabase.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [MongoDB](<https://devfeed.tech/topics/mongodb.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [json](<https://devfeed.tech/tags/json.md>), [json-schema](<https://devfeed.tech/tags/json-schema.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [relational-databases](<https://devfeed.tech/tags/relational-databases.md>), [sql](<https://devfeed.tech/tags/sql.md>), [validation](<https://devfeed.tech/tags/validation.md>)

### AI overview

Supabase introduces pg_jsonschema, a Postgres extension that adds JSON Schema validation for JSON data. The article explains how validating document-shaped webhook payloads can preserve flexibility while enforcing required structure and constraints.

### Source excerpt

Today we're releasing pg_jsonschema, a Postgres extension for JSON validation.

## Separate data schema from data representation

DevFeed: [Separate data schema from data representation](<https://devfeed.tech/articles/separate-data-schema-from-data-representation-37566.md>)

Original publisher: [Read original article](<https://blog.klipse.tech/databook/2022/06/22/data-validation.html>)

Author: Yehonathan Sharvit

Published: 2022-06-22T02:35:24Z

Content type: article

Language: en

Sources: [Klipse](<https://devfeed.tech/sources/klipse.md>)

Topics: [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [Data validation](<https://devfeed.tech/topics/data-validation.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [d](<https://devfeed.tech/tags/d.md>), [data-validation](<https://devfeed.tech/tags/data-validation.md>), [dop](<https://devfeed.tech/tags/dop.md>), [json-schema](<https://devfeed.tech/tags/json-schema.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

An exploration of the fourth principle of Data-Oriented Programming: keeping data schemas separate from data representations. The article explains how schemas describe expected data shapes and how validation libraries such as Ajv can check data against JSON Schema and report validation errors.

### Source excerpt

With data separated from code and represented with generic and immutable data structures, now comes the question of how do we express the shape of the data? In DOP, the expected shape is expressed as a data schema that is kept separated from the data itself. The main benefit of Principle #4 is that it allows developers to decide which pieces of data should have a schema and which pieces of data should not.

## Integrating Confluent Schema Registry with Apache Spark applications

DevFeed: [Integrating Confluent Schema Registry with Apache Spark applications](<https://devfeed.tech/articles/integrating-confluent-schema-registry-with-apache-spark-applications-24745.md>)

Original publisher: [Read original article](<https://medium.com/yazio-engineering/integrating-confluent-schema-registry-with-apache-spark-applications-d3426e33bc51?source=rss----65bd178b00af---4>)

Author: Dominik Liebler

Published: 2022-01-24T08:04:19Z

Content type: tutorial

Language: en

Sources: [YAZIO Engineering - Medium](<https://devfeed.tech/sources/yazio-engineering-medium.md>)

Topics: [Kafka](<https://devfeed.tech/topics/kafka.md>), [Apache Spark](<https://devfeed.tech/topics/spark.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [data lake](<https://devfeed.tech/topics/data-lake.md>), [parquet](<https://devfeed.tech/topics/parquet.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [ceph](<https://devfeed.tech/topics/ceph.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>)

Tags: [apache-spark](<https://devfeed.tech/tags/apache-spark.md>), [backpressure](<https://devfeed.tech/tags/backpressure.md>), [ceph](<https://devfeed.tech/tags/ceph.md>), [confluent](<https://devfeed.tech/tags/confluent.md>), [data-engineering](<https://devfeed.tech/tags/data-engineering.md>), [data-lake](<https://devfeed.tech/tags/data-lake.md>), [data-pipeline](<https://devfeed.tech/tags/data-pipeline.md>), [json](<https://devfeed.tech/tags/json.md>), [kafka](<https://devfeed.tech/tags/kafka.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [parquet](<https://devfeed.tech/tags/parquet.md>), [payload](<https://devfeed.tech/tags/payload.md>), [pipelines](<https://devfeed.tech/tags/pipelines.md>), [schema](<https://devfeed.tech/tags/schema.md>), [schemaregistry](<https://devfeed.tech/tags/schemaregistry.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [spark](<https://devfeed.tech/tags/spark.md>), [streaming](<https://devfeed.tech/tags/streaming.md>)

### AI overview

This engineering article explains YAZIO's data pipeline from mobile and web applications through Kafka and Spark Structured Streaming into a Ceph-based data lake. It discusses why schemas matter and describes replacing JSON with Apache Avro and Confluent Schema Registry to reduce message size while keeping schema information externally stored and cached.

### Source excerpt

At YAZIO, we believe in making decisions backed by data to help people live healthier lives through better nutrition. For each new and existing feature we want to evaluate how well it performs and how our users interact with it. In order to do so, we need a lot of data and we need to handle backpressure in our systems. To cope with that we use a Kafka cluster managed by Strimzi operators running in Kubernetes. The data itself is being ingested from our mobile and web apps via HTTP or TCP endpoints serialized into JSON and stored in Kafka by a small application written in Kotlin/JVM. Overview of our data pipeline architecture At the other end of the pipeline, different Spark Structured Streaming applications (also written in Kotlin) dump this information into our data lake residing in a Ceph bucket. They read data from Kafka, deserialize it, transform some of the fields and write Parquet files into the data lake using a new schema. Why schemas? Schemas play an important role in data pipelines because they give meaning and context to data. In a world without schemas we would still do random interpretations about the context and meaning of data every now and then when using it. As you might have guessed already this would lead to a lot of bugs and misunderstandings. Photo by EJ Strat https://unsplash.com/photos/VjWi56AWQ9k Similar to a legal contract that binds you to certain limits, a schema binds the data to certain limits and meaning which narrow down the need of interpretation. Choice of serialization formats At the time of writing, Confluent Schema Registry supports these three serialization formats: Apache Avro Protocol Buffers (protobuf) JSON Schema From those choices, only two really provide more than just validation of the data that is ingested and transmitted through our data pipelines. Avro and Protobuf also allow us to shrink the sizes of our topics because only the payload is contained in a message, while the repeating schema will not be stored. In the cas

## Note to future me -- Adding GraphQL to an app

DevFeed: [Note to future me -- Adding GraphQL to an app](<https://devfeed.tech/articles/note-to-future-me-adding-graphql-to-an-app-32072.md>)

Original publisher: [Read original article](<https://www.maiatoday.net/p/note-to-future-me-adding-graphql-to-an-app/>)

Published: 2018-04-08T21:36:13Z

Content type: tutorial

Language: en

Sources: [maiatoday](<https://devfeed.tech/sources/maiatoday.md>)

Topics: [GraphQL](<https://devfeed.tech/topics/graphql.md>), [API](<https://devfeed.tech/topics/api.md>), [JSON](<https://devfeed.tech/topics/json.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [Query (disambiguation)](<https://devfeed.tech/topics/query.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [json](<https://devfeed.tech/tags/json.md>), [json-schema](<https://devfeed.tech/tags/json-schema.md>), [node](<https://devfeed.tech/tags/node.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [query](<https://devfeed.tech/tags/query.md>), [sample](<https://devfeed.tech/tags/sample.md>)

### AI overview

A practical note on adding GraphQL to an application: install and run a Node service, obtain its schema with Apollo Codegen, add a query and schema to the app, and call the service.

### Source excerpt

Adding the library to the app see commit 03bd7a7534f7a23276fc47c4f7c94d7ac153bc0b plugin dependencies Making a service wrapping and existing endpoint https://github.com/joakin/wikimedia-graphql install node if you don't have it. node -- version running the service `node index.js` play with the service https://gist.github.com/maiatoday/578aebcee3bd9decb6e3c6833c73a4ba#file-wikipage-graphql getting the json.schema https://github.com/apollographql/apollo-codegen cd app/src/main/graphql/net/maiatoday/helloblondie apollo-codegen download-schema http://localhost:3002/graphql -- output schema.json Adding the service to the app adding a query adding the schema a5a47f0ff45f6bc5d5a3aa6f1fee50af363f7893 getting access to the service calling the service Some pointers on query syntax Gitrepo `sudo apollo-codegen introspect-schema https://api.blargh.com/graphql -- header "Authorization: Bearer xxxx" -- output schema.json`

## Open Sourcing Viewfinder

DevFeed: [Open Sourcing Viewfinder](<https://devfeed.tech/articles/open-sourcing-viewfinder-15793.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/open-sourcing-viewfinder>)

Author: Square Engineering

Published: 2014-05-05T16:06:00Z

Content type: release

Language: en

Sources: [Square Corner Blog](<https://devfeed.tech/sources/square-corner-blog-medium.md>), [Square Corner Blog RSS Feed](<https://devfeed.tech/sources/square-corner-blog-rss-feed.md>)

Topics: [Open Source](<https://devfeed.tech/topics/open-source.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [amazon](<https://devfeed.tech/topics/amazon.md>), [Database](<https://devfeed.tech/topics/database.md>), [OpenGL](<https://devfeed.tech/topics/opengl.md>), [Code](<https://devfeed.tech/topics/code.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [dynamodb](<https://devfeed.tech/tags/dynamodb.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [graphics](<https://devfeed.tech/tags/graphics.md>), [ios](<https://devfeed.tech/tags/ios.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [open](<https://devfeed.tech/tags/open.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

Square released the complete Viewfinder server and iOS and Android app source code, comprising more than 250,000 lines. The release is intended as a resource for others, but the team will not provide support or bug fixes.

### Source excerpt

More than 250,000 lines of code released.

## fdoc: an API Documentation Tool

DevFeed: [fdoc: an API Documentation Tool](<https://devfeed.tech/articles/fdoc-an-api-documentation-tool-15652.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/fdoc-an-api-documentation-tool>)

Author: Square Engineering

Published: 2012-06-19T16:01:00Z

Content type: article

Language: en

Sources: [Square Corner Blog](<https://devfeed.tech/sources/square-corner-blog-medium.md>), [Square Corner Blog RSS Feed](<https://devfeed.tech/sources/square-corner-blog-rss-feed.md>)

Topics: [Documentation](<https://devfeed.tech/topics/documentation.md>), [API](<https://devfeed.tech/topics/api.md>), [JSON Schema](<https://devfeed.tech/topics/json-schema.md>), [Tool](<https://devfeed.tech/topics/tool.md>), [Markdown](<https://devfeed.tech/topics/markdown.md>), [YAML](<https://devfeed.tech/topics/yaml.md>), [Rails](<https://devfeed.tech/topics/rails.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [api-documentation](<https://devfeed.tech/tags/api-documentation.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [json](<https://devfeed.tech/tags/json.md>), [json-schema](<https://devfeed.tech/tags/json-schema.md>), [markdown](<https://devfeed.tech/tags/markdown.md>), [rails](<https://devfeed.tech/tags/rails.md>), [tool](<https://devfeed.tech/tags/tool.md>), [tooling](<https://devfeed.tech/tags/tooling.md>)

### AI overview

Square describes fdoc, an open-source tool for keeping API documentation consistent. It uses a machine-readable format and generates HTML documentation, while also checking specifications for undocumented parameters.

### Source excerpt

How we maintain consistent API documentation.