server/openapi.yaml (602 lines of code) (raw):

openapi: 3.0.0 info: version: 1.0.0 description: This is the API specifications for interacting with the Pony Mail (Foal) server backend title: Apache Pony Mail Foal API license: name: Apache 2.0 url: 'http://www.apache.org/licenses/LICENSE-2.0.html' components: schemas: ActionResponse: properties: message: description: Response text in human readable format example: Email dispatched type: string okay: description: Boolean indicating whether the desired action was completed or not type: boolean example: true required: - message - okay SearchRequest: properties: list: description: The list part of the mailing list(s) to search. Can be * for wildcard search example: dev type: string domain: description: The domain part of the mailing list(s) to search. Can be * for wildcard search type: string example: lists.example.org date: description: Optional year-month date to search within type: string example: "2020-08" s: description: Optional start year-month date to search from type: string example: "2019-01" e: description: Optional end year-month date to search to type: string example: "2021-12" d: description: | Optional advanced date parameters. There are various options for specifying the date range: - a single month: yyyy-mm - gte (greater than or equal) or lte (less than or equal) a number of Months, weeks, years or days (Mwyd) - dfr=yyyy-mm-dd|dto=yyy-mm-dd - a range of days (inclusive) example: | - "2019-01" - "lte=10d", "gte=2y" - "dfr=2021-9-21|dto=2021-10-31" type: string dfrom: description: Optional start date, expressed as days ago. Used with dto. type: string example: 31 dto: description: Optional start date, expressed as days to capture starting from dfrom type: string example: 10 q: description: "Free text query to search for. Can use + or - to denote mandatory presence or absence of words" type: string example: "apples +oranges -bananas" header_from: description: "Optional From: header search for narrowing down results" type: string example: janedoe@example.org header_subject: description: "Optional Subject: header search for narrowing down results" type: string example: "weekly meeting on friday" header_body: description: "Optional body-only search parameters" type: string example: "This was a great idea" header_to: description: "Optional To: header search for narrowing down results" type: string example: janedoe@example.org required: - list - domain SingleEmailRequest: properties: id: description: The ID (document id or message-id) of the email to fetch example: "5wnbldtbbcog0p259jnhvqbkc7nhjt71" type: string listid: description: The List ID the email must adhere to (only if searching by Message-ID header) example: "<users.httpd.apache.org>" type: string required: - id SingleEmailResponse: properties: attachments: description: List of attachments, if any example: [TBA] type: array cc: description: List of Cc email addresses example: "\"announce@tomcat.apache.org\" <announce@tomcat.apache.org>, \"dev@tomcat.apache.org\" <dev@tomcat.apache.org>, announce@apache.org" type: string from: description: The sender address of the email example: "Asterix build server <jenkins@asterix-jenkins.ics.uci.edu>" type: string from_raw: description: The sender address of the email (unedited by Foal) example: "Asterix build server <jenkins@asterix-jenkins.ics.uci.edu>" type: string to: description: The recipient address of the email example: dev@asterixdb.apache.org type: string subject: description: The email subject example: "Jenkins build is still unstable: asterix-integration-tests ab8375ea" type: string message-id: description: The original (user-provided) Message-ID of the email example: "<521062724.28.1506761839312.JavaMail.jenkins@unhygienix.ics.uci.edu>" type: string id: description: The internal document ID of the email example: r8cmj7vm5n8z5r3xda5ebd type: string mid: description: The internal document ID of the email (backwards compat item) example: r8cmj7vm5n8z5r3xda5ebd type: string epoch: description: The timestamp of the email in UNIX epoch format example: 1506761839 type: integer list: description: The list-ID header value example: "<dev.asterixdb.apache.org>" type: string list_raw: description: The unedited list-ID header value example: "<dev.asterixdb.apache.org>" type: string date: description: The Datetime of the email example: "2017/09/30 08:57:19" type: string private: description: Whether the email is privately archived or not example: false type: boolean references: description: "The References: header of the email" example: "<1538859253.27.1506747931378.JavaMail.jenkins@unhygienix.ics.uci.edu>" type: string in-reply-to: description: "The In-Reply-To: header of the email" example: "<1538859253.27.1506747931378.JavaMail.jenkins@unhygienix.ics.uci.edu>" type: string body: description: The message body of the email example: "I like cakes.\nThe joke you made really made me laugh.\nBest,\nJess." type: string body_short: description: The message body of the email, truncated to 201 chars example: "I like cakes.\nThe joke you made really made me laugh.\nBest,\nJess." type: string permalinks: description: All IDs that this document is filed and accessible under type: array example: ["r8cmj7vm5n8z5r3xda5ebd","r67a4b2148dcb782e68da95e2601cce677ad9902ecc87d640508ed9be@<dev.asterixdb.apache.org>"] dbid: description: "The Unique (non-deduplicated) identifier for this email, SHA3-256 digest of the raw message" example: "08c4e61930db221d869b186707c7177248d227d7372e8d1e4028880b9d214cf1" type: string gravatar: description: The Gravatar ID (lowercased md5 digest of the sender address) of the sender example: "69eea47c5083c2e4945a2704fc7b658c" type: string CompactEmailResponse: properties: from: description: The sender address of the email example: "Asterix build server <jenkins@asterix-jenkins.ics.uci.edu>" type: string subject: description: The email subject example: "Jenkins build is still unstable: asterix-integration-tests ab8375ea" type: string message-id: description: The original (user-provided) Message-ID of the email example: "<521062724.28.1506761839312.JavaMail.jenkins@unhygienix.ics.uci.edu>" type: string id: description: The internal document ID of the email example: r8cmj7vm5n8z5r3xda5ebd type: string mid: description: The internal document ID of the email (backwards compat item) example: r8cmj7vm5n8z5r3xda5ebd type: string epoch: description: The timestamp of the email in UNIX epoch format example: 1506761839 type: integer list: description: The list-ID header value example: "<dev.asterixdb.apache.org>" type: string list_raw: description: The unedited list-ID header value example: "<dev.asterixdb.apache.org>" type: string private: description: Whether the email is privately archived or not example: false type: boolean body: description: The message body of the email, tuncated to 201 chars example: "I like cakes.\nThe joke you made really made me laugh.\nBest,\nJess." type: string gravatar: description: The Gravatar ID (lowercased md5 digest of the sender address) of the sender example: "69eea47c5083c2e4945a2704fc7b658c" type: string children: description: Any child emails (replies) items: $ref: '#/components/schemas/CompactEmailResponse' example: [] type: array ThreadResponse: properties: thread: type: object description: The thread as a nested dictionary $ref: '#/components/schemas/CompactEmailResponse' emails: type: array description: Every single email in the thread, as an array items: $ref: '#/components/schemas/CompactEmailResponse' StatsResponse: properties: active_months: description: List of months with activity type: array example: - "2017-01": 1 - "2017-02": 1 firstYear: description: The first year found in the search results type: integer example: 2018 firstMonth: description: The first month found in the search results type: integer example: 1 lastYear: description: The last (most recent) year found within the search results type: integer example: 2021 lastMonth: description: The last (most recent) month found in the search results type: integer example: 11 hits: description: The total number of emails found in this search type: integer example: 134 numparts: description: The total number of participants (authors) within the search result type: integer example: 28 no_threads: description: The total number of distinct threads found within the search results type: integer example: 35 emails: description: The emails found in this search, as a list of CompactEmailResponse objects type: array items: $ref: '#/components/schemas/CompactEmailResponse' cloud: description: Word cloud as a word=count dictionary type: object example: foo: 25 bar: 10 baz: 4 participants: description: The participants (authors) within the search results, ranked by number of emails authored type: array example: - email: foo@bar.baz name: FOo Bar count: 10 gravatar: "4fa3f0e42e603e5ae1ab627d6690e365" - email: jane@doe.example.org name: Jane Doe count: 5 gravatar: "7ddfb840a4db40a01ac99d29e82267b0" searchlist: description: The raw List-ID (if any) of the search parameters type: string example: "<dev.lists.example.org>" name: description: The listname part of the search parameters type: string example: dev domain: description: The domain part of the search parameters type: string example: lists.example.org list: description: The full list, in human readable format, of the search parameters type: string example: dev@lists.example.org searchParams: description: The search parameters used in this search type: object example: d: "gte=2018-01" q: "i like cake" list: dev domain: lists.example.irg thread_struct: description: The threaded representation of the search results, as a list of threads type: array example: - children: [] tid: "1ng5htgrhkbzwzzb" subject: "Errored: apache/httpd#1037 (trunk - bafd719)" tsubject: "apache/httpd#1037 (trunk…_<dev.httpd.apache.org>" epoch: 1596279300 nest: 1 unixtime: description: The server time in UNIX epoch format example: 1506761839 type: integer ErrorResponse: properties: okay: description: Whether the action completed (will be false) example: false type: boolean message: description: Response text in human readable format example: The requested action could not be completed... type: string required: - error EmailComposition: properties: to: description: Recipient address example: dev@lists.example.org type: string subject: description: Email subject type: string example: "RE: advanced debugging" body: description: Email message body type: string example: | I think this is a great idea. Let's chat on Monday. With regards, Charles. references: description: Message ID of email this reply references (if not direct reply) type: string example: "<foo1234@dev.lists.example.org>" in-reply-to: description: Message ID of the email this is a direct reply to (if any) type: string example: "<foo1234@dev.lists.example.org>" required: - to - subject - body securitySchemes: cookieAuth: in: cookie name: ponymail type: apiKey paths: /api/compose.json: post: requestBody: content: application/json: schema: $ref: '#/components/schemas/EmailComposition' description: Email details required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/ActionResponse' description: 200 response default: content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' description: Unexpected error summary: Compose and dispatch an email to a list security: - cookieAuth: [] /api/email.json: post: requestBody: content: application/json: schema: $ref: '#/components/schemas/SingleEmailRequest' description: Email details required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/SingleEmailResponse' description: 200 Response '404': content: text/plain: example: "Email not found!" description: 404 response if email not found default: content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' description: unexpected error security: - cookieAuth: [] summary: Fetches a single email and returns it as a JSON object /api/mbox.json: post: requestBody: content: application/json: schema: $ref: '#/components/schemas/SearchRequest' description: Search parameters required: true responses: '200': content: text/plain: example: "[mbox file contents]" description: 200 Response default: content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' description: unexpected error security: - cookieAuth: [] summary: Returns a list or a search result in mbox file format # /api/mgmt.json: # TBA # /api/oauth.json: # TBA # /api/pminfo.json: # TBA # /api/preferences.json: # TBA /api/source.json: post: requestBody: content: application/json: schema: $ref: '#/components/schemas/SingleEmailRequest' description: Email details required: true responses: '200': content: text/plain: example: | From dev-return-5233-apmail-asterixdb-dev-archive=asterixdb.apache.org@asterixdb.apache.org Sat Sep 30 08:58:08 2017 Return-Path: <dev-return-5233-apmail-asterixdb-dev-archive=asterixdb.apache.org@asterixdb.apache.org> Received: (qmail 50072 invoked by uid 500); 30 Sep 2017 08:58:08 -0000 Mailing-List: contact dev-help@asterixdb.apache.org; run by ezmlm Precedence: bulk List-Help: <mailto:dev-help@asterixdb.apache.org> List-Unsubscribe: <mailto:dev-unsubscribe@asterixdb.apache.org> List-Post: <mailto:dev@asterixdb.apache.org> List-Id: <dev.asterixdb.apache.org> Reply-To: dev@asterixdb.apache.org Delivered-To: mailing list dev@asterixdb.apache.org Received: (qmail 50057 invoked by uid 99); 30 Sep 2017 08:58:07 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 30 Sep 2017 08:58:07 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 3A2C21808B9 for <dev@asterixdb.apache.org>; Sat, 30 Sep 2017 08:58:07 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.5 X-Spam-Level: * X-Spam-Status: No, score=1.5 tagged_above=-999 required=6.31 tests=[KAM_LAZY_DOMAIN_SECURITY=1, KAM_LINKBAIT=0.5, RP_MATCHES_RCVD=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id 3VgxbDG3zW9E for <dev@asterixdb.apache.org>; Sat, 30 Sep 2017 08:58:06 +0000 (UTC) Received: from unhygienix.ics.uci.edu (unhygienix.ics.uci.edu [128.195.14.130]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTP id 4D7025FCC1 for <dev@asterixdb.apache.org>; Sat, 30 Sep 2017 08:58:06 +0000 (UTC) Received: from obelix.ics.uci.edu (localhost [127.0.0.1]) by unhygienix.ics.uci.edu (Postfix) with ESMTP id 539A4240E6E; Sat, 30 Sep 2017 01:57:19 -0700 (PDT) Date: Sat, 30 Sep 2017 01:57:19 -0700 (PDT) From: Asterix build server <jenkins@asterix-jenkins.ics.uci.edu> To: dev@asterixdb.apache.org Message-ID: <521062724.28.1506761839312.JavaMail.jenkins@unhygienix.ics.uci.edu> In-Reply-To: <1538859253.27.1506747931378.JavaMail.jenkins@unhygienix.ics.uci.edu> References: <1538859253.27.1506747931378.JavaMail.jenkins@unhygienix.ics.uci.edu> Subject: Jenkins build is still unstable: asterix-integration-tests ab8375ea MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Instance-Identity: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0nz/YYRm0UEuhP+TWwX2ST1fizEpF7HpM4sPcYz2NS87f/HwLueejqBmJC4+jeepHXZ+Jv8mx/RZqsiFpmGNadfrVj5xdvYYYhL+LX6IsquitcGo4czObwwWQ3wInopyASEIqxRi7J6UytN3Fsh6s61qMC7piY42C6FKuqDH3vbnDkTLc8SDdMT9gWSyP9hQTcqcZ76QizLXas6NwvHmUjtNTpxcEsiEcY41b9rUv3810LUs6FQymbPzyZPhTmcRS8841AjfVUbWiSc3ElmKHNxrFA2JmK5S1/xyEeESEaeYHT7daGi2aR1P2G9XtRj5Oj4n7dKo/Xo3cznIN3NNtQIDAQAB X-Jenkins-Job: asterix-integration-tests X-Jenkins-Result: UNSTABLE See <https://asterix-jenkins.ics.uci.edu/job/asterix-integration-tests/changes> description: 200 Response '404': content: text/plain: example: "Email not found!" description: 404 response if email not found default: content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' description: unexpected error security: - cookieAuth: [] summary: Fetches the raw mbox source of an email /api/stats.json: post: requestBody: content: application/json: schema: $ref: '#/components/schemas/SearchRequest' description: Search parameters required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/StatsResponse' description: 200 Response '500': content: text/plain: example: "The search could not be completed" security: - cookieAuth: [] summary: Searches the archives and returns the results that match /api/thread.json: post: requestBody: content: application/json: schema: $ref: '#/components/schemas/SingleEmailRequest' description: Email details required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/ThreadResponse' description: 200 Response default: content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' description: unexpected error security: - cookieAuth: [] summary: Fetches an email thread based on a parent email