openapi: 3.0.3 info: title: At-Bay Partner Documents Quotes API version: '2.0' description: REST API for At-Bay's quote-to-bind-to-renew workflow across Surplus Cyber (CYB), Surplus Tech E&O (TEO), and Surplus Miscellaneous Professional Liability (MPL). Authenticated with a JWT bearer token. Quote creation is asynchronous — POST /quotes returns a quote_identifier that is polled via GET /quotes/{quote_identifier} every ~10 seconds until the status leaves `quote_pending`. Production submissions are subject to At-Bay's Broker-of-Record (BOR) clearance process; the demo host bypasses BOR. contact: name: At-Bay Partnerships email: partnerships@at-bay.com url: https://developers.at-bay.com termsOfService: https://www.at-bay.com/legal/ servers: - url: https://api.at-bay.com/v2 description: Production - url: https://api-demo.at-bay.com/v2 description: Demo security: - bearerAuth: [] tags: - name: Quotes description: Create, poll, and bind insurance quotes. paths: /quotes: post: tags: - Quotes summary: Create A Quote description: Submit a new quote request for one of the supported insurance products (CYB, TEO, or MPL). Returns a quote_identifier and company_id; poll GET /quotes/{quote_identifier} every 10 seconds until status changes. operationId: createQuote requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/QuoteRequest' responses: '202': description: Quote request accepted and queued. content: application/json: schema: $ref: '#/components/schemas/QuoteAck' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '409': description: Submission blocked by Broker-of-Record clearance. /quotes/{quote_identifier}: get: tags: - Quotes summary: Find A Quote description: Retrieve current status and details for a quote. operationId: getQuote parameters: - name: quote_identifier in: path required: true schema: type: string responses: '200': description: Quote details. content: application/json: schema: $ref: '#/components/schemas/Quote' '404': $ref: '#/components/responses/NotFound' /quotes/{quote_identifier}/bind: post: tags: - Quotes summary: Bind A Quote description: Request binding of an open quote into an active policy. operationId: bindQuote parameters: - name: quote_identifier in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BindRequest' responses: '202': description: Bind request accepted; poll the quote for `policy_active`. '409': description: Quote not in a bindable status. components: schemas: BindRequest: type: object properties: effective_date: type: string format: date accepted_terms: type: boolean Client: type: object properties: name: type: string domain: type: string revenue: type: number industry_code: type: string address: $ref: '#/components/schemas/Address' Quote: type: object properties: quote_identifier: type: string company_id: type: string status: type: string enum: - quote_pending - quote_referred - quote_open - quote_bind_requested - quote_declined - quote_expired - quote_revoked - quote_not_bound - policy_active - policy_cancelled - policy_expired insurance_product: type: string enum: - CYB - TEO - MPL premium: type: number coverage_limit: type: integer retention: type: integer effective_date: type: string format: date expiration_date: type: string format: date QuoteAck: type: object properties: quote_identifier: type: string company_id: type: string status: type: string example: quote_pending QuoteRequest: type: object required: - client - policy properties: client: $ref: '#/components/schemas/Client' policy: $ref: '#/components/schemas/PolicyDetails' broker: $ref: '#/components/schemas/Broker' Broker: type: object properties: broker_id: type: string agency_id: type: string PolicyDetails: type: object required: - insurance_product properties: insurance_product: type: string enum: - CYB - TEO - MPL description: CYB = Surplus Cyber, TEO = Surplus Tech E&O, MPL = Surplus MPL. effective_date: type: string format: date coverage_limit: type: integer retention: type: integer Address: type: object properties: line1: type: string city: type: string state: type: string zip: type: string responses: Unauthorized: description: Missing or invalid bearer token. BadRequest: description: Request payload validation failed. NotFound: description: Resource not found. securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT