How to read this guide¶
How the guide is organized¶
Each series (4.x and 3.x) has the same parts:
| Part | What you'll find |
|---|---|
| Overview | The whole picture on one page, with a single "hub" diagram of the most important tables. |
| The databases | Which physical databases APIM uses and what lives in each. |
| Domains | Groups of related tables, each explained in plain words. Every important table is explained on exactly one domain page. |
| Core flows | Stories such as "create an API" or "subscribe", with the tables written at each step. |
| Gotchas | Things that often confuse people. |
| Identity Server tables | Tables APIM inherits from WSO2 Identity Server. They're listed for completeness. |
| Table reference | Every table and every column, with keys and relationships. |
Reading the table diagrams¶
Table diagrams are entity-relationship diagrams. A box is a table, and a line is a relationship between two tables.
erDiagram
AM_SUBSCRIBER ||--o{ AM_APPLICATION : "owns"
AM_APPLICATION ||--o{ AM_SUBSCRIPTION : "has"
The symbols at the ends of a line tell you how many rows can be on each side:
| Symbol at the line end | Means |
|---|---|
|| (two bars) |
exactly one |
o| (circle + bar) |
zero or one |
o{ (circle + crow's foot) |
zero or many |
|{ (bar + crow's foot) |
one or many |
So the diagram above reads: one subscriber owns zero or many applications, and one application has zero or many subscriptions.
Solid vs dashed lines¶
erDiagram
AM_APPLICATION ||--o{ AM_APPLICATION_KEY_MAPPING : "FK (enforced)"
AM_APPLICATION_KEY_MAPPING }o..|| IDN_OAUTH_CONSUMER_APPS : "logical"
- A solid line is a foreign key. The database enforces it, so a child row can't point at a parent that doesn't exist.
- A dashed line is a logical link. APIM's code joins these tables on matching values, but the database doesn't enforce the relationship. APIM uses a lot of these, so they're always called out.
Reading the flow diagrams¶
Flow pages use sequence diagrams. Read them top to bottom: each arrow is one step, and the arrows into Database show which tables get written.
sequenceDiagram
actor Dev as Developer
participant Portal as Dev Portal
participant DB as Database
Dev->>Portal: Create application
Portal->>DB: insert AM_APPLICATION
Portal-->>Dev: Application created
Boxes on the pages¶
Different in 3.x
Marks something that works differently in the other series. It always links to the matching page there.
Logical link (no foreign key)
Marks a relationship the database doesn't enforce.
Try it
A read-only SQL query you can run to see the relationship in your own database.