swagger: '2.0' info: title: estela API v1.0 Documentation description: estela API Swagger Specification version: v1 host: 127.0.0.1:8000 schemes: - http basePath: / consumes: - application/json produces: - application/json securityDefinitions: Basic: type: basic security: - Basic: [] paths: /api/auth/activate: get: operationId: api_auth_activate description: '' parameters: [] responses: '200': description: '' schema: type: array items: $ref: '#/definitions/AuthToken' tags: - api parameters: [] /api/auth/login: post: operationId: api_auth_login description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/AuthToken' responses: '200': description: '' schema: $ref: '#/definitions/Token' tags: - api parameters: [] /api/auth/register: post: operationId: api_auth_register description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/User' responses: '200': description: '' schema: $ref: '#/definitions/Token' tags: - api parameters: [] /api/projects: get: operationId: api_projects_list description: '' parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: $ref: '#/definitions/Project' tags: - api post: operationId: api_projects_create description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/Project' responses: '201': description: '' schema: $ref: '#/definitions/Project' tags: - api parameters: [] /api/projects/{pid}: get: operationId: api_projects_read description: '' parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/Project' tags: - api put: operationId: api_projects_update summary: Update Project information description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/ProjectUpdate' responses: '200': description: '' schema: $ref: '#/definitions/ProjectUpdate' tags: - api patch: operationId: api_projects_partial_update description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/Project' responses: '200': description: '' schema: $ref: '#/definitions/Project' tags: - api delete: operationId: api_projects_delete description: '' parameters: [] responses: '204': description: '' tags: - api parameters: - name: pid in: path required: true type: string /api/projects/{pid}/deploys: get: operationId: api_projects_deploys_list description: '' parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: $ref: '#/definitions/Deploy' tags: - api post: operationId: api_projects_deploys_create summary: Create a new Deploy description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/DeployCreate' responses: '201': description: '' schema: $ref: '#/definitions/DeployCreate' tags: - api parameters: - name: pid in: path required: true type: string /api/projects/{pid}/deploys/{did}: get: operationId: api_projects_deploys_read description: '' parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/Deploy' tags: - api put: operationId: api_projects_deploys_update description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/DeployUpdate' responses: '200': description: '' schema: $ref: '#/definitions/DeployUpdate' tags: - api patch: operationId: api_projects_deploys_partial_update description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/Deploy' responses: '200': description: '' schema: $ref: '#/definitions/Deploy' tags: - api delete: operationId: api_projects_deploys_delete description: '' parameters: [] responses: '204': description: '' tags: - api parameters: - name: did in: path description: A unique integer value identifying this deploy. required: true type: integer - name: pid in: path required: true type: string /api/projects/{pid}/jobs: get: operationId: api_projects_jobs description: '' parameters: - name: page in: query description: DataPaginated. required: false type: number - name: page_size in: query description: DataPaginated. required: false type: number responses: '200': description: '' schema: $ref: '#/definitions/ProjectJob' tags: - api parameters: - name: pid in: path required: true type: string /api/projects/{pid}/spiders: get: operationId: api_projects_spiders_list description: '' parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: $ref: '#/definitions/Spider' tags: - api parameters: - name: pid in: path required: true type: string /api/projects/{pid}/spiders/{sid}: get: operationId: api_projects_spiders_read description: '' parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/Spider' tags: - api parameters: - name: pid in: path required: true type: string - name: sid in: path required: true type: string /api/projects/{pid}/spiders/{sid}/cronjobs: get: operationId: api_projects_spiders_cronjobs_list description: '' parameters: - name: tag in: query description: Cronjob tag required: false type: string - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: $ref: '#/definitions/SpiderCronJob' tags: - api post: operationId: api_projects_spiders_cronjobs_create description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/SpiderCronJobCreate' responses: '201': description: '' schema: $ref: '#/definitions/SpiderCronJobCreate' tags: - api parameters: - name: pid in: path required: true type: string - name: sid in: path required: true type: string /api/projects/{pid}/spiders/{sid}/cronjobs/{cjid}: get: operationId: api_projects_spiders_cronjobs_read description: '' parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/SpiderCronJob' tags: - api put: operationId: api_projects_spiders_cronjobs_update description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/SpiderCronJobUpdate' responses: '200': description: '' schema: $ref: '#/definitions/SpiderCronJobUpdate' tags: - api patch: operationId: api_projects_spiders_cronjobs_partial_update description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/SpiderCronJob' responses: '200': description: '' schema: $ref: '#/definitions/SpiderCronJob' tags: - api parameters: - name: cjid in: path required: true type: string - name: pid in: path required: true type: string - name: sid in: path required: true type: string /api/projects/{pid}/spiders/{sid}/cronjobs/{cjid}/run_once: get: operationId: api_projects_spiders_cronjobs_run_once description: '' parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/SpiderCronJob' tags: - api parameters: - name: cjid in: path required: true type: string - name: pid in: path required: true type: string - name: sid in: path required: true type: string /api/projects/{pid}/spiders/{sid}/jobs: get: operationId: api_projects_spiders_jobs_list description: '' parameters: - name: cronjob in: query description: Cronjob required: false type: number - name: status in: query description: Job status required: false type: string - name: tag in: query description: Job tag required: false type: string - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri x-nullable: true previous: type: string format: uri x-nullable: true results: type: array items: $ref: '#/definitions/SpiderJob' tags: - api post: operationId: api_projects_spiders_jobs_create description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/SpiderJobCreate' - name: async in: query type: boolean responses: '201': description: '' schema: $ref: '#/definitions/SpiderJobCreate' tags: - api parameters: - name: pid in: path required: true type: string - name: sid in: path required: true type: string /api/projects/{pid}/spiders/{sid}/jobs/{jid}: get: operationId: api_projects_spiders_jobs_read description: '' parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/SpiderJob' tags: - api put: operationId: api_projects_spiders_jobs_update description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/SpiderJobUpdate' responses: '200': description: '' schema: $ref: '#/definitions/SpiderJobUpdate' tags: - api patch: operationId: api_projects_spiders_jobs_partial_update description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/SpiderJob' responses: '200': description: '' schema: $ref: '#/definitions/SpiderJob' tags: - api parameters: - name: jid in: path description: A unique integer value identifying this spider job. required: true type: integer - name: pid in: path required: true type: string - name: sid in: path required: true type: string /api/projects/{pid}/spiders/{sid}/jobs/{jid}/data: get: operationId: api_projects_spiders_jobs_data_list description: '' parameters: - name: page in: query description: A page number within the paginated result set. required: false type: integer - name: page_size in: query description: Number of results to return per page. required: false type: integer - name: type in: query description: Spider job data type. required: false type: string responses: '200': description: '' schema: required: - count - result type: object properties: count: type: number previous: type: string format: uri x-nullable: true next: type: string format: uri x-nullable: true results: type: array items: type: object tags: - api parameters: - name: jid in: path required: true type: string - name: pid in: path required: true type: string - name: sid in: path required: true type: string /api/projects/{pid}/spiders/{sid}/jobs/{jid}/data/{id}/delete: post: operationId: api_projects_spiders_jobs_data_delete description: '' parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/DeleteJobData' tags: - api parameters: - name: id in: path required: true type: string - name: jid in: path required: true type: string - name: pid in: path required: true type: string - name: sid in: path required: true type: string /api/projects/{pid}/spiders/{sid}/jobs/{jid}/logs: get: operationId: api_projects_spiders_jobs_logs description: '' parameters: - name: page in: query description: DataPaginated. required: false type: number - name: page_size in: query description: DataPaginated. required: false type: number responses: '200': description: '' schema: $ref: '#/definitions/GetLogs' tags: - api parameters: - name: jid in: path description: A unique integer value identifying this spider job. required: true type: integer - name: pid in: path required: true type: string - name: sid in: path required: true type: string definitions: AuthToken: required: - username - password type: object properties: username: title: Username type: string minLength: 1 password: title: Password type: string minLength: 1 Token: required: - key type: object properties: user: title: User type: string pattern: ^[\w.@+-]+$ readOnly: true key: title: Key type: string maxLength: 40 minLength: 1 User: required: - username - password type: object properties: id: title: ID type: integer readOnly: true email: title: Email address type: string format: email maxLength: 254 username: title: Username description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. type: string pattern: ^[\w.@+-]+$ maxLength: 150 minLength: 1 password: title: Password type: string maxLength: 128 minLength: 1 UserDetail: required: - username type: object properties: username: title: Username description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. type: string pattern: ^[\w.@+-]+$ maxLength: 150 minLength: 1 email: title: Email address type: string format: email maxLength: 254 Permission: type: object properties: user: $ref: '#/definitions/UserDetail' permission: title: Permission type: string enum: - EDITOR - VIEWER - OWNER Project: required: - name type: object properties: pid: title: Pid type: string format: uuid readOnly: true name: title: Name type: string maxLength: 1000 minLength: 1 container_image: title: Container image type: string readOnly: true users: type: array items: $ref: '#/definitions/Permission' ProjectUpdate: required: - name type: object properties: pid: title: Pid type: string format: uuid readOnly: true name: title: Name type: string maxLength: 1000 minLength: 1 users: type: array items: $ref: '#/definitions/UserDetail' email: title: Email type: string format: email minLength: 1 action: title: Action type: string enum: - remove - add permission: title: Permission type: string enum: - EDITOR - VIEWER Spider: required: - name - project type: object properties: sid: title: Sid type: integer readOnly: true name: title: Name type: string maxLength: 1000 minLength: 1 project: title: Project type: string format: uuid Deploy: required: - project - user type: object properties: did: title: Did type: integer readOnly: true project: title: Project type: string format: uuid user: $ref: '#/definitions/UserDetail' status: title: Status type: string enum: - SUCCESS - BUILDING - FAILURE - CANCELED spiders: type: array items: $ref: '#/definitions/Spider' created: title: Created type: string format: date-time readOnly: true DeployCreate: type: object properties: did: title: Did type: integer readOnly: true status: title: Status type: string enum: - SUCCESS - BUILDING - FAILURE - CANCELED created: title: Created type: string format: date-time readOnly: true project_zip: title: Project zip type: string readOnly: true format: uri DeployUpdate: type: object properties: did: title: Did type: integer readOnly: true status: title: Status type: string enum: - SUCCESS - BUILDING - FAILURE - CANCELED spiders_names: type: array items: type: string maxLength: 1000 minLength: 1 SpiderJobArg: required: - name - value type: object properties: name: title: Name type: string maxLength: 1000 minLength: 1 value: title: Value type: string maxLength: 1000 minLength: 1 SpiderJobEnvVar: required: - name - value type: object properties: name: title: Name type: string maxLength: 1000 minLength: 1 value: title: Value type: string maxLength: 1000 minLength: 1 SpiderJobTag: required: - name type: object properties: name: title: Name type: string maxLength: 50 minLength: 1 SpiderJob: required: - spider type: object properties: jid: title: Jid type: integer readOnly: true spider: title: Spider type: integer created: title: Created type: string format: date-time readOnly: true name: title: Name type: string readOnly: true args: type: array items: $ref: '#/definitions/SpiderJobArg' env_vars: type: array items: $ref: '#/definitions/SpiderJobEnvVar' tags: type: array items: $ref: '#/definitions/SpiderJobTag' job_status: title: Job status type: string readOnly: true cronjob: title: Cronjob type: integer x-nullable: true ProjectJob: required: - results - count type: object properties: results: type: array items: $ref: '#/definitions/SpiderJob' count: title: Count type: integer SpiderCronJob: required: - spider type: object properties: cjid: title: Cjid type: integer readOnly: true spider: title: Spider type: integer created: title: Created type: string format: date-time readOnly: true name: title: Name type: string readOnly: true cargs: type: array items: $ref: '#/definitions/SpiderJobArg' cenv_vars: type: array items: $ref: '#/definitions/SpiderJobEnvVar' ctags: type: array items: $ref: '#/definitions/SpiderJobTag' schedule: title: Schedule type: string maxLength: 20 status: title: Status type: string enum: - ACTIVE - DISABLED unique_collection: title: Unique collection type: boolean SpiderCronJobCreate: type: object properties: cjid: title: Cjid type: integer readOnly: true name: title: Name type: string readOnly: true cargs: type: array items: $ref: '#/definitions/SpiderJobArg' cenv_vars: type: array items: $ref: '#/definitions/SpiderJobEnvVar' ctags: type: array items: $ref: '#/definitions/SpiderJobTag' schedule: title: Schedule type: string maxLength: 20 unique_collection: title: Unique collection type: boolean SpiderCronJobUpdate: type: object properties: cjid: title: Cjid type: integer readOnly: true status: title: Status type: string enum: - ACTIVE - DISABLED schedule: title: Schedule type: string maxLength: 20 unique_collection: title: Unique collection type: boolean SpiderJobCreate: type: object properties: jid: title: Jid type: integer readOnly: true name: title: Name type: string readOnly: true args: type: array items: $ref: '#/definitions/SpiderJobArg' env_vars: type: array items: $ref: '#/definitions/SpiderJobEnvVar' tags: type: array items: $ref: '#/definitions/SpiderJobTag' job_status: title: Job status type: string readOnly: true cronjob: title: Cronjob type: integer x-nullable: true SpiderJobUpdate: type: object properties: jid: title: Jid type: integer readOnly: true status: title: Status type: string enum: - IN_QUEUE - WAITING - RUNNING - STOPPED - INCOMPLETE - CANCELLED - COMPLETED - ERROR DeleteJobData: required: - count type: object properties: count: title: Count type: integer GetLogs: required: - logs - count type: object properties: logs: type: array items: type: string maxLength: 1000 minLength: 1 count: title: Count type: integer