js-hub / types /api /api-commit.ts
coyotte508's picture
coyotte508 HF Staff
Add 1 files
21dd449 verified
export interface ApiLfsBatchRequest {
/// github.com/git-lfs/git-lfs/blob/master/docs/api/batch.md
operation: "download" | "upload";
transfers?: string[];
/**
* Optional object describing the server ref that the objects belong to. Note: Added in v2.4.
*
* We use this object for QOL and to fail early for users when they're trying to push to the wrong reference.
* But it does nothing for security.
*/
ref?: {
name: string;
} | null;
objects: {
oid: string;
/**
* Integer byte size of the LFS object. Must be at least zero.
*/
size: number;
}[];
/**
* The hash algorithm used to name Git LFS objects. Optional; defaults to sha256 if not specified.
* */
hash_algo?: string;
}
export interface ApiLfsBatchResponse {
transfer?: ApiLfsResponseTransfer;
objects: ApiLfsResponseObject[];
}
export type ApiLfsResponseTransfer = "basic" | "multipart";
export interface ApiLfsCompleteMultipartRequest {
oid: string;
parts: { etag: string; partNumber: number }[];
}
export interface ApiLfsResponseObject {
/**
* Optional boolean specifying whether the request
* for this specific object is authenticated.
* If omitted or false, Git LFS will attempt to find credentials for this URL.
*/
authenticated?: boolean;
oid: string;
/**
* Integer byte size of the LFS object. Must be at least zero.
*/
size: number;
/**
* Applicable actions depend on which `operation` is specified in the request.
* How these properties are interpreted depends on which transfer adapter
* the client will be using.
*/
actions?: {
/**
* Download operations MUST specify a download action,
* or an object error if the object cannot be downloaded for some reason
*/
download?: ApiLfsAction;
/**
* Upload operations can specify an upload and a verify action.
* The upload action describes how to upload the object.
*/
upload?: ApiLfsAction;
/**
* The LFS client will hit this URL after a successful upload.
* Servers can use this for extra verification, if needed.
*/
verify?: ApiLfsAction;
};
/**
* If there are problems accessing individual objects, servers should continue
* to return a 200 status code, and provide per-object errors
*/
error?: {
code: number;
message: string;
};
}
export interface ApiLfsAction {
href: string;
/**
* Optional hash of String HTTP header key/value pairs to apply to the request
*/
header?: { [key: string]: string } & { chunk_size?: string };
/**
* Whole number of seconds after local client time when transfer will expire.
* Preferred over `expires_at` if both are provided.
* Maximum of 2147483647, minimum of -2147483647.
*/
expires_in?: number;
/**
* String uppercase RFC 3339-formatted timestamp with second precision
* for when the given action expires (usually due to a temporary token).
*/
expires_at?: string;
}
export interface ApiPreuploadRequest {
/**
* Optional, otherwise takes the existing content of `.gitattributes` for the revision.
*
* Provide this parameter if you plan to modify `.gitattributes` yourself at the same
* time as uploading LFS files.
*
* Note that this is not needed if you solely rely on automatic LFS detection from HF: the commit endpoint
* will automatically edit the `.gitattributes` file to track the files passed to its `lfsFiles` param.
*/
gitAttributes?: string;
files: Array<{
/**
* Path of the LFS file
*/
path: string;
/**
* Full size of the LFS file
*/
size: number;
/**
* Base64-encoded sample of the first 512 bytes of the file
*/
sample: string;
}>;
}
export interface ApiPreuploadResponse {
files: Array<{
path: string;
uploadMode: "lfs" | "regular";
}>;
}
export interface ApiCommitHeader {
summary: string;
description?: string;
/**
* Parent commit. Optional
*
* - When opening a PR: will use parentCommit as the parent commit
* - When committing on a branch: Will make sure that there were no intermediate commits
*/
parentCommit?: string;
}
export interface ApiCommitDeletedEntry {
path: string;
}
export interface ApiCommitLfsFile {
path: string;
oldPath?: string;
/** Required if {@link oldPath} is not set */
algo?: "sha256";
/** Required if {@link oldPath} is not set */
oid?: string;
size?: number;
}
export interface ApiCommitFile {
/** Required if {@link oldPath} is not set */
content?: string;
path: string;
oldPath?: string;
encoding?: "utf-8" | "base64";
}
export type ApiCommitOperation =
| {
key: "file";
value: ApiCommitFile;
}
| {
key: "lfsFile";
value: ApiCommitLfsFile;
}
| {
key: "deletedFile";
value: ApiCommitDeletedEntry;
};
export interface ApiCommitData {
id: string;
title: string;
message: string;
authors: Array<{ user: string; avatar: string }>;
date: string;
formatted?: string;
}