๐Ÿ“ฆ sglkc / roketin-be-test

๐Ÿ“„ swagger.yaml ยท 245 lines
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245consumes:
- application/json
definitions:
  dto.BaseResponse:
    properties:
      message:
        type: string
      success:
        type: boolean
    type: object
  dto.DataResponse-models_Movie:
    properties:
      data:
        $ref: '#/definitions/models.Movie'
      message:
        type: string
      success:
        type: boolean
    type: object
  dto.ErrorResponse:
    properties:
      message:
        type: string
      success:
        type: boolean
    type: object
  dto.PaginatedResponse-models_Movie:
    properties:
      count:
        type: integer
      data:
        items:
          $ref: '#/definitions/models.Movie'
        type: array
      limit:
        type: integer
      message:
        type: string
      page:
        type: integer
      success:
        type: boolean
    type: object
  models.Movie:
    properties:
      artists:
        items:
          type: string
        minItems: 1
        type: array
      description:
        type: string
      duration:
        minimum: 1
        type: integer
      genres:
        items:
          type: string
        minItems: 1
        type: array
      id:
        type: integer
      title:
        type: string
    required:
    - artists
    - description
    - duration
    - genres
    - title
    type: object
info:
  contact:
    name: sglkc
    url: https://github.com/sglkc/roketin-be-test
  description: This is a sample movies API using Gin framework.
  title: Movies API
  version: "1.0"
paths:
  /movies:
    get:
      description: Get a list of all movies with pagination
      parameters:
      - default: 1
        description: Page number for pagination
        in: query
        name: page
        type: integer
      - default: 10
        description: Number of movies per page
        in: query
        name: limit
        type: integer
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/dto.PaginatedResponse-models_Movie'
            type: array
      summary: Get all movies
      tags:
      - Movies
    post:
      description: Create a new movie
      parameters:
      - description: Movie object to create
        in: body
        name: movie
        required: true
        schema:
          $ref: '#/definitions/models.Movie'
      responses:
        "201":
          description: Created
          schema:
            $ref: '#/definitions/dto.DataResponse-models_Movie'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/dto.ErrorResponse'
      summary: Create a new movie
      tags:
      - Movies
  /movies/{id}:
    delete:
      description: Delete a movie by ID
      parameters:
      - description: Movie ID
        in: path
        name: id
        required: true
        type: integer
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.BaseResponse'
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/dto.ErrorResponse'
      summary: Delete a movie
      tags:
      - Movies
    get:
      description: Get movie by ID
      parameters:
      - description: Movie ID
        in: path
        name: id
        required: true
        type: integer
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/dto.DataResponse-models_Movie'
            type: array
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/dto.ErrorResponse'
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/dto.ErrorResponse'
      summary: Get movie
      tags:
      - Movies
    put:
      description: Update a movie by ID
      parameters:
      - description: Movie ID
        in: path
        name: id
        required: true
        type: integer
      - description: Updated movie object
        in: body
        name: movie
        required: true
        schema:
          $ref: '#/definitions/models.Movie'
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/dto.DataResponse-models_Movie'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/dto.ErrorResponse'
        "404":
          description: Not Found
          schema:
            $ref: '#/definitions/dto.ErrorResponse'
      summary: Update a movie
      tags:
      - Movies
  /movies/search:
    get:
      description: Search for movies by title, description, artist, or genre
      parameters:
      - description: Movie title to search for
        in: query
        name: title
        type: string
      - description: Movie description to search for
        in: query
        name: description
        type: string
      - description: Movie artist to search for
        in: query
        name: artist
        type: string
      - description: Movie genre to search for
        in: query
        name: genre
        type: string
      - default: 1
        description: Page number for pagination
        in: query
        name: page
        type: integer
      - default: 10
        description: Number of movies per page
        in: query
        name: limit
        type: integer
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/dto.PaginatedResponse-models_Movie'
            type: array
      summary: Search movies
      tags:
      - Movies
produces:
- application/json
swagger: "2.0"