feat: add requestBody param examples in specs

This commit is contained in:
Chirag Aggarwal
2025-09-04 10:22:51 +05:30
parent 101da34672
commit 8a734293f0
6 changed files with 142 additions and 124 deletions
+1 -1
View File
@@ -3168,7 +3168,7 @@ App::patch('/v1/account/prefs')
],
contentType: ContentType::JSON
))
->param('prefs', [], new Assoc(), 'Prefs key-value JSON object.')
->param('prefs', [], new Assoc(), 'Prefs key-value JSON object.', example: '{"language":"en","timezone":"UTC","darkTheme":true}')
->inject('requestTimestamp')
->inject('response')
->inject('user')
+1 -1
View File
@@ -68,7 +68,7 @@
"utopia-php/platform": "0.7.*",
"utopia-php/pools": "0.8.*",
"utopia-php/preloader": "0.2.*",
"utopia-php/queue": "0.11.0",
"utopia-php/queue": "0.12.0",
"utopia-php/registry": "0.5.*",
"utopia-php/storage": "0.18.*",
"utopia-php/swoole": "0.8.*",
Generated
+131 -119
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "0da713ee5642eba1d30bc51c1a04a723",
"content-hash": "afc8b2b314887779f507fd6a101ef6af",
"packages": [
{
"name": "adhocore/jwt",
@@ -67,6 +67,99 @@
],
"time": "2025-02-18T01:00:50+00:00"
},
{
"name": "appwrite-labs/php-amqplib",
"version": "0.1.2",
"source": {
"type": "git",
"url": "https://github.com/appwrite-labs/php-amqplib.git",
"reference": "c8e043045388ddad5ddab5f48df2b9046ca6873f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/appwrite-labs/php-amqplib/zipball/c8e043045388ddad5ddab5f48df2b9046ca6873f",
"reference": "c8e043045388ddad5ddab5f48df2b9046ca6873f",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"ext-sockets": "*",
"php": "^7.2||^8.0",
"phpseclib/phpseclib": "^2.0|^3.0"
},
"conflict": {
"php": "7.4.0 - 7.4.1"
},
"replace": {
"php-amqplib/php-amqplib": "self.version",
"videlalvaro/php-amqplib": "self.version"
},
"require-dev": {
"ext-curl": "*",
"nategood/httpful": "^0.2.20",
"phpunit/phpunit": "^7.5|^9.5",
"squizlabs/php_codesniffer": "^3.6",
"swoole/ide-helper": "^5.0"
},
"suggest": {
"ext-swoole": "For Swoole coroutine support"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
}
},
"autoload": {
"psr-4": {
"PhpAmqpLib\\": "PhpAmqpLib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-2.1-or-later"
],
"authors": [
{
"name": "Appwrite Labs",
"email": "team@appwrite.io",
"role": "Fork Maintainer"
},
{
"name": "Alvaro Videla",
"role": "Original Maintainer"
},
{
"name": "Raúl Araya",
"email": "nubeiro@gmail.com",
"role": "Maintainer"
},
{
"name": "Luke Bakken",
"email": "luke@bakken.io",
"role": "Maintainer"
},
{
"name": "Ramūnas Dronga",
"email": "github@ramuno.lt",
"role": "Maintainer"
}
],
"description": "Fork of php-amqplib with Swoole coroutine support. A pure PHP implementation of the AMQP protocol tested against RabbitMQ.",
"homepage": "https://github.com/appwrite-labs/php-amqplib/",
"keywords": [
"async",
"coroutine",
"message",
"queue",
"rabbitmq",
"swoole"
],
"support": {
"source": "https://github.com/appwrite-labs/php-amqplib/tree/0.1.2"
},
"time": "2025-07-04T20:54:22+00:00"
},
{
"name": "appwrite/appwrite",
"version": "15.1.0",
@@ -1515,16 +1608,16 @@
},
{
"name": "open-telemetry/sem-conv",
"version": "1.36.0",
"version": "1.37.0",
"source": {
"type": "git",
"url": "https://github.com/opentelemetry-php/sem-conv.git",
"reference": "60dd18fd21d45e6f4234ecab89c14021b6e3de9a"
"reference": "8da7ec497c881e39afa6657d72586e27efbd29a1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/opentelemetry-php/sem-conv/zipball/60dd18fd21d45e6f4234ecab89c14021b6e3de9a",
"reference": "60dd18fd21d45e6f4234ecab89c14021b6e3de9a",
"url": "https://api.github.com/repos/opentelemetry-php/sem-conv/zipball/8da7ec497c881e39afa6657d72586e27efbd29a1",
"reference": "8da7ec497c881e39afa6657d72586e27efbd29a1",
"shasum": ""
},
"require": {
@@ -1568,7 +1661,7 @@
"issues": "https://github.com/open-telemetry/opentelemetry-php/issues",
"source": "https://github.com/open-telemetry/opentelemetry-php"
},
"time": "2025-08-04T03:22:08+00:00"
"time": "2025-09-03T12:08:10+00:00"
},
{
"name": "paragonie/constant_time_encoding",
@@ -1687,87 +1780,6 @@
},
"time": "2020-10-15T08:29:30+00:00"
},
{
"name": "php-amqplib/php-amqplib",
"version": "v3.7.3",
"source": {
"type": "git",
"url": "https://github.com/php-amqplib/php-amqplib.git",
"reference": "9f50fe69a9f1a19e2cb25596a354d705de36fe59"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/9f50fe69a9f1a19e2cb25596a354d705de36fe59",
"reference": "9f50fe69a9f1a19e2cb25596a354d705de36fe59",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"ext-sockets": "*",
"php": "^7.2||^8.0",
"phpseclib/phpseclib": "^2.0|^3.0"
},
"conflict": {
"php": "7.4.0 - 7.4.1"
},
"replace": {
"videlalvaro/php-amqplib": "self.version"
},
"require-dev": {
"ext-curl": "*",
"nategood/httpful": "^0.2.20",
"phpunit/phpunit": "^7.5|^9.5",
"squizlabs/php_codesniffer": "^3.6"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
}
},
"autoload": {
"psr-4": {
"PhpAmqpLib\\": "PhpAmqpLib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-2.1-or-later"
],
"authors": [
{
"name": "Alvaro Videla",
"role": "Original Maintainer"
},
{
"name": "Raúl Araya",
"email": "nubeiro@gmail.com",
"role": "Maintainer"
},
{
"name": "Luke Bakken",
"email": "luke@bakken.io",
"role": "Maintainer"
},
{
"name": "Ramūnas Dronga",
"email": "github@ramuno.lt",
"role": "Maintainer"
}
],
"description": "Formerly videlalvaro/php-amqplib. This library is a pure PHP implementation of the AMQP protocol. It's been tested against RabbitMQ.",
"homepage": "https://github.com/php-amqplib/php-amqplib/",
"keywords": [
"message",
"queue",
"rabbitmq"
],
"support": {
"issues": "https://github.com/php-amqplib/php-amqplib/issues",
"source": "https://github.com/php-amqplib/php-amqplib/tree/v3.7.3"
},
"time": "2025-02-18T20:11:13+00:00"
},
{
"name": "php-http/discovery",
"version": "1.20.0",
@@ -3638,16 +3650,16 @@
},
{
"name": "utopia-php/database",
"version": "1.3.0",
"version": "1.3.1",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/database.git",
"reference": "06ffa2b1c977f5451200a1ee82a500be1390a789"
"reference": "fcd166b715a14cfea11f7a9c47d4c0076bedcecd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/database/zipball/06ffa2b1c977f5451200a1ee82a500be1390a789",
"reference": "06ffa2b1c977f5451200a1ee82a500be1390a789",
"url": "https://api.github.com/repos/utopia-php/database/zipball/fcd166b715a14cfea11f7a9c47d4c0076bedcecd",
"reference": "fcd166b715a14cfea11f7a9c47d4c0076bedcecd",
"shasum": ""
},
"require": {
@@ -3688,9 +3700,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/database/issues",
"source": "https://github.com/utopia-php/database/tree/1.3.0"
"source": "https://github.com/utopia-php/database/tree/1.3.1"
},
"time": "2025-09-02T16:20:02+00:00"
"time": "2025-09-03T15:50:41+00:00"
},
{
"name": "utopia-php/detector",
@@ -3942,16 +3954,16 @@
},
{
"name": "utopia-php/framework",
"version": "0.33.22",
"version": "0.33.24",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/http.git",
"reference": "c01a815cb976c9255e045fc3bcc3f5fcf477e0bc"
"reference": "5112b1023342163e3fbedec99f38fc32c8700aa0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/http/zipball/c01a815cb976c9255e045fc3bcc3f5fcf477e0bc",
"reference": "c01a815cb976c9255e045fc3bcc3f5fcf477e0bc",
"url": "https://api.github.com/repos/utopia-php/http/zipball/5112b1023342163e3fbedec99f38fc32c8700aa0",
"reference": "5112b1023342163e3fbedec99f38fc32c8700aa0",
"shasum": ""
},
"require": {
@@ -3983,9 +3995,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/http/issues",
"source": "https://github.com/utopia-php/http/tree/0.33.22"
"source": "https://github.com/utopia-php/http/tree/0.33.24"
},
"time": "2025-08-26T10:29:50+00:00"
"time": "2025-09-04T04:18:39+00:00"
},
{
"name": "utopia-php/image",
@@ -4296,16 +4308,16 @@
},
{
"name": "utopia-php/platform",
"version": "0.7.8",
"version": "0.7.11",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/platform.git",
"reference": "e3a4536c46f10988b1a446ec6b8dd8a9914be854"
"reference": "f3341d1ef82e0b0f9d5f2c61829c947d86f8c850"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/platform/zipball/e3a4536c46f10988b1a446ec6b8dd8a9914be854",
"reference": "e3a4536c46f10988b1a446ec6b8dd8a9914be854",
"url": "https://api.github.com/repos/utopia-php/platform/zipball/f3341d1ef82e0b0f9d5f2c61829c947d86f8c850",
"reference": "f3341d1ef82e0b0f9d5f2c61829c947d86f8c850",
"shasum": ""
},
"require": {
@@ -4314,7 +4326,7 @@
"php": ">=8.0",
"utopia-php/cli": "0.15.*",
"utopia-php/framework": "0.33.*",
"utopia-php/queue": "0.11.*"
"utopia-php/queue": "^0.12.0"
},
"require-dev": {
"laravel/pint": "1.*",
@@ -4340,9 +4352,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/platform/issues",
"source": "https://github.com/utopia-php/platform/tree/0.7.8"
"source": "https://github.com/utopia-php/platform/tree/0.7.11"
},
"time": "2025-05-30T10:05:43+00:00"
"time": "2025-09-04T04:38:38+00:00"
},
{
"name": "utopia-php/pools",
@@ -4451,21 +4463,21 @@
},
{
"name": "utopia-php/queue",
"version": "0.11.0",
"version": "0.12.0",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/queue.git",
"reference": "06b5ced0eaed2ecc6aab6d8e1b4d96bff37a1ce5"
"reference": "3a7603ee712c592bfc54af4a76f0426c428b5574"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/queue/zipball/06b5ced0eaed2ecc6aab6d8e1b4d96bff37a1ce5",
"reference": "06b5ced0eaed2ecc6aab6d8e1b4d96bff37a1ce5",
"url": "https://api.github.com/repos/utopia-php/queue/zipball/3a7603ee712c592bfc54af4a76f0426c428b5574",
"reference": "3a7603ee712c592bfc54af4a76f0426c428b5574",
"shasum": ""
},
"require": {
"appwrite-labs/php-amqplib": "^0.1",
"php": ">=8.3",
"php-amqplib/php-amqplib": "^3.7",
"utopia-php/cli": "0.15.*",
"utopia-php/fetch": "0.4.*",
"utopia-php/framework": "0.33.*",
@@ -4511,9 +4523,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/queue/issues",
"source": "https://github.com/utopia-php/queue/tree/0.11.0"
"source": "https://github.com/utopia-php/queue/tree/0.12.0"
},
"time": "2025-05-30T09:52:38+00:00"
"time": "2025-06-24T18:58:38+00:00"
},
{
"name": "utopia-php/registry",
@@ -5007,16 +5019,16 @@
"packages-dev": [
{
"name": "appwrite/sdk-generator",
"version": "1.1.15",
"version": "1.1.16",
"source": {
"type": "git",
"url": "https://github.com/appwrite/sdk-generator.git",
"reference": "8e8e39634ba7558704522959d88f3542563a5444"
"reference": "f8fbc4b1ba0e918825338f50cbdea4d887389c41"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/8e8e39634ba7558704522959d88f3542563a5444",
"reference": "8e8e39634ba7558704522959d88f3542563a5444",
"url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/f8fbc4b1ba0e918825338f50cbdea4d887389c41",
"reference": "f8fbc4b1ba0e918825338f50cbdea4d887389c41",
"shasum": ""
},
"require": {
@@ -5052,9 +5064,9 @@
"description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms",
"support": {
"issues": "https://github.com/appwrite/sdk-generator/issues",
"source": "https://github.com/appwrite/sdk-generator/tree/1.1.15"
"source": "https://github.com/appwrite/sdk-generator/tree/1.1.16"
},
"time": "2025-08-27T04:59:35+00:00"
"time": "2025-09-03T06:50:04+00:00"
},
{
"name": "doctrine/annotations",
@@ -116,7 +116,7 @@ class Create extends Action
->param('databaseId', '', new UID(), 'Database ID.')
->param('documentId', '', new CustomId(), 'Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.', true)
->param('collectionId', '', new UID(), 'Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection). Make sure to define attributes before creating documents.')
->param('data', [], new JSON(), 'Document data as JSON object.', true)
->param('data', [], new JSON(), 'Document data as JSON object.', true, example: '{"username":"john.doe","email":"john.doe@example.com","fullName":"John Doe","age":30,"isAdmin":false}')
->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).', true)
->param('documents', [], fn (array $plan) => new ArrayList(new JSON(), $plan['databasesBatchSize'] ?? APP_LIMIT_DATABASE_BATCH), 'Array of documents data as JSON objects.', true, ['plan'])
->inject('response')
@@ -433,7 +433,10 @@ class OpenAPI3 extends Format
case 'Utopia\Validator\Assoc':
$param['default'] = (empty($param['default'])) ? new \stdClass() : $param['default'];
$node['schema']['type'] = 'object';
$node['schema']['x-example'] = '{}';
$example = $param['example'] ?? '{}';
$decodedExample = json_decode($example, true);
$node['schema']['x-example'] = json_last_error() === JSON_ERROR_NONE ? $decodedExample : $example;
break;
case 'Utopia\Storage\Validator\File':
$consumes = ['multipart/form-data'];
@@ -467,7 +467,10 @@ class Swagger2 extends Format
case 'Utopia\Validator\Assoc':
$node['type'] = 'object';
$node['default'] = (empty($param['default'])) ? new \stdClass() : $param['default'];
$node['x-example'] = '{}';
$example = $param['example'] ?? '{}';
$decodedExample = json_decode($example, true);
$node['schema']['x-example'] = json_last_error() === JSON_ERROR_NONE ? $decodedExample : $example;
break;
case 'Utopia\Storage\Validator\File':
$consumes = ['multipart/form-data'];