mein-plakat API (1.0.0)

Download OpenAPI specification:

API documentation for mein-plakat

Authorization

User management, roles, and permissions via Auth0 Management API

Get all permissions

Retrieves all API permissions (scopes) from all resource servers in Auth0.

Authorizations:
bearerAuth

Responses

Create permission

Creates a new permission (scope) on a resource server.

Authorizations:
bearerAuth
Request Body schema: application/json
required
resourceServerId
required
string

The ID of the resource server (API)

value
required
string

The permission scope value (e.g., read:users)

description
string

Responses

Request samples

Content type
application/json
{
  • "resourceServerId": "string",
  • "value": "string",
  • "description": "string"
}

Delete permission

Deletes a permission (scope) from a resource server.

Authorizations:
bearerAuth
Request Body schema: application/json
required
resourceServerId
required
string
value
required
string

Responses

Request samples

Content type
application/json
{
  • "resourceServerId": "string",
  • "value": "string"
}

Authentication

Login (redirect to Auth0)

Redirects the user to the Auth0 Universal Login page.

query Parameters
returnTo
string

URL to return to after login

Responses

Logout (redirect to Auth0)

Logs the user out via Auth0.

query Parameters
returnTo
string

URL to return to after logout

Responses

Auth0 Callback

Handles the callback from Auth0, exchanges code for tokens, and redirects back to the app.

query Parameters
code
string
state
string
error
string

Responses

Get user info from token

Returns the user profile information contained in the access token.

Authorizations:
bearerAuth

Responses

Refresh Token

Exchanges a refresh token for a new access token.

Request Body schema: application/json
required
refresh_token
required
string

Responses

Request samples

Content type
application/json
{
  • "refresh_token": "string"
}

User Management

Sync user data

Synchronizes Auth0 user data to the local database after login. Called from frontend after successful authentication.

Authorizations:
bearerAuth
Request Body schema: application/json
required
auth0Id
string
email
string
firstName
string
lastName
string

Responses

Request samples

Content type
application/json
{
  • "auth0Id": "string",
  • "email": "string",
  • "firstName": "string",
  • "lastName": "string"
}

Get all users

Retrieves all users from Auth0 with local database data. Admin permission required.

Authorizations:
bearerAuth
query Parameters
page
integer
Default: 0
per_page
integer
Default: 50
search
string
sort
string
Default: "created_at:-1"

Responses

Get user by ID

Retrieves a single user from Auth0 with roles, permissions, and local data.

Authorizations:
bearerAuth
path Parameters
id
required
string

Auth0 user ID (e.g., auth0|123...)

Responses

Update user

Updates a user in Auth0 and local database. Admin permission required.

Authorizations:
bearerAuth
path Parameters
id
required
string
Request Body schema: application/json
auth0Data
object

Data to update in Auth0 (name, nickname, blocked, etc.)

localData
object

Data to update in local database

roles
Array of strings

Array of role IDs to assign

Responses

Request samples

Content type
application/json
{
  • "auth0Data": { },
  • "localData": { },
  • "roles": [
    ]
}

Delete user

Deletes a user from Auth0 and local database. Admin permission required.

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Get all roles

Retrieves all roles from Auth0. Admin permission required.

Authorizations:
bearerAuth
query Parameters
page
integer
per_page
integer

Responses

Create role

Creates a new role in Auth0. Admin permission required.

Authorizations:
bearerAuth
Request Body schema: application/json
required
name
required
string
description
string

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string"
}

Get role by ID

Retrieves a single role from Auth0 with its permissions.

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Update role

Updates a role in Auth0, including name, description, and assigned permissions.

Authorizations:
bearerAuth
path Parameters
id
required
string
Request Body schema: application/json
name
string
description
string
Array of objects

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "permissions": [
    ]
}

Delete role

Deletes a role from Auth0. Admin permission required.

Authorizations:
bearerAuth
path Parameters
id
required
string

Responses

Admin

Get Auth0 user count

Returns total Auth0 user count. Cached 1 hour. Admin permission required.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get AWS costs

