{"openapi":"3.0.3","info":{"title":"Pluggy Status","version":"1.0.0","description":"Read the health of every Pluggy connector, product and infrastructure component, plus every open and past incident, the same data that powers https://status.pluggy.ai. No authentication and no API key: the endpoints are public, CORS-open and cached for 30s, so you can call them straight from a back end, a support tool or a browser. Poll them to show an incident banner on your own connector-selection screen, or subscribe to updates by email/Slack from https://status.pluggy.ai."},"servers":[{"url":"https://status.pluggy.ai","description":"Status API"}],"tags":[{"name":"Status","description":"Public health and incident data for Pluggy connectors, products and infrastructure. No authentication required."}],"components":{"schemas":{"IncidentUpdate":{"type":"object","description":"One entry of an incident timeline, newest last.","properties":{"id":{"type":"string","format":"uuid"},"incident_id":{"type":"string","format":"uuid"},"state":{"type":"string","enum":["investigating","identified","monitoring","resolved","scheduled","update"]},"body":{"type":"string","description":"Update text (small markdown subset: bold, italic, code, links, lists)."},"created_at":{"type":"string","format":"date-time"}}},"IncidentInstitution":{"type":"object","properties":{"pluggy_id":{"type":"string","description":"Pluggy connector id, matches the id in GET /connectors."},"institution_name":{"type":"string","nullable":true}}},"Incident":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"kind":{"type":"string","enum":["incident","maintenance"]},"product":{"type":"string","enum":["dados","pis","pis-agendado","pixauto","smart","infra","pagamentos"],"description":"Affected product. 'pagamentos' is legacy and only appears on historical incidents."},"pluggy_id":{"type":"string","nullable":true,"description":"Primary affected connector. Null for product-wide or infrastructure incidents."},"institution_name":{"type":"string","nullable":true},"institutions":{"type":"array","description":"Every affected institution. An incident can span several connectors; the primary one is pluggy_id.","items":{"$ref":"#/components/schemas/IncidentInstitution"}},"component_key":{"type":"string","nullable":true,"description":"Infrastructure component (api, webhooks or connect) for incidents whose product is infra."},"severity":{"type":"string","enum":["degraded","partial_outage","major_outage","maintenance"]},"state":{"type":"string","enum":["investigating","identified","monitoring","resolved","scheduled"],"description":"Anything other than 'resolved' is an open incident."},"scheduled_kind":{"type":"string","enum":["programada","nao-programada","upcoming"]},"title":{"type":"string"},"description":{"type":"string","nullable":true},"apis":{"type":"array","items":{"type":"string"},"description":"Affected APIs or journey phases, e.g. Cartão de crédito, Investimentos, Consentimento."},"started_at":{"type":"string","format":"date-time"},"resolved_at":{"type":"string","format":"date-time","nullable":true},"window_starts_at":{"type":"string","format":"date-time","nullable":true,"description":"Maintenance window start."},"window_ends_at":{"type":"string","format":"date-time","nullable":true,"description":"Maintenance window end."},"postmortem":{"type":"string","nullable":true,"description":"Published post-mortem, when there is one."},"source":{"type":"string","enum":["manual","webhook","statuspage"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"updates":{"type":"array","items":{"$ref":"#/components/schemas/IncidentUpdate"},"description":"Timeline of the incident, oldest first."}}},"Institution":{"type":"object","properties":{"pluggy_id":{"type":"string","description":"Pluggy connector id, matches the id in GET /connectors."},"name":{"type":"string"},"type":{"type":"string","nullable":true},"logo_url":{"type":"string","nullable":true},"is_open_finance":{"type":"boolean","description":"True for regulated Open Finance connectors, false for Pluggy's direct connectors."},"open_finance_participant_url":{"type":"string","nullable":true},"status":{"type":"string","enum":["online","degraded","offline","maintenance"],"description":"Current health of the data connection. It does not describe payment rails — see components for those."},"bars":{"type":"string","description":"90 characters, one per day, oldest first: o online, d degraded, x offline, m maintenance."},"uptime":{"type":"number","description":"Uptime over the last 90 days, as a percentage."},"supports_data":{"type":"boolean"},"supports_pis":{"type":"boolean"},"supports_pis_scheduled":{"type":"boolean"},"supports_pix_auto":{"type":"boolean"},"supports_smart_transfer":{"type":"boolean"}}},"Component":{"type":"object","description":"A Pluggy infrastructure component (API, webhooks, Connect widget).","properties":{"key":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["operational","degraded","partial_outage","major_outage","maintenance"]},"sort_order":{"type":"integer"}}},"ProductStatus":{"type":"object","description":"Manual per-institution status for the payment products. Payment rails have no automatic health check, so a row only appears here when Pluggy sets it.","properties":{"pluggy_id":{"type":"string"},"institution_name":{"type":"string"},"product":{"type":"string","enum":["pis","pis-agendado","pixauto","smart"]},"status":{"type":"string","enum":["operational","degraded","partial_outage","major_outage","maintenance"]}}},"Observation":{"type":"object","description":"A high-confidence situation Pluggy is investigating. It is not a confirmed incident and does not change component availability.","properties":{"id":{"type":"string","format":"uuid"},"institution_name":{"type":"string"},"title":{"type":"string"},"body":{"type":"string","description":"Customer-facing update. It never includes internal metrics, customer data or a root-cause hypothesis."},"state":{"type":"string","enum":["active","resolved","dismissed"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"resolved_at":{"type":"string","format":"date-time","nullable":true}}},"StatusSnapshot":{"type":"object","properties":{"generatedAt":{"type":"string","format":"date-time"},"institutions":{"type":"array","items":{"$ref":"#/components/schemas/Institution"}},"incidents":{"type":"array","items":{"$ref":"#/components/schemas/Incident"},"description":"Open incidents plus the last 90 days of resolved ones. Anything whose state is not 'resolved' is happening right now."},"observations":{"type":"array","items":{"$ref":"#/components/schemas/Observation"},"description":"Approved high-confidence monitoring observations, active plus recent outcomes. They are not incidents and do not imply component degradation."},"components":{"type":"array","items":{"$ref":"#/components/schemas/Component"}},"productStatus":{"type":"array","items":{"$ref":"#/components/schemas/ProductStatus"}}}},"ConnectorIncident":{"type":"object","description":"An incident affecting one connector right now.","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string","description":"Short, customer-facing summary, e.g. 'XP Banking - Compras parceladas não sendo retornadas'."},"description":{"type":"string","nullable":true},"type":{"type":"string","enum":["CONNECTOR_UNAVAILABLE","CONNECTOR_DEGRADED","INSTITUTION_OUTAGE","SCHEDULED_MAINTENANCE","CONSENT_ERROR","CONNECTION_NOT_UPDATING","PARTIAL_SUCCESS","ACCOUNTS_MISSING","BALANCE_INCORRECT","TRANSACTIONS_MISSING","TRANSACTIONS_INCORRECT","TRANSACTIONS_INSTALLMENTS_ISSUE","INVESTMENTS_MISSING","INVESTMENTS_INCORRECT","IDENTITY_MISSING","HISTORICAL_DATA_MISSING","WEBHOOK_DELAY","PAYMENT_FAILURE","OTHER"],"description":"What is broken — the axis severity and state do not cover. Use it to group the same problem across institutions, and to decide which incidents are worth showing a user: a SCHEDULED_MAINTENANCE and a TRANSACTIONS_MISSING both read as 'degraded' otherwise. OTHER means we have not classified it, not that nothing is wrong."},"product":{"type":"string","enum":["dados","pis","pis-agendado","pixauto","smart","infra"],"description":"Which Pluggy product line the incident affects."},"kind":{"type":"string","enum":["INCIDENT","MAINTENANCE"]},"severity":{"type":"string","enum":["DEGRADED","PARTIAL_OUTAGE","MAJOR_OUTAGE","MAINTENANCE"]},"state":{"type":"string","enum":["INVESTIGATING","IDENTIFIED","MONITORING","SCHEDULED"]},"startedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time","nullable":true},"url":{"type":"string","description":"Permalink to the incident on the status page, with its full timeline and postmortem."}}},"ConnectorIncidents":{"type":"object","properties":{"generatedAt":{"type":"string","format":"date-time"},"connectors":{"type":"object","description":"Keyed by Pluggy connector id. Only connectors with at least one active incident appear, and each list is ordered worst-first.","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/ConnectorIncident"}}}}},"StatusSummary":{"type":"object","properties":{"status":{"type":"string","enum":["op","dg","pt","mj","mn"],"description":"Worst status across connectors, infrastructure and open incidents: op operational, dg degraded, pt partial outage, mj major outage, mn maintenance."},"labels":{"type":"object","description":"Ready-to-render label for the status, keyed by locale.","properties":{"pt":{"type":"string"},"es":{"type":"string"},"en":{"type":"string"}}},"openIncidents":{"type":"integer","description":"Number of open incidents (maintenance windows excluded)."},"updatedAt":{"type":"string","format":"date-time"}}}}},"paths":{"/api/status":{"get":{"operationId":"status-snapshot","tags":["Status"],"summary":"Retrieve status snapshot","description":"The full public snapshot: every connector with its current health and 90-day history, every open and recent incident with its timeline, the infrastructure components and the manual payment-product statuses — the same data https://status.pluggy.ai renders. Each institution and each incident carries a pluggy_id that matches the id returned by GET https://api.pluggy.ai/connectors, so you can flag an affected connector on your own connector-selection screen. Cached for 30s; polling once a minute is plenty.","servers":[{"url":"https://status.pluggy.ai","description":"Status API"}],"responses":{"200":{"description":"Current status snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusSnapshot"}}}},"503":{"description":"No snapshot could be produced and none is cached. Retry — the endpoint serves the last good snapshot whenever it has one.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/connectors-incidents":{"get":{"operationId":"status-connector-incidents","tags":["Status"],"summary":"Retrieve active incidents by connector","description":"Just what is wrong with each connector right now, keyed by the same id you get from GET https://api.pluggy.ai/connectors. Poll this to flag an affected bank on your own connector-selection screen before a user picks it and fails.\n\nIt is the slim counterpart to the snapshot: a few kilobytes rather than a few hundred, because it carries no history, no resolved incidents and no timelines — the url on each incident links to those.\n\nOnly incidents affecting a connector *at this moment* are listed. A scheduled maintenance is published days ahead and stays open the whole time, so it appears only once its window opens and disappears when the window closes. An incident affecting several institutions appears under each of their connector ids. Infrastructure-wide incidents belong to no connector and are not listed here — use the snapshot for those. Cached for 30s.","servers":[{"url":"https://status.pluggy.ai","description":"Status API"}],"responses":{"200":{"description":"Active incidents grouped by connector.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorIncidents"}}}},"503":{"description":"No data could be produced and none is cached. Retry — the endpoint serves the last good answer whenever it has one.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/summary":{"get":{"operationId":"status-summary","tags":["Status"],"summary":"Retrieve status summary","description":"A compact roll-up of the same data: one overall status, its label in Portuguese, Spanish and English, and how many incidents are open. Use it for a status badge or a health check when you do not need the full snapshot. Maintenance windows are not counted as open incidents. Cached for 30s.","servers":[{"url":"https://status.pluggy.ai","description":"Status API"}],"responses":{"200":{"description":"Current overall status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusSummary"}}}}}}}}}