# Schemas ## List all uploaded schemas `client.schemaValidation.schemas.list(SchemaListParamsparams, RequestOptionsoptions?): V4PagePaginationArray` **get** `/zones/{zone_id}/schema_validation/schemas` Lists all OpenAPI schemas uploaded to API Shield with pagination support. ### Parameters - `params: SchemaListParams` - `zone_id: string` Path param: Identifier. - `omit_source?: boolean` Query param: Omit the source-files of schemas and only retrieve their meta-data. - `page?: number` Query param: Page number of paginated results. - `per_page?: number` Query param: Maximum number of results per page. - `validation_enabled?: boolean` Query param: Filter for enabled schemas ### Returns - `PublicSchema` A schema used in schema validation - `created_at: string` - `kind: "openapi_v3"` The kind of the schema - `"openapi_v3"` - `name: string` A human-readable name for the schema - `schema_id: string` A unique identifier of this schema - `source: string` The raw schema, e.g., the OpenAPI schema, either as JSON or YAML - `validation_enabled?: boolean` An indicator if this schema is enabled ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); // Automatically fetches more pages as needed. for await (const publicSchema of client.schemaValidation.schemas.list({ zone_id: '023e105f4ecef8ad9ca31a8372d0c353', })) { console.log(publicSchema.schema_id); } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": [ { "created_at": "2014-01-01T05:20:00.12345Z", "kind": "openapi_v3", "name": "petstore schema", "schema_id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "source": "", "validation_enabled": true } ], "success": true, "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000, "total_pages": 100 } } ``` ## Get details of a schema `client.schemaValidation.schemas.get(stringschemaId, SchemaGetParamsparams, RequestOptionsoptions?): PublicSchema` **get** `/zones/{zone_id}/schema_validation/schemas/{schema_id}` Gets the contents and metadata of a specific OpenAPI schema uploaded to API Shield. ### Parameters - `schemaId: string` UUID. - `params: SchemaGetParams` - `zone_id: string` Path param: Identifier. - `omit_source?: boolean` Query param: Omit the source-files of schemas and only retrieve their meta-data. ### Returns - `PublicSchema` A schema used in schema validation - `created_at: string` - `kind: "openapi_v3"` The kind of the schema - `"openapi_v3"` - `name: string` A human-readable name for the schema - `schema_id: string` A unique identifier of this schema - `source: string` The raw schema, e.g., the OpenAPI schema, either as JSON or YAML - `validation_enabled?: boolean` An indicator if this schema is enabled ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const publicSchema = await client.schemaValidation.schemas.get( 'f174e90a-fafe-4643-bbbc-4a0ed4fc8415', { zone_id: '023e105f4ecef8ad9ca31a8372d0c353' }, ); console.log(publicSchema.schema_id); ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "created_at": "2014-01-01T05:20:00.12345Z", "kind": "openapi_v3", "name": "petstore schema", "schema_id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "source": "", "validation_enabled": true }, "success": true } ``` ## Upload a schema `client.schemaValidation.schemas.create(SchemaCreateParamsparams, RequestOptionsoptions?): PublicSchema` **post** `/zones/{zone_id}/schema_validation/schemas` Uploads a new OpenAPI schema for API Shield schema validation. The schema defines expected request/response formats for API endpoints. ### Parameters - `params: SchemaCreateParams` - `zone_id: string` Path param: Identifier. - `kind: "openapi_v3"` Body param: The kind of the schema - `"openapi_v3"` - `name: string` Body param: A human-readable name for the schema - `source: string` Body param: The raw schema, e.g., the OpenAPI schema, either as JSON or YAML - `validation_enabled: boolean` Body param: An indicator if this schema is enabled ### Returns - `PublicSchema` A schema used in schema validation - `created_at: string` - `kind: "openapi_v3"` The kind of the schema - `"openapi_v3"` - `name: string` A human-readable name for the schema - `schema_id: string` A unique identifier of this schema - `source: string` The raw schema, e.g., the OpenAPI schema, either as JSON or YAML - `validation_enabled?: boolean` An indicator if this schema is enabled ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const publicSchema = await client.schemaValidation.schemas.create({ zone_id: '023e105f4ecef8ad9ca31a8372d0c353', kind: 'openapi_v3', name: 'petstore schema', source: '', validation_enabled: true, }); console.log(publicSchema.schema_id); ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "locations": [ ".paths[\"/user/{username}\"].put" ], "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "locations": [ ".paths[\"/user/{username}\"].put" ], "pointer": "pointer" } } ], "result": { "created_at": "2014-01-01T05:20:00.12345Z", "kind": "openapi_v3", "name": "petstore schema", "schema_id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "source": "", "validation_enabled": true }, "success": true } ``` ## Edit details of a schema to enable validation `client.schemaValidation.schemas.edit(stringschemaId, SchemaEditParamsparams, RequestOptionsoptions?): PublicSchema` **patch** `/zones/{zone_id}/schema_validation/schemas/{schema_id}` Modifies an existing OpenAPI schema in API Shield, updating the validation rules for associated API operations. ### Parameters - `schemaId: string` UUID. - `params: SchemaEditParams` - `zone_id: string` Path param: Identifier. - `validation_enabled?: boolean` Body param: Flag whether schema is enabled for validation. ### Returns - `PublicSchema` A schema used in schema validation - `created_at: string` - `kind: "openapi_v3"` The kind of the schema - `"openapi_v3"` - `name: string` A human-readable name for the schema - `schema_id: string` A unique identifier of this schema - `source: string` The raw schema, e.g., the OpenAPI schema, either as JSON or YAML - `validation_enabled?: boolean` An indicator if this schema is enabled ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const publicSchema = await client.schemaValidation.schemas.edit( 'f174e90a-fafe-4643-bbbc-4a0ed4fc8415', { zone_id: '023e105f4ecef8ad9ca31a8372d0c353' }, ); console.log(publicSchema.schema_id); ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "created_at": "2014-01-01T05:20:00.12345Z", "kind": "openapi_v3", "name": "petstore schema", "schema_id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "source": "", "validation_enabled": true }, "success": true } ``` ## Delete a schema `client.schemaValidation.schemas.delete(stringschemaId, SchemaDeleteParamsparams, RequestOptionsoptions?): SchemaDeleteResponse` **delete** `/zones/{zone_id}/schema_validation/schemas/{schema_id}` Permanently removes an uploaded OpenAPI schema from API Shield. Operations using this schema will lose their validation rules. ### Parameters - `schemaId: string` UUID. - `params: SchemaDeleteParams` - `zone_id: string` Identifier. ### Returns - `SchemaDeleteResponse` - `id: string` The ID of the schema that was just deleted ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const schema = await client.schemaValidation.schemas.delete( 'f174e90a-fafe-4643-bbbc-4a0ed4fc8415', { zone_id: '023e105f4ecef8ad9ca31a8372d0c353' }, ); console.log(schema.id); ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" }, "success": true } ``` ## Domain Types ### Public Schema - `PublicSchema` A schema used in schema validation - `created_at: string` - `kind: "openapi_v3"` The kind of the schema - `"openapi_v3"` - `name: string` A human-readable name for the schema - `schema_id: string` A unique identifier of this schema - `source: string` The raw schema, e.g., the OpenAPI schema, either as JSON or YAML - `validation_enabled?: boolean` An indicator if this schema is enabled ### Schema Delete Response - `SchemaDeleteResponse` - `id: string` The ID of the schema that was just deleted