Returns AWS Cost Explorer data (current month costs, estimated month-end, past 12 months). Cached for 1 hour. Admin permission required.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "cached": true
}

List database collections

Returns all MongoDB collections with document count. Admin permission required.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Get collection documents (paginated)

Returns paginated documents from a collection. Supports search. Admin permission required.

Authorizations:
bearerAuth
path Parameters
name
required
string

Collection name

query Parameters
page
integer
Default: 1
limit
integer <= 100
Default: 50
search
string

Search in common fields (min 2 chars)

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Create export job

Creates an async export job. Returns immediately with jobId. SIS process-exports task picks up pending jobs and generates the file. Admin permission required.

Authorizations:
bearerAuth
Request Body schema: application/json
required
format
required
string
Enum: "csv" "xlsx"
required
object

Responses

Request samples

Content type
application/json
{
  • "format": "csv",
  • "view": {
    }
}

Response samples

Content type
application/json
{
  • "jobId": "string",
  • "message": "string"
}

GraphQL

Execute GraphQL queries and mutations against the mein-plakat API.

Available Queries:

  • checkPermissions - Check if current user has admin permissions
  • locationPhotos(page, limit, districtId, providerId) - Get location photos with pagination
  • locationPhoto(id) - Get a single location photo by ID
  • consumerMarketPhotos(page, limit, consumerMarketId, providerId) - Get consumer market photos with pagination
  • consumerMarketPhoto(id) - Get a single consumer market photo by ID
  • logs(page, limit, app, level) - Get logs with pagination
  • sdawBaseRecords(type, page, limit) - Get SDAW base records (filtered by type)
  • sdawBaseRecord(id, type) - Get a single SDAW base record
  • sdawDetailRecords(baseId, type, collectionSuffix, page, limit) - Get SDAW detail metadata (actual data from S3 via REST)
  • importStats - Get overall import statistics
  • users(page, limit, sortBy, sortOrder) - Get users with pagination
  • receivedEmails(page, limit, sortBy, sortOrder) - Get received emails with pagination
  • sentEmails(page, limit, sortBy, sortOrder) - Get sent emails with pagination

Example Query:

query {
  locationPhotos(page: 1, limit: 10) {
    items {
      _id
      districtId
      providerId
      originalPath
      variants { size type path }
    }
    pageInfo { total hasNextPage }
  }
}
Authorizations:
bearerAuth
Request Body schema: application/json
required
query
required
string

GraphQL query string

variables
object

Optional variables for the query

operationName
string

Optional operation name if query contains multiple operations

Responses

Request samples

Content type
application/json
{
  • "query": "query { locationPhotos(limit: 5) { items { _id districtId } } }",
  • "variables": { },
  • "operationName": "string"
}

Response samples

Content type
application/json
{
  • "data": { },
  • "errors": [
    ]
}

Get location coverage summary

Returns pre-computed location coverage statistics (tiles, fiscal year data). Admin permission required.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": { }
}

Get missing locations for a coverage metric

Returns paginated list of locations missing data for a given coverage metric. Admin permission required.

Authorizations:
bearerAuth
query Parameters
metric
required
string
Enum: "locationPhotos" "consumerMarketPhotos" "consumerMarketAddresses" "municipalityDirectory" "availableSpaces" "performanceValues" "mailingAddresses" "schedulesDecadicABlock" "schedulesDecadicBBlock" "schedulesDecadicCBlock" "schedulesWeekly" "schedules14day" "schedulesMonthly" "schedulesQuarterly" "schedulesHalfYearly" "schedulesYearly"
businessYear
integer
page
integer
Default: 1
limit
integer <= 100
Default: 25
sortBy
string
sortOrder
string
Enum: "ASC" "DESC"
search
string

Responses

Response samples

Content type
application/json
{
  • "items": [ ],
  • "pageInfo": {
    }
}

Extract Headers from Municipality Directory Excel

Extracts column headers from uploaded Excel file for mapping (admin only).

