{
	"components": {
		"examples": {},
		"headers": {},
		"parameters": {},
		"requestBodies": {},
		"responses": {},
		"schemas": {
			"ApiKeyPayload": {
				"properties": {
					"apiKey": {
						"type": "string",
						"description": "Make sure to store the key in a safe place.\nYou won't be able to see it again."
					}
				},
				"required": [
					"apiKey"
				],
				"type": "object"
			},
			"GenerateApiKeyInput": {
				"properties": {
					"username": {
						"type": "string"
					}
				},
				"required": [
					"username"
				],
				"type": "object"
			},
			"CreateProductPayload": {
				"properties": {
					"status": {
						"type": "string"
					}
				},
				"required": [
					"status"
				],
				"type": "object"
			},
			"CreateProductInput": {
				"properties": {
					"productIds": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"googleShoppingUrl": {
						"type": "string"
					},
					"retailerUrls": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"ingestionId": {
						"type": "string"
					}
				},
				"type": "object"
			},
			"GoogleProductsPayload": {
				"properties": {
					"status": {
						"type": "string"
					}
				},
				"required": [
					"status"
				],
				"type": "object"
			},
			"RawGoogleShoppingOffersDataV1": {
				"properties": {
					"offers": {
						"items": {
							"properties": {
								"price": {
									"type": "number",
									"format": "double"
								},
								"url": {
									"type": "string"
								}
							},
							"required": [
								"price",
								"url"
							],
							"type": "object"
						},
						"type": "array"
					},
					"description": {
						"type": "string"
					}
				},
				"required": [
					"offers"
				],
				"type": "object"
			},
			"GoogleProductsInput": {
				"properties": {
					"productIds": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"data": {
						"$ref": "#/components/schemas/RawGoogleShoppingOffersDataV1"
					},
					"shoppingId": {
						"type": "string"
					},
					"ingestionID": {
						"type": "string"
					}
				},
				"required": [
					"data",
					"shoppingId"
				],
				"type": "object"
			},
			"AddJobPayload": {
				"properties": {
					"id": {
						"type": "string"
					}
				},
				"required": [
					"id"
				],
				"type": "object"
			},
			"JobKind": {
				"description": "All possible job types that this system processes. Prefer suffixing with a\nnumber, representing typed-data version.",
				"enum": [
					"BULK_FETCH_LATEST_PAGE_1",
					"QUEUE_PAGES_NEEDING_UPDATES_1",
					"QUEUE_PRODUCTS_NEEDING_UPDATES_1",
					"UPDATE_GOOGLE_SHOPPING_OFFERS_PRICE_1",
					"FETCH_RETAILER_INFO_1",
					"FETCH_GOOGLE_SHOPPING_INFO_1"
				],
				"type": "string"
			},
			"AddJobInput": {
				"properties": {
					"data": {},
					"kind": {
						"$ref": "#/components/schemas/JobKind"
					}
				},
				"required": [
					"data",
					"kind"
				],
				"type": "object"
			},
			"RawRetailerPayload": {
				"properties": {
					"message": {
						"type": "string"
					},
					"status": {
						"type": "string",
						"enum": [
							"success",
							"failure"
						]
					}
				},
				"required": [
					"status"
				],
				"type": "object"
			},
			"RawRetailerDataV1": {
				"properties": {
					"category": {
						"type": "string"
					},
					"url": {
						"type": "string"
					},
					"imageUrls": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"distributorSKU": {
						"type": "string"
					},
					"distributor": {
						"type": "string"
					},
					"isAvailable": {
						"type": "boolean"
					},
					"price": {
						"type": "number",
						"format": "double"
					},
					"name": {
						"type": "string"
					},
					"description": {
						"type": "string"
					},
					"annotations": {
						"type": "string"
					},
					"colorCode": {
						"type": "string"
					},
					"dimensions": {
						"type": "string"
					},
					"asin": {
						"type": "string"
					},
					"id": {
						"type": "string"
					}
				},
				"required": [
					"url",
					"price"
				],
				"type": "object"
			},
			"RawRetailerInput": {
				"properties": {
					"data": {
						"items": {
							"$ref": "#/components/schemas/RawRetailerDataV1"
						},
						"type": "array"
					},
					"productIds": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"ingestionID": {
						"type": "string"
					}
				},
				"required": [
					"data"
				],
				"type": "object"
			}
		},
		"securitySchemes": {
			"basic": {
				"scheme": "basic",
				"type": "http"
			}
		}
	},
	"info": {
		"title": "Spoken API",
		"version": "0.1.0",
		"contact": {}
	},
	"openapi": "3.0.0",
	"paths": {
		"/api-keys": {
			"post": {
				"operationId": "GenerateApiKey",
				"responses": {
					"201": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ApiKeyPayload"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"properties": {
										"reason": {
											"type": "string"
										}
									},
									"required": [
										"reason"
									],
									"type": "object"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"properties": {
										"reason": {
											"type": "string"
										}
									},
									"required": [
										"reason"
									],
									"type": "object"
								}
							}
						}
					}
				},
				"security": [
					{
						"basic": [
							"ADMIN"
						]
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/GenerateApiKeyInput"
							}
						}
					}
				}
			}
		},
		"/api-keys/{username}": {
			"delete": {
				"operationId": "RevokeApiKey",
				"responses": {
					"204": {
						"description": ""
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"properties": {
										"reason": {
											"type": "string"
										}
									},
									"required": [
										"reason"
									],
									"type": "object"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"properties": {
										"reason": {
											"type": "string"
										}
									},
									"required": [
										"reason"
									],
									"type": "object"
								}
							}
						}
					}
				},
				"security": [
					{
						"basic": [
							"ADMIN"
						]
					}
				],
				"parameters": [
					{
						"in": "path",
						"name": "username",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				]
			}
		},
		"/aggregate-products": {
			"post": {
				"operationId": "CreateAggregateProduct",
				"responses": {
					"201": {
						"description": "Created",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CreateProductPayload"
								}
							}
						}
					},
					"422": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"properties": {
										"reason": {
											"type": "string"
										}
									},
									"required": [
										"reason"
									],
									"type": "object"
								}
							}
						}
					}
				},
				"security": [
					{
						"basic": [
							"ADMIN"
						]
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/CreateProductInput"
							}
						}
					}
				}
			}
		},
		"/aggregate-products/batch": {
			"post": {
				"operationId": "BatchCreateAggregateProducts",
				"responses": {
					"201": {
						"description": "Created",
						"content": {
							"application/json": {
								"schema": {
									"items": {
										"$ref": "#/components/schemas/CreateProductPayload"
									},
									"type": "array"
								}
							}
						}
					},
					"422": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"properties": {
										"reasons": {
											"items": {
												"type": "string"
											},
											"type": "array"
										}
									},
									"required": [
										"reasons"
									],
									"type": "object"
								}
							}
						}
					}
				},
				"security": [
					{
						"basic": [
							"ADMIN"
						]
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"items": {
									"$ref": "#/components/schemas/CreateProductInput"
								},
								"type": "array"
							}
						}
					}
				}
			}
		},
		"/google-products": {
			"post": {
				"operationId": "GoogleProducts",
				"responses": {
					"201": {
						"description": "Created",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/GoogleProductsPayload"
								}
							}
						}
					}
				},
				"security": [
					{
						"basic": [
							"ADMIN"
						]
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/GoogleProductsInput"
							}
						}
					}
				}
			}
		},
		"/jobqueue": {
			"post": {
				"operationId": "JobQueues",
				"responses": {
					"200": {
						"description": "Ok",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/AddJobPayload"
								}
							}
						}
					}
				},
				"security": [],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/AddJobInput"
							}
						}
					}
				}
			}
		},
		"/raw-retailers": {
			"post": {
				"operationId": "RawRetailers",
				"responses": {
					"201": {
						"description": "Created",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/RawRetailerPayload"
								}
							}
						}
					},
					"422": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"properties": {
										"reason": {
											"type": "string"
										}
									},
									"required": [
										"reason"
									],
									"type": "object"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"properties": {
										"reason": {
											"type": "string"
										}
									},
									"required": [
										"reason"
									],
									"type": "object"
								}
							}
						}
					}
				},
				"security": [
					{
						"basic": [
							"ADMIN"
						]
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/RawRetailerInput"
							}
						}
					}
				}
			}
		}
	},
	"servers": [
		{
			"url": "/v3"
		}
	]
}