openapi: 3.0.3
info:
title: Threagile API
description: "Threagile API for Agile Threat Modeling: visit https://threagile.io for more information."
version: 1.0.0
servers:
- url: /
description: Threagile Server
tags:
- name: "direct"
description: "Direct one-shot calls for on-the-fly analyzing and checking of models"
- name: "meta"
description: "Meta infos about types and version"
- name: "auth"
description: "Auth calls for crypto key and token management"
- name: "models"
description: "Persistent model creation and handling stuff"
paths:
/meta/ping:
get:
tags:
- "meta"
summary: Simple health check ping
description: Used as health check in docker container as well
responses:
'200':
description: Simple pong response
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: pong
/meta/version:
get:
tags:
- "meta"
summary: Version number
description: Version number
responses:
'200':
description: Version number
content:
application/json:
schema:
type: object
properties:
version:
type: string
example: 1.0.0
build_timestamp:
type: string
example: 20200518160456
/meta/types:
get:
tags:
- "meta"
summary: Listing of all enum type values
description: Listing of all enum type values
responses:
'200':
description: Listing of all enum type values (example here shows just one)
content:
application/json:
schema:
type: object
properties:
confidentiality:
type: array
items:
type: string
example: [public, internal, restricted, confidential, strictly-confidential]
/meta/stats:
get:
tags:
- "meta"
summary: Model statistics
description: Model statistics
responses:
'200':
description: Model statistics
content:
application/json:
schema:
type: object
properties:
key_count:
type: integer
example: 13
model_count:
type: integer
example: 42
success_count:
type: integer
example: 123
error_count:
type: integer
example: 0
/direct/stub:
get:
tags:
- "direct"
summary: Stub model file
description: Stub model file (as a starting point)
responses:
'200':
description: Stub model file
content:
application/x-yaml:
schema:
type: string
/direct/check:
post:
tags:
- "direct"
summary: Direct model check call
description: Direct model check call
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
description: Model ok response
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: model is ok
'400':
description: Model not ok response
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: "Missing referenced data asset target: some-stuff"
/direct/analyze:
post:
tags:
- "direct"
summary: Direct model analyze call
description: Direct model analyze call
parameters:
- in: query
name: dpi
required: false
example: 120
schema:
type: integer
description: The DPI (resolution) to use for the diagram generation
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
responses:
'200':
description: Model analyzing result response (zipped)
content:
application/zip:
schema:
type: string
format: binary
'400':
description: Model not ok response
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: "Missing referenced data asset target: some-stuff"
/auth/keys:
post:
tags:
- "auth"
summary: Create a new auth key
description: Create a new auth key
responses:
'201':
description: Key successfully created
content:
application/json:
schema:
type: object
properties:
key:
type: string
example: BtM1Q7V47d4B3TrVSw1133CIyL1NUpUM2tJ92vfZMMQ
'500':
description: Error
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: unable to create key
delete:
tags:
- "auth"
summary: Delete an auth key
description: Delete an auth key
parameters:
- in: header
name: key
schema:
type: string
required: true
example: BtM1Q7V47d4B3TrVSw1133CIyL1NUpUM2tJ92vfZMMQ
responses:
'200':
description: Key successfully deleted
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: key deleted
'404':
description: Error
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: key not found
/auth/tokens:
post:
tags:
- "auth"
summary: Create a new (time limited) token from an auth key
description: Create a new (time limited) token from an auth key
parameters:
- in: header
name: key
schema:
type: string
required: true
example: BtM1Q7V47d4B3TrVSw1133CIyL1NUpUM2tJ92vfZMMQ
responses:
'201':
description: Token successfully created
content:
application/json:
schema:
type: object
properties:
token:
type: string
example: QrlcoMOtjy_h38T2N6JjrWpb4Kodg3Y7NnLN2yiDb69
'500':
description: Error
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: unable to create token
delete:
tags:
- "auth"
summary: Delete a token
description: Delete a token
parameters:
- in: header
name: token
schema:
type: string
required: true
example: QrlcoMOtjy_h38T2N6JjrWpb4Kodg3Y7NnLN2yiDb69
responses:
'200':
description: Token successfully deleted
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: token deleted
'404':
description: Error
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: token not found