openapi: 3.0.3 info: title: 'Yabble theme-counting public API Documentation' description: '' version: 1.0.0 servers: - url: 'https://youbble.xyz' tags: - name: Analysis description: '' - name: 'TC sets' description: '' - name: 'TC texts' description: '' - name: 'TC themes' description: '' components: securitySchemes: default: type: http scheme: bearer description: 'You should use a token provided by the staff.' security: - default: [] paths: /api/public/v2/analysis: post: summary: Start operationId: start description: '' parameters: [] responses: { } tags: - Analysis /api/public/v2/analysis/v2: post: summary: Start2 operationId: start2 description: '' parameters: [] responses: { } tags: - Analysis '/api/public/v2/analysis/{job_id}/status': get: summary: Status operationId: status description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Analysis parameters: - in: path name: job_id description: 'The ID of the job.' example: architecto required: true schema: type: string /api/public/v2/tc/tc-sets: get: summary: 'List sets' operationId: listSets description: '' parameters: - in: query name: per_page description: '' example: 15 required: false schema: type: integer description: '' example: 15 nullable: false responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 1 owner_id: 1 external_id: null name: 'TC set 1' status: draft context_type: question_answer context: 'What is the meaning of life?' - id: 2 owner_id: 1 external_id: null name: 'TC set 2' status: processing context_type: question_answer context: 'Who framed Roger rabbit?' - id: 3 owner_id: 1 external_id: external_id name: 'TC set 3' status: completed context_type: question_answer context: 'Cats or dogs??' links: first: 'https://our.domain/api/public/v2\tc/tc-sets?page=1' last: 'https://our.domain/api/public/v2\tc/tc-sets?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 path: 'https://our.domain/api/public/v2\tc/tc-sets' per_page: 15 to: 3 total: 3 properties: data: type: array example: - id: 1 owner_id: 1 external_id: null name: 'TC set 1' status: draft context_type: question_answer context: 'What is the meaning of life?' - id: 2 owner_id: 1 external_id: null name: 'TC set 2' status: processing context_type: question_answer context: 'Who framed Roger rabbit?' - id: 3 owner_id: 1 external_id: external_id name: 'TC set 3' status: completed context_type: question_answer context: 'Cats or dogs??' items: type: object properties: id: type: integer example: 1 owner_id: type: integer example: 1 external_id: type: string example: null name: type: string example: 'TC set 1' status: type: string example: draft context_type: type: string example: question_answer context: type: string example: 'What is the meaning of life?' links: type: object properties: first: type: string example: 'https://our.domain/api/public/v2\tc/tc-sets?page=1' last: type: string example: 'https://our.domain/api/public/v2\tc/tc-sets?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 path: type: string example: 'https://our.domain/api/public/v2\tc/tc-sets' per_page: type: integer example: 15 to: type: integer example: 3 total: type: integer example: 3 tags: - 'TC sets' post: summary: 'Store a set' operationId: storeASet description: '' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: data: id: 1 owner_id: 1 external_id: null name: 'New TC set' status: draft context_type: question_answer context: 'What is the meaning of life?' properties: data: type: object properties: id: type: integer example: 1 owner_id: type: integer example: 1 external_id: type: string example: null name: type: string example: 'New TC set' status: type: string example: draft context_type: type: string example: question_answer context: type: string example: 'What is the meaning of life?' tags: - 'TC sets' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: 'My TC set' nullable: false external_id: type: string description: '' example: my_own_fancy_id nullable: false callback_url: type: string description: 'Must be a valid URL.' example: 'https://callback.com' nullable: false context: type: string description: 'Must not be greater than 65535 characters.' example: 'Which is the best watch?' nullable: false context_type: type: string description: 'ENUM: Only 1 possible value for now.' example: question_answer nullable: false enum: - question_answer required: - name - context - context_type '/api/public/v2/tc/tc-sets/{set_id}': get: summary: 'Show a set' operationId: showASet description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: 1 owner_id: 1 external_id: null name: 'New TC set' status: draft context_type: question_answer context: 'What is the meaning of life?' properties: data: type: object properties: id: type: integer example: 1 owner_id: type: integer example: 1 external_id: type: string example: null name: type: string example: 'New TC set' status: type: string example: draft context_type: type: string example: question_answer context: type: string example: 'What is the meaning of life?' tags: - 'TC sets' delete: summary: 'Delete a set' operationId: deleteASet description: '' parameters: [] responses: 204: description: '' tags: - 'TC sets' parameters: - in: path name: set_id description: 'The ID of the set.' example: 16 required: true schema: type: integer '/api/public/v2/tc/tc-sets/external-id/{set_by_external_id}': get: summary: 'Show a set by external id' operationId: showASetByExternalId description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: 1 owner_id: 1 external_id: null name: 'New TC set' status: draft context_type: question_answer context: 'What is the meaning of life?' properties: data: type: object properties: id: type: integer example: 1 owner_id: type: integer example: 1 external_id: type: string example: null name: type: string example: 'New TC set' status: type: string example: draft context_type: type: string example: question_answer context: type: string example: 'What is the meaning of life?' tags: - 'TC sets' parameters: - in: path name: set_by_external_id description: 'ID in the client system.' example: my_own_fancy_id required: true schema: type: string '/api/public/v2/tc/tc-sets/{set_id}/start': post: summary: 'Start TC process' operationId: startTCProcess description: 'Start set processing after texts and (optionally) themes have been uploaded.' parameters: [] responses: 202: description: '' content: text/plain: schema: type: string example: 'Empty response' tags: - 'TC sets' requestBody: required: false content: application/json: schema: type: object properties: callback_url: type: string description: 'Must be a valid URL.' example: 'https://callback.com' nullable: false parameters: - in: path name: set_id description: 'The ID of the set.' example: 16 required: true schema: type: integer '/api/public/v2/tc/tc-sets/{set_id}/tc-texts': get: summary: 'List texts in a set' operationId: listTextsInASet description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 1 external_id: text_external_id_1 text: 'Necessitatibus et sint possimus id.' themes: - id: 1 name: 'Theme 1' pre_uploaded: false sentiment: negative subthemes: - id: 1 name: 'Subtheme 1.1' pre_uploaded: false sentiment: negative - id: 2 name: 'Subtheme 1.2' pre_uploaded: false sentiment: negative - id: 2 name: 'Theme 2' pre_uploaded: false sentiment: neutral subthemes: - id: 3 name: 'Subtheme 2.1' pre_uploaded: false sentiment: neutral - id: 3 name: 'Theme 3' pre_uploaded: true sentiment: positive subthemes: - id: 4 name: 'Subtheme 3.1' pre_uploaded: true sentiment: positive - id: 5 name: 'Subtheme 3.2' pre_uploaded: false sentiment: positive - id: 2 external_id: text_external_id_2 text: 'Non facere unde eius in et ea.' themes: [] - id: 3 external_id: null text: 'Et doloribus ipsa sequi.' themes: [] links: first: 'https://our.domain/api/public/v2\tc/tc-sets/1/tc-texts?page=1' last: 'https://our.domain/api/public/v2\tc/tc-sets/1/tc-texts?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 path: 'https://our.domain/api/public/v2\tc/tc-sets/1/tc-texts' per_page: 15 to: 3 total: 3 properties: data: type: array example: - id: 1 external_id: text_external_id_1 text: 'Necessitatibus et sint possimus id.' themes: - id: 1 name: 'Theme 1' pre_uploaded: false sentiment: negative subthemes: - id: 1 name: 'Subtheme 1.1' pre_uploaded: false sentiment: negative - id: 2 name: 'Subtheme 1.2' pre_uploaded: false sentiment: negative - id: 2 name: 'Theme 2' pre_uploaded: false sentiment: neutral subthemes: - id: 3 name: 'Subtheme 2.1' pre_uploaded: false sentiment: neutral - id: 3 name: 'Theme 3' pre_uploaded: true sentiment: positive subthemes: - id: 4 name: 'Subtheme 3.1' pre_uploaded: true sentiment: positive - id: 5 name: 'Subtheme 3.2' pre_uploaded: false sentiment: positive - id: 2 external_id: text_external_id_2 text: 'Non facere unde eius in et ea.' themes: [] - id: 3 external_id: null text: 'Et doloribus ipsa sequi.' themes: [] items: type: object properties: id: type: integer example: 1 external_id: type: string example: text_external_id_1 text: type: string example: 'Necessitatibus et sint possimus id.' themes: type: array example: - id: 1 name: 'Theme 1' pre_uploaded: false sentiment: negative subthemes: - id: 1 name: 'Subtheme 1.1' pre_uploaded: false sentiment: negative - id: 2 name: 'Subtheme 1.2' pre_uploaded: false sentiment: negative - id: 2 name: 'Theme 2' pre_uploaded: false sentiment: neutral subthemes: - id: 3 name: 'Subtheme 2.1' pre_uploaded: false sentiment: neutral - id: 3 name: 'Theme 3' pre_uploaded: true sentiment: positive subthemes: - id: 4 name: 'Subtheme 3.1' pre_uploaded: true sentiment: positive - id: 5 name: 'Subtheme 3.2' pre_uploaded: false sentiment: positive items: type: object properties: id: type: integer example: 1 name: type: string example: 'Theme 1' pre_uploaded: type: boolean example: false sentiment: type: string example: negative subthemes: type: array example: - id: 1 name: 'Subtheme 1.1' pre_uploaded: false sentiment: negative - id: 2 name: 'Subtheme 1.2' pre_uploaded: false sentiment: negative items: type: object properties: id: type: integer example: 1 name: type: string example: 'Subtheme 1.1' pre_uploaded: type: boolean example: false sentiment: type: string example: negative links: type: object properties: first: type: string example: 'https://our.domain/api/public/v2\tc/tc-sets/1/tc-texts?page=1' last: type: string example: 'https://our.domain/api/public/v2\tc/tc-sets/1/tc-texts?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 path: type: string example: 'https://our.domain/api/public/v2\tc/tc-sets/1/tc-texts' per_page: type: integer example: 15 to: type: integer example: 3 total: type: integer example: 3 tags: - 'TC texts' parameters: - in: path name: set_id description: 'The ID of the set.' example: 16 required: true schema: type: integer '/api/public/v2/tc/tc-sets/{set_id}/tc-texts/bulk': post: summary: 'Store texts (bulk)' operationId: storeTextsbulk description: '' parameters: [] responses: 204: description: '' tags: - 'TC texts' requestBody: required: true content: application/json: schema: type: object properties: points: type: array description: '' example: - [] items: type: object properties: text: type: string description: 'Must not be greater than 1000 characters.' example: 'I was very happy to visit your shop today!' nullable: false external_id: type: string description: 'Must not be greater than 255 characters.' example: my_own_answer_id nullable: false required: - text required: - points parameters: - in: path name: set_id description: 'The ID of the set.' example: 16 required: true schema: type: integer '/api/public/v2/tc/tc-sets/{set_id}/tc-themes': get: summary: 'List themes in a set' operationId: listThemesInASet description: '' parameters: - in: query name: per_page description: '' example: 15 required: false schema: type: integer description: '' example: 15 nullable: false responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 1 name: 'Theme 1' pre_uploaded: false subthemes: - id: 1 name: 'Subtheme 1.1' pre_uploaded: false - id: 2 name: 'Subtheme 1.2' pre_uploaded: false - id: 2 name: 'Theme 2' pre_uploaded: false subthemes: - id: 3 name: 'Subtheme 2.1' pre_uploaded: false - id: 4 name: 'Subtheme 2.2' pre_uploaded: false - id: 3 name: 'Theme 3' pre_uploaded: true subthemes: - id: 5 name: 'Subtheme 3.1' pre_uploaded: true - id: 6 name: 'Subtheme 3.2' pre_uploaded: true - id: 7 name: 'Subtheme 3.3' pre_uploaded: false links: first: 'https://our.domain/api/public/v2\tc/tc-sets/1/tc-themes?page=1' last: 'https://our.domain/api/public/v2\tc/tc-sets/1/tc-themes?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 path: 'https://our.domain/api/public/v2\tc/tc-sets/1/tc-themes' per_page: 15 to: 3 total: 3 properties: data: type: array example: - id: 1 name: 'Theme 1' pre_uploaded: false subthemes: - id: 1 name: 'Subtheme 1.1' pre_uploaded: false - id: 2 name: 'Subtheme 1.2' pre_uploaded: false - id: 2 name: 'Theme 2' pre_uploaded: false subthemes: - id: 3 name: 'Subtheme 2.1' pre_uploaded: false - id: 4 name: 'Subtheme 2.2' pre_uploaded: false - id: 3 name: 'Theme 3' pre_uploaded: true subthemes: - id: 5 name: 'Subtheme 3.1' pre_uploaded: true - id: 6 name: 'Subtheme 3.2' pre_uploaded: true - id: 7 name: 'Subtheme 3.3' pre_uploaded: false items: type: object properties: id: type: integer example: 1 name: type: string example: 'Theme 1' pre_uploaded: type: boolean example: false subthemes: type: array example: - id: 1 name: 'Subtheme 1.1' pre_uploaded: false - id: 2 name: 'Subtheme 1.2' pre_uploaded: false items: type: object properties: id: type: integer example: 1 name: type: string example: 'Subtheme 1.1' pre_uploaded: type: boolean example: false links: type: object properties: first: type: string example: 'https://our.domain/api/public/v2\tc/tc-sets/1/tc-themes?page=1' last: type: string example: 'https://our.domain/api/public/v2\tc/tc-sets/1/tc-themes?page=1' prev: type: string example: null next: type: string example: null meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 path: type: string example: 'https://our.domain/api/public/v2\tc/tc-sets/1/tc-themes' per_page: type: integer example: 15 to: type: integer example: 3 total: type: integer example: 3 tags: - 'TC themes' parameters: - in: path name: set_id description: 'The ID of the set.' example: 16 required: true schema: type: integer '/api/public/v2/tc/tc-sets/{set_id}/tc-themes/bulk': post: summary: 'Store themes (bulk)' operationId: storeThemesbulk description: '' parameters: [] responses: 204: description: '' tags: - 'TC themes' requestBody: required: true content: application/json: schema: type: object properties: themes: type: array description: '' example: - [] items: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: 'Customer opinion' nullable: false subthemes: type: array description: 'Must not have more than 10 items.' example: null items: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: 'Opinion on quality' nullable: false required: - name required: - name required: - themes parameters: - in: path name: set_id description: 'The ID of the set.' example: 16 required: true schema: type: integer