Årsregnskap API
Innsendingsflyt
Sekvensdiagram
Submission, sequence diagram
%%{init: {
'theme':'default',
'themeVariables': {
'darkMode': false,
'labelBoxBkgColor': '#e8f4f8',
'noteBkgColor': '#d4e8f5',
'noteBorderColor': '#7A9DB5'
}
}}%%
sequenceDiagram
participant Bruker as 👤
participant Finsta
participant Altinn as 🌐 Altinn API
Note over Bruker,Altinn: Opprett Instans
Bruker ->> Finsta: Start innsending
activate Finsta
Finsta ->> Altinn: POST /instances/create
activate Altinn
Altinn -->> Finsta: party_id, instance_id, hovedskjema_id, underskjema_id
deactivate Altinn
Note over Bruker,Altinn: Last opp data
Finsta ->> Altinn: PUT /data/{hovedskjema_id} (XML)
activate Altinn
Altinn -->> Finsta: OK
deactivate Altinn
Finsta ->> Altinn: PUT /data/{underskjema_id} (XML)
activate Altinn
Altinn -->> Finsta: OK
deactivate Altinn
loop Vedlegg
Finsta ->> Altinn: POST /data/?dataType=Vedlegg (PDF++)
activate Altinn
Altinn -->> Finsta: vedlegg_id
deactivate Altinn
end
Note over Bruker,Altinn: Validering
Finsta ->> Altinn: GET /validate
activate Altinn
Altinn -->> Finsta: valideringsfeil[]
deactivate Altinn
deactivate Finsta
alt Valideringsfeil
activate Finsta
Note right of Finsta: 🗄️ Lagre: "Avvist"
Note right of Bruker: ❌ Stopp - må fikse feil
Finsta ->> Bruker: Vis valideringsfeil
deactivate Finsta
else Validering OK
Note right of Bruker: ✅ Fortsett: validering ok
Note over Bruker,Altinn: Send til signering
activate Finsta
Finsta ->> Altinn: PUT /process/next {"action": "write"}
activate Altinn
Altinn -->> Finsta: currentTask: "Signering"
deactivate Altinn
Note right of Finsta: 🗄️ Lagre: "Sendt til signering"
Finsta ->> Bruker: Klar for signering
deactivate Finsta
Note over Bruker,Altinn: Signering
Bruker ->> Finsta: Signer
activate Finsta
Finsta ->> Altinn: PUT /process/next {"action": "sign"}
activate Altinn
Altinn -->> Finsta: currentTask: "Arkivert"
deactivate Altinn
Note right of Finsta: 🗄️ Lagre: "Signert"
Finsta ->> Bruker: ✅ Innsending ferdig!
deactivate Finsta
end
Flytdiagram
Submission, flow chart
%%{init: {
'theme':'default',
'themeVariables': {
'fontSize': '14px',
'primaryColor': '#e8f4f8',
'primaryBorderColor': '#7a9db5'
}
}}%%
flowchart TD
%% Nodes
Start([Start innsending]):::endpoint
CheckInstance{Har instans<br/>fra før?}:::system
CreateInstance[Opprett instans<br/>POST /instances/create]:::system
ReuseInstance[Gjenbruk eksisterende instans]:::system
StoreIds[Lagre instans-info]:::database
UploadHoved[Last opp hovedskjema<br/>PUT /data/hovedskjema_id]:::system
UploadUnder[Last opp underskjema<br/>PUT /data/underskjema_id]:::system
UploadAttachments[Last opp evt vedlegg<br/>POST /data/?dataType=Vedlegg]:::system
Validate[Valider<br/>GET /validate ]:::user
RejectValidated([✗ Stopp - må fikse feil]):::error
StoreValidated([Lagre: Validert ok]):::database
SendToSigning[Send til signering<br/>PUT /process/next 'action: confirm']:::user
StoreSentToSigning([Lagre: Sendt til signering]):::database
WaitForSigningInAltinn[Vent på signering i Altinn]:::wait
Sign[Signer<br/>PUT /process/next 'action: sign']:::user
StoreSigned([✓ Lagre: Signert]):::success
%% Edges
Start --> CheckInstance
CheckInstance -->|Nei| CreateInstance
CheckInstance -->|Ja| ReuseInstance
CreateInstance --> StoreIds
ReuseInstance --> UploadHoved
StoreIds --> UploadHoved
UploadHoved --> UploadUnder
UploadUnder --> UploadAttachments
UploadAttachments --> Validate
Validate -->|Nye/ukjente feil| RejectValidated
Validate -->|Ok| StoreValidated
StoreValidated --> SendToSigning
SendToSigning --> StoreSentToSigning
StoreSentToSigning --> WaitForSigningInAltinn
StoreSentToSigning --> Sign
WaitForSigningInAltinn --> |sync|StoreSigned
Sign --> |Ok|StoreSigned
%% Styles
classDef endpoint fill:#d4e8f5, stroke:#333, stroke-width:1px
classDef system fill:#e8f4f8, stroke:#333, stroke-width:1px
classDef user fill:#d5e8d5, stroke:#333, stroke-width:1px
classDef database fill:#b8d4e8, stroke:#333, stroke-width:1px
classDef wait fill:#f5f0e8, stroke:#333, stroke-width:1px
classDef error fill:#ffe1e1, stroke:#333, stroke-width:1px
classDef success fill:#d5f5d5, stroke:#333, stroke-width:1px
Database-modell
---
title: Database-modell
---
%%{
init: {
'theme': 'default',
'themeVariables': {
'fontSize': '14px',
'lineColor': '#333',
'border1': '#333',
'border2': '#333',
'mainBkg': '#d4e8f5',
'tertiaryColorz': 'blue',
'secondBkg': 'lightblue',
'oldAttributeBackgroundColorEven': 'yellow'
}
}
}%%
erDiagram
as_sub ||--o{ as_val : "has one or many"
as_sub ||--o| as_sts : "has zero or one"
as_sub ||--o| as_sig : "has zero or one"
as_sub[annual_statement_submission] {
bigint id PK
bigint financial_statement_id FK
uuid fs_uuid
uuid submission_uuid
jsonb instance_ref
jsonb instance_info
jsonb attachments_info
timestamp _initiated_at_
timestamp _data_updated_at_
timestamp _validated_at_
timestamp _sent_to_signing_at_
timestamp _signed_by_representative_at_
timestamp _synced_at_
timestamp deleted_at "soft delete"
}
as_val[annual_statement_validation] {
bigint id PK
bigint submission_id FK
jsonb accepted_validation_checksums
jsonb validations
timestamp validated_at
string validated_by
}
as_sts[annual_statement_sent_to_signing] {
bigint id PK
bigint submission_id FK
timestamp sent_to_signing_at
string sent_to_signing_by
}
as_sig[annual_statement_signed_by_representative] {
bigint id PK
bigint submission_id FK
timestamp signed_by_representative_at
string signed_by_representative_by
}