# Connecting and calling

How an app reaches an outside service, such as a courier's API, in development, in tests and in production.

| Page | What it covers |
|---|---|
| [Connecting in app.jadpo](/docs/connecting-in-app-jadpo.md) | A connection is how your app reaches a database, a mail server or a provider's API. |
| [Calling](/docs/calling.md) | Your app reaches an outside service through a connection, a named entry under `connections:` in `app.jadpo` that says which package to use. |
| [Decoding](/docs/decoding.md) | Providers often send values in odd forms: a date as Unix seconds, a number as text, money as a whole number of pence. |
| [Several changing calls in one action](/docs/several-changing-provider-calls.md) | Some jobs need several calls that each change something at a provider, in order: create a customer, attach a card, start a subscription. |
| [Packages from other Jadpo apps](/docs/packages-from-other-jadpo-apps.md) | Your app can call another Jadpo app's API through a package made from that app's OpenAPI document, exactly, with nothing to correct by hand. |
| [Acting for each user: OAuth grants](/docs/acting-for-each-user-oauth-grants.md) ○ not built | Use a grant when your app acts at another service for each of its users or organisations: a user's Google Calendar, an organisation's Xero, a Slack workspace install. |
| [Acting for a user at another service: OAuth grants](/docs/acting-for-a-user-at-another-service-oauth-grants.md) ○ not built | Signing in proves to your app who a person is. |
| [Provider calls in development](/docs/provider-calls-in-development.md) | In `jadpo dev`, every call to a provider is faked by default, so nothing leaves your machine and you need no credential. |
| [Tests and fakes](/docs/tests-and-fakes.md) | In `jadpo test`, every package has a generated fake, so tests never call a provider. |

## Details

The exact rules, for when you hit an edge case.

| Page | What it covers |
|---|---|
| [How connections to packages are read](/docs/how-connections-to-packages-are-read.md) | This is the detail behind Connecting in `app.jadpo`: which keys a connection to a package takes and needs, and what `jadpo check` writes about the hosts it reaches. |
| [How provider calls are made](/docs/how-provider-calls-are-made.md) | This is the detail behind Calling: which keys an operation takes, how its input is sent, who may call it, whether it may be sent again, and how its answer is classified and read. |
| [Wire encodings, decoders and retries](/docs/wire-encodings-decoders-and-retries.md) | This is the detail behind Decoding and Calling: the encodings a provider's fields can be sent in, a package's own decoders, which fields are decoded, and how `retry:` and `timed_out:` work. |
| [Fakes and the development call log](/docs/fakes-and-the-development-call-log.md) | This is the detail behind Tests and fakes and Provider calls in development: what a fake answers, how a script is used, and what the call log keeps. |
| [The seam every outside call goes through](/docs/the-seam-every-outside-call-goes-through.md) | Every call that leaves your app's process, to a capability or to a provider, goes through one entry point in the runtime: the seam. |
