Skip to main content

Schemas

Schemas is a resource that works with topics by validating the published messages.

[GET] Manage Schemas - Retrieve a Schema​

This request retrieves a specific schema under the given project

Request​

GET "/v1/projects/{project_name}/schemas/{schema_name}"

Where​

  • project_name: Name of the project in which the schema will belong
  • schema_name: Name of the schema to be created

Example request​

curl -X GET -H "Content-Type: application/json" -H "x-api-key: S3CR3T"
"https://{URL}/v1/projects/project-1/schemas/schema-1"

Responses​

If successful, the response contains the requested schema.

Success Response 200 OK

{
"uuid": "50811bd1-c94c-4ad7-8f55-a561c6270b50",
"name": "projects/project-1/schemas/schema-1",
"type": "json",
"schema": {
"properties": {
"address": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
},
"telephone": {
"type": "string"
}
},
"required": [
"name",
"email"
],
"type": "object"
}
}

Errors​

Please refer to section Errors to see all possible Errors

[GET] Manage Schemas - Retrieve All Schemas​

This request retrieves all schemas under the given project.

Request​

GET "/v1/projects/{project_name}/schemas"

Where​

  • project_name: Name of the project in which the schema will belong

Example request​

curl -X GET -H "Content-Type: application/json" -H "x-api-key: S3CR3T"
"https://{URL}/v1/projects/project-1/schemas"

Responses​

If successful, the response contains all the schemas of the given project.

Success Response 200 OK

{
"schemas": [
{
"uuid": "50811bd1-c94c-4ad7-8f55-a561c6270b50",
"name": "projects/project-1/schemas/schema-1",
"type": "json",
"schema": {
"properties": {
"address": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
},
"telephone": {
"type": "string"
}
},
"required": [
"name",
"email"
],
"type": "object"
}
},
{
"uuid": "50811bd1-c94c-4ad7-8f55-a561c6270b55",
"name": "projects/project-1/schemas/schema-2",
"type": "json",
"schema": {
"properties": {
"address": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
},
"telephone": {
"type": "string"
}
},
"required": [
"name",
"email"
],
"type": "object"
}
}
]
}

Errors​

Please refer to section Errors to see all possible Errors

[POST] Manage Schemas - Create new Schema​

This request creates a new schema

Supported Schema Types​

JSON, AVRO

Request​

POST "/v1/projects/{project_name}/schemas/{schema_name}"

Where​

  • project_name: Name of the project in which the schema will belong
  • schema_name: Name of the schema to be created

Example request​

curl -X POST -H "Content-Type: application/json -d $POSTDATA"
" https://{URL}/v1/projects/project-1/schemas/schema-1"

Post body:​

{
"type": "json",
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"address": {
"type": "string"
},
"telephone": {
"type": "string"
}
},
"required": [
"name",
"email"
]
}
}

Responses​

If successful, the response contains the newly created schema.

Success Response 200 OK

{
"uuid": "50811bd1-c94c-4ad7-8f55-a561c6270b50",
"name": "projects/project-1/schemas/schema-1",
"type": "json",
"schema": {
"properties": {
"address": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
},
"telephone": {
"type": "string"
}
},
"required": [
"name",
"email"
],
"type": "object"
}
}

Errors​

Please refer to section Errors to see all possible Errors

[PUT] Manage Schemas - Update Schema​

This request updates the contents of a schema. You can update one or all of the fields at a time.

Request​

PUT "/v1/projects/{project_name}/schemas/{schema_name}"

Where​

  • project_name: Name of the project under which the schema belongs
  • schema_name: Name of the schema to be updated

Example request​

curl -X PUT -H "Content-Type: application/json -d $POSTDATA"
"https://{URL}/v1/projects/project-1/schemas/schema-1"

Post body:​

{
"type": "json",
"name": "projects/project-1/schemas/new-name",
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"address": {
"type": "string"
},
"telephone": {
"type": "string"
}
},
"required": [
"name",
"email",
"address"
]
}
}

Responses​

If successful, the response contains the updated schema.

Success Response 200 OK

{
"uuid": "50811bd1-c94c-4ad7-8f55-a561c6270b50",
"name": "projects/project-1/schemas/new-name",
"type": "json",
"schema": {
"properties": {
"address": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
},
"telephone": {
"type": "string"
}
},
"required": [
"name",
"email",
"address"
],
"type": "object"
}
}

Errors​

Please refer to section Errors to see all possible Errors

[DELETE] Manage Schemas - Delete Schema​

This request deletes a schema.

Request​

DELETE "/v1/projects/{project_name}/schemas/{schema_name}"

Where​

  • project_name: Name of the project under which the schema belongs
  • schema_name: Name of the schema to be deleted

Example request​

curl -X DELETE -H "Content-Type: application/json" -H "x-api-key: S3CR3T"
"https://{URL}/v1/projects/project-1/schemas/schema-1"

Responses​

If successful, the response is empty.

Success Response 200 OK

Errors​

Please refer to section Errors to see all possible Errors

[POST] Manage Schemas - Validate Message​

This request is used whenever we want to test a message against a schema. The process to check that your schema and messages are working as expected is to create a new topic that needs to be associated with the schema, then create the message in base64 encoding and publish it to the topic. Instead of creating all this pipeline in order to check your schema and messages we can explicitly do it on this API call.

Request​

POST "/v1/projects/{project_name}/schemas/{schema_name}:validate"

Where​

  • project_name: Name of the project under which the schema belongs
  • schema_name: Name of the schema to be updated

Example request​

curl -X POST -H "Content-Type: application/json -d $POSTDATA"
"https://{URL}/v1/projects/project-1/schemas/schema-1:validate"

Post body:​

JSON Schema​

{
"name": "name1",
"email": "e1@example.com",
"address": "address1",
"telephone": "6980574421"
}

AVRO Schema​

When dealing with an AVRO Schema, the binary message needs to be encoded to base64 alongside its schema and sent via the data field which is required.

{
"data": "DGFnZWxvc8T8Cg=="
}

Responses​

Success Response 200 OK

{
"message": "Message validated successfully"
}

Errors​

Please refer to section Errors to see all possible Errors