{"openapi":"3.1.0","info":{"title":"RPG Connecta API","version":"1.0.0","description":"Server-side RPG credentials select isolated sandbox (rpg_test_) or production (rpg_live_). RPG simulator is synthetic; Malvo production uses the RPG provider account with bank consent. Never expose keys to browser clients. Published resources: accounts and transactions. No payment, MCP or SDK endpoint is published. 60 requests/minute/key; 10 active keys and 20 active connections/user/environment. Optional X-RPG-Environment must match the key. Console queries may use a signed-in session; external integrations use Bearer keys. See the complete guide for onboarding, webhook signatures, ownership and recovery.","contact":{"email":"comercial@rpgcapital.com.br"}},"externalDocs":{"description":"Complete guide (English); also available in Portuguese, Spanish and Chinese","url":"https://www.rpgcapital.com.br/developers/connecta-docs/en"},"servers":[{"url":"https://www.rpgcapital.com.br/api/connecta/v1"}],"security":[{"RpgKey":[]}],"components":{"securitySchemes":{"RpgKey":{"type":"http","scheme":"bearer","description":"Backend secret RPG_API_KEY: rpg_test_… or rpg_live_…"}},"schemas":{"Error":{"type":"object","required":["error","request_id"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}},"request_id":{"type":"string"}}},"Pagination":{"type":"object","properties":{"offset":{"type":"integer"},"limit":{"type":"integer","const":100},"total":{"type":"integer"},"next_offset":{"type":["integer","null"]}}},"Meta":{"type":"object","properties":{"environment":{"type":"string","enum":["sandbox","production"]},"provider":{"type":"string","enum":["rpg_simulator","malvo"]},"synthetic":{"type":"boolean"},"status":{"type":"string"},"last_synced_at":{"type":["string","null"]},"partial":{"type":"boolean"},"note":{"type":["string","null"]}}},"Account":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"currency":{"type":"string"},"balance_minor":{"type":"integer","description":"Integer minor currency units; 185000 BRL = BRL 1850.00"}}},"Transaction":{"type":"object","properties":{"id":{"type":"string"},"account_id":{"type":"string"},"date":{"type":["string","null"]},"description":{"type":["string","null"]},"amount_minor":{"type":"integer","description":"Signed integer minor units. Positive inflow; negative outflow."},"currency":{"type":"string"},"category":{"type":["string","object","null"]},"tags":{"type":"array","items":{}}}},"Event":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"environment":{"type":"string"},"connection_id":{"type":["string","null"]},"data":{"type":"object"},"created_at":{"type":"string"}}}}},"paths":{"/connections":{"get":{"summary":"List connections for this owner and environment","security":[{"RpgKey":[]}],"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"summary":"Create a connection","security":[{"RpgKey":[]}],"responses":{"201":{"description":"Connection metadata; ephemeral connect_url when bank authorization is needed","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object"},"connect_url":{"type":["string","null"]}}}}}},"400":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Sandbox: rpg_simulator. Production: malvo after explicit activation. Dedicated Malvo sandbox requires separate provider configuration. Save data.id; connect_url is ephemeral and must only be shown to the account holder. Do not blindly retry creation after an ambiguous timeout.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","enum":["rpg_simulator","malvo"]},"scenario":{"type":"string","enum":["success","pending","expired","unavailable","partial"]}},"required":["provider"]}}}}}},"/connections/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"summary":"Read connection metadata and status","security":[{"RpgKey":[]}],"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"summary":"Disconnect; remove provider item and local snapshot","security":[{"RpgKey":[]}],"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/connections/{id}/accounts":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"summary":"Read accounts and balances","security":[{"RpgKey":[]}],"responses":{"200":{"description":"Snapshot page. Follow pagination.next_offset until null; inspect meta.partial and last_synced_at.","content":{"application/json":{"schema":{"type":"object","required":["data","pagination","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Account"}},"pagination":{"$ref":"#/components/schemas/Pagination"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"offset","in":"query","description":"Non-negative record offset. Pages contain up to 100 records.","schema":{"type":"integer","minimum":0,"default":0}}]}},"/connections/{id}/transactions":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"summary":"Read transactions","security":[{"RpgKey":[]}],"responses":{"200":{"description":"Snapshot page. Follow pagination.next_offset until null; inspect meta.partial and last_synced_at.","content":{"application/json":{"schema":{"type":"object","required":["data","pagination","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Transaction"}},"pagination":{"$ref":"#/components/schemas/Pagination"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"offset","in":"query","description":"Non-negative record offset. Pages contain up to 100 records.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"account_id","in":"query","schema":{"type":"string"}}]}},"/connections/{id}/simulate":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"summary":"Change RPG sandbox scenario","security":[{"RpgKey":[]}],"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"scenario":{"type":"string","enum":["success","pending","expired","unavailable","partial"]}},"required":["scenario"]}}}}}},"/connections/{id}/complete":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"summary":"Verify ownership and bind an authorized provider item","security":[{"RpgKey":[]}],"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Call from your authenticated backend after consent; the item must belong to this connection clientUserId. Enforce your own end-user-to-connection mapping.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"item_id":{"type":"string"}},"required":["item_id"]}}}}}},"/connections/{id}/reconnect":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"summary":"Generate a fresh bank consent URL","security":[{"RpgKey":[]}],"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/connections/{id}/sync":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"summary":"Read the latest available provider snapshot","security":[{"RpgKey":[]}],"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Does not guarantee a new bank refresh. Inspect partial status and snapshot time."}},"/events":{"get":{"summary":"Read the latest 100 events","security":[{"RpgKey":[]}],"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/requests":{"get":{"summary":"Read the latest 100 request summaries","security":[{"RpgKey":[]}],"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{}}}}}},"400":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Structured error; use request_id for support. Rate limits include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}