Referencia de la API GraphQL
Endpoint, encabezados de autenticación y todas las queries y mutations raíz de la API de Skiffly. El SDL completo está disponible por introspección.
POST https://api.skiffly.dev/graphql
Authorization: Bearer <token> # token de cuenta o de espacio de trabajo
Project-Access-Token: <token> # token de proyecto en lugar de AuthorizationAbre la URL en un navegador para usar GraphiQL con el esquema en vivo, o ejecuta una query de introspección para descargar el SDL. Los conceptos, tokens y ejemplos están en la guía de la API pública; las tablas de abajo son la lista completa de campos raíz. Los argumentos son ID! donde Railway tiene String!; se aceptan ambas declaraciones de variables.
Queries#
Cuenta y espacio de trabajo#
| Campo | Devuelve |
|---|---|
me | User con workspaces { id name role } |
workspaces, workspace(workspaceId: ID!) | [Workspace!]!, Workspace! |
workspaceMembers(workspaceId), workspaceInvites(workspaceId) | miembros e invitaciones pendientes |
apiTokens(workspaceId, first, after), apiToken | tokens de espacio de trabajo; el contexto del token actual |
projectTokens(projectId, first, after), projectToken | tokens de proyecto; el token de proyecto actual |
auditLog(workspaceId, first, after) | AuditLogPage! |
notifications(first, after, unreadOnly), unreadNotificationCount | notificaciones dentro de la app |
sshKeys | claves públicas de la cuenta |
githubInstallations, githubApp, githubRepositories(installationId, search, first), githubBranches(installationId, repo) | estado de la GitHub App, repositorios y ramas |
nodes(workspaceId) | nodos de cómputo visibles para el token |
Proyectos, entornos, servicios#
| Campo | Devuelve |
|---|---|
projects(workspaceId, first, after, orderBy, search, includeDeleted) | QueryProjectsConnection! |
project(id) | Project! con las conexiones environments y services, prDeploys, summary |
environments(projectId, first, after, isEphemeral), environment(id, projectId) | entornos; isEphemeral filtra las vistas previas de PR |
service(id) | Service! (source, builder, port, runtimeClass, internalHost, instance(environmentId)) |
serviceInstance(serviceId, environmentId) | configuración por entorno, domains, tcpProxies, latestDeployment |
activity(projectId, first) | actividad reciente del proyecto |
Despliegues y logs#
| Campo | Devuelve |
|---|---|
deployments(input: { projectId, environmentId, serviceId, status: { in, notIn } }, first, after) | QueryDeploymentsConnection! |
deployment(id) | Deployment! (status, message, url, meta, canRedeploy, canRollback) |
deploymentLogs(deploymentId, filter, limit = 500, startDate, endDate) | [Log!]! con stream: build | runtime | system |
environmentLogs(environmentId, filter, beforeDate, beforeLimit, afterDate, afterLimit, anchorDate, serviceId, stream) | logs de todo el entorno |
serviceMetrics(environmentId, range: H1 | H6 | H24 | D7, serviceId) | series de CPU, memoria y tráfico saliente |
Variables, dominios, volúmenes, proxies#
| Campo | Devuelve |
|---|---|
variables(projectId, environmentId, serviceId, unrendered) | mapa EnvironmentVariables!; sin serviceId = solo las compartidas |
variableList(projectId, environmentId, serviceId) | [Variable!]! con ids y alcance |
domains(projectId, environmentId, serviceId) | AllDomains! { serviceDomains customDomains } |
customDomain(id, projectId), customDomainAvailable(domain), serviceDomainAvailable(domain), workspaceDomains(workspaceId) | detalles y disponibilidad de dominios |
volumes(environmentId, serviceId), volumeInstance(id) | volúmenes |
tcpProxies(serviceId, environmentId) | [TCPProxy!]! |
Facturación y plantillas#
| Campo | Devuelve |
|---|---|
billingAccount(workspaceId) | saldo, límites del plan, estado de pausa, recarga automática |
usage(workspaceId, periodStart) | UsageReport! por servicio y recurso |
ledger(workspaceId, first, after), payments(workspaceId, first), payment(id), topupOptions | historial y opciones de recarga |
templates(category, search, featured, first, after), template(code), templateCategories, templateCount | el catálogo |
Mutations#
Proyectos y entornos#
| Campo | Devuelve |
|---|---|
projectCreate(input: { workspaceId, name, description, githubInstallationId }) | Project! |
projectUpdate(id, input: { name, description, prDeploys, githubInstallationId }) | Project! |
projectFavoriteSet(projectId, favorite), projectDelete(id) | Boolean! |
environmentCreate(input: { projectId, name, sourceEnvironmentId }) | Environment! |
environmentRename(id, input: { name }), environmentDelete(id) |
Servicios#
| Campo | Devuelve |
|---|---|
serviceCreate(input: { projectId, name, source: { repo | image }, branch, environmentId, variables, builder, dockerfilePath, buildCommand, port, runtimeClass, deploy }) | Service! |
serviceUpdate(id, input: { name, icon, source, builder, dockerfilePath, buildCommand, port, runtimeClass }) | Service! |
serviceInstanceUpdate(serviceId, environmentId, input: { numReplicas, cpuMillis, memoryBytes, healthcheckPath, healthcheckTimeout, startCommand, cronSchedule, sleepApplication, restartPolicyType, restartPolicyMaxRetries, branch, rootDirectory, builder, buildCommand, dockerfilePath, source }) | Boolean! |
serviceDelete(id, environmentId) | Boolean! |
Despliegues#
| Campo | Devuelve |
|---|---|
serviceInstanceDeployV2(serviceId, environmentId, commitSha, latestCommit) | String! id del despliegue |
serviceInstanceRedeploy(serviceId, environmentId), serviceRestart(serviceId, environmentId) | Boolean! |
deploymentRedeploy(id, usePreviousImageTag) | Deployment! |
deploymentRollback(id), deploymentRestart(id), deploymentCancel(id), deploymentRemove(id) | Boolean! |
Variables, dominios, volúmenes, proxies#
| Campo | Devuelve |
|---|---|
variableUpsert(input: { projectId, environmentId, serviceId, name, value }) | Boolean! |
variableCollectionUpsert(input: { projectId, environmentId, serviceId, variables, replace }) | Boolean! |
variableDelete(input: { projectId, environmentId, serviceId, name }) | Boolean! |
serviceDomainCreate(input: { serviceId, environmentId, targetPort }), serviceDomainDelete(id) | ServiceDomain!, Boolean! |
customDomainCreate(input: { projectId, serviceId, environmentId, domain, targetPort }), customDomainVerify(id), customDomainDelete(id) | CustomDomain! con status { verified dnsRecords certificateStatus } |
volumeCreate(input: { projectId, serviceId, environmentId, mountPath, sizeGb, name }), volumeDelete(volumeId), volumeInstanceUpdate(volumeId, environmentId, input) | |
tcpProxyCreate(input: { serviceId, environmentId, applicationPort }), tcpProxyDelete(id) | TCPProxy!, Boolean! |
Espacio de trabajo, tokens, facturación, plantillas#
| Campo | Devuelve |
|---|---|
workspaceCreate(name), workspaceUpdate(id, input: { name, avatar, spendLimitCents }), workspaceDelete(id) | |
workspaceInvite(workspaceId, githubLogin, role), workspaceInviteRevoke(id), workspaceMemberRemove(workspaceId, userId), workspaceMemberSetRole(workspaceId, userId, role) | |
apiTokenCreate(input: { name, workspaceId, scopes, expiresAt }) | String! el token, mostrado una sola vez |
apiTokenDelete(id), projectTokenCreate(input: { projectId, environmentId, name }), projectTokenDelete(id) | |
githubInstallationDelete(installationId), sshKeyAdd(input: { name, publicKey }), sshKeyDelete(id), userUpdate(input) | |
topupCreate(workspaceId, provider: paypal | nowpayments, amountCents) | Payment! con checkoutUrl |
paymentRefresh(id), billingAutoPauseSet(workspaceId, enabled), paypalAutoTopupSetup(workspaceId, amountCents), autoTopupSet(workspaceId, enabled, thresholdCents, amountCents), paypalVaultDelete(workspaceId) | |
templateDeployV2(input: { templateCode, projectId, environmentId, serviceName, variables, name }) | TemplateDeployPayload! |
nodeCreate(name, region, workspaceId), nodeDelete(id) | nodos dedicados |
Enums#
DeploymentStatus:QUEUED BUILDING DEPLOYING SUCCESS FAILED CRASHED REMOVED SLEEPING(más los de RailwayINITIALIZING NEEDS_APPROVAL REMOVING SKIPPED WAITING, reservados).Builder:RAILPACK DOCKERFILE.RuntimeClass:gvisor kata.RestartPolicyType:ALWAYS NEVER ON_FAILURE.Plan:FREE HOBBY PRO.WorkspaceRole:owner admin member.MetricRange:H1 H6 H24 D7.PaymentProvider:paypal nowpayments.PaymentStatus:created pending confirming paid failed expired refunded.LedgerKind:topup usage subscription adjustment refund trial.
Campos obsoletos#
Los campos antiguos con forma de lista (projectList, environmentList, deploymentList, domainList, deploymentTrigger, domainCreate, …) siguen funcionando y están marcados como @deprecated en el esquema junto con su reemplazo.