Skip to content
zublms
Documentation
Documentation/API reference
← All API operations
POSTSession requiredAuthentication

End the browser session

/auth/logout

Requires the session CSRF secret and a matching Origin.

Authentication does not grant every action. Company scope, roles and current record access still apply. Protected writes require CSRF verification; company writes also require recent sign-in. Read the authentication guide.

Example request
// Run only in your authorised same-origin test application.
const csrf = document.cookie.split('; ').find(c =>
  c.startsWith('__Host-csrf='))?.slice('__Host-csrf='.length);
if (!csrf) throw new Error('Sign in again before continuing.');
const response = await fetch('/auth/logout', {
  method: 'POST',
  credentials: 'same-origin',
  headers: { 'X-CSRF-Token': decodeURIComponent(csrf) },
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
// Inspect Content-Type before reading JSON, text or a download.
// A 204 response has no body. Handle errors using the feature guide.

Request parameters

NameLocationRequirementSchema
__Host-sessioncookieRequired{"type":"string"}
__Host-csrfcookieRequired{"type":"string"}
X-CSRF-TokenheaderRequired{"type":"string"}
OriginheaderRequired{"type":"string"}

Responses

204 No Content
{
  "Domain": {
    "schema": {
      "type": "string"
    }
  },
  "Expires": {
    "schema": {
      "type": "string"
    }
  },
  "HttpOnly": {
    "schema": {
      "type": "boolean"
    }
  },
  "MaxAge": {
    "schema": {
      "format": "int64",
      "type": "integer"
    }
  },
  "Name": {
    "schema": {
      "type": "string"
    }
  },
  "Partitioned": {
    "schema": {
      "type": "boolean"
    }
  },
  "Path": {
    "schema": {
      "type": "string"
    }
  },
  "Quoted": {
    "schema": {
      "type": "boolean"
    }
  },
  "Raw": {
    "schema": {
      "type": "string"
    }
  },
  "RawExpires": {
    "schema": {
      "type": "string"
    }
  },
  "SameSite": {
    "schema": {
      "format": "int64",
      "type": "integer"
    }
  },
  "Secure": {
    "schema": {
      "type": "boolean"
    }
  },
  "Set-Cookie": {
    "schema": {
      "type": "string"
    }
  },
  "Unparsed": {
    "schema": {
      "type": "string"
    }
  },
  "Value": {
    "schema": {
      "type": "string"
    }
  }
}

No response body declared.

default Error

application/problem+json

Schema: ErrorModel

$schema string · optional
A URL to the JSON Schema for this object.
detail string · optional
A human-readable explanation specific to this occurrence of the problem.
errors array | null · optional
Optional list of individual error details
instance string · optional
A URI reference that identifies the specific occurrence of the problem.
status integer · optional
HTTP status code
title string · optional
A short, human-readable summary of the problem type. This value should not change between occurrences of the error.
type string · optional
A URI reference to human-readable documentation for the error.
Complete schema definition
{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "$ref": "#/components/schemas/ErrorDetail"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

The default error response can cover several status codes. Read error handling and retry guidance.

Referenced schemas

Expand a named definition to inspect nested fields and references. The download contains the complete OpenAPI document.

ErrorDetail
{
  "additionalProperties": false,
  "properties": {
    "location": {
      "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
      "type": "string"
    },
    "message": {
      "description": "Error message text",
      "type": "string"
    },
    "value": {
      "description": "The value at the given location"
    }
  },
  "type": "object"
}
ErrorModel
{
  "additionalProperties": false,
  "properties": {
    "$schema": {
      "description": "A URL to the JSON Schema for this object.",
      "examples": [
        "https://example.com/schemas/ErrorModel.json"
      ],
      "format": "uri",
      "readOnly": true,
      "type": "string"
    },
    "detail": {
      "description": "A human-readable explanation specific to this occurrence of the problem.",
      "examples": [
        "Property foo is required but is missing."
      ],
      "type": "string"
    },
    "errors": {
      "description": "Optional list of individual error details",
      "items": {
        "$ref": "#/components/schemas/ErrorDetail"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "instance": {
      "description": "A URI reference that identifies the specific occurrence of the problem.",
      "examples": [
        "https://example.com/error-log/abc123"
      ],
      "format": "uri",
      "type": "string"
    },
    "status": {
      "description": "HTTP status code",
      "examples": [
        400
      ],
      "format": "int64",
      "type": "integer"
    },
    "title": {
      "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
      "examples": [
        "Bad Request"
      ],
      "type": "string"
    },
    "type": {
      "default": "about:blank",
      "description": "A URI reference to human-readable documentation for the error.",
      "examples": [
        "https://example.com/errors/example"
      ],
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}

Operation ID: browser-logout · Contract 0.0.0-dev

Documentation reviewed 3 November 2026 · Current implementation snapshot

Need account help? Contact your company administrator. Planning a rollout? Talk to us.