# Schemas ## List all uploaded schemas `schema_validation.schemas.list(SchemaListParams**kwargs) -> SyncV4PagePaginationArray[PublicSchema]` **get** `/zones/{zone_id}/schema_validation/schemas` Lists all OpenAPI schemas uploaded to API Shield with pagination support. ### Parameters - `zone_id: str` Identifier. - `omit_source: Optional[bool]` Omit the source-files of schemas and only retrieve their meta-data. - `page: Optional[int]` Page number of paginated results. - `per_page: Optional[int]` Maximum number of results per page. - `validation_enabled: Optional[bool]` Filter for enabled schemas ### Returns - `class PublicSchema: …` A schema used in schema validation - `created_at: datetime` - `kind: Literal["openapi_v3"]` The kind of the schema - `"openapi_v3"` - `name: str` A human-readable name for the schema - `schema_id: str` A unique identifier of this schema - `source: str` The raw schema, e.g., the OpenAPI schema, either as JSON or YAML - `validation_enabled: Optional[bool]` An indicator if this schema is enabled ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) page = client.schema_validation.schemas.list( zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) page = page.result[0] print(page.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 `schema_validation.schemas.get(strschema_id, SchemaGetParams**kwargs) -> 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 - `zone_id: str` Identifier. - `schema_id: str` UUID. - `omit_source: Optional[bool]` Omit the source-files of schemas and only retrieve their meta-data. ### Returns - `class PublicSchema: …` A schema used in schema validation - `created_at: datetime` - `kind: Literal["openapi_v3"]` The kind of the schema - `"openapi_v3"` - `name: str` A human-readable name for the schema - `schema_id: str` A unique identifier of this schema - `source: str` The raw schema, e.g., the OpenAPI schema, either as JSON or YAML - `validation_enabled: Optional[bool]` An indicator if this schema is enabled ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) public_schema = client.schema_validation.schemas.get( schema_id="f174e90a-fafe-4643-bbbc-4a0ed4fc8415", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(public_schema.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 `schema_validation.schemas.create(SchemaCreateParams**kwargs) -> 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 - `zone_id: str` Identifier. - `kind: Literal["openapi_v3"]` The kind of the schema - `"openapi_v3"` - `name: str` A human-readable name for the schema - `source: str` The raw schema, e.g., the OpenAPI schema, either as JSON or YAML - `validation_enabled: bool` An indicator if this schema is enabled ### Returns - `class PublicSchema: …` A schema used in schema validation - `created_at: datetime` - `kind: Literal["openapi_v3"]` The kind of the schema - `"openapi_v3"` - `name: str` A human-readable name for the schema - `schema_id: str` A unique identifier of this schema - `source: str` The raw schema, e.g., the OpenAPI schema, either as JSON or YAML - `validation_enabled: Optional[bool]` An indicator if this schema is enabled ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) public_schema = client.schema_validation.schemas.create( zone_id="023e105f4ecef8ad9ca31a8372d0c353", kind="openapi_v3", name="petstore schema", source="", validation_enabled=True, ) print(public_schema.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 `schema_validation.schemas.edit(strschema_id, SchemaEditParams**kwargs) -> 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 - `zone_id: str` Identifier. - `schema_id: str` UUID. - `validation_enabled: Optional[bool]` Flag whether schema is enabled for validation. ### Returns - `class PublicSchema: …` A schema used in schema validation - `created_at: datetime` - `kind: Literal["openapi_v3"]` The kind of the schema - `"openapi_v3"` - `name: str` A human-readable name for the schema - `schema_id: str` A unique identifier of this schema - `source: str` The raw schema, e.g., the OpenAPI schema, either as JSON or YAML - `validation_enabled: Optional[bool]` An indicator if this schema is enabled ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) public_schema = client.schema_validation.schemas.edit( schema_id="f174e90a-fafe-4643-bbbc-4a0ed4fc8415", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(public_schema.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 `schema_validation.schemas.delete(strschema_id, SchemaDeleteParams**kwargs) -> 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 - `zone_id: str` Identifier. - `schema_id: str` UUID. ### Returns - `class SchemaDeleteResponse: …` - `id: str` The ID of the schema that was just deleted ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) schema = client.schema_validation.schemas.delete( schema_id="f174e90a-fafe-4643-bbbc-4a0ed4fc8415", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(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 - `class PublicSchema: …` A schema used in schema validation - `created_at: datetime` - `kind: Literal["openapi_v3"]` The kind of the schema - `"openapi_v3"` - `name: str` A human-readable name for the schema - `schema_id: str` A unique identifier of this schema - `source: str` The raw schema, e.g., the OpenAPI schema, either as JSON or YAML - `validation_enabled: Optional[bool]` An indicator if this schema is enabled ### Schema Delete Response - `class SchemaDeleteResponse: …` - `id: str` The ID of the schema that was just deleted