swagger: '2.0' info: description: REST API for ChartHop version: V1.0.0 title: ChartHop access job-level API contact: name: ChartHop url: https://www.charthop.com email: support@charthop.com host: localhost schemes: - https - http consumes: - application/json produces: - application/json tags: - name: job-level paths: /v1/org/{orgId}/job-level: get: tags: - job-level summary: Find job levels in the organization operationId: findJobLevels consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: date in: query description: Date to search as of required: false type: string format: date - name: from in: query description: Job level id to start paginating from required: false type: string - name: limit in: query description: Number of results to return required: false type: integer format: int32 - name: includeDeleted in: query description: Include deleted job levels required: false type: boolean responses: '200': description: successful operation schema: $ref: '#/definitions/ResultsJobLevel' '400': description: bad request '401': description: not authorized '404': description: not found post: tags: - job-level summary: Create a job level operationId: createJobLevel consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: org identifier (either id or slug) required: true type: string - name: date in: query description: Effective date of job level creation required: false type: string format: date - name: body in: body required: true schema: $ref: '#/definitions/CreateJobLevel' responses: '202': description: snapshot currently building '400': description: bad request '401': description: not authorized '404': description: not found /v1/org/{orgId}/job-level/{jobLevelId}: get: tags: - job-level summary: Return a particular job level by id on an effective date operationId: getJobLevelById consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: jobLevelId in: path description: Job level id required: true type: string - name: date in: query description: Date to search as of required: false type: string format: date responses: '200': description: successful operation schema: $ref: '#/definitions/JobLevel' '400': description: bad request '401': description: not authorized '404': description: not found patch: tags: - job-level summary: Update a job level operationId: updateJobLevel consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: jobLevelId in: path description: Job level id required: true type: string - name: date in: query description: Effective date of jobLevel update required: false type: string format: date - name: body in: body required: true schema: $ref: '#/definitions/UpdateJobLevel' responses: '202': description: snapshot currently building '400': description: bad request '401': description: not authorized '404': description: not found delete: tags: - job-level summary: Delete a job level operationId: deleteJobLevel consumes: - application/json produces: - application/json parameters: - name: orgId in: path description: Org identifier (either id or slug) required: true type: string - name: jobLevelId in: path description: Job level id required: true type: string - name: date in: query description: Effective date of group update required: false type: string format: date responses: '202': description: snapshot currently building '400': description: bad request '401': description: not authorized '404': description: not found definitions: AccessAction: type: object required: - action properties: action: type: string fields: type: array uniqueItems: true items: type: string types: type: array uniqueItems: true items: type: string CreateJobLevel: type: object required: - label properties: label: type: string description: human-readable name of job level example: Associate code: type: string description: job level code example: BF01 benchmarkType: description: whether to use radford or option impact as a benchmark example: Radford $ref: '#/definitions/EnumValue' benchmarkLevel: description: radford or option impact level as a reference example: P1 - Professional - Entry $ref: '#/definitions/EnumValue' ResultsAccess: type: object required: - allowed properties: ids: type: array uniqueItems: true items: type: string example: 588f7ee98f138b19220041a7 allowed: type: array uniqueItems: true items: $ref: '#/definitions/AccessAction' EnumValue: type: object required: - name - label properties: name: type: string description: enum value name label: type: string description: enum value label color: type: string description: color of property pattern: ^#[a-f0-9]{6}$ expr: type: string description: computed expression, for ENUM_EXPR type num: type: number description: numeric value, for ENUM_SCALE type sort: type: integer format: int32 description: sort order rank: type: integer format: int32 description: rank order, if selected in rank order id: type: string description: unique identifier for enum example: 588f7ee98f138b19220041a7 labelTr: description: translations for the label $ref: '#/definitions/Translations' Translations: type: object required: - values properties: values: type: object additionalProperties: type: string Attribution: type: object properties: principalUserId: type: string example: 588f7ee98f138b19220041a7 agentUserIds: type: array items: type: string example: 588f7ee98f138b19220041a7 eventId: type: string example: 588f7ee98f138b19220041a7 aiChatId: type: string example: 588f7ee98f138b19220041a7 aiToolUseId: type: string channel: type: string enum: - WEB - MOBILE - SLACK - TEAMS - MCP ResultsJobLevel: type: object required: - data properties: data: type: array items: $ref: '#/definitions/JobLevel' next: type: string access: type: array items: $ref: '#/definitions/ResultsAccess' JobLevel: type: object required: - id - orgId - label properties: id: type: string description: globally unique id example: 588f7ee98f138b19220041a7 orgId: type: string description: parent organization id example: 588f7ee98f138b19220041a7 label: type: string description: human-readable name of job level example: Associate code: type: string description: job level code example: BF01 benchmarkType: description: whether to use radford or option impact as a benchmark example: Radford $ref: '#/definitions/EnumValue' benchmarkLevel: description: radford or option impact level as a reference example: P1 - Professional - Entry $ref: '#/definitions/EnumValue' createId: type: string description: created by user id example: 588f7ee98f138b19220041a7 createBehalfId: type: string description: created on behalf of user id example: 588f7ee98f138b19220041a7 createAttribution: $ref: '#/definitions/Attribution' createAt: type: string description: created timestamp example: '2017-01-24T13:57:52Z' updateId: type: string description: last updated by user id example: 588f7ee98f138b19220041a7 updateBehalfId: type: string description: last updated on behalf of user id example: 588f7ee98f138b19220041a7 updateAttribution: $ref: '#/definitions/Attribution' updateAt: type: string description: last updated timestamp example: '2017-01-24T13:57:52Z' deleteId: type: string description: deleted by user id example: 588f7ee98f138b19220041a7 deleteBehalfId: type: string description: deleted on behalf of user id example: 588f7ee98f138b19220041a7 deleteAttribution: $ref: '#/definitions/Attribution' deleteAt: type: string description: deleted timestamp example: '2017-01-24T13:57:52Z' UpdateJobLevel: type: object properties: label: type: string description: human-readable name of job level example: Associate code: type: string description: job level code example: BF01 benchmarkType: description: whether to use radford or option impact as a benchmark example: Radford $ref: '#/definitions/EnumValue' benchmarkLevel: description: radford or option impact level as a reference example: P1 - Professional - Entry $ref: '#/definitions/EnumValue'