Fluxmail

Create an API key

Create an API key and return its plaintext secret once. Requires admin.api_keys.

POST /api/v1/admin/api-keys

Create an API key and return its plaintext secret once. Requires admin.api_keys.

Authentication

Pass a Fluxmail API key as a bearer token. The key owner must be an administrator, and the key must include the administrative capability named in the endpoint description.

Remote administrative requests require HTTPS. Requests from the local computer can use HTTP.

Request

curl 'http://localhost:8977/api/v1/admin/api-keys' \
  -X POST \
  -H "Authorization: Bearer $FLUXMAIL_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "name": "reporting",
  "member": "you@example.com",
  "permissionProfile": "read-only"
}'

Request body

Content type: application/json

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "member": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "accounts": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "maxItems": 100
    },
    "permissionProfile": {
      "type": "string",
      "enum": [
        "read-only",
        "read-write",
        "full"
      ]
    },
    "supplementalCapabilities": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "admin.accounts",
          "admin.api_keys",
          "admin.license"
        ]
      },
      "maxItems": 3
    },
    "customCapabilities": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "mail.read",
          "mail.drafts",
          "mail.organize",
          "mail.trash",
          "mail.delete",
          "mail.send",
          "admin.accounts",
          "admin.api_keys",
          "admin.license"
        ]
      },
      "minItems": 1,
      "maxItems": 9
    }
  },
  "required": [
    "name",
    "member"
  ],
  "additionalProperties": false,
  "example": {
    "name": "reporting",
    "member": "you@example.com",
    "permissionProfile": "read-only"
  }
}

Responses

StatusDescriptionContent type
201Created API key with one-time plaintext secretapplication/json
400Invalid requestapplication/json
401Authentication requiredapplication/json
403Administrative access deniedapplication/json
404Resource not foundapplication/json
409Request conflictapplication/json
413Request body too largeapplication/json
415Unsupported media typeapplication/json
500Internal errorapplication/json
502License could not be verifiedapplication/json

201 response

{
  "type": "object",
  "properties": {
    "data": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "createdAt": {
              "type": "string"
            },
            "lastUsedAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "memberId": {
              "type": [
                "string",
                "null"
              ]
            },
            "permissionProfile": {
              "type": "string",
              "enum": [
                "read-only",
                "read-write",
                "full",
                "custom"
              ]
            },
            "capabilities": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "mail.read",
                  "mail.drafts",
                  "mail.organize",
                  "mail.trash",
                  "mail.delete",
                  "mail.send",
                  "admin.accounts",
                  "admin.api_keys",
                  "admin.license"
                ]
              }
            },
            "supplementalCapabilities": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "admin.accounts",
                  "admin.api_keys",
                  "admin.license"
                ]
              }
            },
            "accountIds": {
              "type": [
                "array",
                "null"
              ],
              "items": {
                "type": "string"
              }
            }
          },
          "required": [
            "id",
            "name",
            "createdAt",
            "lastUsedAt",
            "memberId",
            "permissionProfile",
            "capabilities",
            "supplementalCapabilities",
            "accountIds"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "key": {
              "type": "string"
            }
          },
          "required": [
            "key"
          ],
          "additionalProperties": false
        }
      ]
    }
  },
  "required": [
    "data"
  ],
  "additionalProperties": false
}

Last updated