openapi: 3.0.0 info: description: "This is a sample/Proof of concept OmegaV v2 server API specification." version: 0.0.1 title: OmegaV v2 API demo contact: email: edb@omegav.no license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html servers: - url: "api.omegav.no" description: "OmegaV API server" - url: "http://127.0.0.1:8000" description: "Local test" tags: - name: member description: "Operations about a member" paths: /members: get: tags: - member summary: "Get a list of all members" description: "Get a list of all members" operationId: getMembers responses: '200': description: "Success" content: application/json: schema: $ref: '#/components/schemas/members' /member: post: tags: - member summary: "Add a new member" description: "Add a new member" operationId: addMember requestBody: description: "Create a new member" content: application/json: schema: $ref: "#/components/schemas/minimalMemberWithoutId" required: true responses: '200': description: "Success" content: application/json: schema: $ref: '#/components/schemas/minimalMember' /member/{memberId}: get: tags: - member summary: "Get a member" description: "Get a single member" operationId: getMember parameters: - name: memberId in: path description: "ID of the user's who's balance will be fetched" required: true schema: type: integer format: uint64 responses: '200': description: "Success" content: application/json: schema: $ref: '#/components/schemas/member' '404': description: "Member not found" put: tags: - member summary: "Update a member's details" description: "Update a member's details" operationId: updateMember parameters: - name: memberId in: path description: "ID of the user's who's info that will be updated" required: true schema: type: integer format: uint64 requestBody: content: application/json: schema: $ref: '#/components/schemas/minimalMemberWithoutId' responses: '200': description: "Success" content: application/json: schema: $ref: '#/components/schemas/member' '404': description: "Member not found" /member/{memberId}/balance: get: tags: - member summary: "Get a member's balance" description: "Get a member's balance" operationId: getBalance parameters: - name: memberId in: path description: "ID of the user's who's balance will be fetched" required: true schema: type: integer format: uint64 responses: '200': description: "Success" content: application/json: schema: $ref: '#/components/schemas/balance' '404': description: "Member not found" put: tags: - member summary: "Change a member's balance" description: "Add to a member's balance" operationId: putBalance parameters: - name: memberId in: path description: "ID of the user's who's balance will be added to" required: true schema: type: integer format: uint64 requestBody: description: "The values to be added to the member's balance" content: application/json: schema: $ref: '#/components/schemas/balance' responses: '200': description: "Success, returnes the new balance" content: application/json: schema: $ref: '#/components/schemas/balance' '400': description: "Malformed request" '404': description: "Member not found" /member/{memberId}/imagePreference: get: tags: - member summary: "Get a member's image preference" description: "Get a member's image preference" operationId: getImagePreference parameters: - name: memberId in: path description: "ID of the user's who's info will be fetched" required: true schema: type: integer format: uint64 responses: '200': description: "Success" content: application/json: schema: $ref: '#/components/schemas/imagePreference' '404': description: "Member not found" put: tags: - member summary: "Change a member's image preference" description: "Add to a member's image preference" operationId: changeImagePreference parameters: - name: memberId in: path description: "ID of the user's who's info will be changed" required: true schema: type: integer format: uint64 requestBody: description: "The image preference to set for the member" content: application/json: schema: $ref: '#/components/schemas/imagePreference' responses: '200': description: "Success, returnes the new image preference" content: application/json: schema: $ref: '#/components/schemas/imagePreference' '400': description: "Malformed request" '404': description: "Member not found" /member/{memberId}/rfid: get: tags: - member summary: "Get a member's RFID cards" description: "Get all of a member's RFID cards" operationId: getRfids parameters: - name: memberId in: path description: "ID of the user's who's info will be fetched" required: true schema: type: integer format: uint64 responses: '200': description: "Success" content: application/json: schema: $ref: '#/components/schemas/rfidCards' '404': description: "Member not found" post: tags: - member summary: "Add RFID card" description: "Add an RFID card to a member" operationId: addRfid parameters: - name: memberId in: path description: "ID of the user's who's info will be added to" required: true schema: type: integer format: uint64 requestBody: description: "Info about the RFID card to add" content: application/json: schema: $ref: '#/components/schemas/rfidCard' responses: '200': description: "Success, returns the new RFID card info" content: application/json: schema: $ref: '#/components/schemas/rfidCard' '400': description: "Malformed request" '404': description: "Member not found" components: schemas: members: type: object description: "An array containing multimple `member` objects" properties: members: type: array items: $ref: '#/components/schemas/member' minimalMemberWithoutId: type: object description: "The minimal values needed to create a member" properties: ntnuUsername: type: string description: "The NTNU username of the member" example: "sebasthg" firstName: type: string description: "First name of the member" example: "Sebastian" lastName: type: string description: "Last name of the member" example: "Gabrielli" email: type: string description: "The member's non-ntnu e-mail" example: "sebastian@fastmail.mx" minimalMember: type: object description: "The minimal values returned when createing a member" properties: id: type: integer description: "The internal member ID of the user" format: uint64 example: 1337 ntnuUsername: type: string description: "The NTNU username of the member" example: "sebasthg" firstName: type: string description: "First name of the member" example: "Sebastian" lastName: type: string description: "Last name of the member" example: "Gabrielli" email: type: string description: "The member's non-ntnu e-mail" example: "sebastian@fastmail.mx" member: type: object description: "A collection of all the values associated with a member" properties: id: type: integer description: "The internal member ID of the user" format: uint64 example: 1337 ntnuUsername: type: string description: "The NTNU username of the member" example: "sebasthg" firstName: type: string description: "First name of the member" example: "Sebastian" lastName: type: string description: "Last name of the member" example: "Gabrielli" email: type: string description: "The member's non-ntnu e-mail" example: "sebastian@fastmail.mx" balance: type: integer description: "The balance on the member's OBS account" format: int64 example: 1337 imagePreference: type: string description: "The image series shown upon an OBS purchase" example: "Sexy stallman" enum: - "Sexy stallman" - "Propaganda" - "Money" rfidCards: type: array items: $ref: '#/components/schemas/rfidCard' rfidCards: type: object description: "An array of rfidCard objects" properties: rfidCards: type: array items: $ref: '#/components/schemas/rfidCard' rfidCard: type: object description: "An RFID card" properties: cardId: type: string example: "0364249683" cardComment: type: string example: "Studentkort" imagePreference: type: object description: "A member's image preference" properties: imagePreference: type: string description: "The image series shown upon an OBS purchase" example: "Sexy stallman" enum: - "Sexy stallman" - "Propaganda" - "Money" balance: type: object description: "A member's balance" properties: balance: type: integer format: int64 example: 1337 requestBodies: minimalMember: description: "Add a member" content: application/json: schema: $ref: '#/components/schemas/minimalMember'