openapi: 3.1.0
info:
  title: INIAD サイネージ API
  version: v1
tags: []
paths:
  /api/v1/signage/cards:
    get:
      operationId: Cards_list
      summary: コンテンツ紐づけ一覧の取得
      description: ログインユーザのカード IDm とサイネージで表示するコンテンツの紐づけの一覧を取得する
      parameters: []
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Models.CardSignageLink'
        '401':
          description: 認証に失敗 (資格情報の欠如または誤り)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
  /api/v1/signage/cards/{card_id}:
    get:
      operationId: Cards_get
      summary: コンテンツ紐づけの取得
      description: 指定したカードとサイネージで表示するコンテンツの紐づけを取得する
      parameters:
        - name: card_id
          in: path
          required: true
          description: カード IDm (大文字 16 進数)
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.CardSignageLink'
        '401':
          description: 認証に失敗 (資格情報の欠如または誤り)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
    put:
      operationId: Cards_upsert
      summary: コンテンツ紐づけの登録・更新
      description: 指定したカードへのコンテンツの紐づけを登録または更新する。あらかじめ電気錠やロッカーを解錠するためのカードとして登録しておく必要がある
      parameters:
        - name: card_id
          in: path
          required: true
          description: カード IDm (大文字 16 進数)
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.CardSignageLink'
        '401':
          description: 認証に失敗 (資格情報の欠如または誤り)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
                  format: uri
                  description: 紐づける URL
                  examples:
                    - https://signage.example.com
                display_seconds:
                  type: integer
                  format: int32
                  description: 表示秒数
                  examples:
                    - 10
              required:
                - url
                - display_seconds
    delete:
      operationId: Cards_delete
      summary: コンテンツ紐づけの解除
      description: 指定したカードへのコンテンツの紐づけを解除する
      parameters:
        - name: card_id
          in: path
          required: true
          description: カード IDm (大文字 16 進数)
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.DeleteResult'
        '401':
          description: 認証に失敗 (資格情報の欠如または誤り)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
security:
  - BasicAuth: []
components:
  schemas:
    Models.CardSignageLink:
      type: object
      required:
        - idm
        - url
        - display_seconds
      properties:
        idm:
          type: string
          description: カード IDm (大文字 16 進数)
        url:
          type: string
          format: uri
          description: 紐づけられた URL
        display_seconds:
          type: integer
          format: int32
          description: 表示秒数
      description: カードとサイネージで表示するコンテンツの紐づけ
      examples:
        - idm: '0011223344556677'
          url: https://signage.example.com
          display_seconds: 20
    Models.DeleteResult:
      type: object
      required:
        - message
        - removed_count
      properties:
        message:
          type: string
          description: 処理結果のメッセージ
        removed_count:
          type: integer
          format: int32
          description: 解除された紐づけの件数
      description: コンテンツの紐づけ解除結果
      examples:
        - message: ok
          removed_count: 1
    Models.UnauthorizedError:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: エラーの内容
      description: 認証に失敗 (資格情報の欠如または誤り)
  securitySchemes:
    BasicAuth:
      type: http
      scheme: Basic
servers:
  - url: https://signage-api.iniad.org
    variables: {}
