Ctrl K
ComunidadGuías…

docs/api/GivingService.openapi.yaml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
openapi: 3.1.0
info:
    title: GivingService API
    version: 1.0.0
security:
    - WorldMonitorKey: []
    - ApiKeyHeader: []
servers:
    - url: https://api.worldmonitor.app
paths:
    /api/giving/v1/get-giving-summary:
        get:
            tags:
                - GivingService
            summary: GetGivingSummary
            description: |-
                GetGivingSummary retrieves published-claim platform projections, a verified
                 tracked-platform annualized flow estimate, and claim-level provenance.
                 Compatibility index/trend fields are explicitly marked unavailable.
                 Empty/absent summary with fetched_at=0 or data_available=false means the
                 snapshot is unavailable/degraded, not that giving activity is zero.
            operationId: GetGivingSummary
            parameters:
                - name: platform_limit
                  in: query
                  description: |-
                    Number of platform rows to return (0 = all). Aggregates and provenance
                     continue to describe the full snapshot.
                  required: false
                  example: 25
                  schema:
                    type: integer
                    format: int32
                - name: category_limit
                  in: query
                  description: |-
                    Number of category rows to return (0 = all). Aggregates and provenance
                     continue to describe the full snapshot.
                  required: false
                  example: 25
                  schema:
                    type: integer
                    format: int32
                - name: jmespath
                  in: query
                  description: |-
                    Optional JMESPath expression applied server-side to project or reduce the JSON response before it is returned (mirrors the MCP jmespath argument). Invalid expressions, expressions larger than 1024 UTF-8 bytes, or projections that exceed the 256 KB output cap return HTTP 400 with a {_jmespath_error, original_keys} envelope. Grammar and worked examples: https://www.worldmonitor.app/docs/mcp-jmespath.
                  required: false
                  example: "keys(@)"
                  schema:
                    type: string
            responses:
                "200":
                    description: Successful response
                    content:
                        application/json:
                            example:
                                "dataAvailable": true
                                "fetchedAt": 1784894400000
                                "summary":
                                    "activityIndex": 0
                                    "activityIndexAvailable": false
                                    "categories":
                                        - "activeCampaigns": 0
                                          "category": "Medical & Health"
                                          "change24h": 0
                                          "share": 0
                                          "trending": false
                                        - "activeCampaigns": 0
                                          "category": "Disaster Relief"
                                          "change24h": 0
                                          "share": 0
                                          "trending": false
                                        - "activeCampaigns": 0
                                          "category": "Education"
                                          "change24h": 0
                                          "share": 0
                                          "trending": false
                                        - "activeCampaigns": 0
                                          "category": "Community"
                                          "change24h": 0
                                          "share": 0
                                          "trending": false
                                        - "activeCampaigns": 0
                                          "category": "Memorials"
                                          "change24h": 0
                                          "share": 0
                                          "trending": false
                                        - "activeCampaigns": 0
                                          "category": "Animals & Pets"
                                          "change24h": 0
                                          "share": 0
                                          "trending": false
                                        - "activeCampaigns": 0
                                          "category": "Environment"
                                          "change24h": 0
                                          "share": 0
                                          "trending": false
                                        - "activeCampaigns": 0
                                          "category": "Hunger & Food"
                                          "change24h": 0
                                          "share": 0
                                          "trending": false
                                        - "activeCampaigns": 0
                                          "category": "Other"
                                          "change24h": 0
                                          "share": 0
                                          "trending": false
                                    "crypto":
                                        "dailyInflowUsd": 0
                                        "pctOfTotal": 0
                                        "topReceivers":
                                            []
                                        "trackedWallets": 0
                                        "transactions24h": 0
                                    "dataMode": "partial_estimate"
                                    "estimatedDailyFlowUsd": 7353424.657534246
                                    "generatedAt": "2026-07-24T12:00:00.000Z"
                                    "institutional":
                                        "cafDataYear": 0
                                        "cafWorldGivingIndex": 0
                                        "candidGrantsTracked": 3000000
                                        "dataLag": "Annual published context"
                                        "oecdDataYear": 2023
                                        "oecdOdaAnnualUsdBn": 223.7
                                    "platforms":
                                        - "dailyVolumeUsd": 7123287.671232876
                                          "dataFreshness": "annual"
                                          "lastUpdated": ""
                                          "platform": "GoFundMe"
                                        - "dailyVolumeUsd": 230136.98630136985
                                          "dataFreshness": "annual"
                                          "lastUpdated": ""
                                          "platform": "GlobalGiving"
                                        - "dailyVolumeUsd": 0
                                          "dataFreshness": "cumulative"
                                          "lastUpdated": ""
                                          "platform": "JustGiving"
                                    "provenance":
                                        - "accessedAt": "2026-07-24"
                                          "coveredMetricPaths":
                                              - "summary.platforms[platform=GoFundMe].daily_volume_usd"
                                              - "summary.estimated_daily_flow_usd"
                                          "denominator": "week"
                                          "derivation": "50,000,000 USD/week * 52 weeks/year = at least 2,600,000,000 USD/year."
                                          "includedInHighlightedAggregate": true
                                          "measurementBasis": "Published lower-bound weekly platform claim"
                                          "notes": "Exact claim: \"More than $50 million is raised each week on GoFundMe.\" The source footnote says this is the average amount raised per week in 2023 and 2024."
                                          "referencePeriod": "Average week across 2023-2024"
                                          "reportedUnit": "USD"
                                          "reportedValue": 50000000
                                          "sourceLocator": "Homepage giving-volume claim and attached footnote 1"
                                          "sourceName": "GoFundMe"
                                          "sourcePublishedAt": ""
                                          "sourceUrl": "https://www.gofundme.com/?lang=en"
                                          "status": "verified"
                                          "subject": "GoFundMe weekly giving"
                                          "valueQualifier": "more_than"
                                        - "accessedAt": "2026-07-24"
                                          "coveredMetricPaths":
                                              - "summary.platforms[platform=GlobalGiving].daily_volume_usd"
                                              - "summary.estimated_daily_flow_usd"
                                          "denominator": "year"
                                          "derivation": "Reported 2024 amount is used as an at-least annual estimate; no currency conversion."
                                          "includedInHighlightedAggregate": true
                                          "measurementBasis": "Published lower-bound annual platform claim"
                                          "notes": "Exact claim: GlobalGiving raised more than USD 84 million in 2024."
                                          "referencePeriod": "2024"
                                          "reportedUnit": "USD"
                                          "reportedValue": 84000000
                                          "sourceLocator": "2024 Year in Review, annual impact totals"
                                          "sourceName": "GlobalGiving"
                                          "sourcePublishedAt": ""
                                          "sourceUrl": "https://www.globalgiving.org/2024/"
                                          "status": "verified"
                                          "subject": "GlobalGiving 2024 giving"
                                          "valueQualifier": "more_than"
                                        - "accessedAt": "2026-07-24"
                                          "coveredMetricPaths":
                                              - "summary.platforms[platform=JustGiving].daily_volume_usd"
                                              - "summary.provenance"
                                          "denominator": "25 years cumulative"
                                          "derivation": "No annualization or USD conversion; cumulative GBP is provenance-only."
                                          "includedInHighlightedAggregate": false
                                          "measurementBasis": "Published lower-bound cumulative platform claim"
                                          "notes": "Exact claim: JustGiving has helped people raise more than GBP 7 billion over 25 years."
                                          "referencePeriod": "25 years cumulative"
                                          "reportedUnit": "GBP"
                                          "reportedValue": 7000000000
                                          "sourceLocator": "About JustGiving, platform impact statement"
                                          "sourceName": "JustGiving"
                                          "sourcePublishedAt": ""
                                          "sourceUrl": "https://www.justgiving.com/about"
                                          "status": "verified"
                                          "subject": "JustGiving cumulative giving"
                                          "valueQualifier": "more_than"
                                        - "accessedAt": "2026-07-24"
                                          "coveredMetricPaths":
                                              - "summary.institutional.oecd_oda_annual_usd_bn"
                                              - "summary.institutional.oecd_data_year"
                                          "denominator": "year"
                                          "derivation": "No derivation; retained in reported USD billions as institutional context only."
                                          "includedInHighlightedAggregate": false
                                          "measurementBasis": "Published annual institutional assistance context"
                                          "notes": "Exact claim: official development assistance from DAC members totalled USD 223.7 billion in 2023. This is institutional context, not personal platform giving."
                                          "referencePeriod": "2023"
                                          "reportedUnit": "USD billion"
                                          "reportedValue": 223.7
                                          "sourceLocator": "2023 ODA Figures and Trends launch, total ODA statement"
                                          "sourceName": "OECD"
                                          "sourcePublishedAt": ""
                                          "sourceUrl": "https://www.oecd.org/en/about/news/speech-statements/2024/04/2023-oda-figures-and-trends-launch-press-conference.html"
                                          "status": "verified"
                                          "subject": "OECD official development assistance"
                                          "valueQualifier": "reported"
                                        - "accessedAt": "2026-07-24"
                                          "coveredMetricPaths":
                                              - "summary.institutional.candid_grants_tracked"
                                          "denominator": "year"
                                          "derivation": "No derivation; replaces the unsupported legacy bare 18 million grant count."
                                          "includedInHighlightedAggregate": false
                                          "measurementBasis": "Published approximate annual grants-data coverage"
                                          "notes": "Exact claim: Candid data represents about 3 million grants annually."
                                          "referencePeriod": "Current fact sheet accessed 2026-07-24"
                                          "reportedUnit": "grants"
                                          "reportedValue": 3000000
                                          "sourceLocator": "Grants data fact sheet, annual grants-data coverage statement"
                                          "sourceName": "Candid"
                                          "sourcePublishedAt": ""
                                          "sourceUrl": "https://candid.org/about/our-data/grants-data-fact-sheet/"
                                          "status": "verified"
                                          "subject": "Candid grants represented annually"
                                          "valueQualifier": "about"
                                        - "accessedAt": "2026-07-24"
                                          "coveredMetricPaths":
                                              - "summary.provenance"
                                          "denominator": "year"
                                          "derivation": "No derivation; provenance-only institutional context."
                                          "includedInHighlightedAggregate": false
                                          "measurementBasis": "Published approximate annual grants-data value"
                                          "notes": "Exact claim: Candid data represents about USD 180 billion in grantmaking annually."
                                          "referencePeriod": "Current fact sheet accessed 2026-07-24"
                                          "reportedUnit": "USD"
                                          "reportedValue": 180000000000
                                          "sourceLocator": "Grants data fact sheet, annual grants-data coverage statement"
                                          "sourceName": "Candid"
                                          "sourcePublishedAt": ""
                                          "sourceUrl": "https://candid.org/about/our-data/grants-data-fact-sheet/"
                                          "status": "verified"
                                          "subject": "Candid annual grantmaking represented"
                                          "valueQualifier": "about"
                                        - "accessedAt": "2026-07-24"
                                          "coveredMetricPaths":
                                              - "summary.crypto.daily_inflow_usd"
                                          "denominator": "purported year"
                                          "derivation": "No derivation; unverified input is excluded from annual and daily flow."
                                          "includedInHighlightedAggregate": false
                                          "measurementBasis": "Unsupported legacy annual crypto-giving estimate"
                                          "notes": "Exact legacy claim: total crypto giving was estimated at approximately USD 2 billion per year. No stable primary evidence was established, so the value is hidden and excluded."
                                          "referencePeriod": "Legacy 2024 estimate; reference period not verified"
                                          "reportedUnit": "USD"
                                          "reportedValue": 2000000000
                                          "sourceLocator": "Issue #5504, unsupported crypto estimate"
                                          "sourceName": "WorldMonitor issue #5504"
                                          "sourcePublishedAt": ""
                                          "sourceUrl": "https://github.com/koala73/worldmonitor/issues/5504"
                                          "status": "unverified"
                                          "subject": "Legacy crypto-giving annual volume"
                                          "valueQualifier": "approximately"
                                        - "accessedAt": "2026-07-24"
                                          "coveredMetricPaths":
                                              - "summary.crypto.tracked_wallets"
                                              - "summary.crypto.top_receivers"
                                              - "summary.crypto.pct_of_total"
                                          "denominator": "snapshot"
                                          "derivation": "No derivation; wallet count, receivers, and percentage are hidden."
                                          "includedInHighlightedAggregate": false
                                          "measurementBasis": "Unsupported legacy wallet/receiver coverage claim"
                                          "notes": "Exact legacy claim: 150 charity wallets were tracked, with named top receivers and an estimated 0.8 percent share. No collector or stable primary evidence was established."
                                          "referencePeriod": "Legacy snapshot; reference period not verified"
                                          "reportedUnit": "wallets"
                                          "reportedValue": 150
                                          "sourceLocator": "Issue #5504, unsupported wallet and receiver metrics"
                                          "sourceName": "WorldMonitor issue #5504"
                                          "sourcePublishedAt": ""
                                          "sourceUrl": "https://github.com/koala73/worldmonitor/issues/5504"
                                          "status": "unverified"
                                          "subject": "Legacy crypto wallet and receiver coverage"
                                          "valueQualifier": "unverified"
                                        - "accessedAt": "2026-07-24"
                                          "coveredMetricPaths":
                                              - "summary.institutional.caf_world_giving_index"
                                              - "summary.institutional.caf_data_year"
                                          "denominator": "index"
                                          "derivation": "No derivation; value and year are hidden."
                                          "includedInHighlightedAggregate": false
                                          "measurementBasis": "Unsupported legacy index context"
                                          "notes": "Exact legacy claim: a global-average CAF World Giving Index value of 34 for 2024. No stable primary evidence for this exact displayed value was established."
                                          "referencePeriod": "Purported 2024 value; source not verified"
                                          "reportedUnit": "index points"
                                          "reportedValue": 34
                                          "sourceLocator": "Issue #5504, unsupported CAF value"
                                          "sourceName": "WorldMonitor issue #5504"
                                          "sourcePublishedAt": ""
                                          "sourceUrl": "https://github.com/koala73/worldmonitor/issues/5504"
                                          "status": "unverified"
                                          "subject": "Legacy CAF World Giving Index context"
                                          "valueQualifier": "unverified"
                                        - "accessedAt": "2026-07-24"
                                          "coveredMetricPaths":
                                              - "summary.categories[*].share"
                                              - "summary.categories[*].change_24h"
                                              - "summary.categories[*].active_campaigns"
                                              - "summary.categories[*].trending"
                                          "denominator": "share of legacy distribution"
                                          "derivation": "No derivation; shares are hidden and live fields remain zero/false sentinels."
                                          "includedInHighlightedAggregate": false
                                          "measurementBasis": "Unsupported static category distribution"
                                          "notes": "Exact legacy claim: nine category shares totalled 1.0, led by Medical & Health at 0.33. Stable primary evidence for the displayed distribution was not established."
                                          "referencePeriod": "Legacy snapshot; reference period not verified"
                                          "reportedUnit": "distribution total"
                                          "reportedValue": 1
                                          "sourceLocator": "Issue #5504, unsupported category values and trending semantics"
                                          "sourceName": "WorldMonitor issue #5504"
                                          "sourcePublishedAt": ""
                                          "sourceUrl": "https://github.com/koala73/worldmonitor/issues/5504"
                                          "status": "unverified"
                                          "subject": "Legacy giving category shares"
                                          "valueQualifier": "unverified"
                                        - "accessedAt": "2026-07-24"
                                          "coveredMetricPaths":
                                              - "summary.platforms[*].active_campaigns_sampled"
                                              - "summary.platforms[*].new_campaigns_24h"
                                              - "summary.platforms[*].donation_velocity"
                                              - "summary.categories[*].change_24h"
                                              - "summary.categories[*].active_campaigns"
                                              - "summary.categories[*].trending"
                                              - "summary.crypto.transactions_24h"
                                          "denominator": "not applicable"
                                          "derivation": "No derivation; zero and false are compatibility sentinels, not measured activity."
                                          "includedInHighlightedAggregate": false
                                          "measurementBasis": "Explicit collection-status record"
                                          "notes": "Exact collection status: no live campaign-sampling or on-chain transaction collector populates these fields."
                                          "referencePeriod": "Current v2 collection capability"
                                          "reportedUnit": "compatibility sentinel"
                                          "reportedValue": 0
                                          "sourceLocator": "Issue #5504, collector audit"
                                          "sourceName": "WorldMonitor issue #5504"
                                          "sourcePublishedAt": ""
                                          "sourceUrl": "https://github.com/koala73/worldmonitor/issues/5504"
                                          "status": "not_collected"
                                          "subject": "Live platform and category activity collection"
                                          "valueQualifier": "not_measured"
                                        - "accessedAt": "2026-07-24"
                                          "coveredMetricPaths":
                                              - "summary.activity_index"
                                              - "summary.activity_index_available"
                                              - "summary.trend"
                                              - "summary.trend_available"
                                          "denominator": "not applicable"
                                          "derivation": "No derivation; retain activityIndex=0 and trend=\"stable\" only for wire compatibility."
                                          "includedInHighlightedAggregate": false
                                          "measurementBasis": "Explicit compatibility-status record"
                                          "notes": "Exact compatibility status: no measured activity index or historical directional trend is available."
                                          "referencePeriod": "Current v2 compatibility contract"
                                          "reportedUnit": "compatibility sentinel"
                                          "reportedValue": 0
                                          "sourceLocator": "Issue #5504, index and trend audit"
                                          "sourceName": "WorldMonitor issue #5504"
                                          "sourcePublishedAt": ""
                                          "sourceUrl": "https://github.com/koala73/worldmonitor/issues/5504"
                                          "status": "not_applicable"
                                          "subject": "Activity index and directional trend"
                                          "valueQualifier": "not_measured"
                                    "trend": "stable"
                                    "trendAvailable": false
                            schema:
                                $ref: '#/components/schemas/GetGivingSummaryResponse'
                "400":
                    description: Validation error
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/ValidationError'
                                    - $ref: '#/components/schemas/JmespathProjectionError'
                "401":
                    description: Missing or invalid API key.
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/UnauthorizedError'
                "403":
                    description: API access requires an active subscription (the API key's subscription is inactive or expired).
                    headers:
                        X-Billing-Verification:
                            description: Present when the 403 is a billing-provider-confirmed subscription lapse (value subscription_lapsed, matching the body `code`).
                            schema:
                                type: string
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/ForbiddenError'
                "429":
                    description: Rate limit exceeded.
                    headers:
                        X-RateLimit-Limit:
                            description: Maximum requests allowed in the active rate-limit window.
                            schema:
                                type: string
                        X-RateLimit-Remaining:
                            description: Requests remaining in the active rate-limit window.
                            schema:
                                type: string
                        X-RateLimit-Reset:
                            description: Unix epoch milliseconds when the active rate-limit window resets.
                            schema:
                                type: string
                        Retry-After:
                            description: Seconds to wait before retrying the request.
                            schema:
                                type: string
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/Error'
                                    - $ref: '#/components/schemas/RateLimitError'
                "503":
                    description: Service unavailable. Billing-verification responses include code and X-Billing-Verification; other gateway infrastructure failures use the generic GatewayError shape.
                    headers:
                        Retry-After:
                            description: Seconds to wait before retrying (1-60).
                            schema:
                                type: string
                        X-Billing-Verification:
                            description: Billing-verification state that produced this response (matches the body `code`).
                            schema:
                                type: string
                        X-Validation-Mode:
                            description: Present with value degraded when user API-key validation is temporarily unavailable.
                            schema:
                                type: string
                        X-RateLimit-Mode:
                            description: Present with value degraded when a fail-closed rate-limit dependency is unavailable.
                            schema:
                                type: string
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/BillingVerificationError'
                                    - $ref: '#/components/schemas/GatewayError'
                default:
                    description: Gateway or handler error response.
                    content:
                        application/json:
                            schema:
                                oneOf:
                                    - $ref: '#/components/schemas/Error'
                                    - $ref: '#/components/schemas/GatewayError'
components:
    securitySchemes:
        WorldMonitorKey:
            type: apiKey
            in: header
            name: X-WorldMonitor-Key
            description: User-issued WorldMonitor API key.
        ApiKeyHeader:
            type: apiKey
            in: header
            name: X-Api-Key
            description: Alias header for the WorldMonitor API key (X-WorldMonitor-Key).
    schemas:
        JmespathProjectionError:
            description: Returned when a REST jmespath projection is invalid or exceeds the expression/output byte limits.
            properties:
                _jmespath_error:
                    description: Projection error discriminator and details.
                    type: string
                original_keys:
                    description: Top-level keys or shape of the unprojected response.
                    items:
                        type: string
                    type: array
            required:
                - _jmespath_error
                - original_keys
            type: object
        UnauthorizedError:
            type: object
            properties:
                error:
                    type: string
                    description: Human-readable error message.
            required:
                - error
            description: Returned when the API key is missing, malformed, or lacks current API access.
        Error:
            type: object
            properties:
                message:
                    type: string
                    description: Error message (e.g., 'user not found', 'database connection failed')
            description: Error is returned when a handler encounters an error. It contains a simple error message that the developer can customize.
        BillingVerificationError:
            type: object
            description: "Returned with HTTP 503 when paid access cannot be confirmed right now: the billing provider is re-verifying a recently expired subscription, or the entitlement backend is unreachable. Retryable — honor Retry-After."
            properties:
                error:
                    type: string
                    description: Human-readable billing-verification failure reason.
                code:
                    type: string
                    enum:
                        - renewal_verification_pending
                        - renewal_verification_failed
                        - entitlement_verification_unavailable
                    description: Machine-readable billing-verification state, mirrored in the X-Billing-Verification response header.
                requiredTier:
                    type: integer
                    format: int32
                    description: Minimum entitlement tier required for this endpoint, when the denial came from a tier gate.
            required:
                - error
                - code
        InvalidRequestBodyError:
            type: object
            description: Returned when a JSON POST request body is empty or malformed.
            properties:
                message:
                    type: string
                    description: Invalid request body
            required:
                - message
        GatewayError:
            type: object
            description: Returned by gateway infrastructure errors before an RPC handler runs, such as origin, routing, method, authentication, or quota checks.
            properties:
                error:
                    oneOf:
                        - type: string
                        - type: object
                          additionalProperties: true
                    description: Gateway error reason or structured gateway failure details.
            required:
                - error
        RateLimitError:
            type: object
            description: Returned when a gateway or handler rate limit rejects the request.
            properties:
                error:
                    type: string
                    description: Human-readable rate-limit failure reason.
            required:
                - error
        ForbiddenError:
            type: object
            properties:
                error:
                    type: string
                    description: Human-readable entitlement failure reason.
                code:
                    type: string
                    enum:
                        - subscription_lapsed
                    description: Machine-readable denial code, present when the 403 is a billing-provider-confirmed subscription lapse (mirrored in the X-Billing-Verification response header).
                requiredTier:
                    type: integer
                    format: int32
                    description: Minimum entitlement tier required for this endpoint.
                currentTier:
                    type: integer
                    format: int32
                    description: Caller entitlement tier when known.
                planKey:
                    type: string
                    description: Caller plan key when known.
            required:
                - error
            description: Returned when a PRO-gated endpoint denies access because the caller has no resolved authenticated user, entitlements cannot be verified, or the caller lacks the required entitlement tier.
        FieldViolation:
            type: object
            properties:
                field:
                    type: string
                    description: The field path that failed validation (e.g., 'user.email' for nested fields). For header validation, this will be the header name (e.g., 'X-API-Key')
                description:
                    type: string
                    description: Human-readable description of the validation violation (e.g., 'must be a valid email address', 'required field missing')
            required:
                - field
                - description
            description: FieldViolation describes a single validation error for a specific field.
        ValidationError:
            type: object
            properties:
                violations:
                    type: array
                    items:
                        $ref: '#/components/schemas/FieldViolation'
                    description: List of validation violations
            required:
                - violations
            description: ValidationError is returned when request validation fails. It contains a list of field violations describing what went wrong.
        GetGivingSummaryRequest:
            type: object
            properties:
                platformLimit:
                    type: integer
                    format: int32
                    description: |-
                        Number of platform rows to return (0 = all). Aggregates and provenance
                         continue to describe the full snapshot.
                categoryLimit:
                    type: integer
                    format: int32
                    description: |-
                        Number of category rows to return (0 = all). Aggregates and provenance
                         continue to describe the full snapshot.
            description: GetGivingSummaryRequest specifies projections over the published-claim snapshot.
        GetGivingSummaryResponse:
            type: object
            properties:
                summary:
                    $ref: '#/components/schemas/GivingSummary'
                fetchedAt:
                    type: integer
                    format: int64
                    description: |-
                        Cache/response materialization time as Unix epoch milliseconds. This is not
                         source publication or observation time. A value of 0 means the snapshot is
                         unavailable/degraded, not that giving activity is zero.. Warning: Values > 2^53 may lose precision in JavaScript
                dataAvailable:
                    type: boolean
                    description: |-
                        True when a summary payload is populated. False means an absent/empty
                         summary is graceful degradation because the snapshot is unavailable;
                         provenance and data mode are not required on that degraded shape.
            description: GetGivingSummaryResponse contains a cacheable published-claim snapshot.
        GivingSummary:
            type: object
            properties:
                generatedAt:
                    type: string
                    description: |-
                        Response summary generation time (ISO 8601). This is a transport/cache
                         timestamp, not a source publication or observation time.
                activityIndex:
                    type: number
                    format: double
                    description: |-
                        Legacy numeric compatibility sentinel. Corrected snapshots emit 0 and
                         activity_index_available=false; this is not a measured score.
                trend:
                    type: string
                    description: |-
                        Legacy string compatibility sentinel. Corrected snapshots retain "stable"
                         with trend_available=false; this is not a measured directional trend.
                estimatedDailyFlowUsd:
                    type: number
                    format: double
                    description: |-
                        Daily USD equivalent of only aggregate-eligible, verified annual or
                         defensibly annualized tracked-platform claims. It is not a live daily
                         observation or an estimate of all global giving.
                platforms:
                    type: array
                    items:
                        $ref: '#/components/schemas/PlatformGiving'
                categories:
                    type: array
                    items:
                        $ref: '#/components/schemas/CategoryBreakdown'
                crypto:
                    $ref: '#/components/schemas/CryptoGivingSummary'
                institutional:
                    $ref: '#/components/schemas/InstitutionalGiving'
                dataMode:
                    type: string
                    description: |-
                        Evidence mode: "published_estimate" or "partial_estimate". If absent in an
                         older payload, consumers must treat the payload as legacy/unknown, never as
                         a published estimate by proto scalar default.
                trendAvailable:
                    type: boolean
                    description: |-
                        True only when trend contains a measured directional trend. Corrected
                         published-claim snapshots emit false.
                provenance:
                    type: array
                    items:
                        $ref: '#/components/schemas/GivingProvenance'
                activityIndexAvailable:
                    type: boolean
                    description: |-
                        True only when activity_index contains a measured score. Corrected
                         published-claim snapshots emit false.
            description: |-
                GivingSummary is a cacheable snapshot of published giving claims. Source
                 reference periods live in provenance; generated_at is only the time this
                 response snapshot was materialized.
        PlatformGiving:
            type: object
            properties:
                platform:
                    type: string
                    minLength: 1
                    description: Platform name (e.g., "GoFundMe", "GlobalGiving", "JustGiving").
                dailyVolumeUsd:
                    type: number
                    format: double
                    description: |-
                        Daily USD equivalent derived from an aggregate-eligible published claim.
                         Zero means no eligible conversion, not measured zero giving.
                activeCampaignsSampled:
                    type: integer
                    format: int32
                    description: |-
                        Legacy live-sampling field. Zero is a not-collected compatibility sentinel
                         unless provenance says otherwise.
                newCampaigns24h:
                    type: integer
                    format: int32
                    description: |-
                        Legacy 24-hour field. Zero is a not-collected compatibility sentinel unless
                         provenance says otherwise.
                donationVelocity:
                    type: number
                    format: double
                    description: |-
                        Legacy live-velocity field. Zero is a not-collected compatibility sentinel
                         unless provenance says otherwise.
                dataFreshness:
                    type: string
                    description: |-
                        Legacy source basis/cadence ("annual", "cumulative", or "unknown"), not
                         response freshness or source age.
                lastUpdated:
                    type: string
                    description: |-
                        Verified source publication date only. Empty when no publication date was
                         verified; request/cache time must never be substituted.
            required:
                - platform
            description: PlatformGiving represents aggregated giving data from a single crowdfunding platform.
        CategoryBreakdown:
            type: object
            properties:
                category:
                    type: string
                    description: Category name (e.g., "Medical", "Disaster Relief", "Education").
                share:
                    type: number
                    format: double
                    description: |-
                        Published share (0-1) when verified. Zero is an unavailable sentinel when
                         the category evidence is unverified.
                change24h:
                    type: number
                    format: double
                    description: Legacy 24-hour change. Zero is a not-collected compatibility sentinel.
                activeCampaigns:
                    type: integer
                    format: int32
                    description: Legacy live campaign count. Zero is a not-collected compatibility sentinel.
                trending:
                    type: boolean
                    description: Legacy live trending indicator. Corrected static snapshots emit false.
            description: CategoryBreakdown retains the legacy wire shape for category claims.
        CryptoGivingSummary:
            type: object
            properties:
                dailyInflowUsd:
                    type: number
                    format: double
                    description: Daily USD equivalent from a verified annual claim, if available.
                trackedWallets:
                    type: integer
                    format: int32
                    description: Verified tracked-wallet count, if available.
                transactions24h:
                    type: integer
                    format: int32
                    description: Measured transactions in the last 24 hours, if a collector exists.
                topReceivers:
                    type: array
                    items:
                        type: string
                        description: Verified receiving platforms or organizations, if available.
                pctOfTotal:
                    type: number
                    format: double
                    description: Verified on-chain share of the relevant giving denominator, if available.
            description: |-
                CryptoGivingSummary retains the legacy wire shape. Corrected snapshots expose
                 only verified values; zero/empty fields are unavailable compatibility
                 sentinels, not measured on-chain activity.
        InstitutionalGiving:
            type: object
            properties:
                oecdOdaAnnualUsdBn:
                    type: number
                    format: double
                    description: Latest OECD ODA total (annual, USD billions).
                oecdDataYear:
                    type: integer
                    format: int32
                    description: Year of latest OECD data.
                cafWorldGivingIndex:
                    type: number
                    format: double
                    description: CAF World Giving Index score (latest).
                cafDataYear:
                    type: integer
                    format: int32
                    description: Year of latest CAF data.
                candidGrantsTracked:
                    type: integer
                    format: int32
                    description: Number of foundation grants tracked (Candid).
                dataLag:
                    type: string
                    description: Data lag description (e.g., "Quarterly", "Annual").
            description: InstitutionalGiving tracks large-scale structured philanthropy and ODA.
        GivingProvenance:
            type: object
            properties:
                subject:
                    type: string
                    description: Human-readable subject of the claim or collection-status record.
                sourceName:
                    type: string
                    description: Publisher or authority responsible for the referenced claim.
                sourceUrl:
                    type: string
                    description: HTTPS URL for the source or stable audit record.
                referencePeriod:
                    type: string
                    description: Period covered by the source claim (for example, "2024" or "25 years cumulative").
                sourcePublishedAt:
                    type: string
                    description: |-
                        Verified source publication date when known. Empty means not verified; it
                         must never fall back to generated_at, fetched_at, or access time.
                measurementBasis:
                    type: string
                    description: |-
                        What the reported number measures (annual, weekly average, cumulative,
                         institutional context, compatibility sentinel, or collection status).
                status:
                    type: string
                    description: |-
                        Verification status. Allowed values: "verified", "partially_verified",
                         "unverified", "not_collected", "not_applicable". Consumers must treat
                         unknown future values as "unverified".
                coveredMetricPaths:
                    type: array
                    items:
                        type: string
                        description: |-
                            Stable proto response field paths covered by this evidence record. Field
                             names use the proto snake_case spelling (for example,
                             "summary.estimated_daily_flow_usd").
                includedInHighlightedAggregate:
                    type: boolean
                    description: Whether this claim contributes to the highlighted tracked-platform aggregate.
                reportedValue:
                    type: number
                    format: double
                    description: Numeric value exactly as reported or recorded for the compatibility status.
                reportedUnit:
                    type: string
                    description: Unit attached to reported_value without implicit currency conversion.
                notes:
                    type: string
                    description: Exact-claim text and any limitations needed to audit the record.
                valueQualifier:
                    type: string
                    description: Source qualifier such as "more_than", "about", "reported", or "not_measured".
                sourceLocator:
                    type: string
                    description: Stable location within the source where the claim can be found.
                accessedAt:
                    type: string
                    description: Date the source was checked (YYYY-MM-DD); not a source observation time.
                denominator:
                    type: string
                    description: Time/value denominator used by the source claim.
                derivation:
                    type: string
                    description: Explicit derivation applied to the claim, or why no derivation is allowed.
            description: |-
                GivingProvenance records one auditable published claim or one explicit
                 collection/compatibility status. No field represents a source observation
                 time; source reference periods and verified publication dates stay separate
                 from response/cache timestamps.