IntegrationOS · Schema
Paginated_ClientUserView
Artificial IntelligenceTrustLayerIntegrationPlatformDeveloper Tools
Properties
| Name | Type | Description |
|---|---|---|
| page | integer | |
| pages | integer | |
| rows | array | |
| total | integer |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/picaos/main/json-schema/picaos-paginated-client-user-view-schema.json",
"title": "Paginated_ClientUserView",
"x-generated": "2026-10-21",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/_original/picaos-api-openapi.json#/components/schemas/Paginated_ClientUserView",
"properties": {
"page": {
"format": "int64",
"minimum": 0,
"type": "integer"
},
"pages": {
"format": "int64",
"minimum": 0,
"type": "integer"
},
"rows": {
"items": {
"description": "One user's standing with an OAuth client, as its developer sees them.\n\nCarries `reach` in the same consent vocabulary as\n[`crate::domain::oauth_authorization::OAuthAuthorizationView`], so the two\nsides of the ledger report a grant identically.",
"properties": {
"createdAt": {
"format": "date-time",
"type": "string"
},
"email": {
"type": "string"
},
"expiresAt": {
"description": "When the user's current access token for this client expires. `None`\nwhile they hold a live grant but no live token - the window between\nre-consent and the client redeeming the new code.",
"format": "date-time",
"type": [
"string",
"null"
]
},
"lastUsedAt": {
"format": "date-time",
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"reach": {
"description": "What a grant reaches, generic over how each entry is rendered - the one\ntrichotomy two surfaces share: a dashboard reads it as counts\n([`GrantedReachView`]), a reconnect card as pre-selectable rules\n([`PriorGrantView`]). `KnowledgeOnly`/`Full` are identical on the wire for\nboth; only the `Connectors` element type differs.\n\nA bare generic derives a single schema named `ReachView`, so both\ninstantiations would collide on that one OpenAPI component and one endpoint\nwould advertise the other's connector shape. Every schema site that carries\none of these therefore inlines it (`#[schema(inline)]` / `inline(...)`), so\nno shared `ReachView` component exists to collide.",
"oneOf": [
{
"description": "Docs and search only: no connection access of any kind.",
"properties": {
"type": {
"enum": [
"knowledgeOnly"
],
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
},
{
"description": "Every connection in the consented scope. No connector list because the\ngrant names none - it follows the account.",
"properties": {
"type": {
"enum": [
"full"
],
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
},
{
"description": "Only what the grant names, each entry rendered as `C`. **The granularity\nis the instantiation's**: a reach report carries one entry per\nconnector, a prior grant one per granted *connection*, so two entries\nthere can share a connector.",
"properties": {
"connectors": {
"items": {
"$ref": "#/$defs/GrantedConnectorView"
},
"type": "array"
},
"type": {
"enum": [
"connectors"
],
"type": "string"
}
},
"required": [
"connectors",
"type"
],
"type": "object"
}
]
},
"scopes": {
"items": {
"type": "string"
},
"type": "array"
},
"tokenCount": {
"minimum": 0,
"type": "integer"
},
"userId": {
"format": "uuid",
"type": "string"
},
"username": {
"type": "string"
}
},
"required": [
"userId",
"email",
"username",
"scopes",
"reach",
"createdAt",
"tokenCount"
],
"type": "object"
},
"type": "array"
},
"total": {
"format": "int64",
"minimum": 0,
"type": "integer"
}
},
"required": [
"rows",
"total",
"pages",
"page"
],
"type": "object",
"$defs": {
"ConnectionDefinitionId": {
"description": "Prefixed ID with 'conn_def' prefix (e.g., 'conn_def_1C'), also accepts raw integer",
"type": "string"
},
"GrantedConnectorView": {
"description": "One connector an issued grant reaches, as an audit surface reports it.\n\n**Not [`ResolvedConnectorView`].** This is a read-only report, never fed\nback into a request: a dashboard folds every live token together, and the\nenvelopes of several grants on one connector do not combine into one, so a\nrule-shaped answer here would be a rule nobody granted.",
"properties": {
"actionCount": {
"description": "Distinct actions reached across every grant and connection touching\nthis connector - the union, so a shared action counts once and disjoint\nones each.",
"minimum": 0,
"type": "integer"
},
"connectionCount": {
"description": "Distinct connections the grants name here. `None` when one of them\nnamed the *connector*, which reaches every connection on it including\nones added later, so no count would be true for long.",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"connectionDefinitionId": {
"$ref": "#/$defs/ConnectionDefinitionId"
},
"imageUrl": {
"type": "string"
},
"name": {
"type": "string"
},
"platform": {
"type": "string"
}
},
"required": [
"connectionDefinitionId",
"name",
"platform",
"imageUrl",
"actionCount"
],
"type": "object"
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/picaos-paginated-client-user-view"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.