openapi: 3.1.0
info:
title: 'TTRPG Manager — API v1'
description: 'API do zarządzania kampaniami TTRPG, treściami, mapami, kartami postaci i podręcznikami.'
version: 1.0.0
servers:
- url: '{{ request()->getSchemeAndHttpHost() }}'
tags:
- name: Authentication
description: "\nRegistration and short-lived application sessions."
- name: Endpoints
description: ''
- name: GM
description: ''
- name: Player
description: ''
components:
securitySchemes:
default:
type: http
scheme: bearer
description: 'MG tworzy token w panelu Integracje API. Token jest wyświetlany tylko raz.'
security:
-
default: []
paths:
/api/v1/auth/register:
post:
summary: 'Register an account.'
operationId: registerAnAccount
description: ''
parameters: []
responses: {}
tags:
- Authentication
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
examples:
- b
email:
type: string
description: 'Must be a valid email address. Must not be greater than 255 characters.'
examples:
- zbailey@example.net
password:
type: string
description: 'Must be at least 8 characters.'
examples:
- '-0pBNvYgxw'
role:
type: string
description: ''
examples:
- architecto
locale:
type: string
description: ''
examples:
- null
device_name:
type: string
description: 'Must not be greater than 100 characters.'
examples:
- 'n'
required:
- name
- email
- password
- role
security: []
/api/v1/auth/login:
post:
summary: 'Log in and issue a two-hour token.'
operationId: logInAndIssueATwoHourToken
description: ''
parameters: []
responses: {}
tags:
- Authentication
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
email:
type: string
description: 'Must be a valid email address.'
examples:
- gbailey@example.net
password:
type: string
description: ''
examples:
- '|]|{+-'
device_name:
type: string
description: 'Must not be greater than 100 characters.'
examples:
- v
required:
- email
- password
security: []
/api/v1/auth/logout:
post:
summary: 'Log out the current session or revoke its token.'
operationId: logOutTheCurrentSessionOrRevokeItsToken
description: ''
parameters: []
responses: {}
tags:
- Authentication
/api/v1/me:
get:
summary: ''
operationId: getApiV1Me
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- Endpoints
/api/v1/gm/campaigns:
get:
summary: ''
operationId: getApiV1GmCampaigns
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
post:
summary: ''
operationId: postApiV1GmCampaigns
description: ''
parameters: []
responses: {}
tags:
- GM
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
examples:
- b
description:
type:
- string
- 'null'
description: 'Must not be greater than 10000 characters.'
examples:
- 'Et animi quos velit et fugiat.'
is_archived:
type: boolean
description: ''
examples:
- false
required:
- name
'/api/v1/gm/campaigns/{id}':
get:
summary: ''
operationId: getApiV1GmCampaignsId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
put:
summary: ''
operationId: putApiV1GmCampaignsId
description: ''
parameters: []
responses: {}
tags:
- GM
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 255 characters.'
examples:
- b
description:
type:
- string
- 'null'
description: 'Must not be greater than 10000 characters.'
examples:
- 'Et animi quos velit et fugiat.'
is_archived:
type: boolean
description: ''
examples:
- true
regenerate_invite_code:
type: boolean
description: ''
examples:
- false
delete:
summary: ''
operationId: deleteApiV1GmCampaignsId
description: ''
parameters: []
responses: {}
tags:
- GM
parameters:
-
in: path
name: id
description: 'The ID of the campaign.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: campaign
description: 'Campaign ID.'
required: true
schema:
type: integer
examples:
- 1
'/api/v1/gm/campaigns/{campaign}/members':
get:
summary: 'List campaign members.'
operationId: listCampaignMembers
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
post:
summary: 'Add or update a campaign membership.'
operationId: addOrUpdateACampaignMembership
description: ''
parameters: []
responses: {}
tags:
- GM
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
user_id:
type: integer
description: 'This field is required when email is not present. Must match an existing stored value.'
examples:
- 16
email:
type: string
description: 'This field is required when user_id is not present. Must be a valid email address. Must match an existing stored value.'
examples:
- zbailey@example.net
role:
type: string
description: ''
examples:
- null
parameters:
-
in: path
name: campaign
description: 'Campaign ID.'
required: true
schema:
type: integer
examples:
- 1
'/api/v1/gm/campaigns/{campaign}/members/{user}':
delete:
summary: 'Remove a campaign member.'
operationId: removeACampaignMember
description: ''
parameters: []
responses: {}
tags:
- GM
parameters:
-
in: path
name: campaign
description: 'Campaign ID.'
required: true
schema:
type: integer
examples:
- 1
-
in: path
name: user
description: 'Member user ID.'
required: true
schema:
type: integer
examples:
- 2
'/api/v1/gm/campaigns/{campaign}/contents':
get:
summary: ''
operationId: getApiV1GmCampaignsCampaignContents
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
post:
summary: ''
operationId: postApiV1GmCampaignsCampaignContents
description: ''
parameters: []
responses: {}
tags:
- GM
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/gm/campaigns/{campaign}/contents/{id}':
get:
summary: ''
operationId: getApiV1GmCampaignsCampaignContentsId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
put:
summary: ''
operationId: putApiV1GmCampaignsCampaignContentsId
description: ''
parameters: []
responses: {}
tags:
- GM
delete:
summary: ''
operationId: deleteApiV1GmCampaignsCampaignContentsId
description: ''
parameters: []
responses: {}
tags:
- GM
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: id
description: 'The ID of the content.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/gm/campaigns/{campaign}/assets':
post:
summary: 'Upload a campaign image.'
operationId: uploadACampaignImage
description: ''
parameters: []
responses: {}
tags:
- GM
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
image:
type: string
format: binary
description: 'JPEG, PNG, GIF or WebP image (max 10 MB).'
required:
- image
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/gm/campaigns/{campaign}/maps':
get:
summary: ''
operationId: getApiV1GmCampaignsCampaignMaps
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
post:
summary: ''
operationId: postApiV1GmCampaignsCampaignMaps
description: ''
parameters: []
responses: {}
tags:
- GM
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
image_asset_id:
type: integer
description: ''
examples:
- 16
title:
type: string
description: 'Must not be greater than 255 characters.'
examples:
- 'n'
description:
type:
- string
- 'null'
description: 'Must not be greater than 10000 characters.'
examples:
- 'Animi quos velit et fugiat.'
visibility:
type: string
description: ''
examples:
- null
required:
- image_asset_id
- title
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/gm/campaigns/{campaign}/maps/{id}':
get:
summary: ''
operationId: getApiV1GmCampaignsCampaignMapsId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
put:
summary: ''
operationId: putApiV1GmCampaignsCampaignMapsId
description: ''
parameters: []
responses: {}
tags:
- GM
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
image_asset_id:
type: integer
description: ''
examples:
- 16
title:
type: string
description: 'Must not be greater than 255 characters.'
examples:
- 'n'
description:
type:
- string
- 'null'
description: 'Must not be greater than 10000 characters.'
examples:
- 'Animi quos velit et fugiat.'
visibility:
type: string
description: ''
examples:
- null
delete:
summary: ''
operationId: deleteApiV1GmCampaignsCampaignMapsId
description: ''
parameters: []
responses: {}
tags:
- GM
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: id
description: 'The ID of the map.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/gm/campaigns/{campaign}/maps/{map}/pins':
get:
summary: ''
operationId: getApiV1GmCampaignsCampaignMapsMapPins
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
post:
summary: ''
operationId: postApiV1GmCampaignsCampaignMapsMapPins
description: ''
parameters: []
responses: {}
tags:
- GM
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: map
description: 'The map.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/gm/campaigns/{campaign}/maps/{map}/pins/{id}':
get:
summary: ''
operationId: getApiV1GmCampaignsCampaignMapsMapPinsId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
put:
summary: ''
operationId: putApiV1GmCampaignsCampaignMapsMapPinsId
description: ''
parameters: []
responses: {}
tags:
- GM
delete:
summary: ''
operationId: deleteApiV1GmCampaignsCampaignMapsMapPinsId
description: ''
parameters: []
responses: {}
tags:
- GM
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: map
description: 'The map.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: id
description: 'The ID of the pin.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/gm/campaigns/{campaign}/trackers':
get:
summary: ''
operationId: getApiV1GmCampaignsCampaignTrackers
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
post:
summary: ''
operationId: postApiV1GmCampaignsCampaignTrackers
description: ''
parameters: []
responses: {}
tags:
- GM
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/gm/campaigns/{campaign}/trackers/{id}':
get:
summary: ''
operationId: getApiV1GmCampaignsCampaignTrackersId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
put:
summary: ''
operationId: putApiV1GmCampaignsCampaignTrackersId
description: ''
parameters: []
responses: {}
tags:
- GM
delete:
summary: ''
operationId: deleteApiV1GmCampaignsCampaignTrackersId
description: ''
parameters: []
responses: {}
tags:
- GM
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: id
description: 'The ID of the tracker.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/gm/campaigns/{campaign}/trackers/{tracker}/entries':
get:
summary: ''
operationId: getApiV1GmCampaignsCampaignTrackersTrackerEntries
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
post:
summary: ''
operationId: postApiV1GmCampaignsCampaignTrackersTrackerEntries
description: ''
parameters: []
responses: {}
tags:
- GM
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: tracker
description: 'The tracker.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/gm/campaigns/{campaign}/trackers/{tracker}/entries/{id}':
get:
summary: ''
operationId: getApiV1GmCampaignsCampaignTrackersTrackerEntriesId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
put:
summary: ''
operationId: putApiV1GmCampaignsCampaignTrackersTrackerEntriesId
description: ''
parameters: []
responses: {}
tags:
- GM
delete:
summary: ''
operationId: deleteApiV1GmCampaignsCampaignTrackersTrackerEntriesId
description: ''
parameters: []
responses: {}
tags:
- GM
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: tracker
description: 'The tracker.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: id
description: 'The ID of the entry.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/gm/campaigns/{campaign}/sheets':
get:
summary: ''
operationId: getApiV1GmCampaignsCampaignSheets
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
post:
summary: ''
operationId: postApiV1GmCampaignsCampaignSheets
description: ''
parameters: []
responses: {}
tags:
- GM
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
owner_user_id:
type: integer
description: ''
examples:
- 16
avatar_asset_id:
type:
- string
- 'null'
description: ''
examples:
- null
name:
type: string
description: 'Must not be greater than 255 characters.'
examples:
- 'n'
content_html:
type: string
description: 'Must not be greater than 1000000 characters.'
examples:
- g
pin:
type: string
description: 'Must be between 4 and 12 digits.'
examples:
- '1374491716'
required:
- owner_user_id
- name
- pin
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/gm/campaigns/{campaign}/sheets/{id}':
get:
summary: ''
operationId: getApiV1GmCampaignsCampaignSheetsId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
put:
summary: ''
operationId: putApiV1GmCampaignsCampaignSheetsId
description: ''
parameters: []
responses: {}
tags:
- GM
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
owner_user_id:
type: integer
description: ''
examples:
- 16
avatar_asset_id:
type:
- string
- 'null'
description: ''
examples:
- null
name:
type: string
description: 'Must not be greater than 255 characters.'
examples:
- 'n'
content_html:
type: string
description: 'Must not be greater than 1000000 characters.'
examples:
- g
delete:
summary: ''
operationId: deleteApiV1GmCampaignsCampaignSheetsId
description: ''
parameters: []
responses: {}
tags:
- GM
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: id
description: 'The ID of the sheet.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/gm/campaigns/{campaign}/sheets/{sheet}/pin':
put:
summary: 'Set a new PIN and revoke all existing sheet unlocks.'
operationId: setANewPINAndRevokeAllExistingSheetUnlocks
description: ''
parameters: []
responses: {}
tags:
- GM
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
pin:
type: string
description: 'Must be between 4 and 12 digits.'
examples:
- '1374491716'
required:
- pin
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: sheet
description: 'The sheet.'
required: true
schema:
type: string
examples:
- architecto
/api/v1/gm/handbooks:
get:
summary: ''
operationId: getApiV1GmHandbooks
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
post:
summary: 'Upload a private PDF and queue text extraction.'
operationId: uploadAPrivatePDFAndQueueTextExtraction
description: ''
parameters: []
responses: {}
tags:
- GM
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
pdf:
type: string
format: binary
description: 'PDF file (max 50 MB).'
title:
type: string
description: 'Must not be greater than 255 characters.'
examples:
- b
campaign_id:
type:
- integer
- 'null'
description: ''
examples:
- 16
language:
type: string
description: 'Must not be greater than 12 characters.'
examples:
- ngzm
required:
- pdf
- title
/api/v1/gm/handbooks/search:
post:
summary: 'Search ready handbooks using SQLite FTS5.'
operationId: searchReadyHandbooksUsingSQLiteFTS5
description: ''
parameters: []
responses: {}
tags:
- GM
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
query:
type: string
description: 'Must be at least 2 characters. Must not be greater than 200 characters.'
examples:
- b
handbook_ids:
type: array
description: ''
items:
type: integer
examples:
-
- 16
limit:
type: integer
description: 'Must be between 1 and 100.'
examples:
- 2
required:
- query
'/api/v1/gm/handbooks/{id}':
get:
summary: ''
operationId: getApiV1GmHandbooksId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
put:
summary: ''
operationId: putApiV1GmHandbooksId
description: ''
parameters: []
responses: {}
tags:
- GM
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
title:
type: string
description: 'Must not be greater than 255 characters.'
examples:
- b
campaign_id:
type:
- integer
- 'null'
description: ''
examples:
- 16
language:
type: string
description: 'Must not be greater than 12 characters.'
examples:
- ngzm
delete:
summary: ''
operationId: deleteApiV1GmHandbooksId
description: ''
parameters: []
responses: {}
tags:
- GM
parameters:
-
in: path
name: id
description: 'The ID of the handbook.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/gm/handbooks/{handbook}/pages':
get:
summary: ''
operationId: getApiV1GmHandbooksHandbookPages
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
parameters:
-
in: path
name: handbook
description: 'The handbook.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/gm/handbooks/{handbook}/preview-link':
get:
summary: 'Mint a temporary signed URL to open the PDF inline (no Bearer on the URL itself).'
operationId: mintATemporarySignedURLToOpenThePDFInlinenoBearerOnTheURLItself
description: "Use the returned `url` in an iframe, new tab, or window.open. Optional `#page=N`\nis appended for native browser PDF viewers."
parameters:
-
in: query
name: page
description: 'optional 1-based page number for `#page=N`.'
required: false
schema:
type: integer
description: 'optional 1-based page number for `#page=N`.'
examples:
- 12
-
in: query
name: expires_in
description: 'optional Link TTL in seconds (60–3600, default 600).'
required: false
schema:
type: integer
description: 'optional Link TTL in seconds (60–3600, default 600).'
examples:
- 600
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
page:
type:
- integer
- 'null'
description: 'Must be at least 1.'
examples:
- 16
expires_in:
type: integer
description: 'Must be between 60 and 3600.'
examples:
- 61
parameters:
-
in: path
name: handbook
description: 'The handbook.'
required: true
schema:
type: string
examples:
- architecto
/api/v1/gm/tokens:
get:
summary: ''
operationId: getApiV1GmTokens
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- GM
post:
summary: ''
operationId: postApiV1GmTokens
description: ''
parameters: []
responses: {}
tags:
- GM
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Must not be greater than 100 characters.'
examples:
- b
abilities:
type: array
description: ''
items:
type: string
examples:
-
- architecto
expires_in_days:
type:
- integer
- 'null'
description: 'Must be between 1 and 365.'
examples:
- 2
required:
- name
'/api/v1/gm/tokens/{id}':
delete:
summary: ''
operationId: deleteApiV1GmTokensId
description: ''
parameters: []
responses: {}
tags:
- GM
parameters:
-
in: path
name: id
description: 'The ID of the token.'
required: true
schema:
type: string
examples:
- architecto
/api/v1/player/campaigns:
get:
summary: ''
operationId: getApiV1PlayerCampaigns
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- Player
/api/v1/player/campaigns/join:
post:
summary: 'Join a campaign.'
operationId: joinACampaign
description: ''
parameters: []
responses: {}
tags:
- Player
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
invite_code:
type: string
description: 'Campaign invitation code.'
examples:
- ABCDE12345
required:
- invite_code
'/api/v1/player/campaigns/{id}':
get:
summary: ''
operationId: getApiV1PlayerCampaignsId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- Player
parameters:
-
in: path
name: id
description: 'The ID of the campaign.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/player/campaigns/{campaign}/contents':
get:
summary: ''
operationId: getApiV1PlayerCampaignsCampaignContents
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- Player
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/player/campaigns/{campaign}/contents/{id}':
get:
summary: ''
operationId: getApiV1PlayerCampaignsCampaignContentsId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- Player
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: id
description: 'The ID of the content.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/player/campaigns/{campaign}/maps':
get:
summary: ''
operationId: getApiV1PlayerCampaignsCampaignMaps
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- Player
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/player/campaigns/{campaign}/maps/{id}':
get:
summary: ''
operationId: getApiV1PlayerCampaignsCampaignMapsId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- Player
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: id
description: 'The ID of the map.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/player/campaigns/{campaign}/maps/{map}/pins':
get:
summary: ''
operationId: getApiV1PlayerCampaignsCampaignMapsMapPins
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- Player
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: map
description: 'The map.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/player/campaigns/{campaign}/trackers':
get:
summary: ''
operationId: getApiV1PlayerCampaignsCampaignTrackers
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- Player
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/player/campaigns/{campaign}/trackers/{id}':
get:
summary: ''
operationId: getApiV1PlayerCampaignsCampaignTrackersId
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- Player
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: id
description: 'The ID of the tracker.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/player/campaigns/{campaign}/sheets':
get:
summary: ''
operationId: getApiV1PlayerCampaignsCampaignSheets
description: ''
parameters: []
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- Player
post:
summary: ''
operationId: postApiV1PlayerCampaignsCampaignSheets
description: ''
parameters: []
responses: {}
tags:
- Player
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
avatar_asset_id:
type:
- string
- 'null'
description: ''
examples:
- null
name:
type: string
description: 'Must not be greater than 255 characters.'
examples:
- b
content_html:
type: string
description: 'Must not be greater than 1000000 characters.'
examples:
- 'n'
pin:
type: string
description: 'Must be between 4 and 12 digits.'
examples:
- '1374491716'
required:
- name
- pin
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/player/campaigns/{campaign}/sheet-assets':
post:
summary: ''
operationId: postApiV1PlayerCampaignsCampaignSheetAssets
description: ''
parameters: []
responses: {}
tags:
- Player
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
image:
type: string
format: binary
description: 'Must be an image. Must not be greater than 10240 kilobytes.'
required:
- image
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/player/campaigns/{campaign}/sheets/{sheet}/verify-pin':
post:
summary: 'Verify a PIN and issue a 15-minute sheet unlock.'
operationId: verifyAPINAndIssueA15MinuteSheetUnlock
description: ''
parameters: []
responses:
422:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- 'Podany PIN jest nieprawidłowy.'
errors:
type: object
properties:
pin:
type: array
items:
type: string
examples:
-
- 'Podany PIN jest nieprawidłowy.'
examples:
-
message: 'Podany PIN jest nieprawidłowy.'
errors:
pin:
- 'Podany PIN jest nieprawidłowy.'
tags:
- Player
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
pin:
type: string
description: 'Must be between 4 and 12 digits.'
examples:
- '1374491716'
required:
- pin
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: sheet
description: 'The sheet.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/player/campaigns/{campaign}/sheets/{sheet}':
get:
summary: 'Open a sheet.'
operationId: openASheet
description: ''
parameters:
-
in: header
name: X-Sheet-Unlock
description: ''
schema:
type: string
examples:
- 'required Short-lived sheet unlock token.'
responses:
401:
description: ''
content:
application/json:
schema:
type: object
properties:
message:
type: string
examples:
- Unauthenticated.
examples:
-
message: Unauthenticated.
tags:
- Player
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: sheet
description: 'The sheet.'
required: true
schema:
type: string
examples:
- architecto
'/api/v1/player/campaigns/{campaign}/sheets/{id}':
put:
summary: 'Update an owned sheet.'
operationId: updateAnOwnedSheet
description: ''
parameters:
-
in: header
name: X-Sheet-Unlock
description: ''
schema:
type: string
examples:
- 'required An unlock token with edit ability.'
responses: {}
tags:
- Player
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
avatar_asset_id:
type:
- string
- 'null'
description: ''
examples:
- null
name:
type: string
description: 'Must not be greater than 255 characters.'
examples:
- b
content_html:
type: string
description: 'Must not be greater than 1000000 characters.'
examples:
- 'n'
delete:
summary: 'Delete an owned sheet.'
operationId: deleteAnOwnedSheet
description: ''
parameters:
-
in: header
name: X-Sheet-Unlock
description: ''
schema:
type: string
examples:
- 'required An unlock token with edit ability.'
responses: {}
tags:
- Player
parameters:
-
in: path
name: campaign
description: 'The campaign.'
required: true
schema:
type: string
examples:
- architecto
-
in: path
name: id
description: 'The ID of the sheet.'
required: true
schema:
type: string
examples:
- architecto