Authorizations:
bearerAuth
Request Body schema: application/json
required
file
required
string <base64>

Base64 encoded Excel file (xls or xlsx)

Responses

Request samples

Content type
application/json
{
  • "file": "string"
}

Response samples

Content type
application/json
{
  • "valid": true,
  • "columns": [
    ]
}

Import Municipality Directory Data

Imports municipality directory data from Excel file with field mapping (admin only).

Authorizations:
bearerAuth
Request Body schema: application/json
required
file
required
string <base64>

Base64 encoded Excel file

mapping
required
object

Mapping of original column keys to target field names

Responses

Request samples

Content type
application/json
{
  • "file": "string",
  • "mapping": { }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "count": 0
}

Request Signed File URL

Generates a temporary CloudFront signed URL for a private file (admin only).

Authorizations:
bearerAuth
Request Body schema: application/json
required
key
required
string

File key to request.

Responses

Request samples

Content type
application/json
{
  • "key": "550e8400-e29b-41d4-a716-446655440000.pdf"
}

Response samples

Content type
application/json

Extract headers from schedule Excel/CSV

Extracts column headers from uploaded schedule file for mapping. Admin permission required.

Authorizations:
bearerAuth
Request Body schema: application/json
required
file
required
string <base64>

Base64 encoded Excel or CSV file

Responses

Request samples

Content type
application/json
{
  • "file": "string"
}

Response samples

Content type
application/json
{
  • "valid": true,
  • "columns": [
    ],
  • "defaultMapping": { }
}

Import schedule data

Imports schedule (Terminplan) data from Excel/CSV with field mapping. Replaces only business years present in file. Admin permission required.

Authorizations:
bearerAuth
Request Body schema: application/json
required
file
required
string <base64>

Base64 encoded Excel or CSV file

mapping
required
object

Column index to field name mapping (e.g. 0 to year, 1 to period)

Responses

Request samples

Content type
application/json
{
  • "file": "string",
  • "mapping": { }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "count": 0
}

Import SDAW Data

Imports SDAW records from a file (text content).

Authorizations:
bearerAuth
Request Body schema:
required
string

SDAW file content

Responses

Request samples

Content type
No sample

Response samples

Content type
application/json
{
  • "success": true,
  • "messageType": "string",
  • "baseId": "string",
  • "stats": { }
}

Email Templates

List Email Template Attachments

Returns all attachments for a given email template (admin only).

Authorizations:
bearerAuth
path Parameters
templateId
required
string
Example: 507f1f77bcf86cd799439011

The email template ID.

Responses

Response samples

Content type
application/json
{
  • "attachments": [
    ]
}

Upload Email Template Attachment

Uploads a file attachment for an email template. The file is stored in S3 and metadata is saved in the template document (admin only).

Authorizations:
bearerAuth
path Parameters
templateId
required
string
Example: 507f1f77bcf86cd799439011

The email template ID.

Request Body schema: application/json
required
file
required
string

Base64-encoded file content.

filename
required
string

Original filename.

contentType
string

MIME type of the file.

Responses

Request samples

Content type
application/json
{
  • "file": "JVBERi0xLjQK...",
  • "filename": "document.pdf",
  • "contentType": "application/pdf"
}

Response samples

Content type
application/json
{
  • "attachment": {
    }
}

Delete Email Template Attachment

Deletes a file attachment from an email template. Removes the file from S3 and the metadata from the template document (admin only).

Authorizations:
bearerAuth
path Parameters
templateId
required
string
Example: 507f1f77bcf86cd799439011

The email template ID.

attachmentId
required
string
Example: 507f1f77bcf86cd799439012

The attachment ID.

Responses

Response samples

Content type
application/json
{
  • "success": true
}

Core

Health Check

Returns the health status of the API service

Responses

Response samples

Content type
application/json
{
  • "status": "ok",
  • "timestamp": "2024-01-01T00:00:00.000Z",
  • "pps": true,
  • "sis": false
}

Locations

Get location details by slug

