object — Additional properties rejected
| Field | Required at this level | Type | Description and constraints |
|---|---|---|---|
schemaVersion |
Yes | Constant public-project-analysis-v1 |
— |
chainId |
Yes | Constant 8453 |
— |
identifier |
Yes | string |
Max length: 512 |
token |
Yes | At least one of: object; null |
— |
token.anyOf[1].address |
Yes | string |
Pattern: ^0x[0-9a-fA-F]{40}$ |
token.anyOf[1].name |
Yes | At least one of: string; null |
— |
token.anyOf[1].symbol |
Yes | At least one of: string; null |
— |
token.anyOf[1].decimals |
Yes | At least one of: integer; null |
— |
project |
Yes | object |
Additional properties rejected |
project.virtualsProjectId |
Yes | At least one of: string; null |
— |
project.url |
Yes | At least one of: string; null |
— |
project.relationship |
Yes | Constant PUBLIC_IDENTIFIER_ONLY |
— |
launchStage |
Yes | object |
Additional properties rejected |
launchStage.status |
Yes | string |
Allowed: UNKNOWN, POOL_OBSERVED |
launchStage.explanation |
Yes | string |
Max length: 1000 |
observation |
Yes | At least one of: object; null |
— |
observation.anyOf[1].blockNumber |
Yes | string |
Pattern: ^(0|[1-9][0-9]*)$; Max length: 78 |
observation.anyOf[1].blockHash |
Yes | string |
Pattern: ^0x[0-9a-fA-F]{64}$ |
observation.anyOf[1].blockTimestamp |
Yes | string |
Format: date-time |
observation.anyOf[1].observedAt |
Yes | string |
Read time, equal to readAt; not a durable recorded observation time. Format: date-time |
observation.anyOf[1].readAt |
Yes | string |
Format: date-time |
observation.anyOf[1].recordedAt |
Yes | null |
— |
observation.anyOf[1].providerId |
Yes | string |
Pattern: ^[a-zA-Z0-9:_-]{1,120}$ |
observation.anyOf[1].providerGeneration |
Yes | string |
Pattern: ^[a-zA-Z0-9:_-]{1,120}$ |
observation.anyOf[1].finality |
Yes | Constant FINALIZED |
— |
observation.anyOf[1].finalityVerification |
Yes | Constant SINGLE_RPC_ASSERTION |
— |
pools |
Yes | Array of object |
Max items: 1 |
pools[].address |
Yes | string |
Pattern: ^0x[0-9a-fA-F]{40}$ |
pools[].factory |
Yes | string |
Pattern: ^0x[0-9a-fA-F]{40}$ |
pools[].token0 |
Yes | string |
Pattern: ^0x[0-9a-fA-F]{40}$ |
pools[].token1 |
Yes | string |
Pattern: ^0x[0-9a-fA-F]{40}$ |
pools[].reserve0Atomic |
Yes | string |
Exact unsigned uint112 reserve in native atomic units. Never coerce to a JavaScript number or assume decimal metadata is available. Pattern: ^(0|[1-9][0-9]{0,33})$ |
pools[].reserve1Atomic |
Yes | string |
Exact unsigned uint112 reserve in native atomic units. Never coerce to a JavaScript number or assume decimal metadata is available. Pattern: ^(0|[1-9][0-9]{0,33})$ |
pools[].reserve0Decimals |
Yes | At least one of: integer; null |
— |
pools[].reserve1Decimals |
Yes | At least one of: integer; null |
— |
pools[].verification |
Yes | Constant CANONICAL_FACTORY_AND_PAIR_AT_BLOCK |
— |
pools[].quoteStatus |
Yes | Constant UNAVAILABLE_TRANSFER_BEHAVIOR |
— |
gaps |
Yes | Array of string |
Max items: 20 |
financialAuthority |
Yes | Constant false |
— |
Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.
Exact definition: #/components/schemas/PublicProjectAnalysis in the OpenAPI contract.