{
  "components": {
    "parameters": {
      "Limit": {
        "in": "query",
        "name": "limit",
        "schema": {
          "default": 20,
          "maximum": 100,
          "minimum": 1,
          "type": "integer"
        }
      },
      "MailboxID": {
        "in": "path",
        "name": "mailbox_id",
        "required": true,
        "schema": {
          "format": "uuid",
          "type": "string"
        }
      },
      "MessageID": {
        "in": "path",
        "name": "message_id",
        "required": true,
        "schema": {
          "format": "uuid",
          "type": "string"
        }
      },
      "Offset": {
        "in": "query",
        "name": "offset",
        "schema": {
          "default": 0,
          "minimum": 0,
          "type": "integer"
        }
      }
    },
    "responses": {
      "Error": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        },
        "description": "Stable error response"
      }
    },
    "schemas": {
      "CreateMailboxRequest": {
        "additionalProperties": false,
        "properties": {
          "lifetime_minutes": {
            "default": 10,
            "maximum": 10,
            "minimum": 1,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "ErrorDetail": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string"
          },
          "details": {
            "additionalProperties": true,
            "type": "object"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "code",
          "message"
        ],
        "type": "object"
      },
      "ErrorResponse": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "$ref": "#/components/schemas/ErrorDetail"
          },
          "request_id": {
            "type": "string"
          }
        },
        "required": [
          "error",
          "request_id"
        ],
        "type": "object"
      },
      "ExtendMailboxRequest": {
        "additionalProperties": false,
        "properties": {
          "extension_minutes": {
            "maximum": 10,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "extension_minutes"
        ],
        "type": "object"
      },
      "Mailbox": {
        "additionalProperties": false,
        "properties": {
          "address": {
            "format": "email",
            "type": "string"
          },
          "expires_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "kind": {
            "enum": [
              "temporary",
              "permanent"
            ],
            "type": "string"
          },
          "max_expires_at": {
            "format": "date-time",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "id",
          "address",
          "kind"
        ],
        "type": "object"
      },
      "MailboxResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "additionalProperties": false,
            "properties": {
              "mailbox": {
                "$ref": "#/components/schemas/Mailbox"
              }
            },
            "required": [
              "mailbox"
            ],
            "type": "object"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "Message": {
        "allOf": [
          {
            "$ref": "#/components/schemas/MessageSummary"
          },
          {
            "properties": {
              "html_body": {
                "type": "string"
              },
              "text_body": {
                "type": "string"
              }
            },
            "required": [
              "text_body",
              "html_body"
            ],
            "type": "object"
          }
        ]
      },
      "MessageListResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "additionalProperties": false,
            "properties": {
              "items": {
                "items": {
                  "$ref": "#/components/schemas/MessageSummary"
                },
                "type": "array"
              },
              "pagination": {
                "$ref": "#/components/schemas/Pagination"
              }
            },
            "required": [
              "items",
              "pagination"
            ],
            "type": "object"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "MessageResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "additionalProperties": false,
            "properties": {
              "message": {
                "$ref": "#/components/schemas/Message"
              }
            },
            "required": [
              "message"
            ],
            "type": "object"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "MessageStatus": {
        "enum": [
          "pending",
          "ready",
          "failed"
        ],
        "type": "string"
      },
      "MessageSummary": {
        "additionalProperties": false,
        "properties": {
          "from": {
            "type": "string"
          },
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "received_at": {
            "format": "date-time",
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/MessageStatus"
          },
          "subject": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "from",
          "subject",
          "received_at",
          "status"
        ],
        "type": "object"
      },
      "Pagination": {
        "additionalProperties": false,
        "properties": {
          "has_more": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          }
        },
        "required": [
          "limit",
          "offset",
          "has_more"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "mailboxCookie": {
        "description": "Issued when selecting a mailbox. Preserve the scoped creation cookie in the same private jar. A mailbox address is not a credential.",
        "in": "cookie",
        "name": "inboxflick_session",
        "type": "apiKey"
      },
      "scopedMailboxCookie": {
        "description": "Send the mailbox-scoped cookie issued at creation in the Cookie header (name is the configured prefix plus an underscore and mailbox UUID without hyphens). A cookie jar maintains this automatically. Not an API key or the mailbox address.",
        "in": "header",
        "name": "Cookie",
        "type": "apiKey"
      }
    }
  },
  "info": {
    "description": "Free receive-only temporary email API. Cookie-jar authentication: create an inbox, preserve its scoped cookie, select it, then use the current-mailbox cookie. No account or API key. 8 requests per second per IP; creation additionally limited to 5/minute, 10/hour, 20/day and 5 active inboxes per IP.",
    "title": "InboxFlick API",
    "version": "1.0.0"
  },
  "openapi": "3.0.3",
  "paths": {
    "/domains": {
      "get": {
        "operationId": "ListDomains",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data": {
                      "properties": {
                        "domains": {
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        }
                      },
                      "required": [
                        "domains"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "data"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Receiving domains; a random available domain is assigned on creation"
          },
          "429": {
            "$ref": "#/components/responses/Error"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/events": {
      "get": {
        "operationId": "GetEvents",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "text/event-stream": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Current mailbox server-sent event stream",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              },
              "X-Accel-Buffering": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/Error"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "mailboxCookie": []
          }
        ]
      }
    },
    "/mailboxes": {
      "post": {
        "operationId": "CreateMailbox",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMailboxRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MailboxResponse"
                }
              }
            },
            "description": "Mailbox created and mailbox-scoped possession cookie issued",
            "headers": {
              "Set-Cookie": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "413": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/Error"
          },
          "500": {
            "$ref": "#/components/responses/Error"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/mailboxes/current": {
      "delete": {
        "operationId": "DeleteCurrentMailbox",
        "responses": {
          "204": {
            "description": "Mailbox disabled and removed",
            "headers": {
              "Set-Cookie": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/Error"
          },
          "500": {
            "$ref": "#/components/responses/Error"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "mailboxCookie": []
          }
        ]
      },
      "get": {
        "operationId": "GetCurrentMailbox",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MailboxResponse"
                }
              }
            },
            "description": "Current active mailbox"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/Error"
          },
          "500": {
            "$ref": "#/components/responses/Error"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "mailboxCookie": []
          }
        ]
      },
      "patch": {
        "operationId": "ExtendCurrentMailbox",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExtendMailboxRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MailboxResponse"
                }
              }
            },
            "description": "Mailbox lifetime extended"
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/Error"
          },
          "500": {
            "$ref": "#/components/responses/Error"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "mailboxCookie": []
          }
        ]
      }
    },
    "/mailboxes/{mailbox_id}/select": {
      "parameters": [
        {
          "$ref": "#/components/parameters/MailboxID"
        }
      ],
      "post": {
        "operationId": "SelectMailbox",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MailboxResponse"
                }
              }
            },
            "description": "Mailbox selected as the current browser inbox",
            "headers": {
              "Set-Cookie": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/Error"
          },
          "500": {
            "$ref": "#/components/responses/Error"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "scopedMailboxCookie": []
          }
        ]
      }
    },
    "/messages": {
      "get": {
        "operationId": "ListMessages",
        "parameters": [
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/Offset"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageListResponse"
                }
              }
            },
            "description": "Stable page of current mailbox messages"
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/Error"
          },
          "500": {
            "$ref": "#/components/responses/Error"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "mailboxCookie": []
          }
        ]
      }
    },
    "/messages/{message_id}": {
      "delete": {
        "operationId": "DeleteMessage",
        "parameters": [],
        "responses": {
          "204": {
            "description": "Message deleted"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/Error"
          },
          "500": {
            "$ref": "#/components/responses/Error"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "mailboxCookie": []
          }
        ]
      },
      "get": {
        "operationId": "GetMessage",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Current mailbox message"
          },
          "401": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/Error"
          },
          "500": {
            "$ref": "#/components/responses/Error"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "mailboxCookie": []
          }
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/MessageID"
        }
      ]
    }
  },
  "servers": [
    {
      "url": "https://inboxflick.com/v1"
    }
  ]
}