Module gitlab::api

source ·
Expand description

API endpoint structures

The types in this module are meant to aid in constructing the appropriate calls using type-safe Rust idioms.

All endpoints use the builder pattern and have their members as private so that there are no API implications of adding new members for additional query parameters in future GitLab releases.

§Example

use serde::Deserialize;
use gitlab::Gitlab;
use gitlab::api::{self, projects, Query};

// The return type of a `Project`. Note that GitLab may contain more information, but you can
// define your structure to only fetch what is needed.
#[derive(Debug, Deserialize)]
struct Project {
    name: String,
}

// Create the client.
let client = Gitlab::new("gitlab.com", "private-token").unwrap();

// Create a simple endpoint. This one gets the "gitlab-org/gitlab" project information.
let endpoint = projects::Project::builder().project("gitlab-org/gitlab").build().unwrap();
// Call the endpoint. The return type decides how to represent the value.
let project: Project = endpoint.query(&client).unwrap();
// For some endpoints (mainly `POST` endpoints), you may want to ignore the result.
// `api::ignore` can be used to do this.
let _: () = api::ignore(endpoint).query(&client).unwrap();

// Some endpoints support pagination. They work on their own or via the `api::paged` function
// to get further results.
let pageable_endpoint = projects::Projects::builder().build().unwrap();
// The endpoint on its own is just the first page of results (usually 20 entries).
let first_page: Vec<Project> = pageable_endpoint.query(&client).unwrap();
// `api::paged` can be used to get results up to some count or all results.
let first_200_projects: Vec<Project> = api::paged(pageable_endpoint, api::Pagination::Limit(200)).query(&client).unwrap();

// Builders accept strings or integers for some fields. This is done wherever GitLab supports
// either IDs or names being used.
let endpoint = projects::Project::builder().project(278964).build().unwrap();
// The `api::raw` function can be used to return the raw data from the endpoint. This is
// usually meant for endpoints which represent file contents, pipeline artifacts, etc., but may
// be used with any endpoint.
let raw_data: Vec<u8> = api::raw(endpoint).query(&client).unwrap();

Modules§

Structs§

  • A structure for form parameters.
  • A query modifier that ignores the data returned from an endpoint.
  • A structure for JSON parameters.
  • An iterator which yields items from a paginated result.
  • A query modifier that paginates an endpoint.
  • A structure for query parameters.
  • A query modifier that returns the raw data from the endpoint.
  • Query information about the API calling user.
  • A sudo modifier that can be applied to any endpoint.

Enums§

Traits§

  • A trait representing an asynchronous client which can communicate with a GitLab instance.
  • A trait which represents an asynchronous query which may be made to a GitLab client.
  • A trait representing a client which can communicate with a GitLab instance.
  • A trait for providing the necessary information for a single REST API endpoint.
  • A trait to indicate that an endpoint is pageable.
  • A trait representing a parameter value.
  • A trait which represents a query which may be made to a GitLab client.
  • A trait representing a client which can communicate with a GitLab instance via REST.

Functions§

  • Ignore the resulting data from an endpoint.
  • Collect data from a paged endpoint.
  • Return the raw data from the endpoint.
  • Create a sudo-elevated version of an endpoint.