From Zero to Search
Guides
API Reference
App Search API Clients
Self-Managed App Search
Resources
Schema
Alter the schema fields of your Engine.
Before you begin, familiarize yourself with the schema design principles within theAPI Overview.
Authentication
For authentication, theSchema endpoint requires...
- AHost Identifier:
[HOST_IDENTIFIER]
- The name of yourEngine:
[ENGINE]
- APrivate API Key:
[PRIVATE_API_KEY]
curl -X GET 'https://[HOST_IDENTIFIER].api.swiftype.com/api/as/v1/engines/[ENGINE]/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer [PRIVATE_API_KEY]'
List Schema
GET
request to return the whole schema.curl -X GET 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxx'
{ "description": "text", "nps_link": "text", "states": "text", "title": "text", "visitors": "number", "world_heritage_site": "text", "location": "geolocation", "acres": "number", "date_established": "date", "square_km": "number"}
GET
request to return the whole schema.curl -X GET 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxx'
{ "description": "text", "nps_link": "text", "states": "text", "title": "text", "visitors": "number", "world_heritage_site": "text", "location": "geolocation", "acres": "number", "date_established": "date", "square_km": "number"}
GET
request to return the whole schema.curl -X GET 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxx'
{ "description": "text", "nps_link": "text", "states": "text", "title": "text", "visitors": "number", "world_heritage_site": "text", "location": "geolocation", "acres": "number", "date_established": "date", "square_km": "number"}
GET
request to return the whole schema.curl -X GET 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxx'
{ "description": "text", "nps_link": "text", "states": "text", "title": "text", "visitors": "number", "world_heritage_site": "text", "location": "geolocation", "acres": "number", "date_established": "date", "square_km": "number"}
GET
request to return the whole schema.curl -X GET 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxx'
{ "description": "text", "nps_link": "text", "states": "text", "title": "text", "visitors": "number", "world_heritage_site": "text", "location": "geolocation", "acres": "number", "date_established": "date", "square_km": "number"}
GET
request to return the whole schema.curl -X GET 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxx'
{ "description": "text", "nps_link": "text", "states": "text", "title": "text", "visitors": "number", "world_heritage_site": "text", "location": "geolocation", "acres": "number", "date_established": "date", "square_km": "number"}
Update Schema
When updating a Schema, you can either...
Updates an Existing Schema
POST
request that changes thesquare_km
field fromnumber totext.curl -X POST 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxx' \-d '{ "square_km": "text"}'
{ "description": "text", "nps_link": "text", "states": "text", "title": "text", "visitors": "number", "world_heritage_site": "text", "location": "geolocation", "acres": "number", "date_established": "date", "square_km": "text"}
POST
request that changes thesquare_km
field fromnumber totext.curl -X POST 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxx' \-d '{ "square_km": "text"}'
{ "description": "text", "nps_link": "text", "states": "text", "title": "text", "visitors": "number", "world_heritage_site": "text", "location": "geolocation", "acres": "number", "date_established": "date", "square_km": "text"}
POST
request that changes thesquare_km
field fromnumber totext.curl -X POST 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxx' \-d '{ "square_km": "text"}'
{ "description": "text", "nps_link": "text", "states": "text", "title": "text", "visitors": "number", "world_heritage_site": "text", "location": "geolocation", "acres": "number", "date_established": "date", "square_km": "text"}
POST
request that changes thesquare_km
field fromnumber totext.curl -X POST 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxx' \-d '{ "square_km": "text"}'
{ "description": "text", "nps_link": "text", "states": "text", "title": "text", "visitors": "number", "world_heritage_site": "text", "location": "geolocation", "acres": "number", "date_established": "date", "square_km": "text"}
POST
request that changes thesquare_km
field fromnumber totext.curl -X POST 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxx' \-d '{ "square_km": "text"}'
{ "description": "text", "nps_link": "text", "states": "text", "title": "text", "visitors": "number", "world_heritage_site": "text", "location": "geolocation", "acres": "number", "date_established": "date", "square_km": "text"}
POST
request that changes thesquare_km
field fromnumber totext.curl -X POST 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxx' \-d '{ "square_km": "text"}'
{ "description": "text", "nps_link": "text", "states": "text", "title": "text", "visitors": "number", "world_heritage_site": "text", "location": "geolocation", "acres": "number", "date_established": "date", "square_km": "text"}
Creates a new Schema Field
You may have up to64 fields.
Fields cannot be named: external_id, engine_id, highlight, or, and, not, any, all, none.
POST
request to add a newnumber field,square_mi
.curl -X POST 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxx' \-d '{ "square_mi": "number"}'
{ "description": "text", "nps_link": "text", "states": "text", "title": "text", "visitors": "number", "world_heritage_site": "text", "location": "geolocation", "acres": "number", "date_established": "date", "square_km": "number", "square_mi": "number"}
POST
request to add a newnumber field,square_mi
.curl -X POST 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxx' \-d '{ "square_mi": "number"}'
{ "description": "text", "nps_link": "text", "states": "text", "title": "text", "visitors": "number", "world_heritage_site": "text", "location": "geolocation", "acres": "number", "date_established": "date", "square_km": "number", "square_mi": "number"}
POST
request to add a newnumber field,square_mi
.curl -X POST 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxx' \-d '{ "square_mi": "number"}'
{ "description": "text", "nps_link": "text", "states": "text", "title": "text", "visitors": "number", "world_heritage_site": "text", "location": "geolocation", "acres": "number", "date_established": "date", "square_km": "number", "square_mi": "number"}
POST
request to add a newnumber field,square_mi
.curl -X POST 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxx' \-d '{ "square_mi": "number"}'
{ "description": "text", "nps_link": "text", "states": "text", "title": "text", "visitors": "number", "world_heritage_site": "text", "location": "geolocation", "acres": "number", "date_established": "date", "square_km": "number", "square_mi": "number"}
POST
request to add a newnumber field,square_mi
.curl -X POST 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxx' \-d '{ "square_mi": "number"}'
{ "description": "text", "nps_link": "text", "states": "text", "title": "text", "visitors": "number", "world_heritage_site": "text", "location": "geolocation", "acres": "number", "date_established": "date", "square_km": "number", "square_mi": "number"}
POST
request to add a newnumber field,square_mi
.curl -X POST 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/national-parks-demo/schema' \-H 'Content-Type: application/json' \-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxx' \-d '{ "square_mi": "number"}'
{ "description": "text", "nps_link": "text", "states": "text", "title": "text", "visitors": "number", "world_heritage_site": "text", "location": "geolocation", "acres": "number", "date_established": "date", "square_km": "number", "square_mi": "number"}
Errors
If one field fails validation then the entire set will fail.
Name indicates the name of the field. Type indicates the type of the field.
400 Error Message | Solution |
"Type is not included in the list" | The allowed types are:text,number,date,geolocation". Ensure that no spaces are included and only one of the four types is present. Watch out forinteger, which will not work - expectsnumber. |
"Engine is reindexing." | You may proceed with Schema changes once reindexing is complete. Time varies based on size of Engine. |
"Name cannot contain whitespace" | Can not contain any whitespace characters like'my field' |
"Name cannot have a leading underscore" | Can not start with a leading underscore like'_myfield' . |
"Name cannot contain more than 64 characters" | Very long field names are not allowed. |
"Name cannot be a reserved field (external_id, engine_id, highlight, or, and, not, any, all, none)" | These field names are reserved for your safety :). For example, trying to define an'all' filter for a field called'all' would be very difficult to understand. |
"Name can only contain lowercase letters, numbers, and underscores" | No dashes, capitals, strange characters or other such silliness! |
"Name must contain a lowercase letter" | You can not have a field withonly capital letters. |
"Name must be unique" | Each field name must be unique. |
What's Next?
TheSchema endpoint is how you adjust your foundational data model. Now that you know how to make Schema changes via the API, you may be interested in exploring deeper intoIndexing Documents. Alternatively, you may be into some of the deeper analytics presented byCurations andClickthrough.
Stuck? Looking for help?Contact support or check out theApp Search community forum!