{
  "openapi": "3.1.0",
  "info": {
    "title": "Voyant Operator API",
    "version": "0.0.0",
    "description": "Generated from the composed operator app. Do not edit by hand."
  },
  "servers": [
    {
      "url": "/",
      "description": "This deployment (same origin)"
    }
  ],
  "components": {
    "schemas": {
      "CatalogSearchFilter": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": ["eq"]
              },
              "field": {
                "type": "string",
                "minLength": 1
              },
              "value": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "number"
                  },
                  {
                    "type": "boolean"
                  }
                ]
              }
            },
            "required": ["kind", "field", "value"]
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": ["in"]
              },
              "field": {
                "type": "string",
                "minLength": 1
              },
              "values": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              }
            },
            "required": ["kind", "field", "values"]
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": ["range"]
              },
              "field": {
                "type": "string",
                "minLength": 1
              },
              "gte": {
                "type": "number"
              },
              "lte": {
                "type": "number"
              }
            },
            "required": ["kind", "field"]
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": ["and"]
              },
              "clauses": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CatalogSearchFilter"
                }
              }
            },
            "required": ["kind", "clauses"]
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": ["or"]
              },
              "clauses": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CatalogSearchFilter"
                }
              }
            },
            "required": ["kind", "clauses"]
          }
        ]
      }
    },
    "parameters": {}
  },
  "paths": {
    "/v1/public/storefront-verification/email/start": {
      "post": {
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email"
                  },
                  "purpose": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100,
                    "default": "contact_confirmation"
                  },
                  "locale": {
                    "type": ["string", "null"],
                    "minLength": 2,
                    "maxLength": 16
                  },
                  "metadata": {
                    "type": ["object", "null"],
                    "additionalProperties": {}
                  },
                  "subjectRef": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "nullable": true,
                    "description": "What this challenge authorizes beyond its purpose - the booking draft id for a self-service create. Bound at start so a verified challenge cannot be redirected at another draft."
                  }
                },
                "required": ["email"]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "An email verification challenge was started",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "channel": {
                          "type": "string",
                          "enum": ["email", "sms"]
                        },
                        "destination": {
                          "type": "string"
                        },
                        "purpose": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": ["pending", "verified", "expired", "failed", "cancelled"]
                        },
                        "expiresAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "verifiedAt": {
                          "type": ["string", "null"],
                          "format": "date-time"
                        },
                        "createdAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "updatedAt": {
                          "type": "string",
                          "format": "date-time"
                        }
                      },
                      "required": [
                        "id",
                        "channel",
                        "destination",
                        "purpose",
                        "status",
                        "expiresAt",
                        "verifiedAt",
                        "createdAt",
                        "updatedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "Malformed verification request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "429": {
            "description": "Too many verification attempts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "501": {
            "description": "Verification sender is not configured",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "postPublicStorefrontVerificationEmailStart",
        "summary": "POST /v1/public/storefront-verification/email/start",
        "tags": ["storefront-verification"],
        "x-voyant-module": "storefront-verification",
        "x-voyant-surface": "storefront",
        "x-voyant-api-id": "@voyant-travel/storefront#verification.api",
        "x-voyant-unit-id": "@voyant-travel/storefront#verification",
        "x-voyant-package-name": "@voyant-travel/storefront"
      }
    },
    "/v1/public/storefront-verification/sms/start": {
      "post": {
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "phone": {
                    "type": "string",
                    "minLength": 6,
                    "maxLength": 32
                  },
                  "purpose": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100,
                    "default": "contact_confirmation"
                  },
                  "locale": {
                    "type": ["string", "null"],
                    "minLength": 2,
                    "maxLength": 16
                  },
                  "metadata": {
                    "type": ["object", "null"],
                    "additionalProperties": {}
                  },
                  "subjectRef": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "nullable": true,
                    "description": "What this challenge authorizes beyond its purpose - the booking draft id for a self-service create. Bound at start so a verified challenge cannot be redirected at another draft."
                  }
                },
                "required": ["phone"]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "An SMS verification challenge was started",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "channel": {
                          "type": "string",
                          "enum": ["email", "sms"]
                        },
                        "destination": {
                          "type": "string"
                        },
                        "purpose": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": ["pending", "verified", "expired", "failed", "cancelled"]
                        },
                        "expiresAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "verifiedAt": {
                          "type": ["string", "null"],
                          "format": "date-time"
                        },
                        "createdAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "updatedAt": {
                          "type": "string",
                          "format": "date-time"
                        }
                      },
                      "required": [
                        "id",
                        "channel",
                        "destination",
                        "purpose",
                        "status",
                        "expiresAt",
                        "verifiedAt",
                        "createdAt",
                        "updatedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "Malformed verification request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "429": {
            "description": "Too many verification attempts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "501": {
            "description": "Verification sender is not configured",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "postPublicStorefrontVerificationSmsStart",
        "summary": "POST /v1/public/storefront-verification/sms/start",
        "tags": ["storefront-verification"],
        "x-voyant-module": "storefront-verification",
        "x-voyant-surface": "storefront",
        "x-voyant-api-id": "@voyant-travel/storefront#verification.api",
        "x-voyant-unit-id": "@voyant-travel/storefront#verification",
        "x-voyant-package-name": "@voyant-travel/storefront"
      }
    },
    "/v1/public/storefront-verification/email/confirm": {
      "post": {
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email"
                  },
                  "code": {
                    "type": "string",
                    "pattern": "^\\d{4,8}$"
                  },
                  "purpose": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100,
                    "default": "contact_confirmation"
                  }
                },
                "required": ["email", "code"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The email verification challenge was confirmed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "channel": {
                          "type": "string",
                          "enum": ["email", "sms"]
                        },
                        "destination": {
                          "type": "string"
                        },
                        "purpose": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": ["verified"]
                        },
                        "expiresAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "verifiedAt": {
                          "type": ["string", "null"],
                          "format": "date-time"
                        },
                        "createdAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "updatedAt": {
                          "type": "string",
                          "format": "date-time"
                        }
                      },
                      "required": [
                        "id",
                        "channel",
                        "destination",
                        "purpose",
                        "status",
                        "expiresAt",
                        "verifiedAt",
                        "createdAt",
                        "updatedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "Malformed verification request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "404": {
            "description": "Verification challenge not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "409": {
            "description": "Verification code is invalid or the attempt failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "410": {
            "description": "Verification challenge has expired",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "postPublicStorefrontVerificationEmailConfirm",
        "summary": "POST /v1/public/storefront-verification/email/confirm",
        "tags": ["storefront-verification"],
        "x-voyant-module": "storefront-verification",
        "x-voyant-surface": "storefront",
        "x-voyant-api-id": "@voyant-travel/storefront#verification.api",
        "x-voyant-unit-id": "@voyant-travel/storefront#verification",
        "x-voyant-package-name": "@voyant-travel/storefront"
      }
    },
    "/v1/public/storefront-verification/sms/confirm": {
      "post": {
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "phone": {
                    "type": "string",
                    "minLength": 6,
                    "maxLength": 32
                  },
                  "code": {
                    "type": "string",
                    "pattern": "^\\d{4,8}$"
                  },
                  "purpose": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100,
                    "default": "contact_confirmation"
                  }
                },
                "required": ["phone", "code"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The SMS verification challenge was confirmed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "channel": {
                          "type": "string",
                          "enum": ["email", "sms"]
                        },
                        "destination": {
                          "type": "string"
                        },
                        "purpose": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": ["verified"]
                        },
                        "expiresAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "verifiedAt": {
                          "type": ["string", "null"],
                          "format": "date-time"
                        },
                        "createdAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "updatedAt": {
                          "type": "string",
                          "format": "date-time"
                        }
                      },
                      "required": [
                        "id",
                        "channel",
                        "destination",
                        "purpose",
                        "status",
                        "expiresAt",
                        "verifiedAt",
                        "createdAt",
                        "updatedAt"
                      ]
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "Malformed verification request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "404": {
            "description": "Verification challenge not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "409": {
            "description": "Verification code is invalid or the attempt failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          },
          "410": {
            "description": "Verification challenge has expired",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  },
                  "required": ["error"]
                }
              }
            }
          }
        },
        "operationId": "postPublicStorefrontVerificationSmsConfirm",
        "summary": "POST /v1/public/storefront-verification/sms/confirm",
        "tags": ["storefront-verification"],
        "x-voyant-module": "storefront-verification",
        "x-voyant-surface": "storefront",
        "x-voyant-api-id": "@voyant-travel/storefront#verification.api",
        "x-voyant-unit-id": "@voyant-travel/storefront#verification",
        "x-voyant-package-name": "@voyant-travel/storefront"
      }
    }
  },
  "webhooks": {}
}
