{
  "opencollection": "1.0.0",
  "info": {
    "name": "Unkey API",
    "version": "2.0.0"
  },
  "request": {
    "auth": {
      "type": "bearer",
      "token": "{{rootKey}}"
    }
  },
  "items": [
    {
      "info": { "name": "Keys", "type": "folder" },
      "items": [
        {
          "info": { "name": "Create a key.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/keys.createKey", "body": { "type": "json", "data": "{\n  \"apiId\": \"api_xxx\",\n  \"prefix\": \"acme\",\n  \"externalId\": \"user_123\"\n}" } },
          "docs": "Creates a new API key in an API namespace. Returns the plaintext key once."
        },
        {
          "info": { "name": "Verify a key.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/keys.verifyKey", "body": { "type": "json", "data": "{\n  \"key\": \"acme_xxx\"\n}" } },
          "docs": "Verifies an API key on the request hot path, checking validity, credits, ratelimits, permissions, and roles."
        },
        {
          "info": { "name": "Get a key.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/keys.getKey", "body": { "type": "json", "data": "{\n  \"keyId\": \"key_xxx\"\n}" } },
          "docs": "Retrieves metadata about a single key by its keyId."
        },
        {
          "info": { "name": "Update a key.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/keys.updateKey", "body": { "type": "json", "data": "{\n  \"keyId\": \"key_xxx\"\n}" } },
          "docs": "Updates a key's mutable attributes such as name, meta, expiration, credits, permissions, and roles."
        },
        {
          "info": { "name": "Delete a key.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/keys.deleteKey", "body": { "type": "json", "data": "{\n  \"keyId\": \"key_xxx\"\n}" } },
          "docs": "Deletes a key so it can no longer be verified."
        },
        {
          "info": { "name": "Reroll a key.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/keys.rerollKey", "body": { "type": "json", "data": "{\n  \"keyId\": \"key_xxx\"\n}" } },
          "docs": "Rotates a key by creating a new secret while preserving its configuration and identity."
        },
        {
          "info": { "name": "Update key credits.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/keys.updateCredits", "body": { "type": "json", "data": "{\n  \"keyId\": \"key_xxx\",\n  \"value\": 100\n}" } },
          "docs": "Sets, increments, or decrements the remaining usage credits on a key."
        },
        {
          "info": { "name": "Who am I.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/keys.whoami", "body": { "type": "json", "data": "{\n  \"key\": \"acme_xxx\"\n}" } },
          "docs": "Resolves a plaintext key to its keyId and metadata without a full verification."
        },
        {
          "info": { "name": "Migrate keys.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/keys.migrateKeys", "body": { "type": "json", "data": "{\n  \"apiId\": \"api_xxx\",\n  \"keys\": []\n}" } },
          "docs": "Bulk-imports existing keys from another system into an Unkey namespace."
        },
        {
          "info": { "name": "Add permissions to a key.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/keys.addPermissions", "body": { "type": "json", "data": "{\n  \"keyId\": \"key_xxx\",\n  \"permissions\": []\n}" } },
          "docs": "Attaches one or more permissions to a key."
        },
        {
          "info": { "name": "Remove permissions from a key.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/keys.removePermissions", "body": { "type": "json", "data": "{\n  \"keyId\": \"key_xxx\",\n  \"permissions\": []\n}" } },
          "docs": "Detaches one or more permissions from a key."
        },
        {
          "info": { "name": "Set key permissions.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/keys.setPermissions", "body": { "type": "json", "data": "{\n  \"keyId\": \"key_xxx\",\n  \"permissions\": []\n}" } },
          "docs": "Replaces the full set of permissions on a key."
        },
        {
          "info": { "name": "Add roles to a key.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/keys.addRoles", "body": { "type": "json", "data": "{\n  \"keyId\": \"key_xxx\",\n  \"roles\": []\n}" } },
          "docs": "Attaches one or more roles to a key."
        },
        {
          "info": { "name": "Remove roles from a key.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/keys.removeRoles", "body": { "type": "json", "data": "{\n  \"keyId\": \"key_xxx\",\n  \"roles\": []\n}" } },
          "docs": "Detaches one or more roles from a key."
        },
        {
          "info": { "name": "Set key roles.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/keys.setRoles", "body": { "type": "json", "data": "{\n  \"keyId\": \"key_xxx\",\n  \"roles\": []\n}" } },
          "docs": "Replaces the full set of roles on a key."
        }
      ]
    },
    {
      "info": { "name": "APIs", "type": "folder" },
      "items": [
        {
          "info": { "name": "Create an API.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/apis.createApi", "body": { "type": "json", "data": "{\n  \"name\": \"my-api\"\n}" } },
          "docs": "Creates a new API (namespace / keyspace)."
        },
        {
          "info": { "name": "Get an API.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/apis.getApi", "body": { "type": "json", "data": "{\n  \"apiId\": \"api_xxx\"\n}" } },
          "docs": "Retrieves an API namespace by its apiId."
        },
        {
          "info": { "name": "Delete an API.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/apis.deleteApi", "body": { "type": "json", "data": "{\n  \"apiId\": \"api_xxx\"\n}" } },
          "docs": "Deletes an API namespace."
        },
        {
          "info": { "name": "List keys for an API.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/apis.listKeys", "body": { "type": "json", "data": "{\n  \"apiId\": \"api_xxx\"\n}" } },
          "docs": "Lists the keys belonging to an API namespace, with cursor pagination."
        }
      ]
    },
    {
      "info": { "name": "Ratelimit", "type": "folder" },
      "items": [
        {
          "info": { "name": "Ratelimit.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/ratelimit.limit", "body": { "type": "json", "data": "{\n  \"namespace\": \"requests\",\n  \"identifier\": \"user_123\",\n  \"limit\": 100,\n  \"duration\": 60000\n}" } },
          "docs": "Checks and enforces a rate limit for an identifier within a namespace. Works without an API key."
        },
        {
          "info": { "name": "Multi ratelimit.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/ratelimit.multiLimit", "body": { "type": "json", "data": "{\n  \"ratelimits\": []\n}" } },
          "docs": "Evaluates several rate limits in a single request."
        },
        {
          "info": { "name": "Set ratelimit override.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/ratelimit.setOverride", "body": { "type": "json", "data": "{\n  \"namespace\": \"requests\",\n  \"identifier\": \"user_123\",\n  \"limit\": 500,\n  \"duration\": 60000\n}" } },
          "docs": "Sets a per-identifier override of the limit and duration within a namespace."
        },
        {
          "info": { "name": "Get ratelimit override.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/ratelimit.getOverride", "body": { "type": "json", "data": "{\n  \"namespace\": \"requests\",\n  \"identifier\": \"user_123\"\n}" } },
          "docs": "Retrieves a rate limit override for an identifier in a namespace."
        },
        {
          "info": { "name": "List ratelimit overrides.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/ratelimit.listOverrides", "body": { "type": "json", "data": "{\n  \"namespace\": \"requests\"\n}" } },
          "docs": "Lists the rate limit overrides configured in a namespace, with cursor pagination."
        },
        {
          "info": { "name": "Delete ratelimit override.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/ratelimit.deleteOverride", "body": { "type": "json", "data": "{\n  \"namespace\": \"requests\",\n  \"identifier\": \"user_123\"\n}" } },
          "docs": "Deletes a rate limit override for an identifier in a namespace."
        }
      ]
    },
    {
      "info": { "name": "Identities", "type": "folder" },
      "items": [
        {
          "info": { "name": "Create an identity.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/identities.createIdentity", "body": { "type": "json", "data": "{\n  \"externalId\": \"org_123\"\n}" } },
          "docs": "Creates an identity representing a user, tenant, or organization, keyed by an externalId."
        },
        {
          "info": { "name": "Get an identity.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/identities.getIdentity", "body": { "type": "json", "data": "{\n  \"externalId\": \"org_123\"\n}" } },
          "docs": "Retrieves an identity by its identityId or externalId."
        },
        {
          "info": { "name": "List identities.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/identities.listIdentities", "body": { "type": "json", "data": "{}" } },
          "docs": "Lists identities in the workspace, with cursor pagination."
        },
        {
          "info": { "name": "Update an identity.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/identities.updateIdentity", "body": { "type": "json", "data": "{\n  \"externalId\": \"org_123\"\n}" } },
          "docs": "Updates an identity's meta and shared ratelimits."
        },
        {
          "info": { "name": "Delete an identity.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/identities.deleteIdentity", "body": { "type": "json", "data": "{\n  \"externalId\": \"org_123\"\n}" } },
          "docs": "Deletes an identity and detaches it from its keys."
        }
      ]
    },
    {
      "info": { "name": "Permissions", "type": "folder" },
      "items": [
        {
          "info": { "name": "Create a permission.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/permissions.createPermission", "body": { "type": "json", "data": "{\n  \"name\": \"documents.read\"\n}" } },
          "docs": "Creates a permission that can be attached to keys and roles."
        },
        {
          "info": { "name": "Get a permission.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/permissions.getPermission", "body": { "type": "json", "data": "{\n  \"permissionId\": \"perm_xxx\"\n}" } },
          "docs": "Retrieves a permission by id or name."
        },
        {
          "info": { "name": "List permissions.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/permissions.listPermissions", "body": { "type": "json", "data": "{}" } },
          "docs": "Lists permissions in the workspace, with cursor pagination."
        },
        {
          "info": { "name": "Delete a permission.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/permissions.deletePermission", "body": { "type": "json", "data": "{\n  \"permissionId\": \"perm_xxx\"\n}" } },
          "docs": "Deletes a permission and removes it from keys and roles."
        },
        {
          "info": { "name": "Create a role.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/permissions.createRole", "body": { "type": "json", "data": "{\n  \"name\": \"editor\"\n}" } },
          "docs": "Creates a role, a named bundle of permissions."
        },
        {
          "info": { "name": "Get a role.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/permissions.getRole", "body": { "type": "json", "data": "{\n  \"roleId\": \"role_xxx\"\n}" } },
          "docs": "Retrieves a role and its permissions by id or name."
        },
        {
          "info": { "name": "List roles.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/permissions.listRoles", "body": { "type": "json", "data": "{}" } },
          "docs": "Lists roles in the workspace, with cursor pagination."
        },
        {
          "info": { "name": "Delete a role.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/permissions.deleteRole", "body": { "type": "json", "data": "{\n  \"roleId\": \"role_xxx\"\n}" } },
          "docs": "Deletes a role and detaches it from keys."
        }
      ]
    },
    {
      "info": { "name": "Analytics", "type": "folder" },
      "items": [
        {
          "info": { "name": "Get verifications.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/analytics.getVerifications", "body": { "type": "json", "data": "{\n  \"apiId\": \"api_xxx\"\n}" } },
          "docs": "Queries key-verification analytics over a time range for usage, billing, and abuse detection."
        }
      ]
    },
    {
      "info": { "name": "Deploy", "type": "folder" },
      "items": [
        {
          "info": { "name": "Create a deployment.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/deploy.createDeployment", "body": { "type": "json", "data": "{}" } },
          "docs": "Creates a deployment on the Unkey deploy platform."
        },
        {
          "info": { "name": "Get a deployment.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/deploy.getDeployment", "body": { "type": "json", "data": "{\n  \"deploymentId\": \"dep_xxx\"\n}" } },
          "docs": "Retrieves a deployment by its id."
        }
      ]
    },
    {
      "info": { "name": "Liveness", "type": "folder" },
      "items": [
        {
          "info": { "name": "Liveness check.", "type": "http" },
          "http": { "method": "POST", "url": "https://api.unkey.com/v2/liveness" },
          "docs": "Simple health check that returns a 200 when the API is available."
        }
      ]
    }
  ],
  "bundled": true
}
