Skip to content

Instantly share code, notes, and snippets.

@msavy msavy/headless.schema.json
Last active Jul 13, 2017

Embed
What would you like to do?
{
"type": "object",
"properties": {
"apis": {
"title": "APIs",
"type": "array",
"items": {
"type": "object",
"title": "API",
"required": ["organizationId", "apiId", "version", "endpoint", "endpointType", "endpointContentType"],
"properties": {
"publicApi": {
"title": "Public API",
"type": "boolean",
"default": false
},
"organizationId": {
"title": "Organization identifier",
"type": "string",
"minLength": 1
},
"apiId": {
"title": "API identifier",
"type": "string",
"minLength": 1
},
"version": {
"title": "Version identifier",
"type": "string",
"minLength": 1
},
"endpoint": {
"title": "Endpoint URI",
"type": "string",
"minLength": 1
},
"endpointType": {
"title": "Endpoint type",
"enum": ["rest", "soap"],
"minLength": 1
},
"endpointContentType": {
"title": "Endpoint Content Type",
"description": "Gateway's content type when responding with errors/failures.",
"enum": ["json", "xml"]
},
"endpointProperties": {
"title": "Endpoint properties",
"type": "object",
"patternProperties": {
".{1,}": { "type": "string" }
}
},
"parsePayload": {
"title": "Parse payload",
"description": "Parse whole payload upfront (reduces performance).",
"type": "boolean",
"default": false
},
"apiPolicies": { "$ref": "#/definitions/policies" }
}
}
},
"clients": {
"title": "Clients",
"type": "array",
"required": ["organizationId", "clientId", "version", "apiKey"],
"items": {
"type": "object",
"title": "Client",
"properties": {
"organizationId": {
"title": "Organization identifier",
"type": "string",
"minLength": 1
},
"clientId": {
"title": "Client identifier",
"type": "string",
"minLength": 1
},
"version": {
"title": "Version identifier",
"type": "string",
"minLength": 1
},
"apiKey": {
"title": "API Key",
"type": "string",
"minLength": 1
},
"contracts": {
"title": "Contracts",
"type": "array",
"required": ["apiOrgId", "apiId", "apiVersion", "plan"],
"items": {
"title": "Contract",
"type": "object",
"properties": {
"apiOrgId": {
"title": "API Organization ID",
"description": "Organization of API chosen. Must map to a valid API Organization ID.",
"type": "string",
"minLength": 1
},
"apiId": {
"title": "API ID",
"description": "API chosen. Must map to a valid API ID.",
"type": "string",
"minLength": 1
},
"apiVersion": {
"title": "API Version",
"description": "Version of API chosen. Must map to a valid API Version.",
"type": "string",
"minLength": 1
},
"plan": {
"title": "Plan Name",
"description": "Name of plan.",
"type": "string",
"minLength": 1
},
"policies": { "$ref": "#/definitions/policies" }
}
}
}
}
}
}
},
"definitions": {
"policies": {
"title": "Policies",
"type": "array",
"items": {
"title": "Policy",
"type": "object",
"required": ["policyJsonConfig", "policyImpl"],
"properties": {
"policyJsonConfig": {
"title": "Policy JSON config",
"description": "The policy's escaped/serialised configuration.",
"type": "string",
"minLength": 1
},
"policyImpl": {
"title": "Policy implementation.",
"description": "Policy implementation coordinates",
"type": "string",
"minLength": 1,
"pattern": "^(class:.+)|(plugin:(.+?):(.+?):(.+?):war\\/.+)$"
}
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.