Properties
| Name | Type | Description |
|---|---|---|
| project | object | |
| bucket | object | |
| snapshot | object | |
| storageObject | object | |
| ok | boolean |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/eurobase-dev/json-schema/eurobase-dev-storage-object-response-schema.json",
"title": "StorageObjectResponse",
"x-generated": "2026-11-10",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/eurobase-dev-storage-buckets-api-openapi.yml#/components/schemas/StorageObjectResponse",
"type": "object",
"required": [
"project",
"storageObject"
],
"properties": {
"project": {
"$ref": "#/$defs/ProjectSummary"
},
"bucket": {
"anyOf": [
{
"$ref": "#/$defs/ProjectStorageBucketSummary"
},
{
"type": "null"
}
]
},
"snapshot": {
"anyOf": [
{
"$ref": "#/$defs/ProjectStorageSnapshot"
},
{
"type": "null"
}
]
},
"storageObject": {
"$ref": "#/$defs/StorageObject"
},
"ok": {
"type": "boolean"
}
},
"$defs": {
"ProjectRoute": {
"type": "object",
"required": [
"status",
"reasonCode",
"managed",
"upstream"
],
"properties": {
"status": {
"type": "string",
"enum": [
"healthy",
"repairing",
"degraded",
"broken",
"unknown"
]
},
"reasonCode": {
"type": "string",
"enum": [
"none",
"dns_record_missing",
"dns_propagating",
"domain_binding_missing",
"tls_pending",
"missing_project_upstream",
"upstream_unreachable",
"ingress_unreachable",
"unmanaged_custom_domain",
"scw_mutation_failed"
]
},
"checkedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"lastRepairAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"lastError": {
"type": [
"string",
"null"
]
},
"managed": {
"type": "boolean"
},
"convergenceState": {
"type": [
"string",
"null"
],
"enum": [
"recovering",
"exhausted",
"ready",
null
]
},
"upstream": {
"$ref": "#/$defs/ProjectUpstreamState"
}
}
},
"ProjectServingSuspension": {
"type": "object",
"description": "An operator suspension of the project's public serving (ADR 0080). Operator notes and evidence are never included.",
"required": [
"state",
"reasonCategory",
"reasonLabel",
"since",
"supportEmail",
"policyUrl"
],
"properties": {
"state": {
"type": "string",
"enum": [
"suspended"
]
},
"reasonCategory": {
"type": "string",
"enum": [
"phishing",
"malware",
"shared_domain_abuse",
"spam",
"illegal_content",
"legal_order",
"other_policy_violation"
]
},
"reasonLabel": {
"type": "string"
},
"since": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"supportEmail": {
"type": "string"
},
"policyUrl": {
"type": "string"
}
},
"additionalProperties": false
},
"ProjectSourceLock": {
"type": "object",
"description": "ADR 0090: while locked, no caller can change the project repository, branch, root directory or deployment mode.",
"required": [
"locked",
"lockedAt"
],
"properties": {
"locked": {
"type": "boolean"
},
"lockedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
}
},
"additionalProperties": false
},
"ProjectSourceProfileSummary": {
"type": "object",
"required": [
"framework",
"frameworkLabel",
"outputMode"
],
"properties": {
"framework": {
"type": "string",
"enum": [
"next",
"astro",
"svelte-kit",
"nuxt",
"react-router",
"tanstack-start",
"vite",
"hono",
"nestjs",
"fastify",
"express",
"django",
"fastapi",
"flask",
"laravel",
"rails",
"node",
"python",
"php",
"ruby",
"go",
"java",
"dotnet",
"static"
]
},
"frameworkLabel": {
"type": "string"
},
"outputMode": {
"type": "string",
"enum": [
"runtime",
"static"
]
}
}
},
"ProjectStorageBucketSummary": {
"type": "object",
"required": [
"id",
"name",
"pathPrefix",
"accessMode",
"status",
"objectCount",
"readyCount",
"totalBytes",
"createdAt",
"visibilitySummary",
"mimeSummary"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"pathPrefix": {
"type": "string"
},
"accessMode": {
"type": "string",
"enum": [
"private",
"public"
]
},
"status": {
"type": "string",
"enum": [
"provisioning",
"ready",
"failed",
"pending_delete",
"delete_failed",
"deleted"
]
},
"objectCount": {
"type": "integer"
},
"readyCount": {
"type": "integer"
},
"totalBytes": {
"type": "integer"
},
"createdAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"visibilitySummary": {
"type": "string"
},
"mimeSummary": {
"type": "string"
}
}
},
"ProjectStorageSnapshot": {
"type": "object",
"required": [
"bucketCount",
"objectCount",
"readyObjectCount",
"pendingObjectCount",
"failedObjectCount",
"imageObjectCount",
"totalBytes",
"visibilitySummary",
"latestObjectUpdatedAt"
],
"properties": {
"bucketCount": {
"type": "integer"
},
"objectCount": {
"type": "integer"
},
"readyObjectCount": {
"type": "integer"
},
"pendingObjectCount": {
"type": "integer"
},
"failedObjectCount": {
"type": "integer"
},
"imageObjectCount": {
"type": "integer"
},
"totalBytes": {
"type": "integer"
},
"visibilitySummary": {
"type": "string"
},
"latestObjectUpdatedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
}
}
},
"ProjectSummary": {
"type": "object",
"required": [
"id",
"deploymentMode",
"projectRoute",
"releaseUsability",
"sourceProfile"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
},
"organizationId": {
"type": [
"string",
"null"
]
},
"projectMembershipId": {
"type": [
"string",
"null"
]
},
"projectRole": {
"type": [
"string",
"null"
],
"enum": [
"owner",
"admin",
"contributor",
null
]
},
"projectSlug": {
"type": [
"string",
"null"
]
},
"projectHostname": {
"type": [
"string",
"null"
]
},
"primaryHostname": {
"type": [
"string",
"null"
],
"description": "Official address of the project: its active custom domain whose DNS points at Eurobase, the one that went live first when several do, otherwise projectHostname. projectHostname stays reserved and keeps serving."
},
"deploymentMode": {
"type": "string",
"enum": [
"runtime",
"static"
]
},
"lifecycleState": {
"type": [
"string",
"null"
]
},
"deleteRequestedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"projectRoute": {
"$ref": "#/$defs/ProjectRoute"
},
"releaseUsability": {
"$ref": "#/$defs/ReleaseUsability"
},
"projectSummaryStatus": {
"$ref": "#/$defs/ProjectSummaryStatus"
},
"servingSuspension": {
"oneOf": [
{
"$ref": "#/$defs/ProjectServingSuspension"
},
{
"type": "null"
}
]
},
"sourceProfile": {
"oneOf": [
{
"$ref": "#/$defs/ProjectSourceProfileSummary"
},
{
"type": "null"
}
]
},
"sourceLock": {
"$ref": "#/$defs/ProjectSourceLock"
}
}
},
"ProjectSummaryStatus": {
"type": "object",
"required": [
"label",
"tone",
"code",
"detailTitle",
"detail"
],
"properties": {
"label": {
"type": "string"
},
"tone": {
"type": "string",
"enum": [
"neutral",
"problem",
"error"
]
},
"code": {
"type": "string",
"enum": [
"setup_required",
"route_issue",
"deploy_failed",
"deploy_unhealthy",
"live_release_blocked",
"status_check_delayed",
"deploy_in_progress",
"rollback_live",
"healthy",
"suspended"
]
},
"detailTitle": {
"type": [
"string",
"null"
]
},
"detail": {
"type": [
"string",
"null"
]
}
}
},
"ProjectUpstreamState": {
"type": "object",
"required": [
"status",
"reasonCode"
],
"properties": {
"status": {
"type": "string",
"enum": [
"healthy",
"broken",
"unknown"
]
},
"reasonCode": {
"type": "string",
"enum": [
"none",
"missing_project_upstream",
"upstream_unreachable"
]
},
"checkedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"lastError": {
"type": [
"string",
"null"
]
}
}
},
"ReleaseUsability": {
"type": "object",
"required": [
"status",
"reasonCode",
"lastLiveDeploymentId"
],
"properties": {
"status": {
"type": "string",
"enum": [
"reachable",
"degraded",
"blocked",
"unknown"
]
},
"reasonCode": {
"type": "string",
"enum": [
"none",
"missing_live_release",
"access_not_allowed",
"route_repair_in_progress",
"route_incident",
"project_suspended"
]
},
"lastLiveDeploymentId": {
"type": [
"string",
"null"
]
}
}
},
"StorageObject": {
"type": "object",
"required": [
"id",
"organizationId",
"projectId",
"createdByUserId",
"logicalKey",
"visibility",
"uploadStatus",
"preview",
"createdAt",
"updatedAt"
],
"properties": {
"id": {
"type": "string"
},
"organizationId": {
"type": "string"
},
"projectId": {
"type": "string"
},
"bucketId": {
"type": [
"string",
"null"
]
},
"createdByUserId": {
"type": "string"
},
"logicalKey": {
"type": "string"
},
"objectKey": {
"type": [
"string",
"null"
]
},
"contentType": {
"type": [
"string",
"null"
]
},
"sizeBytes": {
"type": [
"integer",
"null"
]
},
"visibility": {
"type": "string",
"enum": [
"private",
"public"
]
},
"uploadStatus": {
"type": "string",
"enum": [
"pending",
"ready",
"failed",
"deleted"
]
},
"preview": {
"type": "object",
"required": [
"status",
"imageUrl",
"width",
"height",
"actions"
],
"properties": {
"status": {
"type": "string",
"enum": [
"loading",
"ready",
"unavailable",
"none"
]
},
"imageUrl": {
"type": [
"string",
"null"
],
"format": "uri-reference"
},
"width": {
"type": [
"integer",
"null"
],
"minimum": 1,
"maximum": 960
},
"height": {
"type": [
"integer",
"null"
],
"minimum": 1,
"maximum": 960
},
"actions": {
"type": "object",
"required": [
"retryPreview"
],
"properties": {
"retryPreview": {
"type": "boolean"
}
}
}
}
},
"productUrl": {
"type": [
"string",
"null"
],
"format": "uri"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
}
}
}
}
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/eurobase-dev-storage-object-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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.