Returns detailed information for an advertising location identified by its slug. Includes free booking terms from all business years (filtered to dates >= today), image variants, and core location data.

path Parameters
slug
required
string
Example: 3910841-b169-auer-str-69a-li

URL-safe slug (providerId+locationNumber+positionNumber+locationDescription)

Responses

Response samples

Content type
application/json
{
  • "slug": "3910841-b169-auer-str-69a-li",
  • "locationDescription": "string",
  • "postalCode": "string",
  • "district": "string",
  • "pricePerDay": 0,
  • "positionType": "string",
  • "lighting": "string",
  • "constructionType": "string",
  • "constructionTypeDisplayValue": "string",
  • "durationType": "string",
  • "durationTypeDisplayValue": "string",
  • "positionNumberTo": 0,
  • "latitude": 0,
  • "longitude": 0,
  • "qid": 0,
  • "photoName": "string",
  • "dimensionsHeight": 0,
  • "dimensionsWidth": 0,
  • "fawTags": [
    ],
  • "consumerMarket": {
    },
  • "freeTerms": [
    ],
  • "image": {
    },
  • "consumerMarketPhoto": { }
}

Get location details by provider/location/position IDs

Alternative to slug lookup. Returns the same location details (free terms, image info) when identified by providerId, locationNumber, and positionNumber. IDs are parsed as integers.

path Parameters
providerId
required
string
Example: 39

Sender identification (integer)

locationId
required
string
Example: 10841

Location number

positionId
required
string
Example: 1

Position number

Responses

Search

Get public filter data

Returns filter options for objectTypes and illuminations. No authentication required. Used by the Site app for dynamic filter loading.

Responses

Response samples

Content type
application/json
{
  • "objectTypes": [
    ],
  • "illuminations": [
    ]
}

SDAW

Get SDAW file content from S3

Returns the full decoded SDAW JSON for a given file UUID. The UUID corresponds to the S3 key sdaw/{uuid}.json.

Authorizations:
bearerAuth
path Parameters
uuid
required
string <uuid>

SdawFiles _id / S3 key UUID

Responses

Support

Create support ticket

Creates a ticket in the Simple Support System (project mein_plakat).

Authorizations:
bearerAuth
Request Body schema: application/json
required
title
required
string
content
required
string
ticketPriority
required
string
Enum: "trivial" "minor" "major" "critical" "blocker"

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "content": "string",
  • "ticketPriority": "trivial"
}

User Profile

Get my profile

Retrieves the profile of the currently logged-in user.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "auth0Id": "string",
  • "email": "string",
  • "name": "string",
  • "picture": "string"
}

Update my profile

Updates the profile of the currently logged-in user.

Authorizations:
bearerAuth
Request Body schema: application/json
required
name
string
nickname
string
firstName
string
lastName
string
phone
string
companyName
string

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "nickname": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "phone": "string",
  • "companyName": "string"
}

Change password

Sends a password reset email to the logged-in user.

Authorizations:
bearerAuth

Responses

Upload profile picture

Uploads a profile picture for the logged-in user (Multipart/form-data).

Authorizations:
bearerAuth
Request Body schema: multipart/form-data
file
string <binary>

Responses

Watchlist

Get watchlist

Retrieves the entire watchlist for the currently logged-in user.

Authorizations:
bearerAuth

Responses

Add to watchlist

Adds a location to the user's watchlist.

Authorizations:
bearerAuth
Request Body schema: application/json
required
providerId
required
string
locationId
required
string
positionNumber
number

Position number (default 1)

Responses

Request samples

Content type
application/json
{
  • "providerId": "string",
  • "locationId": "string",
  • "positionNumber": 0
}

Remove from watchlist

Removes a location from the user's watchlist.

Authorizations:
bearerAuth
query Parameters
providerId
required
string
locationId
required
string

Responses

Check watchlist status

Checks if a specific location is in the user's watchlist.

Authorizations:
bearerAuth
query Parameters
providerId
required
string
locationId
required
string

Responses

Response samples

Content type
application/json
{
  • "inWatchlist": true
}